@navikt/ds-react 8.10.5 → 8.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +6 -6
- package/cjs/data/drag-and-drop/root/DragAndDropRoot.js +6 -29
- package/cjs/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
- package/cjs/data/stories/Data.test-data.d.ts +3 -6
- package/cjs/data/stories/Data.test-data.js +46 -59
- package/cjs/data/stories/Data.test-data.js.map +1 -1
- package/cjs/data/table/base-cell/DataTableBaseCell.d.ts +18 -18
- 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 +19 -13
- package/cjs/data/table/column-header/DataTableColumnHeader.js +26 -28
- 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 +30 -28
- 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 +14 -11
- package/cjs/data/table/helpers/selection/getMultipleSelectProps.js +45 -51
- 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 +24 -32
- 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 +17 -6
- 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 -14
- 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 +32 -19
- package/cjs/data/table/hooks/useTableItems.js +13 -15
- 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 +7 -6
- package/cjs/data/table/hooks/useTableSelection.js +52 -35
- package/cjs/data/table/hooks/useTableSelection.js.map +1 -1
- package/cjs/data/table/hooks/useTableSort.d.ts +15 -9
- package/cjs/data/table/hooks/useTableSort.js +9 -11
- package/cjs/data/table/hooks/useTableSort.js.map +1 -1
- package/cjs/data/table/index.d.ts +1 -1
- package/cjs/data/table/index.js +3 -23
- package/cjs/data/table/index.js.map +1 -1
- package/cjs/data/table/root/DataGridTable.types.d.ts +65 -0
- package/cjs/data/table/root/DataGridTable.types.js +3 -0
- package/cjs/data/table/root/DataGridTable.types.js.map +1 -0
- package/cjs/data/table/root/DataGridTableRoot.d.ts +104 -0
- package/cjs/data/table/root/DataGridTableRoot.js +237 -0
- package/cjs/data/table/root/DataGridTableRoot.js.map +1 -0
- package/cjs/data/table/root/DataTableRoot.context.d.ts +17 -7
- package/cjs/data/table/root/DataTableRoot.context.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 +7 -5
- package/cjs/data/table/tr/DataTableTr.js +69 -32
- package/cjs/data/table/tr/DataTableTr.js.map +1 -1
- package/cjs/data/token-filter/TokenFilter.d.ts +0 -6
- package/cjs/data/token-filter/TokenFilter.js +1 -1
- package/cjs/data-grid/index.d.ts +2 -0
- package/cjs/data-grid/index.js +9 -0
- package/cjs/data-grid/index.js.map +1 -0
- package/cjs/data-grid/root/DataGrid.types.d.ts +35 -0
- package/cjs/{data/table/root/DataTable.types.js → data-grid/root/DataGrid.types.js} +1 -1
- package/cjs/data-grid/root/DataGrid.types.js.map +1 -0
- package/cjs/data-grid/root/DataGridRoot.context.d.ts +16 -0
- package/cjs/data-grid/root/DataGridRoot.context.js +11 -0
- package/cjs/data-grid/root/DataGridRoot.context.js.map +1 -0
- package/cjs/data-grid/root/DataGridRoot.d.ts +89 -0
- package/cjs/data-grid/root/DataGridRoot.js +93 -0
- package/cjs/data-grid/root/DataGridRoot.js.map +1 -0
- package/cjs/preview.d.ts +1 -0
- package/cjs/preview.js +7 -0
- package/cjs/preview.js.map +1 -0
- package/cjs/table/ColumnHeader.js +2 -1
- package/cjs/table/ColumnHeader.js.map +1 -1
- 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 +6 -6
- package/esm/data/drag-and-drop/root/DragAndDropRoot.js +6 -29
- package/esm/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
- package/esm/data/stories/Data.test-data.d.ts +3 -6
- package/esm/data/stories/Data.test-data.js +46 -59
- package/esm/data/stories/Data.test-data.js.map +1 -1
- package/esm/data/table/base-cell/DataTableBaseCell.d.ts +18 -18
- 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 +19 -13
- package/esm/data/table/column-header/DataTableColumnHeader.js +27 -29
- 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 +30 -28
- 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 +14 -11
- package/esm/data/table/helpers/selection/getMultipleSelectProps.js +45 -51
- 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 +24 -32
- 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 +17 -6
- 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 -14
- 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 +32 -19
- package/esm/data/table/hooks/useTableItems.js +14 -13
- 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 +7 -6
- package/esm/data/table/hooks/useTableSelection.js +52 -35
- package/esm/data/table/hooks/useTableSelection.js.map +1 -1
- package/esm/data/table/hooks/useTableSort.d.ts +15 -9
- package/esm/data/table/hooks/useTableSort.js +10 -12
- package/esm/data/table/hooks/useTableSort.js.map +1 -1
- package/esm/data/table/index.d.ts +1 -1
- package/esm/data/table/index.js +1 -21
- package/esm/data/table/index.js.map +1 -1
- package/esm/data/table/root/DataGridTable.types.d.ts +65 -0
- package/esm/data/table/root/DataGridTable.types.js +2 -0
- package/esm/data/table/root/DataGridTable.types.js.map +1 -0
- package/esm/data/table/root/DataGridTableRoot.d.ts +104 -0
- package/esm/data/table/root/DataGridTableRoot.js +202 -0
- package/esm/data/table/root/DataGridTableRoot.js.map +1 -0
- package/esm/data/table/root/DataTableRoot.context.d.ts +17 -7
- package/esm/data/table/root/DataTableRoot.context.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 +7 -5
- package/esm/data/table/tr/DataTableTr.js +68 -32
- package/esm/data/table/tr/DataTableTr.js.map +1 -1
- package/esm/data/token-filter/TokenFilter.d.ts +0 -6
- package/esm/data/token-filter/TokenFilter.js +1 -1
- package/esm/data-grid/index.d.ts +2 -0
- package/esm/data-grid/index.js +4 -0
- package/esm/data-grid/index.js.map +1 -0
- package/esm/data-grid/root/DataGrid.types.d.ts +35 -0
- package/esm/data-grid/root/DataGrid.types.js +2 -0
- package/esm/data-grid/root/DataGrid.types.js.map +1 -0
- package/esm/data-grid/root/DataGridRoot.context.d.ts +16 -0
- package/esm/data-grid/root/DataGridRoot.context.js +7 -0
- package/esm/data-grid/root/DataGridRoot.context.js.map +1 -0
- package/esm/data-grid/root/DataGridRoot.d.ts +89 -0
- package/esm/data-grid/root/DataGridRoot.js +57 -0
- package/esm/data-grid/root/DataGridRoot.js.map +1 -0
- package/esm/preview.d.ts +1 -0
- package/esm/preview.js +3 -0
- package/esm/preview.js.map +1 -0
- package/esm/table/ColumnHeader.js +2 -1
- package/esm/table/ColumnHeader.js.map +1 -1
- package/package.json +23 -3
- package/src/data/drag-and-drop/drag-handler/DragAndDropDragHandler.tsx +0 -1
- package/src/data/drag-and-drop/root/DragAndDropRoot.tsx +18 -52
- package/src/data/stories/Data.test-data.tsx +76 -65
- package/src/data/table/base-cell/DataTableBaseCell.tsx +36 -26
- package/src/data/table/column-header/DataTableColumnHeader.tsx +62 -62
- package/src/data/table/column-header/useTableColumnResize.ts +63 -79
- 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 +69 -83
- package/src/data/table/helpers/selection/getSingleSelectProps.ts +35 -17
- package/src/data/table/helpers/selection/selection.types.ts +23 -33
- 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 +49 -15
- package/src/data/table/hooks/useTableDetailsPanel.tsx +21 -28
- package/src/data/table/hooks/useTableItems.ts +60 -38
- package/src/data/table/hooks/useTableKeyboardNav.ts +1 -13
- package/src/data/table/hooks/useTableSelection.ts +80 -68
- package/src/data/table/hooks/useTableSort.ts +36 -23
- package/src/data/table/index.tsx +4 -21
- package/src/data/table/root/DataGridTable.types.ts +82 -0
- package/src/data/table/root/DataGridTableRoot.tsx +566 -0
- package/src/data/table/root/DataTableRoot.context.ts +24 -10
- package/src/data/table/sub-row-toggle/DataTableSubRowToggle.tsx +6 -5
- package/src/data/table/tbody/DataTableTbody.tsx +6 -2
- package/src/data/table/tr/DataTableTr.tsx +145 -47
- package/src/data/token-filter/TokenFilter.tsx +1 -1
- package/src/data-grid/index.ts +3 -0
- package/src/data-grid/root/DataGrid.types.ts +36 -0
- package/src/data-grid/root/DataGridRoot.context.ts +21 -0
- package/src/data-grid/root/DataGridRoot.tsx +152 -0
- package/src/preview.ts +2 -0
- package/src/table/ColumnHeader.tsx +3 -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/cjs/data/table/root/DataTable.types.d.ts +0 -63
- package/cjs/data/table/root/DataTable.types.js.map +0 -1
- package/cjs/data/table/root/DataTableRoot.d.ts +0 -141
- package/cjs/data/table/root/DataTableRoot.js +0 -229
- package/cjs/data/table/root/DataTableRoot.js.map +0 -1
- package/cjs/data/table/root/DataTableRoot.legacy.d.ts +0 -177
- package/cjs/data/table/root/DataTableRoot.legacy.js +0 -104
- package/cjs/data/table/root/DataTableRoot.legacy.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/esm/data/table/root/DataTable.types.d.ts +0 -63
- package/esm/data/table/root/DataTable.types.js +0 -2
- package/esm/data/table/root/DataTable.types.js.map +0 -1
- package/esm/data/table/root/DataTableRoot.d.ts +0 -141
- package/esm/data/table/root/DataTableRoot.js +0 -193
- package/esm/data/table/root/DataTableRoot.js.map +0 -1
- package/esm/data/table/root/DataTableRoot.legacy.d.ts +0 -177
- package/esm/data/table/root/DataTableRoot.legacy.js +0 -59
- package/esm/data/table/root/DataTableRoot.legacy.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/Readme.md +0 -11
- 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/DataTable.types.ts +0 -87
- package/src/data/table/root/DataTableRoot.legacy.tsx +0 -297
- package/src/data/table/root/DataTableRoot.tsx +0 -562
- package/src/data/table/root/agent-feature-gap.md +0 -96
|
@@ -47,9 +47,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
47
47
|
exports.DataTableColumnHeader = void 0;
|
|
48
48
|
const react_1 = __importStar(require("react"));
|
|
49
49
|
const aksel_icons_1 = require("@navikt/aksel-icons");
|
|
50
|
+
const DataGridRoot_context_1 = require("../../../data-grid/root/DataGridRoot.context");
|
|
50
51
|
const helpers_1 = require("../../../utils/helpers");
|
|
51
52
|
const hooks_1 = require("../../../utils/hooks");
|
|
52
53
|
const DataTableBaseCell_1 = require("../base-cell/DataTableBaseCell");
|
|
54
|
+
const DataTableRoot_context_1 = require("../root/DataTableRoot.context");
|
|
53
55
|
const useTableColumnResize_1 = require("./useTableColumnResize");
|
|
54
56
|
const SORT_ICON = {
|
|
55
57
|
asc: aksel_icons_1.SortUpIcon,
|
|
@@ -62,41 +64,37 @@ const SORT_ICON = {
|
|
|
62
64
|
* Toggling `data-block-keyboard-nav` does not work since the created "grid" does not update when toggling this attribute.
|
|
63
65
|
*/
|
|
64
66
|
const DataTableColumnHeader = (0, react_1.forwardRef)((_a, forwardedRef) => {
|
|
65
|
-
var {
|
|
66
|
-
const
|
|
67
|
+
var { id, label, sortable = false, width, cellType, className, children, style } = _a, rest = __rest(_a, ["id", "label", "sortable", "width", "cellType", "className", "children", "style"]);
|
|
68
|
+
const { isLoading } = (0, DataGridRoot_context_1.useDataGridContext)();
|
|
67
69
|
const thRef = (0, react_1.useRef)(null);
|
|
68
70
|
const mergedRef = (0, hooks_1.useMergeRefs)(forwardedRef, thRef);
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
SortIcon && (react_1.default.createElement(SortIcon, { "aria-hidden": true, "data-sort-direction": sortDirection, className: "aksel-data-table__th-sort-icon", fontSize: "1.25rem" })))) : (react_1.default.createElement("div", { ref: contentRef, className: (0, helpers_1.cl)({
|
|
86
|
-
"aksel-data-table__th-content": !UNSAFE_isSelection,
|
|
71
|
+
const { sortingState } = (0, DataTableRoot_context_1.useDataTableContext)();
|
|
72
|
+
const { onSortClick, sortState } = sortingState;
|
|
73
|
+
const resizeResult = (0, useTableColumnResize_1.useTableColumnResize)(Object.assign(Object.assign({}, width), { thRef, colSpan: rest.colSpan }));
|
|
74
|
+
const sortDirection = (0, react_1.useMemo)(() => {
|
|
75
|
+
var _a;
|
|
76
|
+
const sortEntry = sortState.find((s) => s.columnId === id);
|
|
77
|
+
return (_a = sortEntry === null || sortEntry === void 0 ? void 0 : sortEntry.direction) !== null && _a !== void 0 ? _a : "none";
|
|
78
|
+
}, [id, sortState]);
|
|
79
|
+
const canSort = sortable && id !== undefined;
|
|
80
|
+
const SortIcon = canSort ? SORT_ICON[sortDirection] : null;
|
|
81
|
+
const contentId = `th-content-${id.replace(/\s/g, "-")}`;
|
|
82
|
+
return (react_1.default.createElement(DataTableBaseCell_1.DataTableBaseCell, Object.assign({ as: "th" }, rest, { ref: mergedRef, className: (0, helpers_1.cl)("aksel-data-table__column-header", className), "data-sortable": canSort, style: Object.assign(Object.assign({}, style), { width: resizeResult.width }), "aria-sort": canSort ? getAriaSort(sortDirection) : undefined, cellType: cellType, "aria-labelledby": contentId }),
|
|
83
|
+
canSort ? (react_1.default.createElement("button", { type: "button", className: "aksel-data-table__th-sort-button", onClick: (event) => onSortClick(id, event), disabled: isLoading },
|
|
84
|
+
react_1.default.createElement("div", { id: contentId, className: "aksel-data-table__th-content" }, children),
|
|
85
|
+
SortIcon && (react_1.default.createElement(SortIcon, { "aria-hidden": true, "data-sort-direction": sortDirection, className: "aksel-data-table__th-sort-icon", fontSize: "1.25rem" })))) : (react_1.default.createElement("div", { id: contentId, className: (0, helpers_1.cl)({
|
|
86
|
+
"aksel-data-table__th-content": cellType !== "action",
|
|
87
87
|
}) }, children)),
|
|
88
|
-
resizeResult.enabled &&
|
|
88
|
+
resizeResult.enabled && cellType !== "action" && (react_1.default.createElement("button", Object.assign({}, resizeResult.resizeHandlerProps, { type: "button", className: "aksel-data-table__th-resize-handle", "aria-label": resizeResult.isResizingWithKeyboard
|
|
89
89
|
? "Bruk pil venstre/høyre"
|
|
90
|
-
: `Endre bredde ${label}`, "data-active": resizeResult.isResizingWithKeyboard, "data-disable-keyboard-nav": resizeResult.isResizingWithKeyboard, "data-block-keyboard-nav": true, role: "slider", "aria-valuenow": typeof resizeResult.
|
|
91
|
-
? resizeResult.style.width
|
|
92
|
-
: 0, "aria-valuetext": typeof resizeResult.style.width === "number" &&
|
|
90
|
+
: `Endre bredde ${label}`, "data-active": resizeResult.isResizingWithKeyboard, "data-disable-keyboard-nav": resizeResult.isResizingWithKeyboard, "data-block-keyboard-nav": true, role: "slider", "aria-valuenow": typeof resizeResult.width === "number" ? resizeResult.width : 0, "aria-valuetext": typeof resizeResult.width === "number" &&
|
|
93
91
|
resizeResult.isResizingWithKeyboard
|
|
94
|
-
? resizeResult.
|
|
95
|
-
: "" // Needs to be blank when not in keyboard resizing mode to avoid NVDA announcing the value as part of the column heading
|
|
92
|
+
? resizeResult.width.toString()
|
|
93
|
+
: " " // Needs to be blank when not in keyboard resizing mode to avoid NVDA announcing the value as part of the column heading
|
|
96
94
|
}), resizeResult.isResizingWithKeyboard && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
97
|
-
react_1.default.createElement("span", { className: "aksel-data-table__th-resize-handle-indicator
|
|
95
|
+
react_1.default.createElement("span", { className: "aksel-data-table__th-resize-handle-indicator" },
|
|
98
96
|
react_1.default.createElement(aksel_icons_1.CaretLeftCircleFillIcon, { "aria-hidden": true, fontSize: "1.5rem" })),
|
|
99
|
-
react_1.default.createElement("span", { className: "aksel-data-table__th-resize-handle-indicator
|
|
97
|
+
react_1.default.createElement("span", { className: "aksel-data-table__th-resize-handle-indicator" },
|
|
100
98
|
react_1.default.createElement(aksel_icons_1.CaretRightCircleFillIcon, { "aria-hidden": true, fontSize: "1.5rem" }))))))));
|
|
101
99
|
});
|
|
102
100
|
exports.DataTableColumnHeader = DataTableColumnHeader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableColumnHeader.js","sourceRoot":"","sources":["../../../../src/data/table/column-header/DataTableColumnHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"DataTableColumnHeader.js","sourceRoot":"","sources":["../../../../src/data/table/column-header/DataTableColumnHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,56 +16,47 @@ type ResizeProps = {
|
|
|
16
16
|
* consider using `layout="auto"` on the root instead for better performance.
|
|
17
17
|
*
|
|
18
18
|
* **NB:** This can cause a layout shift. Set a good initial width with `width` or `defaultWidth` to mitigate this.
|
|
19
|
+
*
|
|
20
|
+
* **NB:** Does not work with block content.
|
|
19
21
|
*/
|
|
20
|
-
|
|
22
|
+
autoResizeOnce?: boolean;
|
|
21
23
|
/**
|
|
22
|
-
* Minimum width of the column when resizing. Only used when `resizable` or `
|
|
24
|
+
* Minimum width of the column when resizing. Only used when `resizable` or `autoResizeOnce` is enabled.
|
|
23
25
|
* @default 40
|
|
24
26
|
*/
|
|
25
|
-
|
|
27
|
+
resizeMin?: number;
|
|
26
28
|
/**
|
|
27
|
-
* Maximum width of the column when resizing. Only used when `resizable` or `
|
|
29
|
+
* Maximum width of the column when resizing. Only used when `resizable` or `autoResizeOnce` is enabled.
|
|
28
30
|
*/
|
|
29
|
-
|
|
31
|
+
resizeMax?: number;
|
|
30
32
|
/**
|
|
31
|
-
* Controlled width of the column. Does not respect `
|
|
33
|
+
* Controlled width of the column. (Does not respect `resizeMin` and `resizeMax`.)
|
|
32
34
|
*
|
|
33
|
-
* Should only be used to fully control column width state. Otherwise, use `
|
|
35
|
+
* Should only be used to fully control column width state. Otherwise, use `default` and let the component handle resizing.
|
|
34
36
|
*
|
|
35
37
|
* **NB:** Percentage as initial width does not work well with resizing.
|
|
36
38
|
*/
|
|
37
|
-
|
|
39
|
+
value?: number | string;
|
|
38
40
|
/**
|
|
39
|
-
* Initial width of the column. Only used when `
|
|
40
|
-
* Does not respect `
|
|
41
|
+
* Initial width of the column. Only used when `value` is not set.
|
|
42
|
+
* (Does not respect `resizeMin` and `resizeMax`.)
|
|
41
43
|
*
|
|
42
44
|
* **NB:** Percentage as initial width does not work well with resizing.
|
|
43
45
|
* @default 140px
|
|
44
46
|
*/
|
|
45
|
-
|
|
47
|
+
defaultValue?: number | string;
|
|
46
48
|
/**
|
|
47
49
|
* Called when the column width changes.
|
|
48
50
|
* @param width New width in pixels.
|
|
49
51
|
*/
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Forwarded styles
|
|
53
|
-
*/
|
|
54
|
-
style?: React.CSSProperties;
|
|
55
|
-
/**
|
|
56
|
-
* Forwarded colSpan
|
|
57
|
-
*/
|
|
58
|
-
colSpan?: number;
|
|
52
|
+
onChange?: (width: number) => void;
|
|
59
53
|
};
|
|
60
|
-
type
|
|
61
|
-
[K in keyof T]: T[K] | undefined;
|
|
62
|
-
};
|
|
63
|
-
type Unomittable<T> = WithUndefined<Required<T>>;
|
|
64
|
-
type TableColumnResizeArgs = Unomittable<ResizeProps> & {
|
|
54
|
+
type TableColumnResizeArgs = ResizeProps & {
|
|
65
55
|
thRef: React.RefObject<HTMLTableCellElement | null>;
|
|
56
|
+
colSpan: number | undefined;
|
|
66
57
|
};
|
|
67
58
|
type TableColumnResizeResult = {
|
|
68
|
-
|
|
59
|
+
width: number | string;
|
|
69
60
|
resizeHandlerProps: {
|
|
70
61
|
onMouseDown: DOMAttributes<HTMLButtonElement>["onMouseDown"];
|
|
71
62
|
onTouchStart: DOMAttributes<HTMLButtonElement>["onTouchStart"];
|
|
@@ -77,15 +68,14 @@ type TableColumnResizeResult = {
|
|
|
77
68
|
isResizingWithKeyboard: boolean;
|
|
78
69
|
enabled: true;
|
|
79
70
|
} | {
|
|
80
|
-
|
|
71
|
+
width?: number | string;
|
|
81
72
|
enabled: false;
|
|
82
73
|
};
|
|
83
74
|
/**
|
|
84
75
|
* TODO:
|
|
85
|
-
* - Do we allow % widths?
|
|
86
76
|
* - Auto-width mode is hard now since that might cause layout-shifts on mount. But would be preferable to
|
|
87
77
|
* be able to set "1fr" or similar and have it fill remaining space.
|
|
88
78
|
*/
|
|
89
|
-
declare function useTableColumnResize(
|
|
79
|
+
declare function useTableColumnResize({ resizable, autoResizeOnce, resizeMin, resizeMax, value, defaultValue, onChange, thRef, colSpan, }: TableColumnResizeArgs): TableColumnResizeResult;
|
|
90
80
|
export { useTableColumnResize };
|
|
91
81
|
export type { ResizeProps };
|
|
@@ -6,41 +6,39 @@ const hooks_1 = require("../../../utils/hooks");
|
|
|
6
6
|
const DataTableRoot_context_1 = require("../root/DataTableRoot.context");
|
|
7
7
|
/**
|
|
8
8
|
* TODO:
|
|
9
|
-
* - Do we allow % widths?
|
|
10
9
|
* - Auto-width mode is hard now since that might cause layout-shifts on mount. But would be preferable to
|
|
11
10
|
* be able to set "1fr" or similar and have it fill remaining space.
|
|
12
11
|
*/
|
|
13
|
-
function useTableColumnResize(
|
|
14
|
-
const { resizable, thRef, width: userWidth, defaultWidth, autoWidth, onWidthChange, maxWidth = Infinity, minWidth = 40, style, colSpan, } = args;
|
|
12
|
+
function useTableColumnResize({ resizable = true, autoResizeOnce, resizeMin = 40, resizeMax = Infinity, value, defaultValue, onChange, thRef, colSpan, }) {
|
|
15
13
|
const tableContext = (0, DataTableRoot_context_1.useDataTableContext)();
|
|
16
14
|
const [isResizingWithKeyboard, setIsResizingWithKeyboard] = (0, react_1.useState)(false);
|
|
17
15
|
const ignoreNextOnClick = (0, react_1.useRef)(false);
|
|
18
16
|
const [width, setWidth] = (0, hooks_1.useControllableState)({
|
|
19
|
-
value
|
|
20
|
-
defaultValue:
|
|
17
|
+
value,
|
|
18
|
+
defaultValue: defaultValue !== null && defaultValue !== void 0 ? defaultValue : (colSpan !== null && colSpan !== void 0 ? colSpan : 1) * 140,
|
|
21
19
|
/**
|
|
22
20
|
* TODO:
|
|
23
21
|
* - Potential optimization: Only call when width as "stopped" changing, e.g. on mouse up or after a debounce when resizing with keyboard.
|
|
24
22
|
* Otherwise, this could cause excessive calls when resizing quickly.
|
|
25
23
|
*/
|
|
26
|
-
onChange
|
|
24
|
+
onChange,
|
|
27
25
|
});
|
|
28
26
|
const setClampedWidth = (0, react_1.useCallback)((newWidth) => {
|
|
29
|
-
setWidth(Math.min(Math.max(newWidth,
|
|
30
|
-
}, [
|
|
31
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies: We only want to run this on mount and when
|
|
27
|
+
setWidth(Math.min(Math.max(newWidth, resizeMin), resizeMax));
|
|
28
|
+
}, [resizeMin, resizeMax, setWidth]);
|
|
29
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: We only want to run this on mount and when autoResizeOnce changes
|
|
32
30
|
(0, react_1.useEffect)(function autoResizeColumn() {
|
|
33
|
-
if (!
|
|
31
|
+
if (!autoResizeOnce) {
|
|
34
32
|
return;
|
|
35
33
|
}
|
|
36
34
|
const newColumnWidth = getAutoColumnWidth(thRef);
|
|
37
35
|
if (newColumnWidth) {
|
|
38
36
|
setClampedWidth(newColumnWidth);
|
|
39
37
|
}
|
|
40
|
-
}, [
|
|
38
|
+
}, [autoResizeOnce]);
|
|
41
39
|
const handleOnClick = (0, react_1.useCallback)(() => {
|
|
42
40
|
// We need to use the onClick event in order to support screen readers properly,
|
|
43
|
-
// since some of them only send a mouse click when pressing enter/space.
|
|
41
|
+
// since some of them only send a mouse click (no kbd events) when pressing enter/space.
|
|
44
42
|
// We detect a "screen reader click" by checking if we had a mouseUp event right before.
|
|
45
43
|
if (ignoreNextOnClick.current) {
|
|
46
44
|
ignoreNextOnClick.current = false;
|
|
@@ -84,11 +82,11 @@ function useTableColumnResize(args) {
|
|
|
84
82
|
var _a, _b;
|
|
85
83
|
const currentWidth = (_b = (_a = thRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : 0;
|
|
86
84
|
const newWidth = startWidth + (clientX - startX);
|
|
87
|
-
if (newWidth >
|
|
85
|
+
if (newWidth > resizeMax) {
|
|
88
86
|
setWidth(newWidth < currentWidth ? newWidth : currentWidth);
|
|
89
87
|
return;
|
|
90
88
|
}
|
|
91
|
-
if (newWidth <
|
|
89
|
+
if (newWidth < resizeMin) {
|
|
92
90
|
setWidth(newWidth > currentWidth ? newWidth : currentWidth);
|
|
93
91
|
return;
|
|
94
92
|
}
|
|
@@ -114,14 +112,14 @@ function useTableColumnResize(args) {
|
|
|
114
112
|
document.addEventListener("mouseup", cleanup, { once: true });
|
|
115
113
|
document.addEventListener("touchend", cleanup, { once: true });
|
|
116
114
|
document.addEventListener("touchcancel", cleanup, { once: true });
|
|
117
|
-
}, [
|
|
115
|
+
}, [resizeMax, resizeMin, setWidth, setClampedWidth, thRef]);
|
|
118
116
|
const handleMouseDown = (0, react_1.useCallback)((event) => {
|
|
119
117
|
startResize(event.clientX);
|
|
120
118
|
}, [startResize]);
|
|
121
119
|
const handleTouchStart = (0, react_1.useCallback)((event) => {
|
|
122
120
|
startResize(event.touches[0].clientX);
|
|
123
121
|
}, [startResize]);
|
|
124
|
-
// Auto-size column to fit content on double click
|
|
122
|
+
// Auto-size column to fit content on double click
|
|
125
123
|
const handleDoubleClick = (0, react_1.useCallback)(() => {
|
|
126
124
|
const newColumnWidth = getAutoColumnWidth(thRef);
|
|
127
125
|
if (newColumnWidth) {
|
|
@@ -130,18 +128,17 @@ function useTableColumnResize(args) {
|
|
|
130
128
|
}, [setClampedWidth, thRef]);
|
|
131
129
|
if (tableContext.layout !== "fixed") {
|
|
132
130
|
return {
|
|
133
|
-
style,
|
|
134
131
|
enabled: false,
|
|
135
132
|
};
|
|
136
133
|
}
|
|
137
134
|
if (!resizable) {
|
|
138
135
|
return {
|
|
139
|
-
|
|
136
|
+
width,
|
|
140
137
|
enabled: false,
|
|
141
138
|
};
|
|
142
139
|
}
|
|
143
140
|
return {
|
|
144
|
-
|
|
141
|
+
width,
|
|
145
142
|
resizeHandlerProps: {
|
|
146
143
|
onMouseDown: handleMouseDown,
|
|
147
144
|
onTouchStart: handleTouchStart,
|
|
@@ -154,11 +151,15 @@ function useTableColumnResize(args) {
|
|
|
154
151
|
enabled: true,
|
|
155
152
|
};
|
|
156
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Figures out how wide the column needs to be to fit all the content without truncation.
|
|
156
|
+
* NB: Does not work with block content!
|
|
157
|
+
*/
|
|
157
158
|
function getAutoColumnWidth(thRef) {
|
|
158
159
|
var _a;
|
|
159
160
|
const th = thRef.current;
|
|
160
161
|
const thContent = th.querySelector(".aksel-data-table__th-content");
|
|
161
|
-
const thPaddingEl = th.querySelector("
|
|
162
|
+
const thPaddingEl = th.querySelector(".aksel-data-table__cell-content");
|
|
162
163
|
const rows = (_a = th.closest("table")) === null || _a === void 0 ? void 0 : _a.querySelectorAll("tbody tr, tfoot tr");
|
|
163
164
|
if (!thContent || !thPaddingEl || !rows) {
|
|
164
165
|
return;
|
|
@@ -195,15 +196,16 @@ function getAutoColumnWidth(thRef) {
|
|
|
195
196
|
}
|
|
196
197
|
skipRows = cell.rowSpan - 1;
|
|
197
198
|
// Find needed width
|
|
198
|
-
const cellContent = cell.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
199
|
+
const cellContent = cell.querySelector(".aksel-data-table__cell-content");
|
|
200
|
+
if (!cellContent) {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
cellContent.style.width = "fit-content";
|
|
204
|
+
const cellContentWidth = cellContent.scrollWidth;
|
|
205
|
+
cellContent.style.removeProperty("width");
|
|
206
|
+
const widthNeededForThisCell = (cellContentWidth + 1) / cell.colSpan;
|
|
205
207
|
if (widthNeededForThisCell > newColumnWidth) {
|
|
206
|
-
newColumnWidth = widthNeededForThisCell;
|
|
208
|
+
newColumnWidth = Math.ceil(widthNeededForThisCell);
|
|
207
209
|
}
|
|
208
210
|
}
|
|
209
211
|
// Make sure new width is not wider than the table container since that would be impractical
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableColumnResize.js","sourceRoot":"","sources":["../../../../src/data/table/column-header/useTableColumnResize.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useTableColumnResize.js","sourceRoot":"","sources":["../../../../src/data/table/column-header/useTableColumnResize.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ const react_1 = __importDefault(require("react"));
|
|
|
8
8
|
const useTableDetailsPanel_1 = require("../hooks/useTableDetailsPanel");
|
|
9
9
|
const DataTableRoot_context_1 = require("../root/DataTableRoot.context");
|
|
10
10
|
function DataTableDetailsPanelRow({ rowId, rowData, }) {
|
|
11
|
-
const { tableId,
|
|
11
|
+
const { tableId, totalColSpan } = (0, DataTableRoot_context_1.useDataTableContext)();
|
|
12
12
|
const { enableDetailsPanel, isExpanded, getDetailsPanelContent, getDetailsPanelHeight, } = (0, useTableDetailsPanel_1.useDataTableDetailsPanel)();
|
|
13
13
|
if (!enableDetailsPanel) {
|
|
14
14
|
return null;
|
|
@@ -26,7 +26,7 @@ function DataTableDetailsPanelRow({ rowId, rowData, }) {
|
|
|
26
26
|
? { height: panelHeight, overflow: "auto" }
|
|
27
27
|
: { height: "auto" };
|
|
28
28
|
return (react_1.default.createElement("tr", { className: "aksel-data-table__details-panel-row" },
|
|
29
|
-
react_1.default.createElement("td", { id: expansionId, colSpan:
|
|
29
|
+
react_1.default.createElement("td", { id: expansionId, colSpan: totalColSpan, className: "aksel-data-table__details-panel-row-cell" },
|
|
30
30
|
react_1.default.createElement("div", { style: style }, content))));
|
|
31
31
|
}
|
|
32
32
|
//# sourceMappingURL=DataTableDetailsPanelRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableDetailsPanelRow.js","sourceRoot":"","sources":["../../../../src/data/table/details-panel-row/DataTableDetailsPanelRow.tsx"],"names":[],"mappings":";;;;;AAwDS,4DAAwB;AAxDjC,kDAA0B;AAC1B,wEAGuC;AACvC,yEAAoE;AAEpE,SAAS,wBAAwB,CAAI,EACnC,KAAK,EACL,OAAO,GAIR;IACC,MAAM,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"DataTableDetailsPanelRow.js","sourceRoot":"","sources":["../../../../src/data/table/details-panel-row/DataTableDetailsPanelRow.tsx"],"names":[],"mappings":";;;;;AAwDS,4DAAwB;AAxDjC,kDAA0B;AAC1B,wEAGuC;AACvC,yEAAoE;AAEpE,SAAS,wBAAwB,CAAI,EACnC,KAAK,EACL,OAAO,GAIR;IACC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAA,2CAAmB,GAAE,CAAC;IACxD,MAAM,EACJ,kBAAkB,EAClB,UAAU,EACV,sBAAsB,EACtB,qBAAqB,GACtB,GAAG,IAAA,+CAAwB,GAAE,CAAC;IAE/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAG,OAAO,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,IAAA,iDAA0B,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAG,OAAO,CAAC,CAAC;IAErD,MAAM,KAAK,GAAwB,WAAW;QAC5C,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC3C,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEvB,OAAO,CACL,sCAAI,SAAS,EAAC,qCAAqC;QACjD,sCACE,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,0CAA0C;YAEpD,uCAAK,KAAK,EAAE,KAAK,IAAG,OAAO,CAAO,CAC/B,CACF,CACN,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type TableRowEntryId
|
|
1
|
+
import type { TableRowEntryId } from "../root/DataGridTable.types";
|
|
2
2
|
type CollectTableRowEntriesArgs<T> = {
|
|
3
3
|
items: T[];
|
|
4
4
|
getRowId?: (rowData: T, index: number) => TableRowEntryId;
|
|
@@ -23,4 +23,4 @@ type CollectTableRowEntriesReturn<T> = {
|
|
|
23
23
|
};
|
|
24
24
|
declare function collectTableRowEntries<T>({ items, getRowId, getRows, isRowExpandable, }: CollectTableRowEntriesArgs<T>): CollectTableRowEntriesReturn<T>;
|
|
25
25
|
export { collectTableRowEntries };
|
|
26
|
-
export type { CollectTableRowEntriesArgs, CollectTableRowEntriesReturn,
|
|
26
|
+
export type { CollectTableRowEntriesArgs, CollectTableRowEntriesReturn, ItemDetail, };
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
import type { SetStateAction } from "react";
|
|
1
2
|
import type { CheckboxInputProps } from "../../../../form/checkbox/checkbox-input/CheckboxInput";
|
|
2
|
-
type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
import type { UseTableItemsReturn } from "../../hooks/useTableItems";
|
|
4
|
+
import type { TableRowEntryId } from "../../root/DataGridTable.types";
|
|
5
|
+
import type { SelectionProps } from "./selection.types";
|
|
6
|
+
type GetMultipleSelectPropsArgs<T> = {
|
|
7
|
+
selectedKeysSet: Set<TableRowEntryId>;
|
|
8
|
+
selectedKeys: string[];
|
|
9
|
+
setSelectedKeys: (next: SetStateAction<string[]>) => void;
|
|
10
|
+
tableItems: UseTableItemsReturn<T>;
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
} & Pick<SelectionProps<T>, "enableRowSelection">;
|
|
13
|
+
declare function getMultipleSelectProps<T>({ selectedKeysSet, selectedKeys, setSelectedKeys, enableRowSelection, tableItems, isLoading, }: GetMultipleSelectPropsArgs<T>): {
|
|
11
14
|
getTheadCheckboxProps: () => CheckboxInputProps;
|
|
12
|
-
getRowCheckboxProps: (key:
|
|
13
|
-
toggleSelection: (key:
|
|
15
|
+
getRowCheckboxProps: (key: TableRowEntryId, row: T) => CheckboxInputProps;
|
|
16
|
+
toggleSelection: (key: TableRowEntryId, row: T) => void;
|
|
14
17
|
};
|
|
15
18
|
export { getMultipleSelectProps };
|
|
@@ -1,70 +1,64 @@
|
|
|
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, isLoading, }) {
|
|
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)(`DataGrid.Table: Row data is undefined for key ${key}. This may cause issues with selection if enableRowSelection is used.`);
|
|
22
|
+
}
|
|
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]);
|
|
38
35
|
}
|
|
39
36
|
};
|
|
40
|
-
const
|
|
41
|
-
if (
|
|
37
|
+
const toggleAllRowSelected = (event) => {
|
|
38
|
+
if (isLoading) {
|
|
42
39
|
return;
|
|
43
40
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
setSelectedKeys(selectedKeys.filter((selectedKey) => !groupKeysSet.has(selectedKey)));
|
|
41
|
+
if (event.target.checked) {
|
|
42
|
+
const preserved = selectedKeys.filter((k) => !selectableIdsSet.has(k));
|
|
43
|
+
setSelectedKeys([...preserved, ...selectableIdsSet]);
|
|
48
44
|
}
|
|
49
45
|
else {
|
|
50
|
-
setSelectedKeys(
|
|
46
|
+
setSelectedKeys(selectedKeys.filter((k) => !selectableIdsSet.has(k)));
|
|
51
47
|
}
|
|
52
48
|
};
|
|
53
49
|
return {
|
|
54
50
|
getTheadCheckboxProps: () => ({
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
disabled:
|
|
51
|
+
checked: isAllSelected,
|
|
52
|
+
indeterminate: !isAllSelected && someSelected,
|
|
53
|
+
onChange: toggleAllRowSelected,
|
|
54
|
+
disabled: selectableIdsSet.size === 0 || isLoading,
|
|
59
55
|
}),
|
|
60
|
-
getRowCheckboxProps: (key) => {
|
|
61
|
-
const groupStats = subtreeHelper.getSelectionStats(key);
|
|
56
|
+
getRowCheckboxProps: (key, row) => {
|
|
62
57
|
return {
|
|
63
|
-
onChange: () => handleToggleRow(key),
|
|
64
|
-
checked:
|
|
65
|
-
indeterminate:
|
|
66
|
-
|
|
67
|
-
disabled: disabledKeysSet.has(key),
|
|
58
|
+
onChange: () => handleToggleRow(key, row),
|
|
59
|
+
checked: selectedKeysSet.has(key),
|
|
60
|
+
indeterminate: false,
|
|
61
|
+
disabled: !(0, selection_utils_1.canSelectTableRow)(enableRowSelection, { row, id: key }),
|
|
68
62
|
};
|
|
69
63
|
},
|
|
70
64
|
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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"}
|