diff --git a/.changeset/popular-colts-visit.md b/.changeset/popular-colts-visit.md new file mode 100644 index 0000000000..30fffa29a0 --- /dev/null +++ b/.changeset/popular-colts-visit.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Deprecated CheckboxTree component. Deprecated the filter type `'checkbox-tree'` from the `TableFilter` types. diff --git a/packages/core-components/api-report.md b/packages/core-components/api-report.md index f4539faae0..e987d6b67e 100644 --- a/packages/core-components/api-report.md +++ b/packages/core-components/api-report.md @@ -1889,7 +1889,7 @@ export interface TableColumn extends Column { // @public (undocumented) export type TableFilter = { column: string; - type: 'select' | 'multiple-select' | 'checkbox-tree'; + type: 'select' | 'multiple-select' | /** @deprecated */ 'checkbox-tree'; }; // Warning: (ae-missing-release-tag) "TableProps" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) diff --git a/packages/core-components/src/components/CheckboxTree/CheckboxTree.tsx b/packages/core-components/src/components/CheckboxTree/CheckboxTree.tsx index 695da88192..71b5cf7659 100644 --- a/packages/core-components/src/components/CheckboxTree/CheckboxTree.tsx +++ b/packages/core-components/src/components/CheckboxTree/CheckboxTree.tsx @@ -225,6 +225,10 @@ const indexer = ( }; }, {}); +/** + * + * @deprecated CheckboxTree is no longer used in Table filters + */ export function CheckboxTree(props: CheckboxTreeProps) { const { subCategories, label, selected, onChange, triggerReset } = props; const classes = useStyles(); diff --git a/packages/core-components/src/components/Table/Filters.tsx b/packages/core-components/src/components/Table/Filters.tsx index 5e2611fba4..b482e6c808 100644 --- a/packages/core-components/src/components/Table/Filters.tsx +++ b/packages/core-components/src/components/Table/Filters.tsx @@ -53,7 +53,7 @@ const useSubvalueCellStyles = makeStyles(theme => ({ export type Without = Pick>; export type Filter = { - type: 'select' | 'checkbox-tree' | 'multiple-select'; + type: 'select' | /** @deprecated */ 'checkbox-tree' | 'multiple-select'; element: | Without | Without; diff --git a/packages/core-components/src/components/Table/Table.tsx b/packages/core-components/src/components/Table/Table.tsx index edc5fd33ce..ecde7e992b 100644 --- a/packages/core-components/src/components/Table/Table.tsx +++ b/packages/core-components/src/components/Table/Table.tsx @@ -191,7 +191,7 @@ export interface TableColumn extends Column { export type TableFilter = { column: string; - type: 'select' | 'multiple-select' | 'checkbox-tree'; + type: 'select' | 'multiple-select' | /** @deprecated */ 'checkbox-tree'; }; export type TableState = { @@ -365,6 +365,14 @@ export function Table(props: TableProps) { setSelectedFiltersLength(selectedFiltersArray.flat().length); }, [data, selectedFilters, getFieldByTitle]); + // Check for deprecated checkbox-tree filter + useEffect(() => { + if (filters?.some(filter => filter.type === 'checkbox-tree')) { + // eslint-disable-next-line no-console + console.warn('"checkbox-tree" filter type is deprecated'); + } + }, [filters]); + const constructFilters = ( filterConfig: TableFilter[], dataValue: any[] | undefined,