mirror of
https://github.com/Unleash/unleash.git
synced 2025-03-18 00:19:49 +01: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:  After:  Signed-off-by: andreas-unleash <andreas@getunleash.ai>
This commit is contained in:
parent
d3847fd8ee
commit
81aff26394
@ -1,17 +1,24 @@
|
||||
import { makeStyles } from 'tss-react/mui';
|
||||
import { styled } from '@mui/material';
|
||||
|
||||
export const useStyles = makeStyles()((theme) => ({
|
||||
container: {
|
||||
display: 'inline-block',
|
||||
wordBreak: 'break-word',
|
||||
},
|
||||
value: {
|
||||
lineHeight: 1.33,
|
||||
fontSize: theme.fontSizes.smallBody,
|
||||
},
|
||||
description: {
|
||||
lineHeight: 1.33,
|
||||
fontSize: theme.fontSizes.smallerBody,
|
||||
color: theme.palette.action.active,
|
||||
export const StyledContainer = styled('div')(({ theme }) => ({
|
||||
display: 'inline-block',
|
||||
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}`,
|
||||
},
|
||||
}));
|
||||
|
||||
export const StyledValue = styled('div')(({ theme }) => ({
|
||||
lineHeight: 1.33,
|
||||
fontSize: theme.fontSizes.smallBody,
|
||||
}));
|
||||
export const StyledDescription = styled('div')(({ theme }) => ({
|
||||
lineHeight: 1.33,
|
||||
fontSize: theme.fontSizes.smallerBody,
|
||||
color: theme.palette.action.active,
|
||||
}));
|
||||
|
@ -1,5 +1,9 @@
|
||||
import type { ILegalValue } from 'interfaces/context';
|
||||
import { useStyles } from './LegalValueLabel.styles';
|
||||
import {
|
||||
StyledContainer,
|
||||
StyledValue,
|
||||
StyledDescription,
|
||||
} from './LegalValueLabel.styles';
|
||||
import type React from 'react';
|
||||
import { FormControlLabel } from '@mui/material';
|
||||
|
||||
@ -9,23 +13,21 @@ interface ILegalValueTextProps {
|
||||
}
|
||||
|
||||
export const LegalValueLabel = ({ legal, control }: ILegalValueTextProps) => {
|
||||
const { classes: styles } = useStyles();
|
||||
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
<StyledContainer>
|
||||
<FormControlLabel
|
||||
value={legal.value}
|
||||
control={control}
|
||||
label={
|
||||
<>
|
||||
<div className={styles.value}>{legal.value}</div>
|
||||
<div className={styles.description}>
|
||||
<StyledValue>{legal.value}</StyledValue>
|
||||
<StyledDescription>
|
||||
{legal.description}
|
||||
</div>
|
||||
</StyledDescription>
|
||||
</>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</StyledContainer>
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
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 { ConstraintValueSearch } from 'component/common/ConstraintAccordion/ConstraintValueSearch/ConstraintValueSearch';
|
||||
import { ConstraintFormHeader } from '../ConstraintFormHeader/ConstraintFormHeader';
|
||||
@ -50,6 +50,17 @@ export const getIllegalValues = (
|
||||
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 = ({
|
||||
data,
|
||||
values,
|
||||
@ -136,24 +147,25 @@ export const RestrictiveLegalValues = ({
|
||||
/>
|
||||
}
|
||||
/>
|
||||
{filteredValues.map((match) => (
|
||||
<LegalValueLabel
|
||||
key={match.value}
|
||||
legal={match}
|
||||
control={
|
||||
<Checkbox
|
||||
checked={Boolean(valuesMap[match.value])}
|
||||
onChange={() => onChange(match.value)}
|
||||
name={match.value}
|
||||
color='primary'
|
||||
disabled={deletedLegalValues
|
||||
.map(({ value }) => value)
|
||||
.includes(match.value)}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
))}
|
||||
|
||||
<StyledValuesContainer>
|
||||
{filteredValues.map((match) => (
|
||||
<LegalValueLabel
|
||||
key={match.value}
|
||||
legal={match}
|
||||
control={
|
||||
<Checkbox
|
||||
checked={Boolean(valuesMap[match.value])}
|
||||
onChange={() => onChange(match.value)}
|
||||
name={match.value}
|
||||
color='primary'
|
||||
disabled={deletedLegalValues
|
||||
.map(({ value }) => value)
|
||||
.includes(match.value)}
|
||||
/>
|
||||
}
|
||||
/>
|
||||
))}
|
||||
</StyledValuesContainer>
|
||||
<ConditionallyRender
|
||||
condition={Boolean(error)}
|
||||
show={<p className={styles.error}>{error}</p>}
|
||||
|
Loading…
Reference in New Issue
Block a user