@dmsi/wedgekit-react 0.0.215 → 0.0.216
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/dist/{chunk-UKSJPFN2.js → chunk-3M23BFB4.js} +3 -3
- package/dist/{chunk-2WRRRPEB.js → chunk-BHFIS4ZV.js} +1 -1
- package/dist/{chunk-JITZWSPR.js → chunk-NA3ODQCN.js} +2 -2
- package/dist/{chunk-33W2KSCB.js → chunk-OC6RTDZT.js} +7 -6
- package/dist/{chunk-ERW3AMED.js → chunk-QHHNFGEX.js} +1 -1
- package/dist/{chunk-CZ55LUFC.js → chunk-SC24WU65.js} +8 -8
- package/dist/{chunk-NIHZMIOL.js → chunk-VP36B2MM.js} +1 -1
- package/dist/{chunk-E6Y7ZHQX.js → chunk-ZU2K7BD3.js} +36 -22
- package/dist/components/DataGridCell.js +9 -9
- package/dist/components/DateInput.js +7 -7
- package/dist/components/DateRangeInput.js +7 -7
- package/dist/components/FilterGroup.js +5 -5
- package/dist/components/Input.js +2 -2
- package/dist/components/Menu.js +3 -3
- package/dist/components/MenuOption.js +3 -3
- package/dist/components/MobileDataGrid.js +3 -3
- package/dist/components/Modal.js +5 -5
- package/dist/components/ModalButtons.js +2 -2
- package/dist/components/ModalHeader.js +2 -2
- package/dist/components/NavigationTab.js +2 -2
- package/dist/components/NavigationTabs.js +2 -2
- package/dist/components/NestedMenu.js +3 -3
- package/dist/components/Notification.js +3 -3
- package/dist/components/OptionPill.js +2 -2
- package/dist/components/PDFViewer.js +7 -7
- package/dist/components/Password.js +2 -2
- package/dist/components/ProjectBar.js +1 -1
- package/dist/components/Search.js +3 -3
- package/dist/components/Select.cjs +6 -5
- package/dist/components/Select.js +3 -3
- package/dist/components/Stepper.js +5 -5
- package/dist/components/Time.js +3 -3
- package/dist/components/Toast.js +3 -3
- package/dist/components/Upload.js +3 -3
- package/dist/components/index.cjs +53 -44
- package/dist/components/index.js +33 -34
- package/dist/components/useMenuSystem.js +2 -2
- package/dist/hooks/index.cjs +30 -21
- package/dist/hooks/index.js +1 -1
- package/package.json +1 -1
- package/src/components/DataGrid/index.tsx +18 -18
- package/src/components/Select.tsx +1 -1
- package/src/hooks/useTableLayout.ts +44 -28
- package/dist/{chunk-ED7FXZRX.js → chunk-BW2MWMVM.js} +3 -3
- package/dist/{chunk-7W4I2NK3.js → chunk-GW7OVMMC.js} +3 -3
- package/dist/{chunk-FYW64H7N.js → chunk-JFPRYMID.js} +3 -3
- package/dist/{chunk-A5ROZWIH.js → chunk-R4H6D4SZ.js} +3 -3
- package/dist/{chunk-47KTDBGA.js → chunk-T7UCZWWK.js} +3 -3
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
InputBase
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-5UH6QUFB.js";
|
|
4
|
+
} from "../chunk-GW7OVMMC.js";
|
|
6
5
|
import "../chunk-CJVTFYI4.js";
|
|
7
|
-
import
|
|
8
|
-
Button
|
|
9
|
-
} from "../chunk-SK742QNF.js";
|
|
6
|
+
import "../chunk-5UH6QUFB.js";
|
|
10
7
|
import {
|
|
11
8
|
Icon
|
|
12
9
|
} from "../chunk-UAPWR2KE.js";
|
|
10
|
+
import {
|
|
11
|
+
Button
|
|
12
|
+
} from "../chunk-SK742QNF.js";
|
|
13
13
|
import {
|
|
14
14
|
componentGap
|
|
15
15
|
} from "../chunk-RDLEIAQU.js";
|
package/dist/components/Time.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
findDocumentRoot
|
|
3
3
|
} from "../chunk-VXWSAIB5.js";
|
|
4
|
-
import "../chunk-T3F37S6Z.js";
|
|
5
4
|
import {
|
|
6
5
|
InputBase
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-5UH6QUFB.js";
|
|
6
|
+
} from "../chunk-GW7OVMMC.js";
|
|
9
7
|
import "../chunk-CJVTFYI4.js";
|
|
8
|
+
import "../chunk-T3F37S6Z.js";
|
|
9
|
+
import "../chunk-5UH6QUFB.js";
|
|
10
10
|
import {
|
|
11
11
|
Stack
|
|
12
12
|
} from "../chunk-BOWQUDUU.js";
|
package/dist/components/Toast.js
CHANGED
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
Paragraph
|
|
7
7
|
} from "../chunk-CJELWEO2.js";
|
|
8
|
-
import {
|
|
9
|
-
Button
|
|
10
|
-
} from "../chunk-SK742QNF.js";
|
|
11
8
|
import {
|
|
12
9
|
Icon
|
|
13
10
|
} from "../chunk-UAPWR2KE.js";
|
|
11
|
+
import {
|
|
12
|
+
Button
|
|
13
|
+
} from "../chunk-SK742QNF.js";
|
|
14
14
|
import {
|
|
15
15
|
componentGap,
|
|
16
16
|
componentPadding,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Paragraph
|
|
3
3
|
} from "../chunk-CJELWEO2.js";
|
|
4
|
-
import {
|
|
5
|
-
Button
|
|
6
|
-
} from "../chunk-SK742QNF.js";
|
|
7
4
|
import {
|
|
8
5
|
Icon
|
|
9
6
|
} from "../chunk-UAPWR2KE.js";
|
|
7
|
+
import {
|
|
8
|
+
Button
|
|
9
|
+
} from "../chunk-SK742QNF.js";
|
|
10
10
|
import {
|
|
11
11
|
componentGap
|
|
12
12
|
} from "../chunk-RDLEIAQU.js";
|
|
@@ -515,38 +515,47 @@ var import_react5 = require("react");
|
|
|
515
515
|
function useTableLayout(initialColumns, key) {
|
|
516
516
|
const [columns, setColumns] = (0, import_react5.useState)(initialColumns);
|
|
517
517
|
const [isReady, setIsReady] = (0, import_react5.useState)(false);
|
|
518
|
-
const
|
|
518
|
+
const renderCountRef = (0, import_react5.useRef)(0);
|
|
519
|
+
const handleSaveLayout = (0, import_react5.useCallback)(
|
|
520
|
+
(setter, _internal) => {
|
|
521
|
+
if (!isReady && !_internal || !key) return;
|
|
522
|
+
setColumns((prevColumns) => {
|
|
523
|
+
const newColumns = typeof setter === "function" ? setter(prevColumns) : setter;
|
|
524
|
+
if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal)
|
|
525
|
+
return prevColumns;
|
|
526
|
+
localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
|
|
527
|
+
return newColumns;
|
|
528
|
+
});
|
|
529
|
+
},
|
|
530
|
+
[isReady, key]
|
|
531
|
+
);
|
|
519
532
|
(0, import_react5.useEffect)(() => {
|
|
520
533
|
if (!key) return setIsReady(true);
|
|
534
|
+
if (renderCountRef.current > 1) {
|
|
535
|
+
throw new Error(
|
|
536
|
+
`useTableLayout should only be called once per component render cycle.
|
|
537
|
+
${renderCountRef.current} Renders detected.
|
|
538
|
+
Check dependency stability`
|
|
539
|
+
);
|
|
540
|
+
}
|
|
541
|
+
renderCountRef.current += 1;
|
|
521
542
|
const savedLayout = localStorage.getItem(`${key}-tableLayout`);
|
|
522
543
|
if (savedLayout) {
|
|
523
|
-
|
|
544
|
+
handleSaveLayout(
|
|
524
545
|
mergeObjectArrays(
|
|
525
546
|
initialColumns,
|
|
526
547
|
JSON.parse(savedLayout)
|
|
527
|
-
)
|
|
548
|
+
),
|
|
549
|
+
true
|
|
528
550
|
);
|
|
529
551
|
}
|
|
530
552
|
if (!savedLayout) handleSaveLayout(initialColumns, true);
|
|
531
|
-
setLayoutSignal((prev) => prev + 1);
|
|
532
553
|
setIsReady(true);
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
if (JSON.stringify(newColumns) === JSON.stringify(columns) && !_internal)
|
|
539
|
-
return null;
|
|
540
|
-
if (key) {
|
|
541
|
-
localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
|
|
542
|
-
}
|
|
543
|
-
setColumns(newColumns);
|
|
544
|
-
setLayoutSignal((prev) => prev + 1);
|
|
545
|
-
return newColumns;
|
|
546
|
-
},
|
|
547
|
-
[columns, isReady, key]
|
|
548
|
-
);
|
|
549
|
-
return { columns, setColumns: handleSaveLayout, layoutSignal, isReady };
|
|
554
|
+
return () => {
|
|
555
|
+
renderCountRef.current = 0;
|
|
556
|
+
};
|
|
557
|
+
}, [handleSaveLayout, initialColumns, key]);
|
|
558
|
+
return { columns, setColumns: handleSaveLayout, isReady };
|
|
550
559
|
}
|
|
551
560
|
|
|
552
561
|
// src/components/MenuOption.tsx
|
|
@@ -2865,11 +2874,7 @@ function DataGrid({
|
|
|
2865
2874
|
const [localSorting, setLocalSorting] = (0, import_react16.useState)([]);
|
|
2866
2875
|
const [localColumnFilters, setLocalColumnFilters] = (0, import_react16.useState)([]);
|
|
2867
2876
|
const [localRowSelection, setLocalRowSelection] = (0, import_react16.useState)({});
|
|
2868
|
-
const {
|
|
2869
|
-
columns: tableColumns,
|
|
2870
|
-
setColumns: setTableColumns,
|
|
2871
|
-
layoutSignal
|
|
2872
|
-
} = useTableLayout(columns, id != null ? id : testid);
|
|
2877
|
+
const { columns: tableColumns, setColumns: setTableColumns } = useTableLayout(columns, id != null ? id : testid);
|
|
2873
2878
|
const [columnOrder, setColumnOrder] = (0, import_react16.useState)(
|
|
2874
2879
|
tableColumns.map((c) => c.id)
|
|
2875
2880
|
);
|
|
@@ -2881,10 +2886,23 @@ function DataGrid({
|
|
|
2881
2886
|
})
|
|
2882
2887
|
)
|
|
2883
2888
|
);
|
|
2889
|
+
const resetColumnVisibility = (0, import_react16.useCallback)(
|
|
2890
|
+
(updateOrder) => {
|
|
2891
|
+
setColumnVisibility(
|
|
2892
|
+
Object.fromEntries(
|
|
2893
|
+
tableColumns.filter((column) => !!column.id).map((column) => {
|
|
2894
|
+
var _a2, _b2;
|
|
2895
|
+
return [column.id, (_b2 = (_a2 = column.meta) == null ? void 0 : _a2.visible) != null ? _b2 : true];
|
|
2896
|
+
})
|
|
2897
|
+
)
|
|
2898
|
+
);
|
|
2899
|
+
if (updateOrder) setColumnOrder(tableColumns.map((c) => c.id));
|
|
2900
|
+
},
|
|
2901
|
+
[tableColumns]
|
|
2902
|
+
);
|
|
2884
2903
|
(0, import_react16.useEffect)(() => {
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
}, [layoutSignal]);
|
|
2904
|
+
resetColumnVisibility(true);
|
|
2905
|
+
}, [resetColumnVisibility]);
|
|
2888
2906
|
const sortingState = pagination ? externalSorting != null ? externalSorting : localSorting : localSorting;
|
|
2889
2907
|
const setSortingState = pagination ? (updaterOrValue) => {
|
|
2890
2908
|
const value = typeof updaterOrValue === "function" ? updaterOrValue(
|
|
@@ -2928,16 +2946,6 @@ function DataGrid({
|
|
|
2928
2946
|
},
|
|
2929
2947
|
[setTableColumns]
|
|
2930
2948
|
);
|
|
2931
|
-
const resetColumnVisibility = (0, import_react16.useCallback)(() => {
|
|
2932
|
-
setColumnVisibility(
|
|
2933
|
-
Object.fromEntries(
|
|
2934
|
-
tableColumns.filter((column) => !!column.id).map((column) => {
|
|
2935
|
-
var _a2, _b2;
|
|
2936
|
-
return [column.id, (_b2 = (_a2 = column.meta) == null ? void 0 : _a2.visible) != null ? _b2 : true];
|
|
2937
|
-
})
|
|
2938
|
-
)
|
|
2939
|
-
);
|
|
2940
|
-
}, [tableColumns]);
|
|
2941
2949
|
const table = (0, import_react_table3.useReactTable)({
|
|
2942
2950
|
columns: tableColumns,
|
|
2943
2951
|
data,
|
|
@@ -3410,17 +3418,18 @@ var Select = (_a) => {
|
|
|
3410
3418
|
"displayValue",
|
|
3411
3419
|
"value"
|
|
3412
3420
|
]);
|
|
3421
|
+
var _a2;
|
|
3413
3422
|
const inputRef = (0, import_react17.useRef)(null);
|
|
3414
3423
|
const inputContainerRef = (0, import_react17.useRef)(null);
|
|
3415
3424
|
const preventFocusOnInitialRender = (0, import_react17.useRef)(true);
|
|
3416
3425
|
const [show, setShow] = (0, import_react17.useState)(false);
|
|
3417
3426
|
(0, import_react17.useEffect)(() => {
|
|
3418
|
-
var
|
|
3427
|
+
var _a3;
|
|
3419
3428
|
if (preventFocusOnInitialRender.current) {
|
|
3420
3429
|
preventFocusOnInitialRender.current = false;
|
|
3421
3430
|
return;
|
|
3422
3431
|
}
|
|
3423
|
-
(
|
|
3432
|
+
(_a3 = inputRef.current) == null ? void 0 : _a3.focus();
|
|
3424
3433
|
}, [value]);
|
|
3425
3434
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
3426
3435
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
@@ -3463,11 +3472,11 @@ var Select = (_a) => {
|
|
|
3463
3472
|
removeRoundness,
|
|
3464
3473
|
focus: show,
|
|
3465
3474
|
onChange: (e) => {
|
|
3466
|
-
var
|
|
3467
|
-
return (
|
|
3475
|
+
var _a3;
|
|
3476
|
+
return (_a3 = props.onChange) == null ? void 0 : _a3.call(props, e);
|
|
3468
3477
|
}
|
|
3469
3478
|
}, props), {
|
|
3470
|
-
value: displayValue != null ? displayValue : value
|
|
3479
|
+
value: (_a2 = displayValue != null ? displayValue : value) != null ? _a2 : props.onChange ? "" : void 0
|
|
3471
3480
|
})
|
|
3472
3481
|
),
|
|
3473
3482
|
renderMenu ? renderMenu({
|
package/dist/components/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "../chunk-3WNXMCZV.js";
|
|
4
4
|
import {
|
|
5
5
|
Select
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-OC6RTDZT.js";
|
|
7
7
|
import {
|
|
8
8
|
Checkbox
|
|
9
9
|
} from "../chunk-E3UOI2D2.js";
|
|
@@ -12,31 +12,31 @@ import {
|
|
|
12
12
|
DataGridCell,
|
|
13
13
|
DragAlongCell,
|
|
14
14
|
DraggableCellHeader
|
|
15
|
-
} from "../chunk-
|
|
16
|
-
import {
|
|
17
|
-
Menu
|
|
18
|
-
} from "../chunk-JITZWSPR.js";
|
|
19
|
-
import "../chunk-NIHZMIOL.js";
|
|
15
|
+
} from "../chunk-SC24WU65.js";
|
|
20
16
|
import {
|
|
21
17
|
MenuOption
|
|
22
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-QHHNFGEX.js";
|
|
19
|
+
import {
|
|
20
|
+
Menu
|
|
21
|
+
} from "../chunk-NA3ODQCN.js";
|
|
22
|
+
import "../chunk-VP36B2MM.js";
|
|
23
23
|
import {
|
|
24
24
|
useInfiniteScroll,
|
|
25
25
|
useTableLayout
|
|
26
|
-
} from "../chunk-
|
|
26
|
+
} from "../chunk-ZU2K7BD3.js";
|
|
27
|
+
import "../chunk-WVUIIBRR.js";
|
|
27
28
|
import "../chunk-VXWSAIB5.js";
|
|
28
|
-
import "../chunk-T3F37S6Z.js";
|
|
29
29
|
import {
|
|
30
30
|
Search
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-BHFIS4ZV.js";
|
|
32
32
|
import {
|
|
33
33
|
Input
|
|
34
|
-
} from "../chunk-
|
|
35
|
-
import "../chunk-5UH6QUFB.js";
|
|
34
|
+
} from "../chunk-GW7OVMMC.js";
|
|
36
35
|
import {
|
|
37
36
|
Label
|
|
38
37
|
} from "../chunk-CJVTFYI4.js";
|
|
39
|
-
import "../chunk-
|
|
38
|
+
import "../chunk-T3F37S6Z.js";
|
|
39
|
+
import "../chunk-5UH6QUFB.js";
|
|
40
40
|
import {
|
|
41
41
|
Subheader
|
|
42
42
|
} from "../chunk-KGVKHWUK.js";
|
|
@@ -50,12 +50,12 @@ import {
|
|
|
50
50
|
import {
|
|
51
51
|
Paragraph
|
|
52
52
|
} from "../chunk-CJELWEO2.js";
|
|
53
|
-
import {
|
|
54
|
-
Button
|
|
55
|
-
} from "../chunk-SK742QNF.js";
|
|
56
53
|
import {
|
|
57
54
|
Icon
|
|
58
55
|
} from "../chunk-UAPWR2KE.js";
|
|
56
|
+
import {
|
|
57
|
+
Button
|
|
58
|
+
} from "../chunk-SK742QNF.js";
|
|
59
59
|
import {
|
|
60
60
|
componentGap,
|
|
61
61
|
componentPadding
|
|
@@ -680,11 +680,7 @@ function DataGrid({
|
|
|
680
680
|
const [localSorting, setLocalSorting] = useState3([]);
|
|
681
681
|
const [localColumnFilters, setLocalColumnFilters] = useState3([]);
|
|
682
682
|
const [localRowSelection, setLocalRowSelection] = useState3({});
|
|
683
|
-
const {
|
|
684
|
-
columns: tableColumns,
|
|
685
|
-
setColumns: setTableColumns,
|
|
686
|
-
layoutSignal
|
|
687
|
-
} = useTableLayout(columns, id != null ? id : testid);
|
|
683
|
+
const { columns: tableColumns, setColumns: setTableColumns } = useTableLayout(columns, id != null ? id : testid);
|
|
688
684
|
const [columnOrder, setColumnOrder] = useState3(
|
|
689
685
|
tableColumns.map((c) => c.id)
|
|
690
686
|
);
|
|
@@ -696,10 +692,23 @@ function DataGrid({
|
|
|
696
692
|
})
|
|
697
693
|
)
|
|
698
694
|
);
|
|
695
|
+
const resetColumnVisibility = useCallback(
|
|
696
|
+
(updateOrder) => {
|
|
697
|
+
setColumnVisibility(
|
|
698
|
+
Object.fromEntries(
|
|
699
|
+
tableColumns.filter((column) => !!column.id).map((column) => {
|
|
700
|
+
var _a2, _b2;
|
|
701
|
+
return [column.id, (_b2 = (_a2 = column.meta) == null ? void 0 : _a2.visible) != null ? _b2 : true];
|
|
702
|
+
})
|
|
703
|
+
)
|
|
704
|
+
);
|
|
705
|
+
if (updateOrder) setColumnOrder(tableColumns.map((c) => c.id));
|
|
706
|
+
},
|
|
707
|
+
[tableColumns]
|
|
708
|
+
);
|
|
699
709
|
useEffect(() => {
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
}, [layoutSignal]);
|
|
710
|
+
resetColumnVisibility(true);
|
|
711
|
+
}, [resetColumnVisibility]);
|
|
703
712
|
const sortingState = pagination ? externalSorting != null ? externalSorting : localSorting : localSorting;
|
|
704
713
|
const setSortingState = pagination ? (updaterOrValue) => {
|
|
705
714
|
const value = typeof updaterOrValue === "function" ? updaterOrValue(
|
|
@@ -743,16 +752,6 @@ function DataGrid({
|
|
|
743
752
|
},
|
|
744
753
|
[setTableColumns]
|
|
745
754
|
);
|
|
746
|
-
const resetColumnVisibility = useCallback(() => {
|
|
747
|
-
setColumnVisibility(
|
|
748
|
-
Object.fromEntries(
|
|
749
|
-
tableColumns.filter((column) => !!column.id).map((column) => {
|
|
750
|
-
var _a2, _b2;
|
|
751
|
-
return [column.id, (_b2 = (_a2 = column.meta) == null ? void 0 : _a2.visible) != null ? _b2 : true];
|
|
752
|
-
})
|
|
753
|
-
)
|
|
754
|
-
);
|
|
755
|
-
}, [tableColumns]);
|
|
756
755
|
const table = useReactTable({
|
|
757
756
|
columns: tableColumns,
|
|
758
757
|
data,
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import {
|
|
3
3
|
useMenuPosition,
|
|
4
4
|
useSubMenuSystem
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-VP36B2MM.js";
|
|
6
|
+
import "../chunk-ZU2K7BD3.js";
|
|
7
7
|
import "../chunk-VXWSAIB5.js";
|
|
8
8
|
import "../chunk-T3F37S6Z.js";
|
|
9
9
|
import "../chunk-5UH6QUFB.js";
|
package/dist/hooks/index.cjs
CHANGED
|
@@ -129,38 +129,47 @@ var import_react4 = require("react");
|
|
|
129
129
|
function useTableLayout(initialColumns, key) {
|
|
130
130
|
const [columns, setColumns] = (0, import_react4.useState)(initialColumns);
|
|
131
131
|
const [isReady, setIsReady] = (0, import_react4.useState)(false);
|
|
132
|
-
const
|
|
132
|
+
const renderCountRef = (0, import_react4.useRef)(0);
|
|
133
|
+
const handleSaveLayout = (0, import_react4.useCallback)(
|
|
134
|
+
(setter, _internal) => {
|
|
135
|
+
if (!isReady && !_internal || !key) return;
|
|
136
|
+
setColumns((prevColumns) => {
|
|
137
|
+
const newColumns = typeof setter === "function" ? setter(prevColumns) : setter;
|
|
138
|
+
if (JSON.stringify(newColumns) === JSON.stringify(prevColumns) && !_internal)
|
|
139
|
+
return prevColumns;
|
|
140
|
+
localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
|
|
141
|
+
return newColumns;
|
|
142
|
+
});
|
|
143
|
+
},
|
|
144
|
+
[isReady, key]
|
|
145
|
+
);
|
|
133
146
|
(0, import_react4.useEffect)(() => {
|
|
134
147
|
if (!key) return setIsReady(true);
|
|
148
|
+
if (renderCountRef.current > 1) {
|
|
149
|
+
throw new Error(
|
|
150
|
+
`useTableLayout should only be called once per component render cycle.
|
|
151
|
+
${renderCountRef.current} Renders detected.
|
|
152
|
+
Check dependency stability`
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
renderCountRef.current += 1;
|
|
135
156
|
const savedLayout = localStorage.getItem(`${key}-tableLayout`);
|
|
136
157
|
if (savedLayout) {
|
|
137
|
-
|
|
158
|
+
handleSaveLayout(
|
|
138
159
|
mergeObjectArrays(
|
|
139
160
|
initialColumns,
|
|
140
161
|
JSON.parse(savedLayout)
|
|
141
|
-
)
|
|
162
|
+
),
|
|
163
|
+
true
|
|
142
164
|
);
|
|
143
165
|
}
|
|
144
166
|
if (!savedLayout) handleSaveLayout(initialColumns, true);
|
|
145
|
-
setLayoutSignal((prev) => prev + 1);
|
|
146
167
|
setIsReady(true);
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (JSON.stringify(newColumns) === JSON.stringify(columns) && !_internal)
|
|
153
|
-
return null;
|
|
154
|
-
if (key) {
|
|
155
|
-
localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
|
|
156
|
-
}
|
|
157
|
-
setColumns(newColumns);
|
|
158
|
-
setLayoutSignal((prev) => prev + 1);
|
|
159
|
-
return newColumns;
|
|
160
|
-
},
|
|
161
|
-
[columns, isReady, key]
|
|
162
|
-
);
|
|
163
|
-
return { columns, setColumns: handleSaveLayout, layoutSignal, isReady };
|
|
168
|
+
return () => {
|
|
169
|
+
renderCountRef.current = 0;
|
|
170
|
+
};
|
|
171
|
+
}, [handleSaveLayout, initialColumns, key]);
|
|
172
|
+
return { columns, setColumns: handleSaveLayout, isReady };
|
|
164
173
|
}
|
|
165
174
|
// Annotate the CommonJS export names for ESM import in node:
|
|
166
175
|
0 && (module.exports = {
|
package/dist/hooks/index.js
CHANGED
package/package.json
CHANGED
|
@@ -88,11 +88,8 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
88
88
|
const [localRowSelection, setLocalRowSelection] = useState<
|
|
89
89
|
Record<string, boolean>
|
|
90
90
|
>({});
|
|
91
|
-
const {
|
|
92
|
-
columns
|
|
93
|
-
setColumns: setTableColumns,
|
|
94
|
-
layoutSignal,
|
|
95
|
-
} = useTableLayout<T>(columns, id ?? testid);
|
|
91
|
+
const { columns: tableColumns, setColumns: setTableColumns } =
|
|
92
|
+
useTableLayout<T>(columns, id ?? testid);
|
|
96
93
|
const [columnOrder, setColumnOrder] = useState<string[]>(
|
|
97
94
|
tableColumns.map((c) => c.id!),
|
|
98
95
|
);
|
|
@@ -107,10 +104,23 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
107
104
|
),
|
|
108
105
|
);
|
|
109
106
|
|
|
107
|
+
const resetColumnVisibility = useCallback(
|
|
108
|
+
(updateOrder?: boolean) => {
|
|
109
|
+
setColumnVisibility(
|
|
110
|
+
Object.fromEntries(
|
|
111
|
+
tableColumns
|
|
112
|
+
.filter((column) => !!column.id)
|
|
113
|
+
.map((column) => [column.id, column.meta?.visible ?? true]),
|
|
114
|
+
),
|
|
115
|
+
);
|
|
116
|
+
if (updateOrder) setColumnOrder(tableColumns.map((c) => c.id!));
|
|
117
|
+
},
|
|
118
|
+
[tableColumns],
|
|
119
|
+
);
|
|
120
|
+
|
|
110
121
|
useEffect(() => {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}, [layoutSignal]);
|
|
122
|
+
resetColumnVisibility(true);
|
|
123
|
+
}, [resetColumnVisibility]);
|
|
114
124
|
|
|
115
125
|
const sortingState = pagination
|
|
116
126
|
? (externalSorting ?? localSorting)
|
|
@@ -202,16 +212,6 @@ export function DataGrid<T extends Record<string, unknown>>({
|
|
|
202
212
|
[setTableColumns],
|
|
203
213
|
);
|
|
204
214
|
|
|
205
|
-
const resetColumnVisibility = useCallback(() => {
|
|
206
|
-
setColumnVisibility(
|
|
207
|
-
Object.fromEntries(
|
|
208
|
-
tableColumns
|
|
209
|
-
.filter((column) => !!column.id)
|
|
210
|
-
.map((column) => [column.id, column.meta?.visible ?? true]),
|
|
211
|
-
),
|
|
212
|
-
);
|
|
213
|
-
}, [tableColumns]);
|
|
214
|
-
|
|
215
215
|
const table = useReactTable<T>({
|
|
216
216
|
columns: tableColumns,
|
|
217
217
|
data,
|
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import { mergeObjectArrays } from "../utils";
|
|
4
4
|
import { ColumnDef } from "@dmsi/wedgekit-react/components";
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
useState,
|
|
7
|
+
useEffect,
|
|
8
|
+
SetStateAction,
|
|
9
|
+
useCallback,
|
|
10
|
+
useRef,
|
|
11
|
+
} from "react";
|
|
6
12
|
export type PersistedTableLayout<T> = {
|
|
7
13
|
columns: ColumnDef<T>[];
|
|
8
|
-
setColumns: (setter: SetStateAction<ColumnDef<T>[]>) =>
|
|
9
|
-
layoutSignal: number;
|
|
14
|
+
setColumns: (setter: SetStateAction<ColumnDef<T>[]>) => void;
|
|
10
15
|
isReady: boolean;
|
|
11
16
|
};
|
|
12
17
|
|
|
@@ -22,47 +27,58 @@ export function useTableLayout<T>(
|
|
|
22
27
|
initialColumns: Array<ColumnDef<T>>,
|
|
23
28
|
key?: string,
|
|
24
29
|
): PersistedTableLayout<T> {
|
|
30
|
+
// Use useMemo to ensure initialColumns is stable
|
|
25
31
|
const [columns, setColumns] = useState<ColumnDef<T>[]>(initialColumns);
|
|
26
32
|
const [isReady, setIsReady] = useState(false);
|
|
27
|
-
const
|
|
33
|
+
const renderCountRef = useRef(0);
|
|
34
|
+
|
|
35
|
+
const handleSaveLayout = useCallback(
|
|
36
|
+
(setter: React.SetStateAction<ColumnDef<T>[]>, _internal?: boolean) => {
|
|
37
|
+
if ((!isReady && !_internal) || !key) return;
|
|
38
|
+
// get value from passed setter
|
|
39
|
+
setColumns((prevColumns) => {
|
|
40
|
+
const newColumns =
|
|
41
|
+
typeof setter === "function" ? setter(prevColumns) : setter;
|
|
42
|
+
if (
|
|
43
|
+
JSON.stringify(newColumns) === JSON.stringify(prevColumns) &&
|
|
44
|
+
!_internal
|
|
45
|
+
)
|
|
46
|
+
return prevColumns;
|
|
47
|
+
localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
|
|
48
|
+
return newColumns;
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
[isReady, key],
|
|
52
|
+
);
|
|
28
53
|
|
|
29
54
|
useEffect(() => {
|
|
30
55
|
if (!key) return setIsReady(true);
|
|
56
|
+
if (renderCountRef.current > 1) {
|
|
57
|
+
throw new Error(
|
|
58
|
+
`useTableLayout should only be called once per component render cycle.
|
|
59
|
+
${renderCountRef.current} Renders detected.
|
|
60
|
+
Check dependency stability`,
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
renderCountRef.current += 1;
|
|
31
64
|
const savedLayout = localStorage.getItem(`${key}-tableLayout`);
|
|
32
65
|
if (savedLayout) {
|
|
33
|
-
|
|
66
|
+
handleSaveLayout(
|
|
34
67
|
mergeObjectArrays<ColumnDef<T>>(
|
|
35
68
|
initialColumns,
|
|
36
69
|
JSON.parse(savedLayout),
|
|
37
70
|
),
|
|
71
|
+
true,
|
|
38
72
|
);
|
|
39
73
|
}
|
|
40
74
|
if (!savedLayout) handleSaveLayout(initialColumns, true);
|
|
41
|
-
setLayoutSignal((prev) => prev + 1);
|
|
42
75
|
setIsReady(true);
|
|
43
76
|
|
|
77
|
+
return () => {
|
|
78
|
+
renderCountRef.current = 0;
|
|
79
|
+
};
|
|
44
80
|
// Load the layout from local storage on init
|
|
45
|
-
|
|
46
|
-
}, []);
|
|
47
|
-
|
|
48
|
-
const handleSaveLayout = useCallback(
|
|
49
|
-
(setter: React.SetStateAction<ColumnDef<T>[]>, _internal?: boolean) => {
|
|
50
|
-
if (!isReady && !_internal) return null;
|
|
51
|
-
// get value from passed setter
|
|
52
|
-
const newColumns =
|
|
53
|
-
typeof setter === "function" ? setter(columns) : setter;
|
|
54
|
-
if (JSON.stringify(newColumns) === JSON.stringify(columns) && !_internal)
|
|
55
|
-
return null;
|
|
56
|
-
if (key) {
|
|
57
|
-
localStorage.setItem(`${key}-tableLayout`, JSON.stringify(newColumns));
|
|
58
|
-
}
|
|
59
|
-
setColumns(newColumns);
|
|
60
|
-
setLayoutSignal((prev) => prev + 1);
|
|
61
|
-
|
|
62
|
-
return newColumns;
|
|
63
|
-
},
|
|
64
|
-
[columns, isReady, key],
|
|
65
|
-
);
|
|
81
|
+
}, [handleSaveLayout, initialColumns, key]);
|
|
66
82
|
|
|
67
|
-
return { columns, setColumns: handleSaveLayout,
|
|
83
|
+
return { columns, setColumns: handleSaveLayout, isReady };
|
|
68
84
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Label
|
|
3
3
|
} from "./chunk-CJVTFYI4.js";
|
|
4
|
-
import {
|
|
5
|
-
Button
|
|
6
|
-
} from "./chunk-SK742QNF.js";
|
|
7
4
|
import {
|
|
8
5
|
Icon
|
|
9
6
|
} from "./chunk-UAPWR2KE.js";
|
|
7
|
+
import {
|
|
8
|
+
Button
|
|
9
|
+
} from "./chunk-SK742QNF.js";
|
|
10
10
|
import {
|
|
11
11
|
baseTransition,
|
|
12
12
|
componentGap,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Label
|
|
3
|
+
} from "./chunk-CJVTFYI4.js";
|
|
1
4
|
import {
|
|
2
5
|
formatCurrencyDisplay,
|
|
3
6
|
formatDecimalValue,
|
|
4
7
|
getDecimalPlaceholder
|
|
5
8
|
} from "./chunk-5UH6QUFB.js";
|
|
6
|
-
import {
|
|
7
|
-
Label
|
|
8
|
-
} from "./chunk-CJVTFYI4.js";
|
|
9
9
|
import {
|
|
10
10
|
Icon
|
|
11
11
|
} from "./chunk-UAPWR2KE.js";
|