@dmsi/wedgekit-react 0.0.275 → 0.0.277

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 (47) hide show
  1. package/dist/{chunk-FLVYV4T4.js → chunk-CKQNJNU3.js} +3 -3
  2. package/dist/{chunk-HIVPC3T4.js → chunk-JUJBS4ZV.js} +18 -3
  3. package/dist/{chunk-6YLAEWTZ.js → chunk-MIX7MTLR.js} +33 -17
  4. package/dist/{chunk-ESAKAJHE.js → chunk-NXGUDYRR.js} +4 -4
  5. package/dist/{chunk-FQRSSPFV.js → chunk-Q7JYDOFB.js} +3 -3
  6. package/dist/{chunk-PGSDEGBP.js → chunk-W32JB47H.js} +2 -2
  7. package/dist/{chunk-CCOQOO23.js → chunk-WPEDVM56.js} +1 -1
  8. package/dist/{chunk-AB4ZBO5P.js → chunk-YCKRVNJ3.js} +5 -5
  9. package/dist/components/CalendarRange.cjs +30 -5
  10. package/dist/components/CalendarRange.js +10 -10
  11. package/dist/components/DataGridCell.js +6 -6
  12. package/dist/components/DateInput.cjs +30 -5
  13. package/dist/components/DateInput.js +12 -12
  14. package/dist/components/DateRangeInput.cjs +31 -6
  15. package/dist/components/DateRangeInput.js +13 -13
  16. package/dist/components/FilterGroup.js +5 -5
  17. package/dist/components/Menu.js +3 -3
  18. package/dist/components/MenuOption.js +3 -3
  19. package/dist/components/MobileDataGrid.js +3 -3
  20. package/dist/components/Modal.js +5 -5
  21. package/dist/components/ModalButtons.js +2 -2
  22. package/dist/components/ModalHeader.js +2 -2
  23. package/dist/components/NavigationTab.js +2 -2
  24. package/dist/components/NavigationTabs.js +2 -2
  25. package/dist/components/NestedMenu.js +3 -3
  26. package/dist/components/Notification.js +3 -3
  27. package/dist/components/OptionPill.js +2 -2
  28. package/dist/components/PDFViewer.js +7 -7
  29. package/dist/components/ProjectBar.js +1 -1
  30. package/dist/components/Stepper.js +3 -3
  31. package/dist/components/Time.js +3 -3
  32. package/dist/components/Toast.js +3 -3
  33. package/dist/components/Upload.js +3 -3
  34. package/dist/components/index.cjs +30 -5
  35. package/dist/components/index.js +15 -15
  36. package/dist/components/useMenuSystem.js +2 -2
  37. package/dist/hooks/index.cjs +18 -3
  38. package/dist/hooks/index.js +1 -1
  39. package/package.json +1 -1
  40. package/src/components/DataGrid/index.tsx +18 -3
  41. package/src/components/DataGrid/types.ts +1 -0
  42. package/src/components/DateRangeInput.tsx +1 -1
  43. package/src/hooks/useTableLayout.ts +23 -3
  44. package/dist/{chunk-6CPGOW6J.js → chunk-3C2U4FKR.js} +3 -3
  45. package/dist/{chunk-KKESN5SF.js → chunk-4XTTJOQA.js} +3 -3
  46. package/dist/{chunk-XM7IQHBU.js → chunk-5OPI4GTJ.js} +3 -3
  47. package/dist/{chunk-FHQL42YP.js → chunk-YUBQJQ75.js} +3 -3
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  MenuOption
4
- } from "../chunk-FLVYV4T4.js";
5
- import "../chunk-HIVPC3T4.js";
6
- import "../chunk-VXWSAIB5.js";
4
+ } from "../chunk-CKQNJNU3.js";
7
5
  import "../chunk-7CS736EF.js";
6
+ import "../chunk-JUJBS4ZV.js";
7
+ import "../chunk-VXWSAIB5.js";
8
8
  import "../chunk-TYTD4FLW.js";
9
9
  import "../chunk-5UH6QUFB.js";
10
10
  import "../chunk-OGIFIPKH.js";
