diff --git a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditHeader/ConstraintAccordionEditHeader.tsx b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditHeader/ConstraintAccordionEditHeader.tsx index 428b3687b5..1a08bb551d 100644 --- a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditHeader/ConstraintAccordionEditHeader.tsx +++ b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditHeader/ConstraintAccordionEditHeader.tsx @@ -22,7 +22,7 @@ import { } from 'utils/operatorsForContext'; import { InvertedOperatorButton } from '../StyledToggleButton/InvertedOperatorButton/InvertedOperatorButton'; import { CaseSensitiveButton } from '../StyledToggleButton/CaseSensitiveButton/CaseSensitiveButton'; -import { ConstraintAccordionHeaderActions } from '../../ConstraintAccordionHeaderActions/ConstraintAccordionHeaderActions'; +import { ConstraintAccordionEditActions } from '../../ConstraintAccordionEditActions/ConstraintAccordionEditActions'; import { styled } from '@mui/material'; interface IConstraintAccordionViewHeader { @@ -207,7 +207,7 @@ export const ConstraintAccordionEditHeader = ({ } /> - void; onEdit?: () => void; onUndo?: () => void; @@ -23,14 +23,14 @@ const StyledHeaderActions = styled('div')(({ theme }) => ({ }, })); -export const ConstraintAccordionHeaderActions = ({ +export const ConstraintAccordionEditActions = ({ onEdit, onDelete, onUndo, constraintChanges = [], disableDelete = false, disableEdit = false, -}: ConstraintAccordionHeaderActionsProps) => { +}: ConstraintAccordionEditActionsProps) => { const onEditClick = onEdit && ((event: React.SyntheticEvent) => { diff --git a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView.tsx b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView.tsx index e5c25bc733..ceaaadd137 100644 --- a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView.tsx +++ b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView.tsx @@ -21,6 +21,7 @@ interface IConstraintAccordionViewProps { constraint: IConstraint; onDelete?: () => void; onEdit?: () => void; + onUse?: () => void; sx?: SxProps; compact?: boolean; disabled?: boolean; @@ -67,6 +68,7 @@ export const ConstraintAccordionView = ({ constraint, onEdit, onDelete, + onUse, sx = undefined, compact = false, disabled = false, @@ -103,6 +105,7 @@ export const ConstraintAccordionView = ({ constraint={constraint} onEdit={onEdit} onDelete={onDelete} + onUse={onUse} singleValue={singleValue} allowExpand={setExpandable} disabled={disabled} diff --git a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionViewHeader/ConstraintAccordionViewHeader.tsx b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionViewHeader/ConstraintAccordionViewHeader.tsx index 7a2db2a168..b699a0ff32 100644 --- a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionViewHeader/ConstraintAccordionViewHeader.tsx +++ b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionViewHeader/ConstraintAccordionViewHeader.tsx @@ -2,15 +2,17 @@ import { ConstraintIcon } from 'component/common/LegacyConstraintAccordion/Const import type { IConstraint } from 'interfaces/strategy'; import { ConstraintAccordionViewHeaderInfo } from './ConstraintAccordionViewHeaderInfo'; import { ConstraintAccordionViewHeaderInfo as LegacyConstraintAccordionViewHeaderInfo } from './LegacyConstraintAccordionViewHeaderInfo'; -import { ConstraintAccordionHeaderActions } from '../../ConstraintAccordionHeaderActions/ConstraintAccordionHeaderActions'; import { styled } from '@mui/system'; import useUnleashContext from 'hooks/api/getters/useUnleashContext/useUnleashContext'; import { useUiFlag } from 'hooks/useUiFlag'; +import { ConstraintAccordionViewActions } from '../../ConstraintAccordionViewActions/ConstraintAccordionViewActions'; +import { ConstraintAccordionEditActions } from '../../ConstraintAccordionEditActions/ConstraintAccordionEditActions'; interface IConstraintAccordionViewHeaderProps { constraint: IConstraint; onDelete?: () => void; onEdit?: () => void; + onUse?: () => void; singleValue: boolean; expanded: boolean; allowExpand: (shouldExpand: boolean) => void; @@ -33,6 +35,7 @@ export const ConstraintAccordionViewHeader = ({ constraint, onEdit, onDelete, + onUse, singleValue, allowExpand, expanded, @@ -68,11 +71,16 @@ export const ConstraintAccordionViewHeader = ({ disabled={disabled} /> )} - + {onUse ? ( + + ) : ( + // @deprecated : remove onEdit and onDelete from current file together with NewConstraintAccordionList and addEditStrategy flag + + )} ); }; diff --git a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionViewActions/ConstraintAccordionViewActions.tsx b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionViewActions/ConstraintAccordionViewActions.tsx new file mode 100644 index 0000000000..2b4df6a219 --- /dev/null +++ b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionViewActions/ConstraintAccordionViewActions.tsx @@ -0,0 +1,50 @@ +import type React from 'react'; +import { Button, styled, Tooltip } from '@mui/material'; +import { ConditionallyRender } from '../../ConditionallyRender/ConditionallyRender'; + +interface ConstraintAccordionHeaderActionsProps { + onUse?: () => void; +} + +const StyledHeaderActions = styled('div')(({ theme }) => ({ + marginLeft: 'auto', + whiteSpace: 'nowrap', + [theme.breakpoints.down('sm')]: { + display: 'none', + }, +})); + +const StyledButton = styled(Button)(({ theme }) => ({ + fontSize: theme.typography.body2.fontSize, +})); + +export const ConstraintAccordionViewActions = ({ + onUse, +}: ConstraintAccordionHeaderActionsProps) => { + const onUseClick = + onUse && + ((event: React.SyntheticEvent) => { + event.stopPropagation(); + onUse(); + }); + + return ( + + + + Use this + + + } + /> + + ); +}; diff --git a/frontend/src/component/common/NewConstraintAccordion/NewConstraintAccordionList/NewConstraintAccordionList.tsx b/frontend/src/component/common/NewConstraintAccordion/NewConstraintAccordionList/NewConstraintAccordionList.tsx index 6652171467..4f9f25261a 100644 --- a/frontend/src/component/common/NewConstraintAccordion/NewConstraintAccordionList/NewConstraintAccordionList.tsx +++ b/frontend/src/component/common/NewConstraintAccordion/NewConstraintAccordionList/NewConstraintAccordionList.tsx @@ -166,8 +166,6 @@ export const NewConstraintAccordionList = forwardRef< ) ) : ( diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyConstraints/FeatureStrategyConstraintAccordionList/FeatureStrategyConstraintAccordionList.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyConstraints/FeatureStrategyConstraintAccordionList/FeatureStrategyConstraintAccordionList.tsx index e4cab5ab91..f6f6730f08 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyConstraints/FeatureStrategyConstraintAccordionList/FeatureStrategyConstraintAccordionList.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyConstraints/FeatureStrategyConstraintAccordionList/FeatureStrategyConstraintAccordionList.tsx @@ -139,7 +139,11 @@ export const FeatureStrategyConstraintAccordionList = forwardRef< } + show={ + + } /> } diff --git a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyConstraints/RecentlyUsedConstraints/RecentlyUsedConstraints.tsx b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyConstraints/RecentlyUsedConstraints/RecentlyUsedConstraints.tsx index 97a09b18c4..d3d743b992 100644 --- a/frontend/src/component/feature/FeatureStrategy/FeatureStrategyConstraints/RecentlyUsedConstraints/RecentlyUsedConstraints.tsx +++ b/frontend/src/component/feature/FeatureStrategy/FeatureStrategyConstraints/RecentlyUsedConstraints/RecentlyUsedConstraints.tsx @@ -2,9 +2,10 @@ import { styled, Typography } from '@mui/material'; import { ConstraintAccordionView } from 'component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView'; import { constraintId } from 'component/common/LegacyConstraintAccordion/ConstraintAccordionList/createEmptyConstraint'; import { useRecentlyUsedConstraints } from './useRecentlyUsedConstraints'; +import type { IConstraint } from 'interfaces/strategy'; type IRecentlyUsedConstraintsProps = { - temporary?: string; + setConstraints?: React.Dispatch>; }; const StyledContainer = styled('div')(({ theme }) => ({ @@ -24,11 +25,11 @@ const StyledConstraintsContainer = styled('div')(({ theme }) => ({ })); export const RecentlyUsedConstraints = ({ - temporary, + setConstraints, }: IRecentlyUsedConstraintsProps) => { const { items: recentlyUsedConstraints } = useRecentlyUsedConstraints(); - if (recentlyUsedConstraints.length === 0) { + if (recentlyUsedConstraints.length === 0 || !setConstraints) { return null; } @@ -40,6 +41,9 @@ export const RecentlyUsedConstraints = ({ { + setConstraints((prev) => [...prev, constraint]); + }} /> ))}