mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat: archived row styling (#8608)
1. Added badge 2. Added archived row styling. Button not clickable and gray 
This commit is contained in:
		
							parent
							
								
									5033ed6b45
								
							
						
					
					
						commit
						90ed7b6079
					
				@ -17,6 +17,7 @@ test('Preview parent feature', async () => {
 | 
			
		||||
            feature='featureA'
 | 
			
		||||
            project='default'
 | 
			
		||||
            type='release'
 | 
			
		||||
            archivedAt={null}
 | 
			
		||||
            searchQuery=''
 | 
			
		||||
            dependencyType='child'
 | 
			
		||||
            onTypeClick={() => {}}
 | 
			
		||||
@ -44,6 +45,7 @@ test('Preview child features', async () => {
 | 
			
		||||
            feature='featureA'
 | 
			
		||||
            project='default'
 | 
			
		||||
            type='release'
 | 
			
		||||
            archivedAt={null}
 | 
			
		||||
            searchQuery=''
 | 
			
		||||
            dependencyType='parent'
 | 
			
		||||
            onTypeClick={() => {}}
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@ test('Display full overview information', () => {
 | 
			
		||||
                    type: 'release',
 | 
			
		||||
                    dependencyType: 'child',
 | 
			
		||||
                    project: 'my_project',
 | 
			
		||||
                    archivedAt: null,
 | 
			
		||||
                },
 | 
			
		||||
            }}
 | 
			
		||||
        />,
 | 
			
		||||
@ -54,6 +55,7 @@ test('Display minimal overview information', () => {
 | 
			
		||||
                    type: '',
 | 
			
		||||
                    dependencyType: null,
 | 
			
		||||
                    project: 'my_project',
 | 
			
		||||
                    archivedAt: null,
 | 
			
		||||
                },
 | 
			
		||||
            }}
 | 
			
		||||
        />,
 | 
			
		||||
@ -65,3 +67,26 @@ test('Display minimal overview information', () => {
 | 
			
		||||
        '/projects/my_project/features/my_feature',
 | 
			
		||||
    );
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
test('show archived information', () => {
 | 
			
		||||
    const FeatureOverviewCell = makeFeatureOverviewCell(noOp, noOp);
 | 
			
		||||
 | 
			
		||||
    render(
 | 
			
		||||
        <FeatureOverviewCell
 | 
			
		||||
            row={{
 | 
			
		||||
                original: {
 | 
			
		||||
                    name: 'archived_feature',
 | 
			
		||||
                    tags: [],
 | 
			
		||||
                    description: '',
 | 
			
		||||
                    type: '',
 | 
			
		||||
                    dependencyType: null,
 | 
			
		||||
                    project: 'my_project',
 | 
			
		||||
                    archivedAt: '2024-11-09',
 | 
			
		||||
                },
 | 
			
		||||
            }}
 | 
			
		||||
        />,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    expect(screen.getByText('archived_feature')).toBeInTheDocument();
 | 
			
		||||
    expect(screen.getByText('Archived')).toBeInTheDocument();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@ interface IFeatureNameCellProps {
 | 
			
		||||
            | 'tags'
 | 
			
		||||
            | 'type'
 | 
			
		||||
            | 'dependencyType'
 | 
			
		||||
            | 'archivedAt'
 | 
			
		||||
        >;
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
@ -138,6 +139,22 @@ const FeatureName: FC<{
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const ArchivedFeatureName: FC<{
 | 
			
		||||
    feature: string;
 | 
			
		||||
    searchQuery: string;
 | 
			
		||||
}> = ({ feature, searchQuery }) => {
 | 
			
		||||
    return (
 | 
			
		||||
        <Box
 | 
			
		||||
            sx={(theme) => ({
 | 
			
		||||
                fontWeight: theme.typography.fontWeightBold,
 | 
			
		||||
                color: theme.palette.neutral.main,
 | 
			
		||||
            })}
 | 
			
		||||
        >
 | 
			
		||||
            <Highlighter search={searchQuery}>{feature}</Highlighter>
 | 
			
		||||
        </Box>
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const RestTags: FC<{ tags: string[]; onClick: (tag: string) => void }> = ({
 | 
			
		||||
    tags,
 | 
			
		||||
    onClick,
 | 
			
		||||
@ -236,6 +253,7 @@ const DependencyPreview: FC<{ feature: string; project: string }> = ({
 | 
			
		||||
export const PrimaryFeatureInfo: FC<{
 | 
			
		||||
    project: string;
 | 
			
		||||
    feature: string;
 | 
			
		||||
    archivedAt: string | null;
 | 
			
		||||
    searchQuery: string;
 | 
			
		||||
    type: string;
 | 
			
		||||
    dependencyType: string;
 | 
			
		||||
@ -244,6 +262,7 @@ export const PrimaryFeatureInfo: FC<{
 | 
			
		||||
}> = ({
 | 
			
		||||
    project,
 | 
			
		||||
    feature,
 | 
			
		||||
    archivedAt,
 | 
			
		||||
    type,
 | 
			
		||||
    searchQuery,
 | 
			
		||||
    dependencyType,
 | 
			
		||||
@ -275,11 +294,19 @@ export const PrimaryFeatureInfo: FC<{
 | 
			
		||||
    return (
 | 
			
		||||
        <FeatureNameAndType data-loading>
 | 
			
		||||
            <TypeIcon />
 | 
			
		||||
            <FeatureName
 | 
			
		||||
                project={project}
 | 
			
		||||
                feature={feature}
 | 
			
		||||
                searchQuery={searchQuery}
 | 
			
		||||
            />
 | 
			
		||||
            {archivedAt ? (
 | 
			
		||||
                <ArchivedFeatureName
 | 
			
		||||
                    feature={feature}
 | 
			
		||||
                    searchQuery={searchQuery}
 | 
			
		||||
                />
 | 
			
		||||
            ) : (
 | 
			
		||||
                <FeatureName
 | 
			
		||||
                    project={project}
 | 
			
		||||
                    feature={feature}
 | 
			
		||||
                    searchQuery={searchQuery}
 | 
			
		||||
                />
 | 
			
		||||
            )}
 | 
			
		||||
 | 
			
		||||
            <ConditionallyRender
 | 
			
		||||
                condition={Boolean(dependencyType)}
 | 
			
		||||
                show={
 | 
			
		||||
@ -305,6 +332,11 @@ export const PrimaryFeatureInfo: FC<{
 | 
			
		||||
                    </HtmlTooltip>
 | 
			
		||||
                }
 | 
			
		||||
            />
 | 
			
		||||
            {archivedAt && (
 | 
			
		||||
                <HtmlTooltip arrow title={archivedAt} describeChild>
 | 
			
		||||
                    <Badge color='neutral'>Archived</Badge>
 | 
			
		||||
                </HtmlTooltip>
 | 
			
		||||
            )}
 | 
			
		||||
        </FeatureNameAndType>
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
@ -343,6 +375,7 @@ export const FeatureOverviewCell =
 | 
			
		||||
                <PrimaryFeatureInfo
 | 
			
		||||
                    project={row.original.project || ''}
 | 
			
		||||
                    feature={row.original.name}
 | 
			
		||||
                    archivedAt={row.original.archivedAt}
 | 
			
		||||
                    searchQuery={searchQuery}
 | 
			
		||||
                    type={row.original.type || ''}
 | 
			
		||||
                    dependencyType={row.original.dependencyType || ''}
 | 
			
		||||
 | 
			
		||||
@ -389,6 +389,7 @@ export const ProjectFeatureToggles = ({
 | 
			
		||||
                    project: 'project',
 | 
			
		||||
                    segments: [],
 | 
			
		||||
                    stale: false,
 | 
			
		||||
                    archivedAt: null,
 | 
			
		||||
                    environments: [
 | 
			
		||||
                        {
 | 
			
		||||
                            name: 'development',
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ export interface FeatureSearchResponseSchema {
 | 
			
		||||
     * The date the feature was archived
 | 
			
		||||
     * @nullable
 | 
			
		||||
     */
 | 
			
		||||
    archivedAt?: string | null;
 | 
			
		||||
    archivedAt: string | null;
 | 
			
		||||
    /**
 | 
			
		||||
     * The date the feature was created
 | 
			
		||||
     * @nullable
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,7 @@ export const featureSearchResponseSchema = {
 | 
			
		||||
        'createdBy',
 | 
			
		||||
        'environments',
 | 
			
		||||
        'segments',
 | 
			
		||||
        'archivedAt',
 | 
			
		||||
    ],
 | 
			
		||||
    description: 'A feature flag definition',
 | 
			
		||||
    properties: {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user