mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat: feature table tags (#5659)
- tags on project overview - refactor of tags cell
This commit is contained in:
		
							parent
							
								
									d429f51cbd
								
							
						
					
					
						commit
						50ff36cbce
					
				@ -1,5 +1,5 @@
 | 
				
			|||||||
import { VFC } from 'react';
 | 
					import { VFC } from 'react';
 | 
				
			||||||
import { FeatureSchema } from 'openapi';
 | 
					import { FeatureSchema, TagSchema } from 'openapi';
 | 
				
			||||||
import { styled, Typography } from '@mui/material';
 | 
					import { styled, Typography } from '@mui/material';
 | 
				
			||||||
import { TextCell } from '../TextCell/TextCell';
 | 
					import { TextCell } from '../TextCell/TextCell';
 | 
				
			||||||
import { Highlighter } from 'component/common/Highlighter/Highlighter';
 | 
					import { Highlighter } from 'component/common/Highlighter/Highlighter';
 | 
				
			||||||
@ -14,21 +14,25 @@ interface IFeatureTagCellProps {
 | 
				
			|||||||
    row: {
 | 
					    row: {
 | 
				
			||||||
        original: FeatureSchema;
 | 
					        original: FeatureSchema;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    value: string;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const FeatureTagCell: VFC<IFeatureTagCellProps> = ({ row, value }) => {
 | 
					export const FeatureTagCell: VFC<IFeatureTagCellProps> = ({ row }) => {
 | 
				
			||||||
    const { searchQuery } = useSearchHighlightContext();
 | 
					    const { searchQuery } = useSearchHighlightContext();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!row.original.tags || row.original.tags.length === 0)
 | 
					    if (!row.original.tags || row.original.tags.length === 0)
 | 
				
			||||||
        return <TextCell />;
 | 
					        return <TextCell />;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const value =
 | 
				
			||||||
 | 
					        row.original.tags
 | 
				
			||||||
 | 
					            ?.map(({ type, value }) => `${type}:${value}`)
 | 
				
			||||||
 | 
					            .join('\n') || '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        <TextCell>
 | 
					        <TextCell>
 | 
				
			||||||
            <TooltipLink
 | 
					            <TooltipLink
 | 
				
			||||||
                highlighted={
 | 
					                highlighted={
 | 
				
			||||||
                    searchQuery.length > 0 &&
 | 
					                    searchQuery.length > 0 &&
 | 
				
			||||||
                    value.toLowerCase().includes(searchQuery.toLowerCase())
 | 
					                    value?.toLowerCase().includes(searchQuery.toLowerCase())
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                tooltip={
 | 
					                tooltip={
 | 
				
			||||||
                    <>
 | 
					                    <>
 | 
				
			||||||
 | 
				
			|||||||
@ -197,9 +197,7 @@ const FeatureToggleListTableComponent: VFC = () => {
 | 
				
			|||||||
                        .join('\n') || '',
 | 
					                        .join('\n') || '',
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    header: 'Tags',
 | 
					                    header: 'Tags',
 | 
				
			||||||
                    cell: ({ getValue, row }) => (
 | 
					                    cell: FeatureTagCell,
 | 
				
			||||||
                        <FeatureTagCell value={getValue()} row={row} />
 | 
					 | 
				
			||||||
                    ),
 | 
					 | 
				
			||||||
                    enableSorting: false,
 | 
					                    enableSorting: false,
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
				
			|||||||
@ -49,6 +49,7 @@ import { useDefaultColumnVisibility } from './hooks/useDefaultColumnVisibility';
 | 
				
			|||||||
import { Placeholder } from './TablePlaceholder/TablePlaceholder';
 | 
					import { Placeholder } from './TablePlaceholder/TablePlaceholder';
 | 
				
			||||||
import { useRowActions } from './hooks/useRowActions';
 | 
					import { useRowActions } from './hooks/useRowActions';
 | 
				
			||||||
import { useUiFlag } from 'hooks/useUiFlag';
 | 
					import { useUiFlag } from 'hooks/useUiFlag';
 | 
				
			||||||
 | 
					import { FeatureTagCell } from 'component/common/Table/cells/FeatureTagCell/FeatureTagCell';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface IPaginatedProjectFeatureTogglesProps {
 | 
					interface IPaginatedProjectFeatureTogglesProps {
 | 
				
			||||||
    environments: IProject['environments'];
 | 
					    environments: IProject['environments'];
 | 
				
			||||||
@ -208,6 +209,14 @@ export const PaginatedProjectFeatureToggles = ({
 | 
				
			|||||||
                    width: '50%',
 | 
					                    width: '50%',
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
            }),
 | 
					            }),
 | 
				
			||||||
 | 
					            columnHelper.accessor('tags', {
 | 
				
			||||||
 | 
					                id: 'tags',
 | 
				
			||||||
 | 
					                header: 'Tags',
 | 
				
			||||||
 | 
					                cell: FeatureTagCell,
 | 
				
			||||||
 | 
					                meta: {
 | 
				
			||||||
 | 
					                    width: '1%',
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					            }),
 | 
				
			||||||
            columnHelper.accessor('createdAt', {
 | 
					            columnHelper.accessor('createdAt', {
 | 
				
			||||||
                id: 'createdAt',
 | 
					                id: 'createdAt',
 | 
				
			||||||
                header: 'Created',
 | 
					                header: 'Created',
 | 
				
			||||||
@ -396,6 +405,11 @@ export const PaginatedProjectFeatureToggles = ({
 | 
				
			|||||||
                                        isVisible: columnVisibility.name,
 | 
					                                        isVisible: columnVisibility.name,
 | 
				
			||||||
                                        isStatic: true,
 | 
					                                        isStatic: true,
 | 
				
			||||||
                                    },
 | 
					                                    },
 | 
				
			||||||
 | 
					                                    {
 | 
				
			||||||
 | 
					                                        header: 'Tags',
 | 
				
			||||||
 | 
					                                        id: 'tags',
 | 
				
			||||||
 | 
					                                        isVisible: columnVisibility.tags,
 | 
				
			||||||
 | 
					                                    },
 | 
				
			||||||
                                    {
 | 
					                                    {
 | 
				
			||||||
                                        header: 'Created',
 | 
					                                        header: 'Created',
 | 
				
			||||||
                                        id: 'createdAt',
 | 
					                                        id: 'createdAt',
 | 
				
			||||||
 | 
				
			|||||||
@ -57,6 +57,7 @@ export const useDefaultColumnVisibility = (allColumnIds: string[]) => {
 | 
				
			|||||||
        'lastSeenAt',
 | 
					        'lastSeenAt',
 | 
				
			||||||
        'createdAt',
 | 
					        'createdAt',
 | 
				
			||||||
        'type',
 | 
					        'type',
 | 
				
			||||||
        ...showEnvironments(3),
 | 
					        'tags',
 | 
				
			||||||
 | 
					        ...showEnvironments(2),
 | 
				
			||||||
    ]);
 | 
					    ]);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user