@@ -4,6 +4,9 @@ import {
4
4
  import {
5
5
  Heading3
6
6
  } from "../chunk-EU73QPW7.js";
7
+ import {
8
+ Button
9
+ } from "../chunk-WWAPK5PH.js";
7
10
  import {
8
11
  Stack
9
12
  } from "../chunk-NQXZBWDZ.js";
@@ -13,9 +16,6 @@ import {
13
16
  import {
14
17
  Icon
15
18
  } from "../chunk-NKUETCDA.js";
16
- import {
17
- Button
18
- } from "../chunk-WWAPK5PH.js";
19
19
  import "../chunk-6CTCHYIS.js";
20
20
  import "../chunk-ORMEWXMH.js";
21
21
 
@@ -1,19 +1,19 @@
1
1
  "use client";
2
2
  import {
3
3
  Modal
4
- } from "../chunk-FQRSSPFV.js";
4
+ } from "../chunk-Q7JYDOFB.js";
5
5
  import "../chunk-4RJKB7LC.js";
6
- import "../chunk-XM7IQHBU.js";
6
+ import "../chunk-5OPI4GTJ.js";
7
7
  import "../chunk-FRHPFACM.js";
8
- import "../chunk-6CPGOW6J.js";
8
+ import "../chunk-3C2U4FKR.js";
9
9
  import "../chunk-ZFOANBWG.js";
10
10
  import "../chunk-EU73QPW7.js";
11
- import "../chunk-HIVPC3T4.js";
11
+ import "../chunk-WWAPK5PH.js";
12
+ import "../chunk-JUJBS4ZV.js";
12
13
  import "../chunk-VXWSAIB5.js";
13
14
  import "../chunk-TYTD4FLW.js";
14
15
  import "../chunk-5UH6QUFB.js";
15
16
  import "../chunk-NKUETCDA.js";
16
- import "../chunk-WWAPK5PH.js";
17
17
  import "../chunk-6CTCHYIS.js";
18
18
  import "../chunk-ORMEWXMH.js";
19
19
  export {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  ModalButtons
3
- } from "../chunk-XM7IQHBU.js";
4
- import "../chunk-NKUETCDA.js";
3
+ } from "../chunk-5OPI4GTJ.js";
5
4
  import "../chunk-WWAPK5PH.js";
5
+ import "../chunk-NKUETCDA.js";
6
6
  import "../chunk-6CTCHYIS.js";
7
7
  import "../chunk-ORMEWXMH.js";
8
8
  export {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ModalHeader
3
- } from "../chunk-6CPGOW6J.js";
3
+ } from "../chunk-3C2U4FKR.js";
4
4
  import "../chunk-EU73QPW7.js";
5
- import "../chunk-NKUETCDA.js";
6
5
  import "../chunk-WWAPK5PH.js";
6
+ import "../chunk-NKUETCDA.js";
7
7
  import "../chunk-6CTCHYIS.js";
8
8
  import "../chunk-ORMEWXMH.js";
9
9
  export {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  NavigationTab
3
- } from "../chunk-FHQL42YP.js";
4
- import "../chunk-NKUETCDA.js";
3
+ } from "../chunk-YUBQJQ75.js";
5
4
  import "../chunk-WWAPK5PH.js";
5
+ import "../chunk-NKUETCDA.js";
6
6
  import "../chunk-6CTCHYIS.js";
7
7
  import "../chunk-ORMEWXMH.js";
8
8
  export {
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import {
3
3
  NavigationTab
4
- } from "../chunk-FHQL42YP.js";
5
- import "../chunk-NKUETCDA.js";
4
+ } from "../chunk-YUBQJQ75.js";
6
5
  import "../chunk-WWAPK5PH.js";
6
+ import "../chunk-NKUETCDA.js";
7
7
  import {
8
8
  componentGap
9
9
  } from "../chunk-6CTCHYIS.js";
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import {
3
3
  MenuOption
4
- } from "../chunk-FLVYV4T4.js";
4
+ } from "../chunk-CKQNJNU3.js";
5
+ import "../chunk-7CS736EF.js";
5
6
  import {
6
7
  useKeydown
7
- } from "../chunk-HIVPC3T4.js";
8
+ } from "../chunk-JUJBS4ZV.js";
8
9
  import "../chunk-VXWSAIB5.js";
9
- import "../chunk-7CS736EF.js";
10
10
  import "../chunk-TYTD4FLW.js";
11
11
  import "../chunk-5UH6QUFB.js";
12
12
  import "../chunk-OGIFIPKH.js";
