@coveord/plasma-mantine 52.13.2 → 52.14.0
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 +30 -30
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/copyToClipboard/CopyToClipboard.d.ts.map +1 -1
- package/dist/cjs/components/copyToClipboard/CopyToClipboard.js +1 -0
- package/dist/cjs/components/copyToClipboard/CopyToClipboard.js.map +1 -1
- package/dist/cjs/components/header/Header.d.ts.map +1 -1
- package/dist/cjs/components/header/Header.js +2 -1
- package/dist/cjs/components/header/Header.js.map +1 -1
- package/dist/cjs/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/cjs/components/table/TableFilter.d.ts.map +1 -1
- package/dist/cjs/components/table/TableFilter.js +17 -8
- package/dist/cjs/components/table/TableFilter.js.map +1 -1
- package/dist/cjs/theme/Plasmantine.d.ts +1 -1
- package/dist/cjs/theme/Plasmantine.d.ts.map +1 -1
- package/dist/cjs/theme/Plasmantine.js.map +1 -1
- package/dist/esm/components/copyToClipboard/CopyToClipboard.d.ts.map +1 -1
- package/dist/esm/components/copyToClipboard/CopyToClipboard.js +1 -0
- package/dist/esm/components/copyToClipboard/CopyToClipboard.js.map +1 -1
- package/dist/esm/components/header/Header.d.ts.map +1 -1
- package/dist/esm/components/header/Header.js +2 -1
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirm.d.ts +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/esm/components/table/TableFilter.d.ts.map +1 -1
- package/dist/esm/components/table/TableFilter.js +18 -9
- package/dist/esm/components/table/TableFilter.js.map +1 -1
- package/dist/esm/theme/Plasmantine.d.ts +1 -1
- package/dist/esm/theme/Plasmantine.d.ts.map +1 -1
- package/dist/esm/theme/Plasmantine.js.map +1 -1
- package/package.json +16 -16
- package/src/components/copyToClipboard/CopyToClipboard.tsx +1 -0
- package/src/components/header/Header.tsx +1 -0
- package/src/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +1 -1
- package/src/components/inline-confirm/InlineConfirm.tsx +1 -1
- package/src/components/table/TableFilter.tsx +15 -10
- package/src/components/table/__tests__/TableFilter.spec.tsx +20 -5
- package/src/theme/Plasmantine.tsx +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coveord/plasma-mantine",
|
|
3
|
-
"version": "52.
|
|
3
|
+
"version": "52.14.0",
|
|
4
4
|
"description": "A Plasma flavoured Mantine theme",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plasma",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@dnd-kit/modifiers": "6.0.1",
|
|
32
32
|
"@dnd-kit/sortable": "7.0.2",
|
|
33
33
|
"@dnd-kit/utilities": "3.2.1",
|
|
34
|
-
"@mantine/utils": "6.0.
|
|
34
|
+
"@mantine/utils": "6.0.18",
|
|
35
35
|
"@monaco-editor/react": "4.5.1",
|
|
36
36
|
"@swc/helpers": "0.5.1",
|
|
37
37
|
"@tanstack/react-table": "8.9.3",
|
|
@@ -41,33 +41,33 @@
|
|
|
41
41
|
"lodash.debounce": "4.0.8",
|
|
42
42
|
"lodash.defaultsdeep": "4.6.1",
|
|
43
43
|
"monaco-editor": "0.41.0",
|
|
44
|
-
"@coveord/plasma-react-icons": "52.
|
|
45
|
-
"@coveord/plasma-tokens": "52.
|
|
44
|
+
"@coveord/plasma-react-icons": "52.14.0",
|
|
45
|
+
"@coveord/plasma-tokens": "52.14.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@emotion/react": "11.11.1",
|
|
49
|
-
"@mantine/carousel": "6.0.
|
|
50
|
-
"@mantine/core": "6.0.
|
|
51
|
-
"@mantine/dates": "6.0.
|
|
52
|
-
"@mantine/form": "6.0.
|
|
53
|
-
"@mantine/hooks": "6.0.
|
|
54
|
-
"@mantine/modals": "6.0.
|
|
55
|
-
"@mantine/notifications": "6.0.
|
|
49
|
+
"@mantine/carousel": "6.0.18",
|
|
50
|
+
"@mantine/core": "6.0.18",
|
|
51
|
+
"@mantine/dates": "6.0.18",
|
|
52
|
+
"@mantine/form": "6.0.18",
|
|
53
|
+
"@mantine/hooks": "6.0.18",
|
|
54
|
+
"@mantine/modals": "6.0.18",
|
|
55
|
+
"@mantine/notifications": "6.0.18",
|
|
56
56
|
"@swc/cli": "0.1.62",
|
|
57
|
-
"@swc/core": "1.3.
|
|
58
|
-
"@swc/jest": "0.2.
|
|
57
|
+
"@swc/core": "1.3.75",
|
|
58
|
+
"@swc/jest": "0.2.28",
|
|
59
59
|
"@testing-library/jest-dom": "5.17.0",
|
|
60
60
|
"@testing-library/react": "14.0.0",
|
|
61
61
|
"@testing-library/user-event": "14.4.3",
|
|
62
62
|
"@types/jest": "29.5.3",
|
|
63
63
|
"@types/lodash.debounce": "^4.0.7",
|
|
64
64
|
"@types/lodash.defaultsdeep": "4.6.7",
|
|
65
|
-
"@types/react": "18.2.
|
|
65
|
+
"@types/react": "18.2.19",
|
|
66
66
|
"@types/react-dom": "18.2.7",
|
|
67
67
|
"@types/testing-library__jest-dom": "5.14.9",
|
|
68
68
|
"csstype": "3.1.2",
|
|
69
69
|
"embla-carousel-react": "7.1.0",
|
|
70
|
-
"eslint-plugin-testing-library": "5.11.
|
|
70
|
+
"eslint-plugin-testing-library": "5.11.1",
|
|
71
71
|
"eslint-plugin-vitest": "0.2.8",
|
|
72
72
|
"eslint-plugin-vitest-globals": "1.4.0",
|
|
73
73
|
"identity-obj-proxy": "3.0.0",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"tslib": "2.6.1",
|
|
83
83
|
"typescript": "5.1.6",
|
|
84
84
|
"vitest": "0.34.1",
|
|
85
|
-
"eslint-config-plasma": "52.
|
|
85
|
+
"eslint-config-plasma": "52.14.0"
|
|
86
86
|
},
|
|
87
87
|
"peerDependencies": {
|
|
88
88
|
"@emotion/react": "^11.10.0",
|
|
@@ -5,7 +5,7 @@ import {InlineConfirmContext} from './InlineConfirmContext';
|
|
|
5
5
|
import {InlineConfirmMenuItem} from './InlineConfirmMenuItem';
|
|
6
6
|
import {InlineConfirmPrompt} from './InlineConfirmPrompt';
|
|
7
7
|
|
|
8
|
-
type InlineConfirmType = FunctionComponent<PropsWithChildren
|
|
8
|
+
type InlineConfirmType = FunctionComponent<PropsWithChildren<unknown>> & {
|
|
9
9
|
Prompt: typeof InlineConfirmPrompt;
|
|
10
10
|
Button: typeof InlineConfirmButton;
|
|
11
11
|
MenuItem: typeof InlineConfirmMenuItem;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {CrossSize16Px, SearchSize16Px} from '@coveord/plasma-react-icons';
|
|
2
|
-
import {ActionIcon,
|
|
3
|
-
import {ChangeEventHandler, FunctionComponent, MouseEventHandler} from 'react';
|
|
2
|
+
import {ActionIcon, DefaultProps, Grid, Selectors, TextInput, createStyles} from '@mantine/core';
|
|
3
|
+
import {ChangeEventHandler, FunctionComponent, MouseEventHandler, useState} from 'react';
|
|
4
4
|
|
|
5
|
+
import {useDebouncedValue, useDidUpdate} from '@mantine/hooks';
|
|
5
6
|
import {TableComponentsOrder} from './Table.styles';
|
|
6
7
|
import {useTable} from './TableContext';
|
|
7
8
|
|
|
@@ -34,24 +35,27 @@ export const TableFilter: FunctionComponent<TableFilterProps> = ({
|
|
|
34
35
|
}) => {
|
|
35
36
|
const {classes} = useStyles(null, {name: 'TableFilter', classNames, styles, unstyled});
|
|
36
37
|
const {state, setState} = useTable();
|
|
38
|
+
const [filter, setFilter] = useState(state.globalFilter);
|
|
39
|
+
const [debounced, cancel] = useDebouncedValue(filter, 300);
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
useDidUpdate(() => {
|
|
39
42
|
setState((prevState) => ({
|
|
40
43
|
...prevState,
|
|
41
44
|
pagination: prevState.pagination
|
|
42
45
|
? {pageIndex: 0, pageSize: prevState.pagination.pageSize}
|
|
43
46
|
: prevState.pagination,
|
|
44
|
-
globalFilter:
|
|
47
|
+
globalFilter: debounced,
|
|
45
48
|
}));
|
|
46
|
-
|
|
49
|
+
return cancel;
|
|
50
|
+
}, [debounced]);
|
|
47
51
|
|
|
48
52
|
const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {
|
|
49
53
|
const {value} = event.currentTarget;
|
|
50
|
-
|
|
54
|
+
setFilter(value);
|
|
51
55
|
};
|
|
52
56
|
|
|
53
57
|
const handleClear: MouseEventHandler<HTMLButtonElement> = () => {
|
|
54
|
-
|
|
58
|
+
setFilter('');
|
|
55
59
|
};
|
|
56
60
|
|
|
57
61
|
return (
|
|
@@ -59,17 +63,18 @@ export const TableFilter: FunctionComponent<TableFilterProps> = ({
|
|
|
59
63
|
<TextInput
|
|
60
64
|
className={classes.wrapper}
|
|
61
65
|
placeholder={placeholder}
|
|
66
|
+
autoComplete="off"
|
|
62
67
|
mb="md"
|
|
63
68
|
rightSection={
|
|
64
|
-
|
|
69
|
+
filter ? (
|
|
65
70
|
<ActionIcon onClick={handleClear}>
|
|
66
71
|
<CrossSize16Px height={16} />
|
|
67
72
|
</ActionIcon>
|
|
68
73
|
) : (
|
|
69
|
-
<SearchSize16Px height={
|
|
74
|
+
<SearchSize16Px height={16} className={classes.empty} />
|
|
70
75
|
)
|
|
71
76
|
}
|
|
72
|
-
value={
|
|
77
|
+
value={filter}
|
|
73
78
|
onChange={handleChange}
|
|
74
79
|
{...others}
|
|
75
80
|
/>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
2
|
-
import {render, screen, userEvent, within} from '@test-utils';
|
|
2
|
+
import {act, render, screen, userEvent, within} from '@test-utils';
|
|
3
3
|
|
|
4
4
|
import {Table} from '../Table';
|
|
5
5
|
|
|
@@ -29,7 +29,7 @@ describe('Table.Filter', () => {
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
it('calls onChange when typing something in the filter', async () => {
|
|
32
|
-
const user = userEvent.setup({
|
|
32
|
+
const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
|
|
33
33
|
const onChange = vi.fn();
|
|
34
34
|
render(
|
|
35
35
|
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
|
|
@@ -40,13 +40,21 @@ describe('Table.Filter', () => {
|
|
|
40
40
|
);
|
|
41
41
|
|
|
42
42
|
await user.type(screen.getByRole('textbox'), 'vegetable');
|
|
43
|
-
|
|
43
|
+
|
|
44
|
+
act(() => {
|
|
45
|
+
// 300 ms debounce on TableFilter input
|
|
46
|
+
vi.advanceTimersByTime(300);
|
|
47
|
+
});
|
|
48
|
+
act(() => {
|
|
49
|
+
// 500 ms debounce on Table onChange callback
|
|
50
|
+
vi.advanceTimersByTime(500);
|
|
51
|
+
});
|
|
44
52
|
|
|
45
53
|
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({globalFilter: 'vegetable'}));
|
|
46
54
|
});
|
|
47
55
|
|
|
48
56
|
it('goes back to the first page when changing the filter', async () => {
|
|
49
|
-
const user = userEvent.setup({
|
|
57
|
+
const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
|
|
50
58
|
const onChange = vi.fn();
|
|
51
59
|
render(
|
|
52
60
|
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
|
|
@@ -61,7 +69,14 @@ describe('Table.Filter', () => {
|
|
|
61
69
|
);
|
|
62
70
|
|
|
63
71
|
await user.type(screen.getByRole('textbox'), 'veg');
|
|
64
|
-
|
|
72
|
+
act(() => {
|
|
73
|
+
// 300 ms debounce on TableFilter input
|
|
74
|
+
vi.advanceTimersByTime(300);
|
|
75
|
+
});
|
|
76
|
+
act(() => {
|
|
77
|
+
// 500 ms debounce on Table onChange callback
|
|
78
|
+
vi.advanceTimersByTime(500);
|
|
79
|
+
});
|
|
65
80
|
|
|
66
81
|
expect(onChange).toHaveBeenCalledWith(
|
|
67
82
|
expect.objectContaining({globalFilter: 'veg', pagination: {pageIndex: 0, pageSize: 50}}),
|
|
@@ -3,7 +3,7 @@ import {FunctionComponent, PropsWithChildren} from 'react';
|
|
|
3
3
|
|
|
4
4
|
import {plasmaTheme} from './Theme';
|
|
5
5
|
|
|
6
|
-
export const Plasmantine: FunctionComponent<PropsWithChildren
|
|
6
|
+
export const Plasmantine: FunctionComponent<PropsWithChildren<unknown>> = ({children}) => (
|
|
7
7
|
<MantineProvider withGlobalStyles withNormalizeCSS theme={plasmaTheme}>
|
|
8
8
|
{children}
|
|
9
9
|
</MantineProvider>
|