From 5ee720c33ed70bbbc754377646b24421cca4e432 Mon Sep 17 00:00:00 2001 From: Ainhoa Larumbe Date: Thu, 16 Sep 2021 10:35:40 +0100 Subject: [PATCH 1/4] core-components: deprecate checkbox-tree Signed-off-by: Ainhoa Larumbe --- .../components/CheckboxTree/CheckboxTree.tsx | 4 ++++ .../src/components/Table/Filters.tsx | 2 +- .../src/components/Table/Table.tsx | 20 ++++++++++++++----- 3 files changed, 20 insertions(+), 6 deletions(-) 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..d4a737a204 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 = { @@ -419,12 +419,22 @@ export function Table(props: TableProps) { }; }; + const constructFilterElement = ( + filter: TableFilter, + ): + | Without + | Without => { + if (filter.type === 'checkbox-tree') { + // eslint-disable-next-line no-console + console.warn('"checkbox-tree" filter type is deprecated'); + return constructCheckboxTree(filter); + } + return constructSelect(filter); + }; + return filterConfig.map(filter => ({ type: filter.type, - element: - filter.type === 'checkbox-tree' - ? constructCheckboxTree(filter) - : constructSelect(filter), + element: constructFilterElement(filter), })); }; From 5be9f536e801b99c60bb0c23cd8054220ba9ef12 Mon Sep 17 00:00:00 2001 From: Ainhoa Larumbe Date: Thu, 16 Sep 2021 10:55:50 +0100 Subject: [PATCH 2/4] core-components: print console warn Signed-off-by: Ainhoa Larumbe --- .../src/components/Table/Table.tsx | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/core-components/src/components/Table/Table.tsx b/packages/core-components/src/components/Table/Table.tsx index d4a737a204..8d91118d59 100644 --- a/packages/core-components/src/components/Table/Table.tsx +++ b/packages/core-components/src/components/Table/Table.tsx @@ -365,6 +365,15 @@ export function Table(props: TableProps) { setSelectedFiltersLength(selectedFiltersArray.flat().length); }, [data, selectedFilters, getFieldByTitle]); + // Check for deprecated checkbox-tree filter + useEffect(() => { + filters?.map(filter => { + // eslint-disable-next-line no-console + if (filter.type === 'checkbox-tree') + console.warn('"checkbox-tree" filter type is deprecated'); + }); + }, [filters]); + const constructFilters = ( filterConfig: TableFilter[], dataValue: any[] | undefined, @@ -419,22 +428,12 @@ export function Table(props: TableProps) { }; }; - const constructFilterElement = ( - filter: TableFilter, - ): - | Without - | Without => { - if (filter.type === 'checkbox-tree') { - // eslint-disable-next-line no-console - console.warn('"checkbox-tree" filter type is deprecated'); - return constructCheckboxTree(filter); - } - return constructSelect(filter); - }; - return filterConfig.map(filter => ({ type: filter.type, - element: constructFilterElement(filter), + element: + filter.type === 'checkbox-tree' + ? constructCheckboxTree(filter) + : constructSelect(filter), })); }; From d9f2ff12bb6e56a624ea9fff512571deec6e4332 Mon Sep 17 00:00:00 2001 From: Ainhoa Larumbe Date: Thu, 16 Sep 2021 10:57:47 +0100 Subject: [PATCH 3/4] add changeset Signed-off-by: Ainhoa Larumbe --- .changeset/popular-colts-visit.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/popular-colts-visit.md 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. From 81be2551bcb512084b25e285090ba5f720a44d50 Mon Sep 17 00:00:00 2001 From: Ainhoa Larumbe Date: Thu, 16 Sep 2021 11:13:43 +0100 Subject: [PATCH 4/4] update the api-report and improve filter check Signed-off-by: Ainhoa Larumbe --- packages/core-components/api-report.md | 2 +- packages/core-components/src/components/Table/Table.tsx | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) 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/Table/Table.tsx b/packages/core-components/src/components/Table/Table.tsx index 8d91118d59..ecde7e992b 100644 --- a/packages/core-components/src/components/Table/Table.tsx +++ b/packages/core-components/src/components/Table/Table.tsx @@ -367,11 +367,10 @@ export function Table(props: TableProps) { // Check for deprecated checkbox-tree filter useEffect(() => { - filters?.map(filter => { + if (filters?.some(filter => filter.type === 'checkbox-tree')) { // eslint-disable-next-line no-console - if (filter.type === 'checkbox-tree') - console.warn('"checkbox-tree" filter type is deprecated'); - }); + console.warn('"checkbox-tree" filter type is deprecated'); + } }, [filters]); const constructFilters = (