@navikt/ds-react 8.10.5 → 8.10.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.
- package/cjs/data/data-grid/index.d.ts +2 -0
- package/cjs/data/data-grid/index.js +7 -0
- package/cjs/data/data-grid/index.js.map +1 -0
- package/cjs/data/data-grid/root/DataGridRoot.context.d.ts +11 -0
- package/cjs/data/data-grid/root/DataGridRoot.context.js +11 -0
- package/cjs/data/data-grid/root/DataGridRoot.context.js.map +1 -0
- package/cjs/data/data-grid/root/DataGridRoot.d.ts +38 -0
- package/cjs/data/data-grid/root/DataGridRoot.js +68 -0
- package/cjs/data/data-grid/root/DataGridRoot.js.map +1 -0
- package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js +0 -1
- package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js.map +1 -1
- package/cjs/data/drag-and-drop/root/DragAndDropRoot.d.ts +5 -5
- package/cjs/data/drag-and-drop/root/DragAndDropRoot.js +4 -27
- package/cjs/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
- package/cjs/data/stories/Data.test-data.d.ts +2 -5
- package/cjs/data/stories/Data.test-data.js +30 -38
- package/cjs/data/stories/Data.test-data.js.map +1 -1
- package/cjs/data/table/base-cell/DataTableBaseCell.d.ts +15 -15
- package/cjs/data/table/base-cell/DataTableBaseCell.js +4 -8
- package/cjs/data/table/base-cell/DataTableBaseCell.js.map +1 -1
- package/cjs/data/table/column-header/DataTableColumnHeader.d.ts +24 -6
- package/cjs/data/table/column-header/DataTableColumnHeader.js +22 -27
- package/cjs/data/table/column-header/DataTableColumnHeader.js.map +1 -1
- package/cjs/data/table/column-header/useTableColumnResize.d.ts +19 -29
- package/cjs/data/table/column-header/useTableColumnResize.js +24 -22
- package/cjs/data/table/column-header/useTableColumnResize.js.map +1 -1
- package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.d.ts +1 -1
- package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.js +2 -2
- package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.js.map +1 -1
- package/cjs/data/table/helpers/collectTableRowEntries.d.ts +2 -2
- package/cjs/data/table/helpers/selection/getMultipleSelectProps.d.ts +13 -11
- package/cjs/data/table/helpers/selection/getMultipleSelectProps.js +43 -53
- package/cjs/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
- package/cjs/data/table/helpers/selection/getSingleSelectProps.d.ts +9 -8
- package/cjs/data/table/helpers/selection/getSingleSelectProps.js +23 -10
- package/cjs/data/table/helpers/selection/getSingleSelectProps.js.map +1 -1
- package/cjs/data/table/helpers/selection/selection.types.d.ts +19 -19
- package/cjs/data/table/helpers/selection/selection.utils.d.ts +21 -0
- package/cjs/data/table/helpers/selection/selection.utils.js +46 -0
- package/cjs/data/table/helpers/selection/selection.utils.js.map +1 -0
- package/cjs/data/table/hooks/useColumnOptions.d.ts +16 -5
- package/cjs/data/table/hooks/useColumnOptions.js +26 -8
- package/cjs/data/table/hooks/useColumnOptions.js.map +1 -1
- package/cjs/data/table/hooks/useTableDetailsPanel.d.ts +10 -13
- package/cjs/data/table/hooks/useTableDetailsPanel.js +6 -5
- package/cjs/data/table/hooks/useTableDetailsPanel.js.map +1 -1
- package/cjs/data/table/hooks/useTableItems.d.ts +29 -15
- package/cjs/data/table/hooks/useTableItems.js +2 -12
- package/cjs/data/table/hooks/useTableItems.js.map +1 -1
- package/cjs/data/table/hooks/useTableKeyboardNav.d.ts +1 -6
- package/cjs/data/table/hooks/useTableKeyboardNav.js +1 -4
- package/cjs/data/table/hooks/useTableKeyboardNav.js.map +1 -1
- package/cjs/data/table/hooks/useTableSelection.d.ts +6 -6
- package/cjs/data/table/hooks/useTableSelection.js +13 -13
- package/cjs/data/table/hooks/useTableSelection.js.map +1 -1
- package/cjs/data/table/hooks/useTableSort.d.ts +2 -2
- package/cjs/data/table/hooks/useTableSort.js +4 -5
- package/cjs/data/table/hooks/useTableSort.js.map +1 -1
- package/cjs/data/table/root/DataTable.types.d.ts +22 -10
- package/cjs/data/table/root/DataTableRoot.context.d.ts +13 -7
- package/cjs/data/table/root/DataTableRoot.context.js.map +1 -1
- package/cjs/data/table/root/DataTableRoot.d.ts +49 -72
- package/cjs/data/table/root/DataTableRoot.js +54 -66
- package/cjs/data/table/root/DataTableRoot.js.map +1 -1
- package/cjs/data/table/root/DataTableRoot.legacy.d.ts +2 -7
- package/cjs/data/table/root/DataTableRoot.legacy.js +17 -3
- package/cjs/data/table/root/DataTableRoot.legacy.js.map +1 -1
- package/cjs/data/table/sub-row-toggle/DataTableSubRowToggle.js +4 -4
- package/cjs/data/table/sub-row-toggle/DataTableSubRowToggle.js.map +1 -1
- package/cjs/data/table/tbody/DataTableTbody.js +4 -2
- package/cjs/data/table/tbody/DataTableTbody.js.map +1 -1
- package/cjs/data/table/tr/DataTableTr.d.ts +5 -3
- package/cjs/data/table/tr/DataTableTr.js +36 -23
- package/cjs/data/table/tr/DataTableTr.js.map +1 -1
- package/cjs/table/ColumnHeader.js +2 -1
- package/cjs/table/ColumnHeader.js.map +1 -1
- package/esm/data/data-grid/index.d.ts +2 -0
- package/esm/data/data-grid/index.js +3 -0
- package/esm/data/data-grid/index.js.map +1 -0
- package/esm/data/data-grid/root/DataGridRoot.context.d.ts +11 -0
- package/esm/data/data-grid/root/DataGridRoot.context.js +7 -0
- package/esm/data/data-grid/root/DataGridRoot.context.js.map +1 -0
- package/esm/data/data-grid/root/DataGridRoot.d.ts +38 -0
- package/esm/data/data-grid/root/DataGridRoot.js +32 -0
- package/esm/data/data-grid/root/DataGridRoot.js.map +1 -0
- package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js +0 -1
- package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js.map +1 -1
- package/esm/data/drag-and-drop/root/DragAndDropRoot.d.ts +5 -5
- package/esm/data/drag-and-drop/root/DragAndDropRoot.js +4 -27
- package/esm/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
- package/esm/data/stories/Data.test-data.d.ts +2 -5
- package/esm/data/stories/Data.test-data.js +30 -38
- package/esm/data/stories/Data.test-data.js.map +1 -1
- package/esm/data/table/base-cell/DataTableBaseCell.d.ts +15 -15
- package/esm/data/table/base-cell/DataTableBaseCell.js +4 -8
- package/esm/data/table/base-cell/DataTableBaseCell.js.map +1 -1
- package/esm/data/table/column-header/DataTableColumnHeader.d.ts +24 -6
- package/esm/data/table/column-header/DataTableColumnHeader.js +23 -28
- package/esm/data/table/column-header/DataTableColumnHeader.js.map +1 -1
- package/esm/data/table/column-header/useTableColumnResize.d.ts +19 -29
- package/esm/data/table/column-header/useTableColumnResize.js +24 -22
- package/esm/data/table/column-header/useTableColumnResize.js.map +1 -1
- package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.d.ts +1 -1
- package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.js +2 -2
- package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.js.map +1 -1
- package/esm/data/table/helpers/collectTableRowEntries.d.ts +2 -2
- package/esm/data/table/helpers/selection/getMultipleSelectProps.d.ts +13 -11
- package/esm/data/table/helpers/selection/getMultipleSelectProps.js +43 -53
- package/esm/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
- package/esm/data/table/helpers/selection/getSingleSelectProps.d.ts +9 -8
- package/esm/data/table/helpers/selection/getSingleSelectProps.js +23 -10
- package/esm/data/table/helpers/selection/getSingleSelectProps.js.map +1 -1
- package/esm/data/table/helpers/selection/selection.types.d.ts +19 -19
- package/esm/data/table/helpers/selection/selection.utils.d.ts +21 -0
- package/esm/data/table/helpers/selection/selection.utils.js +43 -0
- package/esm/data/table/helpers/selection/selection.utils.js.map +1 -0
- package/esm/data/table/hooks/useColumnOptions.d.ts +16 -5
- package/esm/data/table/hooks/useColumnOptions.js +26 -8
- package/esm/data/table/hooks/useColumnOptions.js.map +1 -1
- package/esm/data/table/hooks/useTableDetailsPanel.d.ts +10 -13
- package/esm/data/table/hooks/useTableDetailsPanel.js +6 -5
- package/esm/data/table/hooks/useTableDetailsPanel.js.map +1 -1
- package/esm/data/table/hooks/useTableItems.d.ts +29 -15
- package/esm/data/table/hooks/useTableItems.js +3 -10
- package/esm/data/table/hooks/useTableItems.js.map +1 -1
- package/esm/data/table/hooks/useTableKeyboardNav.d.ts +1 -6
- package/esm/data/table/hooks/useTableKeyboardNav.js +1 -4
- package/esm/data/table/hooks/useTableKeyboardNav.js.map +1 -1
- package/esm/data/table/hooks/useTableSelection.d.ts +6 -6
- package/esm/data/table/hooks/useTableSelection.js +13 -13
- package/esm/data/table/hooks/useTableSelection.js.map +1 -1
- package/esm/data/table/hooks/useTableSort.d.ts +2 -2
- package/esm/data/table/hooks/useTableSort.js +4 -5
- package/esm/data/table/hooks/useTableSort.js.map +1 -1
- package/esm/data/table/root/DataTable.types.d.ts +22 -10
- package/esm/data/table/root/DataTableRoot.context.d.ts +13 -7
- package/esm/data/table/root/DataTableRoot.context.js.map +1 -1
- package/esm/data/table/root/DataTableRoot.d.ts +49 -72
- package/esm/data/table/root/DataTableRoot.js +56 -68
- package/esm/data/table/root/DataTableRoot.js.map +1 -1
- package/esm/data/table/root/DataTableRoot.legacy.d.ts +2 -7
- package/esm/data/table/root/DataTableRoot.legacy.js +17 -3
- package/esm/data/table/root/DataTableRoot.legacy.js.map +1 -1
- package/esm/data/table/sub-row-toggle/DataTableSubRowToggle.js +4 -4
- package/esm/data/table/sub-row-toggle/DataTableSubRowToggle.js.map +1 -1
- package/esm/data/table/tbody/DataTableTbody.js +4 -2
- package/esm/data/table/tbody/DataTableTbody.js.map +1 -1
- package/esm/data/table/tr/DataTableTr.d.ts +5 -3
- package/esm/data/table/tr/DataTableTr.js +35 -23
- package/esm/data/table/tr/DataTableTr.js.map +1 -1
- package/esm/table/ColumnHeader.js +2 -1
- package/esm/table/ColumnHeader.js.map +1 -1
- package/package.json +3 -3
- package/src/data/data-grid/index.ts +3 -0
- package/src/data/data-grid/root/DataGridRoot.context.ts +16 -0
- package/src/data/data-grid/root/DataGridRoot.tsx +71 -0
- package/src/data/drag-and-drop/drag-handler/DragAndDropDragHandler.tsx +0 -1
- package/src/data/drag-and-drop/root/DragAndDropRoot.tsx +15 -49
- package/src/data/stories/Data.test-data.tsx +52 -43
- package/src/data/table/agent-component-review.md +175 -0
- package/src/data/table/base-cell/DataTableBaseCell.tsx +31 -21
- package/src/data/table/column-header/DataTableColumnHeader.tsx +61 -58
- package/src/data/table/column-header/useTableColumnResize.ts +55 -71
- package/src/data/table/details-panel-row/DataTableDetailsPanelRow.tsx +3 -3
- package/src/data/table/helpers/collectTableRowEntries.ts +1 -2
- package/src/data/table/helpers/selection/getMultipleSelectProps.ts +65 -85
- package/src/data/table/helpers/selection/getSingleSelectProps.ts +35 -17
- package/src/data/table/helpers/selection/selection.types.ts +19 -19
- package/src/data/table/helpers/selection/selection.utils.test.ts +161 -0
- package/src/data/table/helpers/selection/selection.utils.ts +73 -0
- package/src/data/table/hooks/__tests__/useTableItems.test.ts +2 -1
- package/src/data/table/hooks/useColumnOptions.ts +48 -14
- package/src/data/table/hooks/useTableDetailsPanel.tsx +22 -25
- package/src/data/table/hooks/useTableItems.ts +32 -24
- package/src/data/table/hooks/useTableKeyboardNav.ts +1 -13
- package/src/data/table/hooks/useTableSelection.ts +26 -31
- package/src/data/table/hooks/useTableSort.ts +10 -9
- package/src/data/table/root/DataTable.types.ts +30 -22
- package/src/data/table/root/DataTableRoot.context.ts +19 -7
- package/src/data/table/root/DataTableRoot.legacy.tsx +22 -14
- package/src/data/table/root/DataTableRoot.tsx +244 -293
- package/src/data/table/sub-row-toggle/DataTableSubRowToggle.tsx +5 -4
- package/src/data/table/tbody/DataTableTbody.tsx +6 -2
- package/src/data/table/tr/DataTableTr.tsx +98 -35
- package/src/table/ColumnHeader.tsx +2 -1
- package/cjs/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.d.ts +0 -22
- package/cjs/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.js +0 -35
- package/cjs/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.js.map +0 -1
- package/cjs/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.d.ts +0 -27
- package/cjs/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.js +0 -86
- package/cjs/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.js.map +0 -1
- package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.d.ts +0 -5
- package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.js +0 -6
- package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.js.map +0 -1
- package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.d.ts +0 -24
- package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.js +0 -108
- package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.js.map +0 -1
- package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.d.ts +0 -46
- package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.js +0 -112
- package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.js.map +0 -1
- package/esm/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.d.ts +0 -22
- package/esm/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.js +0 -29
- package/esm/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.js.map +0 -1
- package/esm/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.d.ts +0 -27
- package/esm/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.js +0 -50
- package/esm/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.js.map +0 -1
- package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.d.ts +0 -5
- package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.js +0 -3
- package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.js.map +0 -1
- package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.d.ts +0 -24
- package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.js +0 -68
- package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.js.map +0 -1
- package/esm/data/table/helpers/selection/SelectionSubtreeHelper.d.ts +0 -46
- package/esm/data/table/helpers/selection/SelectionSubtreeHelper.js +0 -109
- package/esm/data/table/helpers/selection/SelectionSubtreeHelper.js.map +0 -1
- package/src/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.tsx +0 -104
- package/src/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.tsx +0 -74
- package/src/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.tsx +0 -11
- package/src/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.tsx +0 -94
- package/src/data/table/helpers/selection/SelectionSubtreeHelper.test.ts +0 -66
- package/src/data/table/helpers/selection/SelectionSubtreeHelper.ts +0 -162
- package/src/data/table/hooks/__tests__/useTableSelection.test.ts +0 -488
- package/src/data/table/root/agent-feature-gap.md +0 -96
|
@@ -1,70 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getMultipleSelectProps = getMultipleSelectProps;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
// Header selection traverses the visible roots and skips already visited
|
|
12
|
-
// descendants, so expanded trees stay linear in the number of rows.
|
|
13
|
-
const headerSelectableKeys = subtreeHelper.getSelectableKeys(visibleRowIds);
|
|
14
|
-
const headerSelectableKeysSet = new Set(headerSelectableKeys);
|
|
15
|
-
const selectedSelectableCount = headerSelectableKeys.filter((k) => selectedKeysSet.has(k)).length;
|
|
16
|
-
const allSelectableSelected = headerSelectableKeys.length > 0 &&
|
|
17
|
-
selectedSelectableCount === headerSelectableKeys.length;
|
|
18
|
-
const indeterminate = selectedSelectableCount > 0 &&
|
|
19
|
-
selectedSelectableCount < headerSelectableKeys.length;
|
|
20
|
-
const selectedKeysNotInView = selectedKeys.filter((k) => !headerSelectableKeysSet.has(k));
|
|
21
|
-
const disabledSelected = selectedKeys.filter((k) => disabledKeysSet.has(k));
|
|
22
|
-
const preservedKeys = [
|
|
23
|
-
...new Set([...selectedKeysNotInView, ...disabledSelected]),
|
|
24
|
-
];
|
|
25
|
-
const isGroupFullySelected = (key) => {
|
|
26
|
-
const groupStats = subtreeHelper.getSelectionStats(key);
|
|
27
|
-
return (groupStats.selectableCount > 0 &&
|
|
28
|
-
groupStats.selectedCount === groupStats.selectableCount);
|
|
29
|
-
};
|
|
30
|
-
const handleToggleAll = () => {
|
|
31
|
-
if (allSelectableSelected) {
|
|
32
|
-
setSelectedKeys(preservedKeys);
|
|
4
|
+
const consoleWarning_1 = require("../../../../utils/helpers/consoleWarning");
|
|
5
|
+
const selection_utils_1 = require("./selection.utils");
|
|
6
|
+
function getMultipleSelectProps({ selectedKeysSet, selectedKeys, setSelectedKeys, enableRowSelection, tableItems, }) {
|
|
7
|
+
const selectableIdsSet = new Set();
|
|
8
|
+
for (const [id, { rowData }] of tableItems.itemDetails) {
|
|
9
|
+
if ((0, selection_utils_1.canSelectTableRow)(enableRowSelection, { row: rowData, id })) {
|
|
10
|
+
selectableIdsSet.add(id);
|
|
33
11
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
12
|
+
}
|
|
13
|
+
let selectedOnPageCount = 0;
|
|
14
|
+
for (const id of selectableIdsSet) {
|
|
15
|
+
selectedKeysSet.has(id) && selectedOnPageCount++;
|
|
16
|
+
}
|
|
17
|
+
const isAllSelected = selectableIdsSet.size > 0 && selectedOnPageCount === selectableIdsSet.size;
|
|
18
|
+
const someSelected = selectedOnPageCount > 0;
|
|
19
|
+
const handleToggleRow = (key, row) => {
|
|
20
|
+
if (!row) {
|
|
21
|
+
(0, consoleWarning_1.consoleWarning)(`Row data is undefined for key ${key}. This may cause issues with selection if enableRowSelection is used.`);
|
|
38
22
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
23
|
+
const checked = !selectedKeysSet.has(key);
|
|
24
|
+
const nextSet = new Set(selectedKeysSet);
|
|
25
|
+
const changed = (0, selection_utils_1.mutateRowSelection)({
|
|
26
|
+
selectedRowIds: nextSet,
|
|
27
|
+
rowId: key,
|
|
28
|
+
checked,
|
|
29
|
+
childRowIdsById: tableItems.childRowIdsById,
|
|
30
|
+
itemDetails: tableItems.itemDetails,
|
|
31
|
+
enableRowSelection,
|
|
32
|
+
});
|
|
33
|
+
if (changed) {
|
|
34
|
+
setSelectedKeys([...nextSet]);
|
|
43
35
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
};
|
|
37
|
+
const toggleAllRowSelected = (event) => {
|
|
38
|
+
if (event.target.checked) {
|
|
39
|
+
const preserved = selectedKeys.filter((k) => !selectableIdsSet.has(k));
|
|
40
|
+
setSelectedKeys([...preserved, ...selectableIdsSet]);
|
|
48
41
|
}
|
|
49
42
|
else {
|
|
50
|
-
setSelectedKeys(
|
|
43
|
+
setSelectedKeys(selectedKeys.filter((k) => !selectableIdsSet.has(k)));
|
|
51
44
|
}
|
|
52
45
|
};
|
|
53
46
|
return {
|
|
54
47
|
getTheadCheckboxProps: () => ({
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
disabled: headerSelectableKeys.length === 0,
|
|
48
|
+
checked: isAllSelected,
|
|
49
|
+
indeterminate: !isAllSelected && someSelected,
|
|
50
|
+
onChange: toggleAllRowSelected,
|
|
59
51
|
}),
|
|
60
|
-
getRowCheckboxProps: (key) => {
|
|
61
|
-
const groupStats = subtreeHelper.getSelectionStats(key);
|
|
52
|
+
getRowCheckboxProps: (key, row) => {
|
|
62
53
|
return {
|
|
63
|
-
onChange: () => handleToggleRow(key),
|
|
64
|
-
checked:
|
|
65
|
-
indeterminate:
|
|
66
|
-
|
|
67
|
-
disabled: disabledKeysSet.has(key),
|
|
54
|
+
onChange: () => handleToggleRow(key, row),
|
|
55
|
+
checked: selectedKeysSet.has(key),
|
|
56
|
+
indeterminate: false,
|
|
57
|
+
disabled: !(0, selection_utils_1.canSelectTableRow)(enableRowSelection, { row, id: key }),
|
|
68
58
|
};
|
|
69
59
|
},
|
|
70
60
|
toggleSelection: handleToggleRow,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMultipleSelectProps.js","sourceRoot":"","sources":["../../../../../src/data/table/helpers/selection/getMultipleSelectProps.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getMultipleSelectProps.js","sourceRoot":"","sources":["../../../../../src/data/table/helpers/selection/getMultipleSelectProps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { RadioInputProps } from "../../../../form/radio/radio-input/RadioInput";
|
|
2
|
-
type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import type { TableRowEntryId } from "../../root/DataTable.types";
|
|
3
|
+
import type { SelectedKeysT, SelectionProps } from "./selection.types";
|
|
4
|
+
type GetSingleSelectPropsArgs<T> = {
|
|
5
|
+
selectedKeysSet: Set<TableRowEntryId>;
|
|
6
|
+
setSelectedKeys: (keys: SelectedKeysT) => void;
|
|
6
7
|
name: string;
|
|
7
|
-
}
|
|
8
|
-
declare function getSingleSelectProps({ selectedKeysSet, setSelectedKeys,
|
|
9
|
-
getRowRadioProps: (key:
|
|
10
|
-
toggleSelection: (key:
|
|
8
|
+
} & Pick<SelectionProps<T>, "enableRowSelection">;
|
|
9
|
+
declare function getSingleSelectProps<T>({ selectedKeysSet, setSelectedKeys, name, enableRowSelection, }: GetSingleSelectPropsArgs<T>): {
|
|
10
|
+
getRowRadioProps: (key: TableRowEntryId, row: T) => RadioInputProps;
|
|
11
|
+
toggleSelection: (key: TableRowEntryId, row: T) => void;
|
|
11
12
|
};
|
|
12
13
|
export { getSingleSelectProps };
|
|
@@ -1,21 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getSingleSelectProps = getSingleSelectProps;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const consoleWarning_1 = require("../../../../utils/helpers/consoleWarning");
|
|
5
|
+
const selection_utils_1 = require("./selection.utils");
|
|
6
|
+
function getSingleSelectProps({ selectedKeysSet, setSelectedKeys, name, enableRowSelection, }) {
|
|
7
|
+
const handleSelectionChange = (key, row) => {
|
|
8
|
+
if (!row) {
|
|
9
|
+
(0, consoleWarning_1.consoleWarning)(`Row data is undefined for key ${key}. This may cause issues with selection if enableRowSelection is used.`);
|
|
10
|
+
}
|
|
11
|
+
if (!(0, selection_utils_1.canSelectTableRow)(enableRowSelection, { row, id: key })) {
|
|
7
12
|
return;
|
|
8
13
|
}
|
|
9
14
|
setSelectedKeys([key]);
|
|
10
15
|
};
|
|
11
16
|
return {
|
|
12
|
-
getRowRadioProps: (key) =>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
getRowRadioProps: (key, row) => {
|
|
18
|
+
const isSelectionDisabled = !(0, selection_utils_1.canSelectTableRow)(enableRowSelection, {
|
|
19
|
+
row,
|
|
20
|
+
id: key,
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
checked: selectedKeysSet.has(key),
|
|
24
|
+
onChange: isSelectionDisabled
|
|
25
|
+
? () => null
|
|
26
|
+
: () => handleSelectionChange(key, row),
|
|
27
|
+
disabled: isSelectionDisabled,
|
|
28
|
+
value: key,
|
|
29
|
+
name,
|
|
30
|
+
};
|
|
31
|
+
},
|
|
19
32
|
toggleSelection: handleSelectionChange,
|
|
20
33
|
};
|
|
21
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSingleSelectProps.js","sourceRoot":"","sources":["../../../../../src/data/table/helpers/selection/getSingleSelectProps.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getSingleSelectProps.js","sourceRoot":"","sources":["../../../../../src/data/table/helpers/selection/getSingleSelectProps.ts"],"names":[],"mappings":";;AAoDS,oDAAoB;AAnD7B,6EAA0E;AAG1E,uDAAsD;AAQtD,SAAS,oBAAoB,CAAI,EAC/B,eAAe,EACf,eAAe,EACf,IAAI,EACJ,kBAAkB,GACU;IAC5B,MAAM,qBAAqB,GAAG,CAAC,GAAoB,EAAE,GAAM,EAAE,EAAE;QAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAA,+BAAc,EACZ,iCAAiC,GAAG,uEAAuE,CAC5G,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAA,mCAAiB,EAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO;QACL,gBAAgB,EAAE,CAAC,GAAoB,EAAE,GAAM,EAAmB,EAAE;YAClE,MAAM,mBAAmB,GAAG,CAAC,IAAA,mCAAiB,EAAC,kBAAkB,EAAE;gBACjE,GAAG;gBACH,EAAE,EAAE,GAAG;aACR,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;gBACjC,QAAQ,EAAE,mBAAmB;oBAC3B,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI;oBACZ,CAAC,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;gBACzC,QAAQ,EAAE,mBAAmB;gBAC7B,KAAK,EAAE,GAAG;gBACV,IAAI;aACL,CAAC;QACJ,CAAC;QACD,eAAe,EAAE,qBAAqB;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { CheckboxInputProps } from "../../../../form/checkbox/checkbox-input/CheckboxInput";
|
|
2
2
|
import type { RadioInputProps } from "../../../../form/radio/radio-input/RadioInput";
|
|
3
|
-
type
|
|
4
|
-
type
|
|
3
|
+
import type { TableRowEntryId } from "../../root/DataTable.types";
|
|
4
|
+
type SelectedKeysT = TableRowEntryId[];
|
|
5
|
+
type SelectionProps<T = any> = {
|
|
5
6
|
/**
|
|
6
7
|
* Enables selection of rows.
|
|
7
8
|
*
|
|
@@ -12,7 +13,7 @@ type SelectionProps = {
|
|
|
12
13
|
*
|
|
13
14
|
* @default "none"
|
|
14
15
|
*/
|
|
15
|
-
selectionMode
|
|
16
|
+
selectionMode: "none" | "single" | "multiple";
|
|
16
17
|
/**
|
|
17
18
|
* Controlled selected keys. Should be used in conjunction with `onSelectionChange`.
|
|
18
19
|
*/
|
|
@@ -26,41 +27,40 @@ type SelectionProps = {
|
|
|
26
27
|
*/
|
|
27
28
|
onSelectionChange?: (keys: SelectedKeysT) => void;
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
+
* Callback to determine if a row should be enabled for selection.
|
|
30
31
|
*
|
|
31
32
|
*
|
|
32
|
-
*
|
|
33
|
+
* If set to a boolean, it will enable selection for all rows when true, and disable selection for all rows when false.
|
|
33
34
|
*/
|
|
34
|
-
|
|
35
|
+
enableRowSelection?: (({ row, id }: {
|
|
36
|
+
row: T;
|
|
37
|
+
id: TableRowEntryId;
|
|
38
|
+
}) => boolean) | boolean;
|
|
35
39
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* @default false
|
|
40
|
+
* Determines if selection is triggered by clicking the row or the selection control (checkbox/radio).
|
|
41
|
+
* @default "row"
|
|
39
42
|
*/
|
|
40
|
-
|
|
43
|
+
selectionTrigger?: "row" | "control";
|
|
41
44
|
};
|
|
42
45
|
type NoneSelection = {
|
|
43
46
|
selectionMode: "none";
|
|
44
47
|
selectedKeys: SelectedKeysT;
|
|
45
|
-
disabledSelectionKeys: SelectedKeysT;
|
|
46
48
|
};
|
|
47
49
|
type SingleSelection = {
|
|
48
50
|
selectionMode: "single";
|
|
49
51
|
selectedKeys: SelectedKeysT;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
toggleSelection: (key: string | number) => void;
|
|
52
|
+
getRowRadioProps: (key: TableRowEntryId, row: any) => RadioInputProps;
|
|
53
|
+
toggleSelection: (key: TableRowEntryId, row: any) => void;
|
|
53
54
|
};
|
|
54
55
|
type MultipleSelection = {
|
|
55
56
|
selectionMode: "multiple";
|
|
56
57
|
selectedKeys: SelectedKeysT;
|
|
57
|
-
disabledSelectionKeys: SelectedKeysT;
|
|
58
58
|
getTheadCheckboxProps: () => CheckboxInputProps;
|
|
59
|
-
getRowCheckboxProps: (key:
|
|
60
|
-
toggleSelection: (key:
|
|
59
|
+
getRowCheckboxProps: (key: TableRowEntryId, row: any) => CheckboxInputProps;
|
|
60
|
+
toggleSelection: (key: TableRowEntryId, row: any) => void;
|
|
61
61
|
};
|
|
62
62
|
type TableSelectionBase = {
|
|
63
|
-
isRowSelected: (rowId:
|
|
63
|
+
isRowSelected: (rowId: TableRowEntryId) => boolean;
|
|
64
64
|
};
|
|
65
65
|
type TableSelection = TableSelectionBase & (NoneSelection | SingleSelection | MultipleSelection);
|
|
66
|
-
export type { MultipleSelection, NoneSelection, SelectionProps, SingleSelection, TableSelection,
|
|
66
|
+
export type { MultipleSelection, NoneSelection, SelectedKeysT, SelectionProps, SingleSelection, TableSelection, };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TableRowEntryId } from "../../root/DataTable.types";
|
|
2
|
+
import type { ItemDetail } from "../collectTableRowEntries";
|
|
3
|
+
import type { SelectionProps } from "./selection.types";
|
|
4
|
+
declare function canSelectTableRow<T>(enableRowSelection: SelectionProps<T>["enableRowSelection"], args: {
|
|
5
|
+
row: T;
|
|
6
|
+
id: TableRowEntryId;
|
|
7
|
+
}): boolean;
|
|
8
|
+
type MutateRowSelectionArgs<T> = {
|
|
9
|
+
selectedRowIds: Set<TableRowEntryId>;
|
|
10
|
+
rowId: TableRowEntryId;
|
|
11
|
+
checked: boolean;
|
|
12
|
+
childRowIdsById: Map<TableRowEntryId, TableRowEntryId[]>;
|
|
13
|
+
itemDetails: Map<TableRowEntryId, ItemDetail<T>>;
|
|
14
|
+
enableRowSelection?: SelectionProps<T>["enableRowSelection"];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Traverses the row and its children and updates selected-state directly on given selectedRowIds set.
|
|
18
|
+
* Returns true if any changes were made to the set, false otherwise.
|
|
19
|
+
*/
|
|
20
|
+
declare function mutateRowSelection<T>({ selectedRowIds, rowId, checked, childRowIdsById, itemDetails, enableRowSelection, }: MutateRowSelectionArgs<T>): boolean;
|
|
21
|
+
export { canSelectTableRow, mutateRowSelection };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canSelectTableRow = canSelectTableRow;
|
|
4
|
+
exports.mutateRowSelection = mutateRowSelection;
|
|
5
|
+
function canSelectTableRow(enableRowSelection, args) {
|
|
6
|
+
if (typeof enableRowSelection === "function") {
|
|
7
|
+
return enableRowSelection(args);
|
|
8
|
+
}
|
|
9
|
+
return enableRowSelection !== null && enableRowSelection !== void 0 ? enableRowSelection : true;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Traverses the row and its children and updates selected-state directly on given selectedRowIds set.
|
|
13
|
+
* Returns true if any changes were made to the set, false otherwise.
|
|
14
|
+
*/
|
|
15
|
+
function mutateRowSelection({ selectedRowIds, rowId, checked, childRowIdsById, itemDetails, enableRowSelection, }) {
|
|
16
|
+
let changed = false;
|
|
17
|
+
const item = itemDetails.get(rowId);
|
|
18
|
+
if (item &&
|
|
19
|
+
canSelectTableRow(enableRowSelection, { row: item.rowData, id: rowId })) {
|
|
20
|
+
if (checked && !selectedRowIds.has(rowId)) {
|
|
21
|
+
selectedRowIds.add(rowId);
|
|
22
|
+
changed = true;
|
|
23
|
+
}
|
|
24
|
+
else if (!checked && selectedRowIds.has(rowId)) {
|
|
25
|
+
selectedRowIds.delete(rowId);
|
|
26
|
+
changed = true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const children = childRowIdsById.get(rowId);
|
|
30
|
+
if (children) {
|
|
31
|
+
for (const childId of children) {
|
|
32
|
+
if (mutateRowSelection({
|
|
33
|
+
selectedRowIds,
|
|
34
|
+
rowId: childId,
|
|
35
|
+
checked,
|
|
36
|
+
childRowIdsById,
|
|
37
|
+
itemDetails,
|
|
38
|
+
enableRowSelection,
|
|
39
|
+
})) {
|
|
40
|
+
changed = true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return changed;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=selection.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.utils.js","sourceRoot":"","sources":["../../../../../src/data/table/helpers/selection/selection.utils.ts"],"names":[],"mappings":";;AAwES,8CAAiB;AAAE,gDAAkB;AApE9C,SAAS,iBAAiB,CACxB,kBAA2D,EAC3D,IAAqC;IAErC,IAAI,OAAO,kBAAkB,KAAK,UAAU,EAAE,CAAC;QAC7C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,IAAI,CAAC;AACpC,CAAC;AAWD;;;GAGG;AACH,SAAS,kBAAkB,CAAI,EAC7B,cAAc,EACd,KAAK,EACL,OAAO,EACP,eAAe,EACf,WAAW,EACX,kBAAkB,GACQ;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEpC,IACE,IAAI;QACJ,iBAAiB,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EACvE,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IACE,kBAAkB,CAAC;gBACjB,cAAc;gBACd,KAAK,EAAE,OAAO;gBACd,OAAO;gBACP,eAAe;gBACf,WAAW;gBACX,kBAAkB;aACnB,CAAC,EACF,CAAC;gBACD,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import type { ColumnDefinition, ColumnDefinitions } from "../root/DataTable.types";
|
|
2
|
-
import type { SelectionProps } from "./useTableSelection";
|
|
3
2
|
type UseColumnOptions = {
|
|
4
3
|
stickyColumns?: {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
start?: "1";
|
|
5
|
+
end?: "1";
|
|
7
6
|
};
|
|
8
|
-
|
|
7
|
+
hasSelection: boolean;
|
|
8
|
+
hasDetailsPanel: boolean;
|
|
9
|
+
layout: "fixed" | "auto";
|
|
10
|
+
};
|
|
11
|
+
type StickyStartState = {
|
|
12
|
+
selection: boolean;
|
|
13
|
+
expansion: boolean;
|
|
14
|
+
selectionOffset: number;
|
|
15
|
+
firstColumnOffset: number;
|
|
9
16
|
};
|
|
10
17
|
type UseColumnOptionsResult<T> = {
|
|
11
18
|
columns: {
|
|
12
19
|
isSticky: "start" | "end" | false;
|
|
20
|
+
isStickyLast?: boolean;
|
|
21
|
+
stickyLeftOffset?: number;
|
|
13
22
|
colDef: ColumnDefinition<T>;
|
|
14
23
|
}[];
|
|
15
|
-
|
|
24
|
+
stickyStart: StickyStartState;
|
|
25
|
+
totalColSpan: number;
|
|
16
26
|
};
|
|
17
27
|
declare function useColumnOptions<T>(columnDefinitions: ColumnDefinitions<T>, options: UseColumnOptions): UseColumnOptionsResult<T>;
|
|
18
28
|
export { useColumnOptions };
|
|
29
|
+
export type { StickyStartState };
|
|
19
30
|
export type { UseColumnOptionsResult };
|
|
@@ -2,31 +2,49 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useColumnOptions = useColumnOptions;
|
|
4
4
|
const react_1 = require("react");
|
|
5
|
+
const DataTableTr_1 = require("../tr/DataTableTr");
|
|
5
6
|
function useColumnOptions(columnDefinitions, options) {
|
|
6
|
-
const { stickyColumns,
|
|
7
|
-
const
|
|
7
|
+
const { stickyColumns, hasSelection, hasDetailsPanel, layout } = options;
|
|
8
|
+
const hasStickyStart = (stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.start) === "1";
|
|
9
|
+
const stickyExpansion = hasStickyStart && hasDetailsPanel;
|
|
10
|
+
const stickySelection = hasStickyStart && hasSelection;
|
|
11
|
+
const stickySelectionOffset = stickyExpansion ? DataTableTr_1.ACTION_CELL_WIDTH : 0;
|
|
12
|
+
const stickyFirstColumnOffset = (stickyExpansion ? DataTableTr_1.ACTION_CELL_WIDTH : 0) +
|
|
13
|
+
(stickySelection ? DataTableTr_1.ACTION_CELL_WIDTH : 0);
|
|
8
14
|
const columns = (0, react_1.useMemo)(() => {
|
|
9
15
|
return columnDefinitions.map((colDef, index) => {
|
|
10
|
-
const isFirstSticky =
|
|
11
|
-
const isLastSticky = (stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.
|
|
16
|
+
const isFirstSticky = hasStickyStart && index === 0;
|
|
17
|
+
const isLastSticky = (stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.end) === "1" && index === columnDefinitions.length - 1;
|
|
12
18
|
return {
|
|
13
19
|
isSticky: isFirstSticky
|
|
14
20
|
? "start"
|
|
15
21
|
: isLastSticky
|
|
16
22
|
? "end"
|
|
17
23
|
: false,
|
|
24
|
+
isStickyLast: isFirstSticky && !isLastSticky,
|
|
25
|
+
stickyLeftOffset: isFirstSticky ? stickyFirstColumnOffset : undefined,
|
|
18
26
|
colDef,
|
|
19
27
|
};
|
|
20
28
|
});
|
|
21
29
|
}, [
|
|
22
30
|
columnDefinitions,
|
|
23
|
-
|
|
24
|
-
stickyColumns
|
|
25
|
-
|
|
31
|
+
hasStickyStart,
|
|
32
|
+
stickyColumns,
|
|
33
|
+
stickyFirstColumnOffset,
|
|
26
34
|
]);
|
|
35
|
+
const totalColSpan = columns.length +
|
|
36
|
+
(layout === "fixed" ? 1 : 0) +
|
|
37
|
+
(hasSelection ? 1 : 0) +
|
|
38
|
+
(hasDetailsPanel ? 1 : 0);
|
|
27
39
|
return {
|
|
28
|
-
|
|
40
|
+
stickyStart: {
|
|
41
|
+
selection: stickySelection,
|
|
42
|
+
expansion: stickyExpansion,
|
|
43
|
+
selectionOffset: stickySelectionOffset,
|
|
44
|
+
firstColumnOffset: stickyFirstColumnOffset,
|
|
45
|
+
},
|
|
29
46
|
columns,
|
|
47
|
+
totalColSpan,
|
|
30
48
|
};
|
|
31
49
|
}
|
|
32
50
|
//# sourceMappingURL=useColumnOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useColumnOptions.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useColumnOptions.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useColumnOptions.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useColumnOptions.ts"],"names":[],"mappings":";;AA6FS,4CAAgB;AA7FzB,iCAAgC;AAKhC,mDAAsD;AA8BtD,SAAS,gBAAgB,CACvB,iBAAuC,EACvC,OAAyB;IAEzB,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEzE,MAAM,cAAc,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,MAAK,GAAG,CAAC;IAEpD,MAAM,eAAe,GAAG,cAAc,IAAI,eAAe,CAAC;IAC1D,MAAM,eAAe,GAAG,cAAc,IAAI,YAAY,CAAC;IAEvD,MAAM,qBAAqB,GAAG,eAAe,CAAC,CAAC,CAAC,+BAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,uBAAuB,GAC3B,CAAC,eAAe,CAAC,CAAC,CAAC,+BAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,eAAe,CAAC,CAAC,CAAC,+BAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC3B,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC7C,MAAM,aAAa,GAAG,cAAc,IAAI,KAAK,KAAK,CAAC,CAAC;YACpD,MAAM,YAAY,GAChB,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,MAAK,GAAG,IAAI,KAAK,KAAK,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;YAEvE,OAAO;gBACL,QAAQ,EAAE,aAAa;oBACrB,CAAC,CAAE,OAAiB;oBACpB,CAAC,CAAC,YAAY;wBACZ,CAAC,CAAE,KAAe;wBAClB,CAAC,CAAE,KAAe;gBACtB,YAAY,EAAE,aAAa,IAAI,CAAC,YAAY;gBAC5C,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS;gBACrE,MAAM;aACP,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE;QACD,iBAAiB;QACjB,cAAc;QACd,aAAa;QACb,uBAAuB;KACxB,CAAC,CAAC;IAEH,MAAM,YAAY,GAChB,OAAO,CAAC,MAAM;QACd,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5B,OAAO;QACL,WAAW,EAAE;YACX,SAAS,EAAE,eAAe;YAC1B,SAAS,EAAE,eAAe;YAC1B,eAAe,EAAE,qBAAqB;YACtC,iBAAiB,EAAE,uBAAuB;SAC3C;QACD,OAAO;QACP,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import type { TableRowEntryId } from "../root/DataTable.types";
|
|
2
3
|
type DetailsPanelProps<T> = {
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* Function to get the content to show in the details panel for a given row.
|
|
5
6
|
* When provided, an expand toggle column is added automatically.
|
|
6
7
|
*/
|
|
7
|
-
getContent
|
|
8
|
+
getContent: (rowData: T) => React.ReactNode;
|
|
8
9
|
/**
|
|
9
10
|
* Determines whether a row can be expanded to show details panel content.
|
|
10
11
|
* @default () => true
|
|
@@ -14,20 +15,16 @@ type DetailsPanelProps<T> = {
|
|
|
14
15
|
* Controlled list of expanded row IDs.
|
|
15
16
|
* Use with `onDetailsPanelChange` for controlled usage, or `defaultDetailsPanelRowIds` for uncontrolled.
|
|
16
17
|
*/
|
|
17
|
-
expandedRowIds?:
|
|
18
|
+
expandedRowIds?: TableRowEntryId[];
|
|
18
19
|
/**
|
|
19
20
|
* Initial list of expanded row IDs for uncontrolled usage.
|
|
20
21
|
* @default []
|
|
21
22
|
*/
|
|
22
|
-
defaultExpandedRowIds?:
|
|
23
|
+
defaultExpandedRowIds?: TableRowEntryId[];
|
|
23
24
|
/**
|
|
24
25
|
* Called when the list of expanded row IDs changes.
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* TODO:
|
|
28
|
-
* - Docs: This pattern is called "Master / Detail" in general terms
|
|
29
26
|
*/
|
|
30
|
-
onExpandedRowIdsChange?: (ids:
|
|
27
|
+
onExpandedRowIdsChange?: (ids: TableRowEntryId[]) => void;
|
|
31
28
|
/**
|
|
32
29
|
* Returns the height (in px) or `"auto"` for a row's details panel.
|
|
33
30
|
* When a number is returned, the panel scrolls within that fixed height.
|
|
@@ -41,9 +38,9 @@ type DetailsPanelProps<T> = {
|
|
|
41
38
|
showExpandAll?: boolean;
|
|
42
39
|
};
|
|
43
40
|
type DataTableDetailsPanelContextT = {
|
|
44
|
-
isExpanded: (id:
|
|
45
|
-
isDetailsPanelExpandable: (id:
|
|
46
|
-
toggleExpansion: (id:
|
|
41
|
+
isExpanded: (id: TableRowEntryId) => boolean;
|
|
42
|
+
isDetailsPanelExpandable: (id: TableRowEntryId) => boolean;
|
|
43
|
+
toggleExpansion: (id: TableRowEntryId) => void;
|
|
47
44
|
toggleAll: () => void;
|
|
48
45
|
isAllExpanded: boolean;
|
|
49
46
|
getDetailsPanelContent?: (row: unknown) => React.ReactNode;
|
|
@@ -57,6 +54,6 @@ declare function DataTableDetailsPanelProvider<T>({ children, detailsPanel, }: {
|
|
|
57
54
|
} & {
|
|
58
55
|
children: React.ReactNode;
|
|
59
56
|
}): React.JSX.Element;
|
|
60
|
-
declare function getDataTableDetailsPanelId(tableId: string, rowId:
|
|
57
|
+
declare function getDataTableDetailsPanelId(tableId: string, rowId: TableRowEntryId): string;
|
|
61
58
|
export { DataTableDetailsPanelProvider, getDataTableDetailsPanelId, useDataTableDetailsPanel, };
|
|
62
59
|
export type { DetailsPanelProps };
|
|
@@ -39,22 +39,23 @@ exports.getDataTableDetailsPanelId = getDataTableDetailsPanelId;
|
|
|
39
39
|
const react_1 = __importStar(require("react"));
|
|
40
40
|
const helpers_1 = require("../../../utils/helpers");
|
|
41
41
|
const hooks_1 = require("../../../utils/hooks");
|
|
42
|
-
const
|
|
42
|
+
const DataTableRoot_context_1 = require("../root/DataTableRoot.context");
|
|
43
43
|
const { Provider: DataTableDetailsPanelContextProvider, useContext: useDataTableDetailsPanel, } = (0, helpers_1.createStrictContext)({
|
|
44
44
|
name: "DataTableDetailsPanelContext",
|
|
45
45
|
errorMessage: "useDataTableDetailsPanel must be used within a DataTableDetailsPanelProvider.",
|
|
46
46
|
});
|
|
47
47
|
exports.useDataTableDetailsPanel = useDataTableDetailsPanel;
|
|
48
|
-
function DataTableDetailsPanelProvider({ children, detailsPanel
|
|
49
|
-
|
|
48
|
+
function DataTableDetailsPanelProvider({ children, detailsPanel, }) {
|
|
49
|
+
var _a;
|
|
50
|
+
const { expandedRowIds, defaultExpandedRowIds = [], onExpandedRowIdsChange, getContent, isRowExpandable, getHeight, showExpandAll = false, } = detailsPanel || {};
|
|
50
51
|
const [expandedIds, setExpandedIds] = (0, hooks_1.useControllableState)({
|
|
51
52
|
value: expandedRowIds,
|
|
52
53
|
defaultValue: defaultExpandedRowIds,
|
|
53
54
|
onChange: onExpandedRowIdsChange,
|
|
54
55
|
});
|
|
55
56
|
/* TODO: False is just fallback until auto and root is merged */
|
|
56
|
-
const
|
|
57
|
-
const { itemDetails } =
|
|
57
|
+
const tableContext = (0, DataTableRoot_context_1.useDataTableContext)(false);
|
|
58
|
+
const { itemDetails } = (_a = tableContext === null || tableContext === void 0 ? void 0 : tableContext.tableItems) !== null && _a !== void 0 ? _a : {
|
|
58
59
|
itemDetails: new Map(),
|
|
59
60
|
};
|
|
60
61
|
const expandableIds = react_1.default.useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableDetailsPanel.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableDetailsPanel.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"useTableDetailsPanel.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableDetailsPanel.tsx"],"names":[],"mappings":"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"}
|