@coveord/plasma-mantine 49.3.4 → 49.3.6

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 (104) 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/components/collection/CollectionItem.js +6 -0
  5. package/dist/cjs/components/collection/CollectionItem.js.map +1 -1
  6. package/dist/cjs/components/table/Table.js +10 -53
  7. package/dist/cjs/components/table/Table.js.map +1 -1
  8. package/dist/cjs/components/table/Table.styles.js +56 -0
  9. package/dist/cjs/components/table/Table.styles.js.map +1 -0
  10. package/dist/cjs/components/table/Table.types.js +6 -0
  11. package/dist/cjs/components/table/Table.types.js.map +1 -0
  12. package/dist/cjs/components/table/TableActions.js +3 -3
  13. package/dist/cjs/components/table/TableActions.js.map +1 -1
  14. package/dist/cjs/components/table/TableContext.js +18 -3
  15. package/dist/cjs/components/table/TableContext.js.map +1 -1
  16. package/dist/cjs/components/table/TableDateRangePicker.js +2 -2
  17. package/dist/cjs/components/table/TableDateRangePicker.js.map +1 -1
  18. package/dist/cjs/components/table/TableFilter.js +2 -2
  19. package/dist/cjs/components/table/TableFilter.js.map +1 -1
  20. package/dist/cjs/components/table/TableHeader.js +2 -2
  21. package/dist/cjs/components/table/TableHeader.js.map +1 -1
  22. package/dist/cjs/components/table/TablePagination.js +2 -2
  23. package/dist/cjs/components/table/TablePagination.js.map +1 -1
  24. package/dist/cjs/components/table/TablePerPage.js +2 -2
  25. package/dist/cjs/components/table/TablePerPage.js.map +1 -1
  26. package/dist/cjs/components/table/TablePredicate.js +2 -2
  27. package/dist/cjs/components/table/TablePredicate.js.map +1 -1
  28. package/dist/cjs/components/table/index.js +7 -1
  29. package/dist/cjs/components/table/index.js.map +1 -1
  30. package/dist/cjs/components/table/useRowSelection.js +27 -17
  31. package/dist/cjs/components/table/useRowSelection.js.map +1 -1
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/definitions/components/table/Table.d.ts +1 -98
  34. package/dist/definitions/components/table/Table.d.ts.map +1 -1
  35. package/dist/definitions/components/table/Table.styles.d.ts +11 -0
  36. package/dist/definitions/components/table/Table.styles.d.ts.map +1 -0
  37. package/dist/definitions/components/table/Table.types.d.ts +177 -0
  38. package/dist/definitions/components/table/Table.types.d.ts.map +1 -0
  39. package/dist/definitions/components/table/TableActions.d.ts.map +1 -1
  40. package/dist/definitions/components/table/TableContext.d.ts +4 -71
  41. package/dist/definitions/components/table/TableContext.d.ts.map +1 -1
  42. package/dist/definitions/components/table/TableFilter.d.ts.map +1 -1
  43. package/dist/definitions/components/table/TablePagination.d.ts.map +1 -1
  44. package/dist/definitions/components/table/TablePerPage.d.ts.map +1 -1
  45. package/dist/definitions/components/table/TablePredicate.d.ts.map +1 -1
  46. package/dist/definitions/components/table/index.d.ts +2 -2
  47. package/dist/definitions/components/table/index.d.ts.map +1 -1
  48. package/dist/definitions/components/table/useRowSelection.d.ts +4 -1
  49. package/dist/definitions/components/table/useRowSelection.d.ts.map +1 -1
  50. package/dist/definitions/index.d.ts +1 -1
  51. package/dist/definitions/index.d.ts.map +1 -1
  52. package/dist/esm/components/collection/CollectionItem.js +6 -0
  53. package/dist/esm/components/collection/CollectionItem.js.map +1 -1
  54. package/dist/esm/components/table/Table.js +11 -54
  55. package/dist/esm/components/table/Table.js.map +1 -1
  56. package/dist/esm/components/table/Table.styles.js +46 -0
  57. package/dist/esm/components/table/Table.styles.js.map +1 -0
  58. package/dist/esm/components/table/Table.types.js +3 -0
  59. package/dist/esm/components/table/Table.types.js.map +1 -0
  60. package/dist/esm/components/table/TableActions.js +2 -2
  61. package/dist/esm/components/table/TableActions.js.map +1 -1
  62. package/dist/esm/components/table/TableContext.js +8 -1
  63. package/dist/esm/components/table/TableContext.js.map +1 -1
  64. package/dist/esm/components/table/TableDateRangePicker.js +1 -1
  65. package/dist/esm/components/table/TableDateRangePicker.js.map +1 -1
  66. package/dist/esm/components/table/TableFilter.js +1 -1
  67. package/dist/esm/components/table/TableFilter.js.map +1 -1
  68. package/dist/esm/components/table/TableHeader.js +1 -1
  69. package/dist/esm/components/table/TableHeader.js.map +1 -1
  70. package/dist/esm/components/table/TablePagination.js +1 -1
  71. package/dist/esm/components/table/TablePagination.js.map +1 -1
  72. package/dist/esm/components/table/TablePerPage.js +1 -1
  73. package/dist/esm/components/table/TablePerPage.js.map +1 -1
  74. package/dist/esm/components/table/TablePredicate.js +2 -2
  75. package/dist/esm/components/table/TablePredicate.js.map +1 -1
  76. package/dist/esm/components/table/index.js +1 -1
  77. package/dist/esm/components/table/index.js.map +1 -1
  78. package/dist/esm/components/table/useRowSelection.js +26 -17
  79. package/dist/esm/components/table/useRowSelection.js.map +1 -1
  80. package/dist/esm/index.js.map +1 -1
  81. package/package.json +6 -5
  82. package/src/components/collection/CollectionItem.tsx +2 -2
  83. package/src/components/table/Table.styles.ts +58 -0
  84. package/src/components/table/Table.tsx +18 -173
  85. package/src/components/table/Table.types.ts +203 -0
  86. package/src/components/table/TableActions.tsx +10 -3
  87. package/src/components/table/TableContext.tsx +9 -70
  88. package/src/components/table/TableDateRangePicker.tsx +1 -1
  89. package/src/components/table/TableFilter.tsx +2 -3
  90. package/src/components/table/TableHeader.tsx +1 -1
  91. package/src/components/table/TablePagination.tsx +3 -3
  92. package/src/components/table/TablePerPage.tsx +2 -3
  93. package/src/components/table/TablePredicate.tsx +3 -2
  94. package/src/components/table/__tests__/Table.spec.tsx +59 -22
  95. package/src/components/table/index.ts +2 -2
  96. package/src/components/table/useRowSelection.ts +36 -21
  97. package/src/index.ts +2 -0
  98. package/dist/cjs/components/table/useTable.js +0 -21
  99. package/dist/cjs/components/table/useTable.js.map +0 -1
  100. package/dist/definitions/components/table/useTable.d.ts +0 -16
  101. package/dist/definitions/components/table/useTable.d.ts.map +0 -1
  102. package/dist/esm/components/table/useTable.js +0 -11
  103. package/dist/esm/components/table/useTable.js.map +0 -1
  104. package/src/components/table/useTable.tsx +0 -11
