1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-04-10 01:16:39 +02:00

Chore: constraint context field legal values improvement (#6729)

Improves how we show context field legal values in the new strategy
configuration.

Refactored makeStyles to styled components 

Closes #
[1-2235](https://linear.app/unleash/issue/1-2235/context-field-ui-in-strategy-configuration)

Before: 

![Screenshot 2024-03-28 at 12 19
12](https://github.com/Unleash/unleash/assets/104830839/43c62cf4-f344-476f-9ef6-75e388fab000)

After:

![Screenshot 2024-03-28 at 13 03
46](https://github.com/Unleash/unleash/assets/104830839/16dd03e0-bc67-402b-ba54-56fa1af136a5)

Signed-off-by: andreas-unleash <andreas@getunleash.ai>
This commit is contained in:
andreas-unleash 2024-03-28 14:15:14 +02:00 committed by GitHub
parent d3847fd8ee
commit 81aff26394
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 62 additions and 41 deletions

View File

@ -1,17 +1,24 @@
import { makeStyles } from 'tss-react/mui'; import { styled } from '@mui/material';
export const useStyles = makeStyles()((theme) => ({ export const StyledContainer = styled('div')(({ theme }) => ({
container: {
display: 'inline-block', display: 'inline-block',
wordBreak: 'break-word', wordBreak: 'break-word',
padding: theme.spacing(0.5, 1),
background: theme.palette.common.white,
border: `1px solid ${theme.palette.divider}`,
borderRadius: theme.shape.borderRadius,
'&:hover': {
border: `2px solid ${theme.palette.primary.main}`,
}, },
value: { }));
export const StyledValue = styled('div')(({ theme }) => ({
lineHeight: 1.33, lineHeight: 1.33,
fontSize: theme.fontSizes.smallBody, fontSize: theme.fontSizes.smallBody,
}, }));
description: { export const StyledDescription = styled('div')(({ theme }) => ({
lineHeight: 1.33, lineHeight: 1.33,
fontSize: theme.fontSizes.smallerBody, fontSize: theme.fontSizes.smallerBody,
color: theme.palette.action.active, color: theme.palette.action.active,
},
})); }));

View File

@ -1,5 +1,9 @@
import type { ILegalValue } from 'interfaces/context'; import type { ILegalValue } from 'interfaces/context';
import { useStyles } from './LegalValueLabel.styles'; import {
StyledContainer,
StyledValue,
StyledDescription,
} from './LegalValueLabel.styles';
import type React from 'react'; import type React from 'react';
import { FormControlLabel } from '@mui/material'; import { FormControlLabel } from '@mui/material';
@ -9,23 +13,21 @@ interface ILegalValueTextProps {
} }
export const LegalValueLabel = ({ legal, control }: ILegalValueTextProps) => { export const LegalValueLabel = ({ legal, control }: ILegalValueTextProps) => {
const { classes: styles } = useStyles();
return ( return (
<div className={styles.container}> <StyledContainer>
<FormControlLabel <FormControlLabel
value={legal.value} value={legal.value}
control={control} control={control}
label={ label={
<> <>
<div className={styles.value}>{legal.value}</div> <StyledValue>{legal.value}</StyledValue>
<div className={styles.description}> <StyledDescription>
{legal.description} {legal.description}
</div> </StyledDescription>
</> </>
} }
/> />
</div> </StyledContainer>
); );
}; };

View File

@ -1,6 +1,6 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { Alert, Checkbox } from '@mui/material'; import { Alert, Checkbox, styled } from '@mui/material';
import { useThemeStyles } from 'themes/themeStyles'; import { useThemeStyles } from 'themes/themeStyles';
import { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch'; import { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch';
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader'; import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
@ -50,6 +50,17 @@ export const getIllegalValues = (
return constraintValues.filter((value) => deletedValuesSet.has(value)); return constraintValues.filter((value) => deletedValuesSet.has(value));
}; };
const StyledValuesContainer = styled('div')(({ theme }) => ({
display: 'flex',
flexWrap: 'wrap',
gap: theme.spacing(1),
padding: theme.spacing(2),
border: `1px solid ${theme.palette.divider}`,
borderRadius: theme.shape.borderRadiusMedium,
maxHeight: '378px',
overflow: 'auto',
}));
export const RestrictiveLegalValues = ({ export const RestrictiveLegalValues = ({
data, data,
values, values,
@ -136,6 +147,7 @@ export const RestrictiveLegalValues = ({
/> />
} }
/> />
<StyledValuesContainer>
{filteredValues.map((match) => ( {filteredValues.map((match) => (
<LegalValueLabel <LegalValueLabel
key={match.value} key={match.value}
@ -153,7 +165,7 @@ export const RestrictiveLegalValues = ({
} }
/> />
))} ))}
</StyledValuesContainer>
<ConditionallyRender <ConditionallyRender
condition={Boolean(error)} condition={Boolean(error)}
show={<p className={styles.error}>{error}</p>} show={<p className={styles.error}>{error}</p>}