@@ -2,6 +2,9 @@
2
2
  import {
3
3
  Heading3
4
4
  } from "../chunk-EU73QPW7.js";
5
+ import {
6
+ Button
7
+ } from "../chunk-WWAPK5PH.js";
5
8
  import {
6
9
  Stack
7
10
  } from "../chunk-NQXZBWDZ.js";
@@ -11,9 +14,6 @@ import {
11
14
  import {
12
15
  Icon
13
16
  } from "../chunk-NKUETCDA.js";
14
- import {
15
- Button
16
- } from "../chunk-WWAPK5PH.js";
17
17
  import "../chunk-6CTCHYIS.js";
18
18
  import {
19
19
  __objRest,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  OptionPill
3
- } from "../chunk-KKESN5SF.js";
3
+ } from "../chunk-4XTTJOQA.js";
4
4
  import "../chunk-7CS736EF.js";
5
- import "../chunk-NKUETCDA.js";
6
5
  import "../chunk-WWAPK5PH.js";
6
+ import "../chunk-NKUETCDA.js";
7
7
  import "../chunk-6CTCHYIS.js";
8
8
  import "../chunk-ORMEWXMH.js";
9
9
  export {
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import {
3
3
  Modal
4
- } from "../chunk-FQRSSPFV.js";
4
+ } from "../chunk-Q7JYDOFB.js";
5
5
  import "../chunk-4RJKB7LC.js";
6
- import "../chunk-XM7IQHBU.js";
6
+ import "../chunk-5OPI4GTJ.js";
7
7
  import "../chunk-FRHPFACM.js";
8
- import "../chunk-6CPGOW6J.js";
8
+ import "../chunk-3C2U4FKR.js";
9
9
  import "../chunk-ZFOANBWG.js";
10
10
  import {
11
11
  Spinner
@@ -13,7 +13,10 @@ import {
13
13
  import {
14
14
  Heading3
15
15
  } from "../chunk-EU73QPW7.js";
16
- import "../chunk-HIVPC3T4.js";
16
+ import {
17
+ Button
18
+ } from "../chunk-WWAPK5PH.js";
19
+ import "../chunk-JUJBS4ZV.js";
17
20
  import "../chunk-VXWSAIB5.js";
18
21
  import "../chunk-TYTD4FLW.js";
19
22
  import "../chunk-5UH6QUFB.js";
@@ -26,9 +29,6 @@ import {
26
29
  import {
27
30
  Icon
28
31
  } from "../chunk-NKUETCDA.js";
29
- import {
30
- Button
31
- } from "../chunk-WWAPK5PH.js";
32
32
  import "../chunk-6CTCHYIS.js";
33
33
  import "../chunk-ORMEWXMH.js";
34
34
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useMatchesMobile
3
- } from "../chunk-HIVPC3T4.js";
3
+ } from "../chunk-JUJBS4ZV.js";
4
4
  import "../chunk-VXWSAIB5.js";
5
5
  import "../chunk-TYTD4FLW.js";
6
6
  import "../chunk-5UH6QUFB.js";
@@ -3,13 +3,13 @@ import {
3
3
  InputBase
4
4
  } from "../chunk-ZL5X7KP6.js";
5
5
  import "../chunk-7CS736EF.js";
6
+ import {
7
+ Button
8
+ } from "../chunk-WWAPK5PH.js";
6
9
  import "../chunk-5UH6QUFB.js";
7
10
  import {
8
11
  Icon
9
12
  } from "../chunk-NKUETCDA.js";
10
- import {
11
- Button
12
- } from "../chunk-WWAPK5PH.js";
13
13
  import {
14
14
  componentGap
15
15
  } from "../chunk-6CTCHYIS.js";
@@ -1,10 +1,10 @@
1
- import {
2
- findDocumentRoot
3
- } from "../chunk-VXWSAIB5.js";
4
1
  import {
5
2
  InputBase
6
3
  } from "../chunk-ZL5X7KP6.js";
7
4
  import "../chunk-7CS736EF.js";
5
+ import {
6
+ findDocumentRoot
7
+ } from "../chunk-VXWSAIB5.js";
8
8
  import "../chunk-TYTD4FLW.js";
9
9
  import "../chunk-5UH6QUFB.js";
10
10
  import {
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  Heading3
4
4
  } from "../chunk-EU73QPW7.js";
5
+ import {
6
+ Button
7
+ } from "../chunk-WWAPK5PH.js";
5
8
  import {
6
9
  Paragraph
7
10
  } from "../chunk-OGIFIPKH.js";
8
11
  import {
9
12
  Icon
10
13
  } from "../chunk-NKUETCDA.js";
11
- import {
12
- Button
13
- } from "../chunk-WWAPK5PH.js";
14
14
  import {
15
15
  componentGap,
16
16
  componentPadding,
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  Spinner
3
3
  } from "../chunk-PLMGI5K5.js";
4
+ import {
5
+ Button
6
+ } from "../chunk-WWAPK5PH.js";
4
7
  import {
5
8
  Stack
6
9
  } from "../chunk-NQXZBWDZ.js";
@@ -10,9 +13,6 @@ import {
10
13
  import {
11
14
  Icon
12
15
  } from "../chunk-NKUETCDA.js";
13
- import {
14
- Button
15
- } from "../chunk-WWAPK5PH.js";
16
16
  import {
17
17
  componentGap
18
18
  } from "../chunk-6CTCHYIS.js";
@@ -565,6 +565,8 @@ function findDocumentRoot(element) {
565
565
 
566
566
  // src/hooks/useTableLayout.ts
567
567
  var import_react5 = require("react");
568
+ var LocalStoragePrefix = `dmsi-acc-v1-table-layout`;
569
+ var getLocalStorageKeyWithPrefix = (key) => `${LocalStoragePrefix}__${key}`;
568
570
  function useTableLayout(initialColumns, key) {
569
571
  const [columns, setColumns] = (0, import_react5.useState)(initialColumns);
570
572
  const [isReady, setIsReady] = (0, import_react5.useState)(false);
@@ -576,7 +578,10 @@ function useTableLayout(initialColumns, key) {
576
578
  const newColumns = typeof setter === "function" ? setter(prevColumns) : setter;
577
579
  if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal)
578
580
  return prevColumns;
579
- localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
581
+ localStorage.setItem(
582
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
583
+ JSON.stringify(newColumns)
584
+ );
580
585
  return newColumns;
581
586
  });
582
587
  },
@@ -592,7 +597,9 @@ function useTableLayout(initialColumns, key) {
592
597
  );
593
598
  }