@@ -1,29 +1,48 @@
1
- import {functionalUpdate, Table} from '@tanstack/table-core';
2
- import {useState} from 'react';
1
+ import {useClickOutside} from '@mantine/hooks';
2
+ import {functionalUpdate, RowSelectionState, Table} from '@tanstack/table-core';
3
+ import isEqual from 'fast-deep-equal';
3
4
 
4
- export const useRowSelection = <T>(table: Table<T>) => {
5
- const [rowSelection, setRowSelection] = useState<Record<string, T>>({});
5
+ import {RowSelectionWithData, TableProps, TableState} from './Table.types';
6
+
7
+ export const useRowSelection = <T>(
8
+ table: Table<T>,
9
+ {multiRowSelectionEnabled}: Pick<TableProps<T>, 'multiRowSelectionEnabled'>
10
+ ) => {
11
+ const outsideClickRef = useClickOutside(() => {
12
+ if (!multiRowSelectionEnabled) {
13
+ clearSelection();
14
+ }
15
+ });
6
16
 
7
17
  table.setOptions((prev) => ({
8
18
  ...prev,
9
19
  onRowSelectionChange: (rowSelectionUpdater) => {
10
20
  table.setState((old) => {
11
- const selectedRowsIds = functionalUpdate(rowSelectionUpdater, old['rowSelection']);
12
- setRowSelection((current) => {
13
- const currentRowsById = table.getRowModel().rowsById;
14
- return Object.keys(selectedRowsIds).reduce((memo, rowId) => {
15
- if (current[rowId]) {
16
- memo[rowId] = current[rowId];
17
- } else {
18
- memo[rowId] = currentRowsById[rowId].original;
21
+ const newRowSelection = functionalUpdate(
22
+ rowSelectionUpdater,
23
+ old['rowSelection']
24
+ ) as RowSelectionWithData<T>;
25
+
26
+ if (isEqual(old['rowSelection'], newRowSelection)) {
27
+ return old;
28
+ }
29
+
30
+ const rows = table.getRowModel().rowsById;
31
+
32
+ Object.keys(newRowSelection).forEach((rowId) => {
33
+ if (newRowSelection[rowId] === true) {
34
+ if (!rows[rowId]) {
35
+ console.error(
36
+ 'The table was not initialized properly, the rowSelection state should contain an object of type Record<string, TData>.'
37
+ );
19
38
  }
20
- return memo;
21
- }, {} as Record<string, T>);
39
+ newRowSelection[rowId] = rows[rowId]?.original ?? (true as T);
40
+ }
22
41
  });
23
42
 
24
43
  return {
25
44
  ...old,
26
- rowSelection: selectedRowsIds,
45
+ rowSelection: newRowSelection as RowSelectionState,
27
46
  };
28
47
  });
29
48
  },
@@ -33,13 +52,9 @@ export const useRowSelection = <T>(table: Table<T>) => {
33
52
  table.resetRowSelection(true);
34
53
  };
35
54
 
36
- const getSelectedRows = () => Object.values(rowSelection);
55
+ const getSelectedRows = () => Object.values((table.getState() as TableState<T>).rowSelection);
37
56
 
38
57
  const getSelectedRow = () => getSelectedRows()[0] ?? null;
39
58
 
40
- return {
41
- clearSelection,
42
- getSelectedRow,
43
- getSelectedRows,
44
- };
59
+ return {clearSelection, getSelectedRow, getSelectedRows, outsideClickRef};
45
60
  };
package/src/index.ts CHANGED
@@ -15,6 +15,8 @@ export {
15
15
  Header,
16
16
  Table,
17
17
  type TableProps,
18
+ type TableState,
19
+ type InitialTableState,
18
20
  type HeaderProps,
19
21
  Modal,
20
22
  Button,
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "useTable", {
6
- enumerable: true,
7
- get: function() {
8
- return useTable;
9
- }
10
- });
11
- var _react = require("react");
12
- var _tableContext = require("./TableContext");
13
- var useTable = function() {
14
- var ctx = (0, _react.useContext)(_tableContext.TableContext);
15
- if (ctx === null) {
16
- throw new Error("useTable must be used inside of a TableContext.Provider");
17
- }
18
- return ctx;
19
- };
20
-
21
- //# sourceMappingURL=useTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/table/useTable.tsx"],"sourcesContent":["import {useContext} from 'react';\nimport {TableContext} from './TableContext';\n\nexport const useTable = () => {\n const ctx = useContext(TableContext);\n if (ctx === null) {\n throw new Error('useTable must be used inside of a TableContext.Provider');\n }\n\n return ctx;\n};\n"],"names":["useTable","ctx","useContext","TableContext","Error"],"mappings":";;;;+BAGaA;;;eAAAA;;;qBAHY;4BACE;AAEpB,IAAMA,WAAW,WAAM;IAC1B,IAAMC,MAAMC,IAAAA,iBAAU,EAACC,0BAAY;IACnC,IAAIF,QAAQ,IAAI,EAAE;QACd,MAAM,IAAIG,MAAM,2DAA2D;IAC/E,CAAC;IAED,OAAOH;AACX"}
@@ -1,16 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const useTable: () => {
3
- onChange: () => void;
4
- state: import("@tanstack/table-core").TableState;
5
- setState: import("react").Dispatch<(prevState: import("@tanstack/table-core").TableState) => import("@tanstack/table-core").TableState>;
6
- isFiltered: boolean;
7
- clearFilters: () => void;
8
- getSelectedRow: () => any;
9
- getSelectedRows: () => any[];
10
- clearSelection: () => void;
11
- form: import("@mantine/form").UseFormReturnType<import("./TableContext").TableFormType, (values: import("./TableContext").TableFormType) => import("./TableContext").TableFormType>;
12
- containerRef: import("react").RefObject<HTMLDivElement>;
13
- multiRowSelectionEnabled: boolean;
14
- getPageCount: () => number;
15
- };
16
- //# sourceMappingURL=useTable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTable.d.ts","sourceRoot":"","sources":["../../../../src/components/table/useTable.tsx"],"names":[],"mappings":";AAGA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAOpB,CAAC"}
@@ -1,11 +0,0 @@
1
- import { useContext } from "react";
2
- import { TableContext } from "./TableContext";
3
- export var useTable = function() {
4
- var ctx = useContext(TableContext);
5
- if (ctx === null) {
6
- throw new Error("useTable must be used inside of a TableContext.Provider");
7
- }
8
- return ctx;
9
- };
10
-
11
- //# sourceMappingURL=useTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/components/table/useTable.tsx"],"sourcesContent":["import {useContext} from 'react';\nimport {TableContext} from './TableContext';\n\nexport const useTable = () => {\n const ctx = useContext(TableContext);\n if (ctx === null) {\n throw new Error('useTable must be used inside of a TableContext.Provider');\n }\n\n return ctx;\n};\n"],"names":["useContext","TableContext","useTable","ctx","Error"],"mappings":"AAAA,SAAQA,UAAU,QAAO,QAAQ;AACjC,SAAQC,YAAY,QAAO,iBAAiB;AAE5C,OAAO,IAAMC,WAAW,WAAM;IAC1B,IAAMC,MAAMH,WAAWC;IACvB,IAAIE,QAAQ,IAAI,EAAE;QACd,MAAM,IAAIC,MAAM,2DAA2D;IAC/E,CAAC;IAED,OAAOD;AACX,EAAE"}
@@ -1,11 +0,0 @@
1
- import {useContext} from 'react';
2
- import {TableContext} from './TableContext';
3
-
4
- export const useTable = () => {
5
- const ctx = useContext(TableContext);
6
- if (ctx === null) {
7
- throw new Error('useTable must be used inside of a TableContext.Provider');
8
- }
9
-
10
- return ctx;
11
- };