@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
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useControllableState } from "../../../utils/hooks";
|
|
3
|
-
import type { SortChangeDetail, SortEntry } from "../root/
|
|
1
|
+
import { consoleWarning } from "../../../utils/helpers/consoleWarning";
|
|
2
|
+
import { useControllableState, useEventCallback } from "../../../utils/hooks";
|
|
3
|
+
import type { SortChangeDetail, SortEntry } from "../root/DataGridTable.types";
|
|
4
4
|
|
|
5
5
|
type TableSortOptions = {
|
|
6
6
|
/**
|
|
@@ -8,22 +8,31 @@ type TableSortOptions = {
|
|
|
8
8
|
* Columns not present in the array are unsorted.
|
|
9
9
|
* Supports multi-column sorting when multiple entries are provided.
|
|
10
10
|
*
|
|
11
|
-
* When provided, the component is controlled
|
|
12
|
-
* For uncontrolled usage, use `
|
|
11
|
+
* When provided, the component is controlled - you must also handle `onSortOrderChange`.
|
|
12
|
+
* For uncontrolled usage, use `defaultSortOrder` instead.
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
sortOrder?: SortEntry[];
|
|
15
15
|
/**
|
|
16
16
|
* Initial sort state for uncontrolled usage.
|
|
17
|
-
* Use `
|
|
17
|
+
* Use `sortOrder` + `onSortOrderChange` for controlled usage.
|
|
18
18
|
* @default []
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
defaultSortOrder?: SortEntry[];
|
|
21
21
|
/**
|
|
22
22
|
* Called when the user clicks a sortable column header.
|
|
23
23
|
* - `sort` — the full updated sort array after cycling: unsorted → asc → desc → unsorted.
|
|
24
24
|
* - `detail` — the specific column that changed, including its new direction (`"none"` means removed).
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
onSortOrderChange?: (
|
|
27
|
+
sortOrder: SortEntry[],
|
|
28
|
+
detail: SortChangeDetail,
|
|
29
|
+
) => void;
|
|
30
|
+
/**
|
|
31
|
+
* When true, allows multiple columns to be sorted by holding Shift while clicking headers.
|
|
32
|
+
*
|
|
33
|
+
* @default true
|
|
34
|
+
*/
|
|
35
|
+
allowMultiSort?: boolean;
|
|
27
36
|
};
|
|
28
37
|
|
|
29
38
|
type UseTableSortResults = {
|
|
@@ -40,32 +49,36 @@ type UseTableSortResults = {
|
|
|
40
49
|
sortState: SortEntry[];
|
|
41
50
|
};
|
|
42
51
|
|
|
43
|
-
function useTableSort(options
|
|
44
|
-
const {
|
|
52
|
+
function useTableSort(options?: TableSortOptions): UseTableSortResults {
|
|
53
|
+
const {
|
|
54
|
+
defaultSortOrder,
|
|
55
|
+
onSortOrderChange,
|
|
56
|
+
sortOrder,
|
|
57
|
+
allowMultiSort = true,
|
|
58
|
+
} = options || {};
|
|
45
59
|
|
|
46
60
|
const [sort, setSort] = useControllableState({
|
|
47
|
-
value:
|
|
48
|
-
defaultValue:
|
|
61
|
+
value: sortOrder,
|
|
62
|
+
defaultValue: defaultSortOrder || [],
|
|
49
63
|
});
|
|
50
64
|
|
|
51
|
-
const handleSortClick =
|
|
65
|
+
const handleSortClick = useEventCallback(
|
|
52
66
|
(id: string, event: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
|
53
67
|
if (id === undefined) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
consoleWarning(
|
|
69
|
+
"DataGrid.Table: Column id is undefined for sort event on target",
|
|
70
|
+
event.target,
|
|
71
|
+
"Make sure your column definitions include an 'id' property.",
|
|
72
|
+
);
|
|
59
73
|
return;
|
|
60
74
|
}
|
|
61
75
|
|
|
62
|
-
const cumulative = event.shiftKey;
|
|
76
|
+
const cumulative = allowMultiSort && event.shiftKey;
|
|
63
77
|
const base = cumulative ? sort : sort.filter((s) => s.columnId === id);
|
|
64
78
|
const { next, detail } = nextSortEntries(base, id);
|
|
65
79
|
setSort(next);
|
|
66
|
-
|
|
80
|
+
onSortOrderChange?.(next, detail);
|
|
67
81
|
},
|
|
68
|
-
[onSortChange, setSort, sort],
|
|
69
82
|
);
|
|
70
83
|
|
|
71
84
|
return {
|
|
@@ -100,4 +113,4 @@ function nextSortEntries(
|
|
|
100
113
|
}
|
|
101
114
|
|
|
102
115
|
export { useTableSort };
|
|
103
|
-
export type { TableSortOptions };
|
|
116
|
+
export type { TableSortOptions, UseTableSortResults };
|
package/src/data/table/index.tsx
CHANGED
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
/* export {
|
|
3
|
-
default as DataTable,
|
|
4
|
-
DataTableCaption,
|
|
5
|
-
DataTableThead,
|
|
6
|
-
DataTableTbody,
|
|
7
|
-
DataTableTr,
|
|
8
|
-
DataTableTh,
|
|
9
|
-
DataTableTd,
|
|
10
|
-
DataTableTfoot,
|
|
11
|
-
} from "./root/DataTableRoot.legacy";
|
|
12
|
-
export type {
|
|
13
|
-
DataTableProps,
|
|
14
|
-
DataTableCaptionProps,
|
|
15
|
-
DataTableTheadProps,
|
|
16
|
-
DataTableTbodyProps,
|
|
17
|
-
DataTableTrProps,
|
|
18
|
-
DataTableThProps,
|
|
19
|
-
DataTableTdProps,
|
|
20
|
-
DataTableTfootProps,
|
|
21
|
-
} from "./root/DataTableRoot.legacy"; */
|
|
22
2
|
|
|
23
|
-
export {
|
|
3
|
+
export {
|
|
4
|
+
DataGridTable,
|
|
5
|
+
type DataGridTableProps,
|
|
6
|
+
} from "./root/DataGridTableRoot";
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { DataTableColumnHeaderProps } from "../column-header/DataTableColumnHeader";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TODO:
|
|
5
|
+
* - Consider "accessorKey" or similar to allow simple column definitions without a cell function.
|
|
6
|
+
*/
|
|
7
|
+
type ColumnDefinition<T> = {
|
|
8
|
+
id: string;
|
|
9
|
+
/**
|
|
10
|
+
* Uses `<th>` instead of `<td>` for the cell if true.
|
|
11
|
+
*
|
|
12
|
+
* Should be used on the column that acts as row header.
|
|
13
|
+
* There should be exactly one column with this set to true.
|
|
14
|
+
*/
|
|
15
|
+
isRowHeader?: boolean; // TODO: Better documentation, consider warning if not one column has this set to true.
|
|
16
|
+
/**
|
|
17
|
+
* Name of the column.
|
|
18
|
+
* Used in the header cell unless `headerCell` is provided.
|
|
19
|
+
* Also used in the settings dialog.
|
|
20
|
+
*/
|
|
21
|
+
header: string;
|
|
22
|
+
/**
|
|
23
|
+
* Overrides header cell content. Should not differ too much from `header`.
|
|
24
|
+
*/
|
|
25
|
+
headerCell?: React.ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Renders table body cell content.
|
|
28
|
+
*/
|
|
29
|
+
bodyCell: (item: T) => React.ReactNode; // TODO: Consider including truncateContent (maybe all options) so that consumer can adjust how content is rendered based on this (e.g. toggle flex-wrap)
|
|
30
|
+
/**
|
|
31
|
+
* Makes the column sortable. Renders the header as a sort button.
|
|
32
|
+
* Use `sorting` prop on `DataGrid.Table` to configure sorting behavior and state management.
|
|
33
|
+
*/
|
|
34
|
+
isSortable?: boolean;
|
|
35
|
+
} & Pick<DataTableColumnHeaderProps, "width" | "align">;
|
|
36
|
+
|
|
37
|
+
type ColumnDefinitions<T> = ColumnDefinition<T>[];
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A single sort entry representing a column's current sort state.
|
|
41
|
+
* Absent from the `sort` array means the column is unsorted.
|
|
42
|
+
*/
|
|
43
|
+
type SortEntry = {
|
|
44
|
+
columnId: string;
|
|
45
|
+
direction: "asc" | "desc";
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The column that changed in a sort operation, passed as the second argument
|
|
50
|
+
* to `onSortChange`. Useful for triggering targeted server-side sort requests.
|
|
51
|
+
*/
|
|
52
|
+
type SortChangeDetail = {
|
|
53
|
+
columnId: string;
|
|
54
|
+
/** The new direction for this column. `"none"` means the column was removed from the sort. */
|
|
55
|
+
direction: "asc" | "desc" | "none";
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
type DataTableLoadingConfig =
|
|
59
|
+
| {
|
|
60
|
+
variant: "content";
|
|
61
|
+
content: React.ReactNode;
|
|
62
|
+
}
|
|
63
|
+
| {
|
|
64
|
+
variant: "skeleton";
|
|
65
|
+
rows?: number;
|
|
66
|
+
label?: string;
|
|
67
|
+
}
|
|
68
|
+
| {
|
|
69
|
+
variant: "overlay";
|
|
70
|
+
label?: string;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
type TableRowEntryId = string;
|
|
74
|
+
|
|
75
|
+
export type {
|
|
76
|
+
ColumnDefinition,
|
|
77
|
+
ColumnDefinitions,
|
|
78
|
+
DataTableLoadingConfig,
|
|
79
|
+
SortEntry,
|
|
80
|
+
SortChangeDetail,
|
|
81
|
+
TableRowEntryId,
|
|
82
|
+
};
|