@coveord/plasma-mantine 49.3.3 → 49.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-test.log +29 -29
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cjs/__tests__/VitestSetup.js.map +1 -1
  5. package/dist/cjs/components/collection/CollectionItem.js +6 -0
  6. package/dist/cjs/components/collection/CollectionItem.js.map +1 -1
  7. package/dist/cjs/components/table/Table.js +42 -74
  8. package/dist/cjs/components/table/Table.js.map +1 -1
  9. package/dist/cjs/components/table/Table.styles.js +56 -0
  10. package/dist/cjs/components/table/Table.styles.js.map +1 -0
  11. package/dist/cjs/components/table/TableContext.js.map +1 -1
  12. package/dist/definitions/__tests__/VitestSetup.d.ts +7 -1
  13. package/dist/definitions/__tests__/VitestSetup.d.ts.map +1 -1
  14. package/dist/definitions/components/table/Table.d.ts.map +1 -1
  15. package/dist/definitions/components/table/Table.styles.d.ts +11 -0
  16. package/dist/definitions/components/table/Table.styles.d.ts.map +1 -0
  17. package/dist/definitions/components/table/TableContext.d.ts +5 -0
  18. package/dist/definitions/components/table/TableContext.d.ts.map +1 -1
  19. package/dist/definitions/components/table/useTable.d.ts +1 -0
  20. package/dist/definitions/components/table/useTable.d.ts.map +1 -1
  21. package/dist/esm/__tests__/VitestSetup.js.map +1 -1
  22. package/dist/esm/components/collection/CollectionItem.js +6 -0
  23. package/dist/esm/components/collection/CollectionItem.js.map +1 -1
  24. package/dist/esm/components/table/Table.js +43 -75
  25. package/dist/esm/components/table/Table.js.map +1 -1
  26. package/dist/esm/components/table/Table.styles.js +46 -0
  27. package/dist/esm/components/table/Table.styles.js.map +1 -0
  28. package/dist/esm/components/table/TableContext.js.map +1 -1
  29. package/package.json +3 -3
  30. package/src/__tests__/VitestSetup.ts +6 -1
  31. package/src/components/collection/CollectionItem.tsx +2 -2
  32. package/src/components/table/Table.styles.ts +58 -0
  33. package/src/components/table/Table.tsx +36 -78
  34. package/src/components/table/TableContext.tsx +5 -0
  35. package/src/components/table/__tests__/Table.spec.tsx +62 -0
@@ -35,6 +35,11 @@ type TableContextType = {
35
35
  * Function to update the table state
36
36
  */
37
37
  setState: Dispatch<(prevState: TableState) => TableState>;
38
+ /**
39
+ * Whether the table currently as any kind of filter applied.
40
+ * Useful to determine if the noDataChildren is an empty state or just the result of a filter
41
+ */
42
+ isFiltered: boolean;
38
43
  /**
39
44
  * Function that clears the filter and predicates
40
45
  */
@@ -3,6 +3,7 @@ import {render, screen, userEvent, waitFor, within} from '@test-utils';
3
3
  import {FunctionComponent} from 'react';
4
4
 
5
5
  import {Table} from '../Table';
6
+ import {useTable} from '../useTable';
6
7
 
7
8
  type RowData = {firstName: string; lastName?: string};
8
9
 
@@ -68,6 +69,67 @@ describe('Table', () => {
68
69
  expect(screen.getByRole('button', {name: 'Hello'})).toBeVisible();
69
70
  });
70
71
 
72
+ it('hides the footer and header when the table is empty and not filtered', () => {
73
+ const NoData = () => <span data-testid="empty-state" />;
74
+ const customColumns: Array<ColumnDef<RowData>> = [
75
+ columnHelper.accessor('firstName', {
76
+ header: () => 'First Name',
77
+ cell: (info) => info.getValue().toUpperCase(),
78
+ enableSorting: false,
79
+ }),
80
+ columnHelper.accessor('lastName', {
81
+ header: () => 'Last Name',
82
+ cell: (info) => info.getValue().toUpperCase(),
83
+ enableSorting: false,
84
+ }),
85
+ ];
86
+ render(
87
+ <Table data={[]} columns={customColumns} noDataChildren={<NoData />}>
88
+ <Table.Header data-testid="table-header">header</Table.Header>
89
+ <Table.Footer data-testid="table-footer">footer</Table.Footer>
90
+ </Table>
91
+ );
92
+
93
+ expect(screen.queryByTestId('table-header')).not.toBeInTheDocument();
94
+ expect(screen.queryByTestId('table-footer')).not.toBeInTheDocument();
95
+ expect(screen.getByTestId('empty-state')).toBeInTheDocument();
96
+ });
97
+
98
+ it('does not hide the footer and header when the table is empty and filtered', () => {
99
+ const NoData = () => {
100
+ const {isFiltered} = useTable();
101
+ return isFiltered ? <span data-testid="filtered-empty-state" /> : <span data-testid="empty-state" />;
102
+ };
103
+ const customColumns: Array<ColumnDef<RowData>> = [
104
+ columnHelper.accessor('firstName', {
105
+ header: () => 'First Name',
106
+ cell: (info) => info.getValue().toUpperCase(),
107
+ enableSorting: false,
108
+ }),
109
+ columnHelper.accessor('lastName', {
110
+ header: () => 'Last Name',
111
+ cell: (info) => info.getValue().toUpperCase(),
112
+ enableSorting: false,
113
+ }),
114
+ ];
115
+ render(
116
+ <Table
117
+ data={[]}
118
+ columns={customColumns}
119
+ noDataChildren={<NoData />}
120
+ initialState={{globalFilter: 'something'}}
121
+ >
122
+ <Table.Header data-testid="table-header">header</Table.Header>
123
+ <Table.Footer data-testid="table-footer">footer</Table.Footer>
124
+ </Table>
125
+ );
126
+
127
+ expect(screen.getByTestId('table-header')).toBeInTheDocument();
128
+ expect(screen.getByTestId('table-footer')).toBeInTheDocument();
129
+ expect(screen.getByTestId('filtered-empty-state')).toBeInTheDocument();
130
+ expect(screen.queryByTestId('empty-state')).not.toBeInTheDocument();
131
+ });
132
+
71
133
  it('opens the collapsible rows when the user click on the toggle', async () => {
72
134
  const user = userEvent.setup({delay: null});
73
135
  const Fixture: FunctionComponent<{row: RowData}> = ({row}) => <div>Collapsible content: {row.lastName}</div>;