@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.
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +29 -29
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/__tests__/VitestSetup.js.map +1 -1
- package/dist/cjs/components/collection/CollectionItem.js +6 -0
- package/dist/cjs/components/collection/CollectionItem.js.map +1 -1
- package/dist/cjs/components/table/Table.js +42 -74
- package/dist/cjs/components/table/Table.js.map +1 -1
- package/dist/cjs/components/table/Table.styles.js +56 -0
- package/dist/cjs/components/table/Table.styles.js.map +1 -0
- package/dist/cjs/components/table/TableContext.js.map +1 -1
- package/dist/definitions/__tests__/VitestSetup.d.ts +7 -1
- package/dist/definitions/__tests__/VitestSetup.d.ts.map +1 -1
- package/dist/definitions/components/table/Table.d.ts.map +1 -1
- package/dist/definitions/components/table/Table.styles.d.ts +11 -0
- package/dist/definitions/components/table/Table.styles.d.ts.map +1 -0
- package/dist/definitions/components/table/TableContext.d.ts +5 -0
- package/dist/definitions/components/table/TableContext.d.ts.map +1 -1
- package/dist/definitions/components/table/useTable.d.ts +1 -0
- package/dist/definitions/components/table/useTable.d.ts.map +1 -1
- package/dist/esm/__tests__/VitestSetup.js.map +1 -1
- package/dist/esm/components/collection/CollectionItem.js +6 -0
- package/dist/esm/components/collection/CollectionItem.js.map +1 -1
- package/dist/esm/components/table/Table.js +43 -75
- package/dist/esm/components/table/Table.js.map +1 -1
- package/dist/esm/components/table/Table.styles.js +46 -0
- package/dist/esm/components/table/Table.styles.js.map +1 -0
- package/dist/esm/components/table/TableContext.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/VitestSetup.ts +6 -1
- package/src/components/collection/CollectionItem.tsx +2 -2
- package/src/components/table/Table.styles.ts +58 -0
- package/src/components/table/Table.tsx +36 -78
- package/src/components/table/TableContext.tsx +5 -0
- 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>;
|