594
599
  renderCountRef.current += 1;
595
- const savedLayout = localStorage.getItem(`${key}-tableLayout`);
600
+ const savedLayout = localStorage.getItem(
601
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
602
+ );
596
603
  if (savedLayout) {
597
604
  handleSaveLayout(
598
605
  mergeObjectArrays(
@@ -608,7 +615,15 @@ function useTableLayout(initialColumns, key) {
608
615
  renderCountRef.current = 0;
609
616
  };
610
617
  }, [handleSaveLayout, initialColumns, key]);
611
- return { columns, setColumns: handleSaveLayout, isReady };
618
+ const getSavedLayout = (0, import_react5.useCallback)(() => {
619
+ const savedLayout = localStorage.getItem(
620
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
621
+ );
622
+ if (savedLayout) {
623
+ return JSON.parse(savedLayout);
624
+ }
625
+ }, [key]);
626
+ return { columns, setColumns: handleSaveLayout, isReady, getSavedLayout };
612
627
  }
613
628
 
614
629
  // src/components/MenuOption.tsx
@@ -2941,13 +2956,23 @@ function DataGrid({
2941
2956
  enableColumnSelector,
2942
2957
  predeterminedLeftPins = [],
2943
2958
  predeterminedRightPins = [],
2944
- useMenuDefaultMinWidth
2959
+ useMenuDefaultMinWidth,
2960
+ ref
2945
2961
  }) {
2946
2962
  var _a, _b, _c, _d, _e, _f, _g;
2963
+ (0, import_react16.useImperativeHandle)(ref, () => ({
2964
+ getSavedLayout: () => {
2965
+ return getSavedLayout();
2966
+ }
2967
+ }));
2947
2968
  const [localSorting, setLocalSorting] = (0, import_react16.useState)([]);
2948
2969
  const [localColumnFilters, setLocalColumnFilters] = (0, import_react16.useState)([]);
2949
2970
  const [localRowSelection, setLocalRowSelection] = (0, import_react16.useState)({});
2950
- const { columns: tableColumns, setColumns: setTableColumns } = useTableLayout(columns, id != null ? id : testid);
2971
+ const {
2972
+ columns: tableColumns,
2973
+ setColumns: setTableColumns,
2974
+ getSavedLayout
2975
+ } = useTableLayout(columns, id != null ? id : testid);
2951
2976
  const [columnOrder, setColumnOrder] = (0, import_react16.useState)(
2952
2977
  tableColumns.map((c) => c.id)
2953
2978
  );
@@ -1,30 +1,25 @@
1
1
  import {
2
2
  DataGrid
3
- } from "../chunk-6YLAEWTZ.js";
3
+ } from "../chunk-MIX7MTLR.js";
4
4
  import {
5
5
  Tooltip
6
6
  } from "../chunk-QQ5G773N.js";
