mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +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: {
 | 
			
		||||
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}`,
 | 
			
		||||
    },
 | 
			
		||||
    value: {
 | 
			
		||||
}));
 | 
			
		||||
 | 
			
		||||
export const StyledValue = styled('div')(({ theme }) => ({
 | 
			
		||||
    lineHeight: 1.33,
 | 
			
		||||
    fontSize: theme.fontSizes.smallBody,
 | 
			
		||||
    },
 | 
			
		||||
    description: {
 | 
			
		||||
}));
 | 
			
		||||
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,6 +147,7 @@ export const RestrictiveLegalValues = ({
 | 
			
		||||
                    />
 | 
			
		||||
                }
 | 
			
		||||
            />
 | 
			
		||||
            <StyledValuesContainer>
 | 
			
		||||
                {filteredValues.map((match) => (
 | 
			
		||||
                    <LegalValueLabel
 | 
			
		||||
                        key={match.value}
 | 
			
		||||
@ -153,7 +165,7 @@ export const RestrictiveLegalValues = ({
 | 
			
		||||
                        }
 | 
			
		||||
                    />
 | 
			
		||||
                ))}
 | 
			
		||||
 | 
			
		||||
            </StyledValuesContainer>
 | 
			
		||||
            <ConditionallyRender
 | 
			
		||||
                condition={Boolean(error)}
 | 
			
		||||
                show={<p className={styles.error}>{error}</p>}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user