From 758e20eb8749b51311eabf525ea9ee80e3dbe335 Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 2 Jun 2022 17:20:05 +1000 Subject: [PATCH 1/3] Fix the missing filter in the toolbar when passing a custom component in the core-components Table" Signed-off-by: Danang --- .../src/components/Table/Table.test.tsx | 51 +++++++++++++++++++ .../src/components/Table/Table.tsx | 2 + 2 files changed, 53 insertions(+) diff --git a/packages/core-components/src/components/Table/Table.test.tsx b/packages/core-components/src/components/Table/Table.test.tsx index 12431dea59..2582be8506 100644 --- a/packages/core-components/src/components/Table/Table.test.tsx +++ b/packages/core-components/src/components/Table/Table.test.tsx @@ -160,4 +160,55 @@ describe('', () => { ); expect(rendered.getByText('EMPTY')).toBeInTheDocument(); }); + + describe('with custom components', () => { + const CustomRow = ({ data }) => { + return ( + + + + + ); + }; + + it('should not override the toolbar implementation', async () => { + const rendered = await renderInTestApp( +
customised cell {data.col1}customised cell {data.col2}
EMPTY} + columns={minProps.columns} + data={minProps.data} + filters={[ + { + column: column1.title, + type: 'select', + }, + ]} + components={{ + Row: CustomRow, + }} + />, + ); + + expect(rendered.getByText('Filters (0)')).toBeInTheDocument(); + }); + + it('should render the provided custom row component correctly', async () => { + const rendered = await renderInTestApp( +
EMPTY} + columns={minProps.columns} + data={minProps.data} + components={{ + Row: CustomRow, + }} + />, + ); + + expect( + rendered.getByText('customised cell first value, first row'), + ).toBeInTheDocument(); + }); + }); }); diff --git a/packages/core-components/src/components/Table/Table.tsx b/packages/core-components/src/components/Table/Table.tsx index 84e88ae01e..65edb5b69b 100644 --- a/packages/core-components/src/components/Table/Table.tsx +++ b/packages/core-components/src/components/Table/Table.tsx @@ -303,6 +303,7 @@ export function Table(props: TableProps) { initialState, emptyContent, onStateChange, + components, ...restProps } = props; const tableClasses = useTableStyles(); @@ -493,6 +494,7 @@ export function Table(props: TableProps) { Header: StyledMTableHeader, Toolbar, Body, + ...components, }} options={{ ...defaultOptions, ...options }} columns={MTColumns} From 7d355c4b3fee29f40fb074b110af4e2109ccd9f5 Mon Sep 17 00:00:00 2001 From: Danang Date: Thu, 2 Jun 2022 17:24:12 +1000 Subject: [PATCH 2/3] Add changeset Signed-off-by: Danang --- .changeset/smart-melons-think.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/smart-melons-think.md diff --git a/.changeset/smart-melons-think.md b/.changeset/smart-melons-think.md new file mode 100644 index 0000000000..2af8b1671f --- /dev/null +++ b/.changeset/smart-melons-think.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Fix the missing filter in the toolbar when passing a custom component in the core-components Table From 59c3063193aba793813be526d9db56a1243eaacb Mon Sep 17 00:00:00 2001 From: Danang Date: Fri, 3 Jun 2022 10:19:42 +1000 Subject: [PATCH 3/3] Add explicit any to the CustomRow props Signed-off-by: Danang --- packages/core-components/src/components/Table/Table.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-components/src/components/Table/Table.test.tsx b/packages/core-components/src/components/Table/Table.test.tsx index 2582be8506..ff17409502 100644 --- a/packages/core-components/src/components/Table/Table.test.tsx +++ b/packages/core-components/src/components/Table/Table.test.tsx @@ -162,7 +162,7 @@ describe('
', () => { }); describe('with custom components', () => { - const CustomRow = ({ data }) => { + const CustomRow = ({ data }: any) => { return (
customised cell {data.col1}