diff --git a/frontend/src/component/common/Constraint/Constraint.styles.ts b/frontend/src/component/common/Constraint/Constraint.styles.ts
deleted file mode 100644
index 879dc64e67..0000000000
--- a/frontend/src/component/common/Constraint/Constraint.styles.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { makeStyles } from '@material-ui/core/styles';
-
-export const useStyles = makeStyles(theme => ({
- constraintHeader: {
- fontWeight: 'bold',
- fontSize: theme.fontSizes.smallBody,
- },
- constraint: {
- width: '100%',
- display: 'flex',
- alignItems: 'center',
- justifyContent: 'center',
- padding: '0.1rem 0.5rem',
- fontSize: theme.fontSizes.smallBody,
- backgroundColor: theme.palette.grey[200],
- margin: '0.5rem 0',
- position: 'relative',
- borderRadius: '5px',
- },
- constraintBtn: {
- color: theme.palette.primary.main,
- fontWeight: 'normal',
- marginBottom: '0.5rem',
- },
- btnContainer: {
- position: 'absolute',
- top: '6px',
- right: 0,
- },
- column: {
- flexDirection: 'column',
- },
- values: {
- marginLeft: '1.5rem',
- whiteSpace: 'pre-wrap',
- },
-}));
diff --git a/frontend/src/component/common/Constraint/Constraint.tsx b/frontend/src/component/common/Constraint/Constraint.tsx
deleted file mode 100644
index 3703b28a2a..0000000000
--- a/frontend/src/component/common/Constraint/Constraint.tsx
+++ /dev/null
@@ -1,94 +0,0 @@
-import { Delete, Edit } from '@material-ui/icons';
-import classnames from 'classnames';
-import { IN, NOT_IN } from 'constants/operators';
-import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
-import { useParams } from 'react-router';
-import { IFeatureViewParams } from 'interfaces/params';
-import { IConstraint } from 'interfaces/strategy';
-import { StrategySeparator } from '../StrategySeparator/StrategySeparator';
-import { UPDATE_FEATURE } from 'component/providers/AccessProvider/permissions';
-import ConditionallyRender from '../ConditionallyRender';
-import PermissionIconButton from '../PermissionIconButton/PermissionIconButton';
-import StringTruncator from '../StringTruncator/StringTruncator';
-import { useStyles } from './Constraint.styles';
-import { useLocationSettings } from 'hooks/useLocationSettings';
-import { formatConstraintValuesOrValue } from 'component/common/Constraint/formatConstraintValue';
-
-interface IConstraintProps {
- constraint: IConstraint;
- className?: string;
- deleteCallback?: () => void;
- editCallback?: () => void;
-}
-
-const Constraint = ({
- constraint,
- deleteCallback,
- editCallback,
- className,
- ...rest
-}: IConstraintProps) => {
- // CHANGEME - Feat: Constraint Operators
- const { uiConfig } = useUiConfig();
- const styles = useStyles();
- const { locationSettings } = useLocationSettings();
- const { projectId } = useParams
Editing
} /> - { const operator = operatorsForContext(contextName)[0]; diff --git a/frontend/src/component/common/ConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView.tsx b/frontend/src/component/common/ConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView.tsx index 35cdcdbab3..da4a50b9f3 100644 --- a/frontend/src/component/common/ConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView.tsx +++ b/frontend/src/component/common/ConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView.tsx @@ -41,10 +41,7 @@ export const ConstraintAccordionView = ({ return ({constraint.operator}
+- {constraint?.values?.length} values + {constraint?.values?.length}{' '} + {constraint?.values?.length === 1 + ? 'value' + : 'values'}
Expand to view diff --git a/frontend/src/component/common/ConstraintAccordion/ConstraintOperator/ConstraintOperator.styles.ts b/frontend/src/component/common/ConstraintAccordion/ConstraintOperator/ConstraintOperator.styles.ts new file mode 100644 index 0000000000..80b60a30ec --- /dev/null +++ b/frontend/src/component/common/ConstraintAccordion/ConstraintOperator/ConstraintOperator.styles.ts @@ -0,0 +1,30 @@ +import { makeStyles } from '@material-ui/core/styles'; + +export const useStyles = makeStyles(theme => ({ + container: { + padding: '0.5rem 0.75rem', + borderRadius: theme.borders.radius.main, + backgroundColor: theme.palette.grey[200], + lineHeight: 1.25, + }, + name: { + fontSize: theme.fontSizes.smallBody, + }, + text: { + fontSize: theme.fontSizes.smallerBody, + color: theme.palette.grey[700], + }, + not: { + display: 'block', + margin: '-1rem 0 0.25rem 0', + height: '1rem', + '& > span': { + display: 'inline-block', + padding: '0 0.25rem', + borderRadius: theme.borders.radius.main, + fontSize: theme.fontSizes.smallerBody, + backgroundColor: theme.palette.primary.light, + color: 'white', + }, + }, +})); diff --git a/frontend/src/component/common/ConstraintAccordion/ConstraintOperator/ConstraintOperator.tsx b/frontend/src/component/common/ConstraintAccordion/ConstraintOperator/ConstraintOperator.tsx new file mode 100644 index 0000000000..d76030518e --- /dev/null +++ b/frontend/src/component/common/ConstraintAccordion/ConstraintOperator/ConstraintOperator.tsx @@ -0,0 +1,30 @@ +import { IConstraint } from 'interfaces/strategy'; +import { formatOperatorDescription } from 'component/common/ConstraintAccordion/ConstraintOperator/formatOperatorDescription'; +import { useStyles } from 'component/common/ConstraintAccordion/ConstraintOperator/ConstraintOperator.styles'; + +interface IConstraintOperatorProps { + constraint: IConstraint; +} + +export const ConstraintOperator = ({ + constraint, +}: IConstraintOperatorProps) => { + const styles = useStyles(); + + const operatorName = constraint.operator; + const operatorText = formatOperatorDescription(constraint.operator); + + const notLabel = constraint.inverted && ( +
+
{parameters[key]}% of your base{' '}
{constraints.length > 0
? 'who match constraints'
@@ -145,7 +125,7 @@ const FeatureOverviewExecution = ({
case 'percentage':
return (
+
{strategy?.parameters[param.name]}% of your base{' '}
{constraints?.length > 0
? 'who match constraints'
@@ -165,7 +145,7 @@ const FeatureOverviewExecution = ({
case 'boolean':
return (
+
+
+