7
7
  import {
8
8
  Select
9
9
  } from "../chunk-J5V2JRIK.js";
10
- import {
11
- Checkbox
12
- } from "../chunk-NO5BIKWS.js";
13
10
  import {
14
11
  DataCellHeader,
15
12
  DataGridCell,
16
13
  DragAlongCell,
17
14
  DraggableCellHeader
18
- } from "../chunk-AB4ZBO5P.js";
19
- import {
20
- MenuOption
21
- } from "../chunk-FLVYV4T4.js";
15
+ } from "../chunk-YCKRVNJ3.js";
22
16
  import {
23
17
  Menu
24
- } from "../chunk-PGSDEGBP.js";
25
- import "../chunk-CCOQOO23.js";
26
- import "../chunk-HIVPC3T4.js";
27
- import "../chunk-VXWSAIB5.js";
18
+ } from "../chunk-W32JB47H.js";
19
+ import "../chunk-WPEDVM56.js";
20
+ import {
21
+ MenuOption
22
+ } from "../chunk-CKQNJNU3.js";
28
23
  import "../chunk-WVUIIBRR.js";
29
24
  import {
30
25
  Search
@@ -35,6 +30,14 @@ import {
35
30
  import {
36
31
  Label
37
32
  } from "../chunk-7CS736EF.js";
33
+ import {
34
+ Checkbox
35
+ } from "../chunk-NO5BIKWS.js";
36
+ import {
37
+ Button
38
+ } from "../chunk-WWAPK5PH.js";
39
+ import "../chunk-JUJBS4ZV.js";
40
+ import "../chunk-VXWSAIB5.js";
38
41
  import "../chunk-TYTD4FLW.js";
39
42
  import "../chunk-5UH6QUFB.js";
40
43
  import {
@@ -53,9 +56,6 @@ import {
53
56
  import {
54
57
  Icon
55
58
  } from "../chunk-NKUETCDA.js";
56
- import {
57
- Button
58
- } from "../chunk-WWAPK5PH.js";
59
59
  import "../chunk-6CTCHYIS.js";
60
60
  import "../chunk-ORMEWXMH.js";
61
61
  export {
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  useMenuPosition,
4
4
  useSubMenuSystem
5
- } from "../chunk-CCOQOO23.js";
6
- import "../chunk-HIVPC3T4.js";
5
+ } from "../chunk-WPEDVM56.js";
6
+ import "../chunk-JUJBS4ZV.js";
7
7
  import "../chunk-VXWSAIB5.js";
8
8
  import "../chunk-TYTD4FLW.js";
9
9
  import "../chunk-5UH6QUFB.js";
@@ -126,6 +126,8 @@ function mergeObjectArrays(arr1, arr2) {
126
126
 
127
127
  // src/hooks/useTableLayout.ts
128
128
  var import_react4 = require("react");
129
+ var LocalStoragePrefix = `dmsi-acc-v1-table-layout`;
130
+ var getLocalStorageKeyWithPrefix = (key) => `${LocalStoragePrefix}__${key}`;
129
131
  function useTableLayout(initialColumns, key) {
130
132
  const [columns, setColumns] = (0, import_react4.useState)(initialColumns);
131
133
  const [isReady, setIsReady] = (0, import_react4.useState)(false);
@@ -137,7 +139,10 @@ function useTableLayout(initialColumns, key) {
137
139
  const newColumns = typeof setter === "function" ? setter(prevColumns) : setter;
138
140
  if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal)
139
141
  return prevColumns;
140
- localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
142
+ localStorage.setItem(
143
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
144
+ JSON.stringify(newColumns)
145
+ );
141
146
  return newColumns;
142
147
  });
143
148
  },
@@ -153,7 +158,9 @@ function useTableLayout(initialColumns, key) {
153
158
  );
154
159
  }
155
160
  renderCountRef.current += 1;
156
- const savedLayout = localStorage.getItem(`${key}-tableLayout`);
161
+ const savedLayout = localStorage.getItem(
162
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
163
+ );
157
164
  if (savedLayout) {
158
165
  handleSaveLayout(
159
166
  mergeObjectArrays(
@@ -169,7 +176,15 @@ function useTableLayout(initialColumns, key) {
169
176
  renderCountRef.current = 0;
170
177
  };
171
178
  }, [handleSaveLayout, initialColumns, key]);
172
- return { columns, setColumns: handleSaveLayout, isReady };
179
+ const getSavedLayout = (0, import_react4.useCallback)(() => {
180
+ const savedLayout = localStorage.getItem(
181
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`)
182
+ );
183
+ if (savedLayout) {
184
+ return JSON.parse(savedLayout);
185
+ }
186
+ }, [key]);
187
+ return { columns, setColumns: handleSaveLayout, isReady, getSavedLayout };
173
188
  }
174
189
  // Annotate the CommonJS export names for ESM import in node:
175
190
  0 && (module.exports = {
@@ -4,7 +4,7 @@ import {
4
4
  useMatchesMedia,
5
5
  useMatchesMobile,
6
6
  useTableLayout
7
- } from "../chunk-HIVPC3T4.js";
7
+ } from "../chunk-JUJBS4ZV.js";
8
8
  import "../chunk-VXWSAIB5.js";
9
9
  import "../chunk-TYTD4FLW.js";
10
10
  import "../chunk-5UH6QUFB.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dmsi/wedgekit-react",
3
3
  "private": false,
4
- "version": "0.0.275",
4
+ "version": "0.0.277",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "tsup",
@@ -15,7 +15,13 @@ import {
15
15
  Select,
16
16
  Subheader,
17
17
  } from "..";
18
- import React, { useCallback, useEffect, useId, useState } from "react";
18
+ import React, {
19
+ useCallback,
20
+ useEffect,
21
+ useId,
22
+ useImperativeHandle,
23
+ useState,
24
+ } from "react";
19
25
  import {
20
26
  ColumnFiltersState,
21
27
  flexRender,
@@ -81,15 +87,24 @@ export function DataGrid<T extends Record<string, unknown>>({
81
87
  predeterminedLeftPins = [],
82
88
  predeterminedRightPins = [],
83
89
  useMenuDefaultMinWidth,
90
+ ref,
84
91
  }: DataGridProps<T>) {
92
+ useImperativeHandle(ref, () => ({
93
+ getSavedLayout: () => {
94
+ return getSavedLayout();
95
+ },
96
+ }));
85
97
  const [localSorting, setLocalSorting] = useState<SortingState>([]);
86
98
  const [localColumnFilters, setLocalColumnFilters] =
87
99
  useState<ColumnFiltersState>([]);
88
100
  const [localRowSelection, setLocalRowSelection] = useState<
89
101
  Record<string, boolean>
90
102
  >({});
91
- const { columns: tableColumns, setColumns: setTableColumns } =
92
- useTableLayout<T>(columns, id ?? testid);
103
+ const {
104
+ columns: tableColumns,
105
+ setColumns: setTableColumns,
106
+ getSavedLayout,
107
+ } = useTableLayout<T>(columns, id ?? testid);
93
108
  const [columnOrder, setColumnOrder] = useState<string[]>(
94
109
  tableColumns.map((c) => c.id!),
95
110
  );
@@ -52,6 +52,7 @@ export interface DataGridProps<T extends Record<string, unknown>> {
52
52
  predeterminedLeftPins?: string[];
53
53
  predeterminedRightPins?: string[];
54
54
  useMenuDefaultMinWidth?: boolean;
55
+ ref?: React.Ref<{ getSavedLayout: () => ColumnDef<T>[] | undefined }>;
55
56
  }
56
57
 
57
58
  declare module "@tanstack/react-table" {
@@ -605,7 +605,7 @@ export const DateRangeInput = ({
605
605
  ref={(el) => {
606
606
  popoverRef.current = el;
607
607
  }}
608
- className="absolute z-40 bg-white"
608
+ className="absolute z-40"
609
609
  style={{
610
610
  top: `${calendarPosition.top + 4}px`,
611
611
  left: `${calendarPosition.left}px`,
@@ -13,8 +13,14 @@ export type PersistedTableLayout<T> = {
13
13
  columns: ColumnDef<T>[];
14
14
  setColumns: (setter: SetStateAction<ColumnDef<T>[]>) => void;
15
15
  isReady: boolean;
16
+ getSavedLayout: () => ColumnDef<T>[] | undefined;
16
17
  };
17
18
 
19
+ const LocalStoragePrefix = `dmsi-acc-v1-table-layout`;
20
+
21
+ const getLocalStorageKeyWithPrefix = (key: string) =>
22
+ `${LocalStoragePrefix}__${key}`;
23
+
18
24
  /**
19
25
  * Custom hook to manage table layout persistence.
20
26
  * @template T The type of the objects in the arrays.
@@ -44,7 +50,10 @@ export function useTableLayout<T>(
44
50
  !_internal
45
51
  )
46
52
  return prevColumns;
47
- localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
53
+ localStorage.setItem(
54
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
55
+ JSON.stringify(newColumns),
56
+ );
48
57
  return newColumns;
49
58
  });
50
59
  },
@@ -61,7 +70,9 @@ export function useTableLayout<T>(
61
70
  );
62
71
  }
63
72
  renderCountRef.current += 1;
64
- const savedLayout = localStorage.getItem(`${key}-tableLayout`);
73
+ const savedLayout = localStorage.getItem(
74
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
75
+ );
65
76
  if (savedLayout) {
66
77
  handleSaveLayout(
67
78
  mergeObjectArrays<ColumnDef<T>>(
@@ -80,5 +91,14 @@ export function useTableLayout<T>(
80
91
  // Load the layout from local storage on init
81
92
  }, [handleSaveLayout, initialColumns, key]);
82
93
 
83
- return { columns, setColumns: handleSaveLayout, isReady };
94
+ const getSavedLayout = useCallback(() => {
95
+ const savedLayout = localStorage.getItem(
96
+ getLocalStorageKeyWithPrefix(`${key}-tableLayout`),
97
+ );
98
+ if (savedLayout) {
99
+ return JSON.parse(savedLayout) as ColumnDef<T>[];
100
+ }
101
+ }, [key]);
102
+
103
+ return { columns, setColumns: handleSaveLayout, isReady, getSavedLayout };
84
104
  }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Heading2
3
3
  } from "./chunk-EU73QPW7.js";
4
- import {
5
- Icon
6
- } from "./chunk-NKUETCDA.js";
7
4
  import {
8
5
  Button
9
6
  } from "./chunk-WWAPK5PH.js";
7
+ import {
8
+ Icon
9
+ } from "./chunk-NKUETCDA.js";
10
10
  import {
11
11
  layoutGroupGap,
12
12
  layoutPaddding
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Label
3
3
  } from "./chunk-7CS736EF.js";
4
- import {
5
- Icon
6
- } from "./chunk-NKUETCDA.js";
7
4
  import {
8
5
  Button
9
6
  } from "./chunk-WWAPK5PH.js";
7
+ import {
8
+ Icon
9
+ } from "./chunk-NKUETCDA.js";
10
10
  import {
11
11
  baseTransition,
12
12
  componentGap,
@@ -1,9 +1,9 @@
1
- import {
2
- Icon
3
- } from "./chunk-NKUETCDA.js";
4
1
  import {
5
2
  Button
6
3
  } from "./chunk-WWAPK5PH.js";
4
+ import {
5
+ Icon
6
+ } from "./chunk-NKUETCDA.js";
7
7
  import {
8
8
  layoutGroupGap,
9
9
  layoutPaddding
@@ -1,9 +1,9 @@
1
- import {
2
- Icon
3
- } from "./chunk-NKUETCDA.js";
4
1
  import {
5
2
  Button
6
3
  } from "./chunk-WWAPK5PH.js";
4
+ import {
5
+ Icon
6
+ } from "./chunk-NKUETCDA.js";
7
7
  import {
8
8
  __objRest,
9
9
  __spreadProps,