@navikt/ds-react 8.10.4 → 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.
Files changed (244) hide show
  1. package/cjs/data/data-grid/index.d.ts +2 -0
  2. package/cjs/data/data-grid/index.js +7 -0
  3. package/cjs/data/data-grid/index.js.map +1 -0
  4. package/cjs/data/data-grid/root/DataGridRoot.context.d.ts +11 -0
  5. package/cjs/data/data-grid/root/DataGridRoot.context.js +11 -0
  6. package/cjs/data/data-grid/root/DataGridRoot.context.js.map +1 -0
  7. package/cjs/data/data-grid/root/DataGridRoot.d.ts +38 -0
  8. package/cjs/data/data-grid/root/DataGridRoot.js +68 -0
  9. package/cjs/data/data-grid/root/DataGridRoot.js.map +1 -0
  10. package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js +11 -13
  11. package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js.map +1 -1
  12. package/cjs/data/drag-and-drop/root/DragAndDrop.context.d.ts +4 -2
  13. package/cjs/data/drag-and-drop/root/DragAndDrop.context.js.map +1 -1
  14. package/cjs/data/drag-and-drop/root/DragAndDropRoot.js +44 -46
  15. package/cjs/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
  16. package/cjs/data/drag-and-drop/types.d.ts +0 -4
  17. package/cjs/data/stories/Data.test-data.d.ts +2 -5
  18. package/cjs/data/stories/Data.test-data.js +30 -39
  19. package/cjs/data/stories/Data.test-data.js.map +1 -1
  20. package/cjs/data/table/base-cell/DataTableBaseCell.d.ts +15 -15
  21. package/cjs/data/table/base-cell/DataTableBaseCell.js +4 -8
  22. package/cjs/data/table/base-cell/DataTableBaseCell.js.map +1 -1
  23. package/cjs/data/table/column-header/DataTableColumnHeader.d.ts +24 -6
  24. package/cjs/data/table/column-header/DataTableColumnHeader.js +22 -27
  25. package/cjs/data/table/column-header/DataTableColumnHeader.js.map +1 -1
  26. package/cjs/data/table/column-header/useTableColumnResize.d.ts +19 -29
  27. package/cjs/data/table/column-header/useTableColumnResize.js +24 -22
  28. package/cjs/data/table/column-header/useTableColumnResize.js.map +1 -1
  29. package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.d.ts +1 -1
  30. package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.js +2 -2
  31. package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.js.map +1 -1
  32. package/cjs/data/table/helpers/collectTableRowEntries.d.ts +9 -7
  33. package/cjs/data/table/helpers/collectTableRowEntries.js +18 -10
  34. package/cjs/data/table/helpers/collectTableRowEntries.js.map +1 -1
  35. package/cjs/data/table/helpers/selection/getMultipleSelectProps.d.ts +13 -11
  36. package/cjs/data/table/helpers/selection/getMultipleSelectProps.js +43 -53
  37. package/cjs/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
  38. package/cjs/data/table/helpers/selection/getSingleSelectProps.d.ts +9 -8
  39. package/cjs/data/table/helpers/selection/getSingleSelectProps.js +23 -10
  40. package/cjs/data/table/helpers/selection/getSingleSelectProps.js.map +1 -1
  41. package/cjs/data/table/helpers/selection/selection.types.d.ts +19 -19
  42. package/cjs/data/table/helpers/selection/selection.utils.d.ts +21 -0
  43. package/cjs/data/table/helpers/selection/selection.utils.js +46 -0
  44. package/cjs/data/table/helpers/selection/selection.utils.js.map +1 -0
  45. package/cjs/data/table/helpers/table-focus.d.ts +0 -3
  46. package/cjs/data/table/helpers/table-focus.js +38 -8
  47. package/cjs/data/table/helpers/table-focus.js.map +1 -1
  48. package/cjs/data/table/hooks/useColumnOptions.d.ts +16 -5
  49. package/cjs/data/table/hooks/useColumnOptions.js +26 -8
  50. package/cjs/data/table/hooks/useColumnOptions.js.map +1 -1
  51. package/cjs/data/table/hooks/useGridCache.js +2 -2
  52. package/cjs/data/table/hooks/useGridCache.js.map +1 -1
  53. package/cjs/data/table/hooks/useTableDetailsPanel.d.ts +10 -13
  54. package/cjs/data/table/hooks/useTableDetailsPanel.js +7 -6
  55. package/cjs/data/table/hooks/useTableDetailsPanel.js.map +1 -1
  56. package/cjs/data/table/hooks/useTableItems.d.ts +31 -17
  57. package/cjs/data/table/hooks/useTableItems.js +10 -20
  58. package/cjs/data/table/hooks/useTableItems.js.map +1 -1
  59. package/cjs/data/table/hooks/useTableKeyboardNav.d.ts +1 -6
  60. package/cjs/data/table/hooks/useTableKeyboardNav.js +6 -5
  61. package/cjs/data/table/hooks/useTableKeyboardNav.js.map +1 -1
  62. package/cjs/data/table/hooks/useTableSelection.d.ts +6 -6
  63. package/cjs/data/table/hooks/useTableSelection.js +13 -13
  64. package/cjs/data/table/hooks/useTableSelection.js.map +1 -1
  65. package/cjs/data/table/hooks/useTableSort.d.ts +2 -2
  66. package/cjs/data/table/hooks/useTableSort.js +4 -5
  67. package/cjs/data/table/hooks/useTableSort.js.map +1 -1
  68. package/cjs/data/table/root/DataTable.types.d.ts +22 -13
  69. package/cjs/data/table/root/DataTableRoot.context.d.ts +13 -7
  70. package/cjs/data/table/root/DataTableRoot.context.js.map +1 -1
  71. package/cjs/data/table/root/DataTableRoot.d.ts +49 -72
  72. package/cjs/data/table/root/DataTableRoot.js +56 -72
  73. package/cjs/data/table/root/DataTableRoot.js.map +1 -1
  74. package/cjs/data/table/root/DataTableRoot.legacy.d.ts +2 -7
  75. package/cjs/data/table/root/DataTableRoot.legacy.js +17 -3
  76. package/cjs/data/table/root/DataTableRoot.legacy.js.map +1 -1
  77. package/cjs/data/table/sub-row-toggle/DataTableSubRowToggle.js +4 -4
  78. package/cjs/data/table/sub-row-toggle/DataTableSubRowToggle.js.map +1 -1
  79. package/cjs/data/table/tbody/DataTableTbody.js +4 -2
  80. package/cjs/data/table/tbody/DataTableTbody.js.map +1 -1
  81. package/cjs/data/table/tr/DataTableTr.d.ts +5 -3
  82. package/cjs/data/table/tr/DataTableTr.js +36 -23
  83. package/cjs/data/table/tr/DataTableTr.js.map +1 -1
  84. package/cjs/table/ColumnHeader.js +2 -1
  85. package/cjs/table/ColumnHeader.js.map +1 -1
  86. package/esm/data/data-grid/index.d.ts +2 -0
  87. package/esm/data/data-grid/index.js +3 -0
  88. package/esm/data/data-grid/index.js.map +1 -0
  89. package/esm/data/data-grid/root/DataGridRoot.context.d.ts +11 -0
  90. package/esm/data/data-grid/root/DataGridRoot.context.js +7 -0
  91. package/esm/data/data-grid/root/DataGridRoot.context.js.map +1 -0
  92. package/esm/data/data-grid/root/DataGridRoot.d.ts +38 -0
  93. package/esm/data/data-grid/root/DataGridRoot.js +32 -0
  94. package/esm/data/data-grid/root/DataGridRoot.js.map +1 -0
  95. package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js +11 -13
  96. package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js.map +1 -1
  97. package/esm/data/drag-and-drop/root/DragAndDrop.context.d.ts +4 -2
  98. package/esm/data/drag-and-drop/root/DragAndDrop.context.js.map +1 -1
  99. package/esm/data/drag-and-drop/root/DragAndDropRoot.js +44 -46
  100. package/esm/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
  101. package/esm/data/drag-and-drop/types.d.ts +0 -4
  102. package/esm/data/stories/Data.test-data.d.ts +2 -5
  103. package/esm/data/stories/Data.test-data.js +30 -39
  104. package/esm/data/stories/Data.test-data.js.map +1 -1
  105. package/esm/data/table/base-cell/DataTableBaseCell.d.ts +15 -15
  106. package/esm/data/table/base-cell/DataTableBaseCell.js +4 -8
  107. package/esm/data/table/base-cell/DataTableBaseCell.js.map +1 -1
  108. package/esm/data/table/column-header/DataTableColumnHeader.d.ts +24 -6
  109. package/esm/data/table/column-header/DataTableColumnHeader.js +23 -28
  110. package/esm/data/table/column-header/DataTableColumnHeader.js.map +1 -1
  111. package/esm/data/table/column-header/useTableColumnResize.d.ts +19 -29
  112. package/esm/data/table/column-header/useTableColumnResize.js +24 -22
  113. package/esm/data/table/column-header/useTableColumnResize.js.map +1 -1
  114. package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.d.ts +1 -1
  115. package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.js +2 -2
  116. package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.js.map +1 -1
  117. package/esm/data/table/helpers/collectTableRowEntries.d.ts +9 -7
  118. package/esm/data/table/helpers/collectTableRowEntries.js +18 -10
  119. package/esm/data/table/helpers/collectTableRowEntries.js.map +1 -1
  120. package/esm/data/table/helpers/selection/getMultipleSelectProps.d.ts +13 -11
  121. package/esm/data/table/helpers/selection/getMultipleSelectProps.js +43 -53
  122. package/esm/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
  123. package/esm/data/table/helpers/selection/getSingleSelectProps.d.ts +9 -8
  124. package/esm/data/table/helpers/selection/getSingleSelectProps.js +23 -10
  125. package/esm/data/table/helpers/selection/getSingleSelectProps.js.map +1 -1
  126. package/esm/data/table/helpers/selection/selection.types.d.ts +19 -19
  127. package/esm/data/table/helpers/selection/selection.utils.d.ts +21 -0
  128. package/esm/data/table/helpers/selection/selection.utils.js +43 -0
  129. package/esm/data/table/helpers/selection/selection.utils.js.map +1 -0
  130. package/esm/data/table/helpers/table-focus.d.ts +0 -3
  131. package/esm/data/table/helpers/table-focus.js +38 -8
  132. package/esm/data/table/helpers/table-focus.js.map +1 -1
  133. package/esm/data/table/hooks/useColumnOptions.d.ts +16 -5
  134. package/esm/data/table/hooks/useColumnOptions.js +26 -8
  135. package/esm/data/table/hooks/useColumnOptions.js.map +1 -1
  136. package/esm/data/table/hooks/useGridCache.js +2 -2
  137. package/esm/data/table/hooks/useGridCache.js.map +1 -1
  138. package/esm/data/table/hooks/useTableDetailsPanel.d.ts +10 -13
  139. package/esm/data/table/hooks/useTableDetailsPanel.js +7 -6
  140. package/esm/data/table/hooks/useTableDetailsPanel.js.map +1 -1
  141. package/esm/data/table/hooks/useTableItems.d.ts +31 -17
  142. package/esm/data/table/hooks/useTableItems.js +11 -18
  143. package/esm/data/table/hooks/useTableItems.js.map +1 -1
  144. package/esm/data/table/hooks/useTableKeyboardNav.d.ts +1 -6
  145. package/esm/data/table/hooks/useTableKeyboardNav.js +7 -6
  146. package/esm/data/table/hooks/useTableKeyboardNav.js.map +1 -1
  147. package/esm/data/table/hooks/useTableSelection.d.ts +6 -6
  148. package/esm/data/table/hooks/useTableSelection.js +13 -13
  149. package/esm/data/table/hooks/useTableSelection.js.map +1 -1
  150. package/esm/data/table/hooks/useTableSort.d.ts +2 -2
  151. package/esm/data/table/hooks/useTableSort.js +4 -5
  152. package/esm/data/table/hooks/useTableSort.js.map +1 -1
  153. package/esm/data/table/root/DataTable.types.d.ts +22 -13
  154. package/esm/data/table/root/DataTableRoot.context.d.ts +13 -7
  155. package/esm/data/table/root/DataTableRoot.context.js.map +1 -1
  156. package/esm/data/table/root/DataTableRoot.d.ts +49 -72
  157. package/esm/data/table/root/DataTableRoot.js +58 -74
  158. package/esm/data/table/root/DataTableRoot.js.map +1 -1
  159. package/esm/data/table/root/DataTableRoot.legacy.d.ts +2 -7
  160. package/esm/data/table/root/DataTableRoot.legacy.js +17 -3
  161. package/esm/data/table/root/DataTableRoot.legacy.js.map +1 -1
  162. package/esm/data/table/sub-row-toggle/DataTableSubRowToggle.js +4 -4
  163. package/esm/data/table/sub-row-toggle/DataTableSubRowToggle.js.map +1 -1
  164. package/esm/data/table/tbody/DataTableTbody.js +4 -2
  165. package/esm/data/table/tbody/DataTableTbody.js.map +1 -1
  166. package/esm/data/table/tr/DataTableTr.d.ts +5 -3
  167. package/esm/data/table/tr/DataTableTr.js +35 -23
  168. package/esm/data/table/tr/DataTableTr.js.map +1 -1
  169. package/esm/table/ColumnHeader.js +2 -1
  170. package/esm/table/ColumnHeader.js.map +1 -1
  171. package/package.json +8 -7
  172. package/src/data/data-grid/index.ts +3 -0
  173. package/src/data/data-grid/root/DataGridRoot.context.ts +16 -0
  174. package/src/data/data-grid/root/DataGridRoot.tsx +71 -0
  175. package/src/data/drag-and-drop/drag-handler/DragAndDropDragHandler.tsx +11 -17
  176. package/src/data/drag-and-drop/root/DragAndDrop.context.tsx +4 -2
  177. package/src/data/drag-and-drop/root/DragAndDropRoot.tsx +63 -52
  178. package/src/data/drag-and-drop/types.ts +0 -5
  179. package/src/data/stories/Data.test-data.tsx +52 -44
  180. package/src/data/table/agent-component-review.md +175 -0
  181. package/src/data/table/base-cell/DataTableBaseCell.tsx +31 -21
  182. package/src/data/table/column-header/DataTableColumnHeader.tsx +63 -58
  183. package/src/data/table/column-header/useTableColumnResize.ts +55 -71
  184. package/src/data/table/details-panel-row/DataTableDetailsPanelRow.tsx +7 -3
  185. package/src/data/table/helpers/collectTableRowEntries.ts +32 -19
  186. package/src/data/table/helpers/selection/getMultipleSelectProps.ts +65 -85
  187. package/src/data/table/helpers/selection/getSingleSelectProps.ts +35 -17
  188. package/src/data/table/helpers/selection/selection.types.ts +19 -19
  189. package/src/data/table/helpers/selection/selection.utils.test.ts +161 -0
  190. package/src/data/table/helpers/selection/selection.utils.ts +73 -0
  191. package/src/data/table/helpers/table-focus.ts +63 -9
  192. package/src/data/table/hooks/__tests__/useTableItems.test.ts +48 -8
  193. package/src/data/table/hooks/useColumnOptions.ts +48 -14
  194. package/src/data/table/hooks/useGridCache.ts +3 -2
  195. package/src/data/table/hooks/useTableDetailsPanel.tsx +25 -25
  196. package/src/data/table/hooks/useTableItems.ts +51 -42
  197. package/src/data/table/hooks/useTableKeyboardNav.ts +7 -15
  198. package/src/data/table/hooks/useTableSelection.ts +26 -31
  199. package/src/data/table/hooks/useTableSort.ts +10 -9
  200. package/src/data/table/root/DataTable.types.ts +30 -25
  201. package/src/data/table/root/DataTableRoot.context.ts +19 -7
  202. package/src/data/table/root/DataTableRoot.legacy.tsx +22 -14
  203. package/src/data/table/root/DataTableRoot.tsx +271 -320
  204. package/src/data/table/sub-row-toggle/DataTableSubRowToggle.tsx +5 -4
  205. package/src/data/table/tbody/DataTableTbody.tsx +6 -2
  206. package/src/data/table/tr/DataTableTr.tsx +98 -35
  207. package/src/table/ColumnHeader.tsx +2 -1
  208. package/cjs/data/drag-and-drop-old/drag-handler/DataDragAndDropDragHandler.d.ts +0 -22
  209. package/cjs/data/drag-and-drop-old/drag-handler/DataDragAndDropDragHandler.js +0 -35
  210. package/cjs/data/drag-and-drop-old/drag-handler/DataDragAndDropDragHandler.js.map +0 -1
  211. package/cjs/data/drag-and-drop-old/item/DataDragAndDropItem.d.ts +0 -27
  212. package/cjs/data/drag-and-drop-old/item/DataDragAndDropItem.js +0 -86
  213. package/cjs/data/drag-and-drop-old/item/DataDragAndDropItem.js.map +0 -1
  214. package/cjs/data/drag-and-drop-old/root/DataDragAndDrop.context.d.ts +0 -5
  215. package/cjs/data/drag-and-drop-old/root/DataDragAndDrop.context.js +0 -6
  216. package/cjs/data/drag-and-drop-old/root/DataDragAndDrop.context.js.map +0 -1
  217. package/cjs/data/drag-and-drop-old/root/DataDragAndDropRoot.d.ts +0 -24
  218. package/cjs/data/drag-and-drop-old/root/DataDragAndDropRoot.js +0 -108
  219. package/cjs/data/drag-and-drop-old/root/DataDragAndDropRoot.js.map +0 -1
  220. package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.d.ts +0 -46
  221. package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.js +0 -112
  222. package/cjs/data/table/helpers/selection/SelectionSubtreeHelper.js.map +0 -1
  223. package/esm/data/drag-and-drop-old/drag-handler/DataDragAndDropDragHandler.d.ts +0 -22
  224. package/esm/data/drag-and-drop-old/drag-handler/DataDragAndDropDragHandler.js +0 -29
  225. package/esm/data/drag-and-drop-old/drag-handler/DataDragAndDropDragHandler.js.map +0 -1
  226. package/esm/data/drag-and-drop-old/item/DataDragAndDropItem.d.ts +0 -27
  227. package/esm/data/drag-and-drop-old/item/DataDragAndDropItem.js +0 -50
  228. package/esm/data/drag-and-drop-old/item/DataDragAndDropItem.js.map +0 -1
  229. package/esm/data/drag-and-drop-old/root/DataDragAndDrop.context.d.ts +0 -5
  230. package/esm/data/drag-and-drop-old/root/DataDragAndDrop.context.js +0 -3
  231. package/esm/data/drag-and-drop-old/root/DataDragAndDrop.context.js.map +0 -1
  232. package/esm/data/drag-and-drop-old/root/DataDragAndDropRoot.d.ts +0 -24
  233. package/esm/data/drag-and-drop-old/root/DataDragAndDropRoot.js +0 -68
  234. package/esm/data/drag-and-drop-old/root/DataDragAndDropRoot.js.map +0 -1
  235. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.d.ts +0 -46
  236. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.js +0 -109
  237. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.js.map +0 -1
  238. package/src/data/drag-and-drop-old/drag-handler/DataDragAndDropDragHandler.tsx +0 -104
  239. package/src/data/drag-and-drop-old/item/DataDragAndDropItem.tsx +0 -74
  240. package/src/data/drag-and-drop-old/root/DataDragAndDrop.context.tsx +0 -11
  241. package/src/data/drag-and-drop-old/root/DataDragAndDropRoot.tsx +0 -96
  242. package/src/data/table/helpers/selection/SelectionSubtreeHelper.test.ts +0 -66
  243. package/src/data/table/helpers/selection/SelectionSubtreeHelper.ts +0 -162
  244. package/src/data/table/hooks/__tests__/useTableSelection.test.ts +0 -488
@@ -7,8 +7,11 @@ const utils_external_1 = require("../../../utils-external");
7
7
  const hooks_1 = require("../../../utils/hooks");
8
8
  const getMultipleSelectProps_1 = require("../helpers/selection/getMultipleSelectProps");
9
9
  const getSingleSelectProps_1 = require("../helpers/selection/getSingleSelectProps");
10
- function useTableSelection({ selection = {}, visibleRowIds = [], childRowIdsById, }) {
11
- const { selectionMode = "none", defaultSelectedKeys, selectedKeys: selectedKeysProp, onSelectionChange, disabledSelectionKeys = [], disableRowSelectionOnClick = false, } = selection;
10
+ function useTableSelection({ selection = {
11
+ selectionMode: "none",
12
+ }, tableItems, }) {
13
+ const { selectionMode, defaultSelectedKeys, selectedKeys: selectedKeysProp, onSelectionChange, enableRowSelection, selectionTrigger = "row", } = selection;
14
+ const { visibleRowIds = [] } = tableItems;
12
15
  const radioGroupName = (0, utils_external_1.useId)();
13
16
  const [selectedKeys, setSelectedKeys] = (0, hooks_1.useControllableState)({
14
17
  value: selectionMode !== "none" ? selectedKeysProp : undefined,
@@ -16,13 +19,12 @@ function useTableSelection({ selection = {}, visibleRowIds = [], childRowIdsById
16
19
  onChange: onSelectionChange,
17
20
  });
18
21
  const selectedKeysSet = (0, react_1.useMemo)(() => new Set(selectedKeys), [selectedKeys]);
19
- const disabledKeysSet = (0, react_1.useMemo)(() => new Set(disabledSelectionKeys), [disabledSelectionKeys]);
20
22
  const isRowSelected = (0, react_1.useCallback)((rowId) => selectedKeysSet.has(rowId), [selectedKeysSet]);
21
- const baseSelection = { selectedKeys, disabledSelectionKeys, isRowSelected };
23
+ const baseSelection = { selectedKeys, isRowSelected };
22
24
  if (selectionMode === "none") {
23
25
  return {
24
26
  selection: Object.assign(Object.assign({ selectionMode }, baseSelection), { selectedKeys: [] }),
25
- disableRowSelectionOnClick,
27
+ selectionTrigger,
26
28
  renderSelection: false,
27
29
  };
28
30
  }
@@ -31,10 +33,10 @@ function useTableSelection({ selection = {}, visibleRowIds = [], childRowIdsById
31
33
  selection: Object.assign(Object.assign({ selectionMode }, baseSelection), (0, getSingleSelectProps_1.getSingleSelectProps)({
32
34
  selectedKeysSet,
33
35
  setSelectedKeys,
34
- disabledKeysSet,
35
36
  name: radioGroupName,
37
+ enableRowSelection,
36
38
  })),
37
- disableRowSelectionOnClick,
39
+ selectionTrigger,
38
40
  renderSelection: visibleRowIds.length !== 0,
39
41
  };
40
42
  }
@@ -43,11 +45,10 @@ function useTableSelection({ selection = {}, visibleRowIds = [], childRowIdsById
43
45
  selectedKeysSet,
44
46
  selectedKeys,
45
47
  setSelectedKeys,
46
- disabledKeysSet,
47
- visibleRowIds,
48
- childRowIdsById,
48
+ enableRowSelection,
49
+ tableItems,
49
50
  })),
50
- disableRowSelectionOnClick,
51
+ selectionTrigger,
51
52
  renderSelection: visibleRowIds.length !== 0,
52
53
  };
53
54
  }
@@ -58,10 +59,9 @@ const noSelectionState = {
58
59
  selection: {
59
60
  selectionMode: "none",
60
61
  selectedKeys: [],
61
- disabledSelectionKeys: [],
62
62
  isRowSelected: () => false,
63
63
  },
64
- disableRowSelectionOnClick: false,
64
+ selectionTrigger: "row",
65
65
  renderSelection: false,
66
66
  };
67
67
  exports.noSelectionState = noSelectionState;
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSelection.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSelection.ts"],"names":[],"mappings":";;;AA0HS,8CAAiB;AA1H1B,iCAA6C;AAC7C,4DAAgD;AAChD,gDAA4D;AAC5D,wFAAqF;AACrF,oFAAiF;AAqBjF,SAAS,iBAAiB,CAAC,EACzB,SAAS,GAAG,EAAE,EACd,aAAa,GAAG,EAAE,EAClB,eAAe,GACO;IACtB,MAAM,EACJ,aAAa,GAAG,MAAM,EACtB,mBAAmB,EACnB,YAAY,EAAE,gBAAgB,EAC9B,iBAAiB,EACjB,qBAAqB,GAAG,EAAE,EAC1B,0BAA0B,GAAG,KAAK,GACnC,GAAG,SAAS,CAAC;IAEd,MAAM,cAAc,GAAG,IAAA,sBAAK,GAAE,CAAC;IAE/B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,4BAAoB,EAAgB;QAC1E,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;QAC9D,YAAY,EAAE,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,EAAE;QACvC,QAAQ,EAAE,iBAAiB;KAC5B,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAE7E,MAAM,eAAe,GAAG,IAAA,eAAO,EAC7B,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,qBAAqB,CAAC,EACpC,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,mBAAW,EAC/B,CAAC,KAAsB,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EACtD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,MAAM,aAAa,GAAG,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;IAE7E,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS,gCACP,aAAa,IACV,aAAa,KAChB,YAAY,EAAE,EAAE,GACjB;YACD,0BAA0B;YAC1B,eAAe,EAAE,KAAK;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;YACL,SAAS,gCACP,aAAa,IACV,aAAa,GACb,IAAA,2CAAoB,EAAC;gBACtB,eAAe;gBACf,eAAe;gBACf,eAAe;gBACf,IAAI,EAAE,cAAc;aACrB,CAAC,CACH;YACD,0BAA0B;YAC1B,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,gCACP,aAAa,IACV,aAAa,GACb,IAAA,+CAAsB,EAAC;YACxB,eAAe;YACf,YAAY;YACZ,eAAe;YACf,eAAe;YACf,aAAa;YACb,eAAe;SAChB,CAAC,CACH;QACD,0BAA0B;QAC1B,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,gBAAgB,GAA4B;IAChD,SAAS,EAAE;QACT,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,EAAE;QAChB,qBAAqB,EAAE,EAAE;QACzB,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;KAC3B;IACD,0BAA0B,EAAE,KAAK;IACjC,eAAe,EAAE,KAAK;CACvB,CAAC;AAE0B,4CAAgB"}
1
+ {"version":3,"file":"useTableSelection.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSelection.ts"],"names":[],"mappings":";;;AAqHS,8CAAiB;AArH1B,iCAA6C;AAC7C,4DAAgD;AAChD,gDAA4D;AAC5D,wFAAqF;AACrF,oFAAiF;AAoBjF,SAAS,iBAAiB,CAAI,EAC5B,SAAS,GAAG;IACV,aAAa,EAAE,MAAM;CACtB,EACD,UAAU,GACe;IACzB,MAAM,EACJ,aAAa,EACb,mBAAmB,EACnB,YAAY,EAAE,gBAAgB,EAC9B,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GAAG,KAAK,GACzB,GAAG,SAAS,CAAC;IAEd,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC;IAE1C,MAAM,cAAc,GAAG,IAAA,sBAAK,GAAE,CAAC;IAE/B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,4BAAoB,EAAgB;QAC1E,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;QAC9D,YAAY,EAAE,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,EAAE;QACvC,QAAQ,EAAE,iBAAiB;KAC5B,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAE7E,MAAM,aAAa,GAAG,IAAA,mBAAW,EAC/B,CAAC,KAAsB,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EACtD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,MAAM,aAAa,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;IAEtD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS,gCACP,aAAa,IACV,aAAa,KAChB,YAAY,EAAE,EAAE,GACjB;YACD,gBAAgB;YAChB,eAAe,EAAE,KAAK;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;YACL,SAAS,gCACP,aAAa,IACV,aAAa,GACb,IAAA,2CAAoB,EAAC;gBACtB,eAAe;gBACf,eAAe;gBACf,IAAI,EAAE,cAAc;gBACpB,kBAAkB;aACnB,CAAC,CACH;YACD,gBAAgB;YAChB,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,gCACP,aAAa,IACV,aAAa,GACb,IAAA,+CAAsB,EAAC;YACxB,eAAe;YACf,YAAY;YACZ,eAAe;YACf,kBAAkB;YAClB,UAAU;SACX,CAAC,CACH;QACD,gBAAgB;QAChB,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,gBAAgB,GAA4B;IAChD,SAAS,EAAE;QACT,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;KAC3B;IACD,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;CACvB,CAAC;AAE0B,4CAAgB"}
@@ -32,6 +32,6 @@ type UseTableSortResults = {
32
32
  */
33
33
  sortState: SortEntry[];
34
34
  };
35
- declare function useTableSort(options: TableSortOptions): UseTableSortResults;
35
+ declare function useTableSort(options?: TableSortOptions): UseTableSortResults;
36
36
  export { useTableSort };
37
- export type { TableSortOptions };
37
+ export type { TableSortOptions, UseTableSortResults };
@@ -2,18 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useTableSort = useTableSort;
4
4
  const react_1 = require("react");
5
+ const consoleWarning_1 = require("../../../utils/helpers/consoleWarning");
5
6
  const hooks_1 = require("../../../utils/hooks");
6
7
  function useTableSort(options) {
7
- const { defaultSort = [], onSortChange, sort: sortOption } = options;
8
+ const { defaultSort, onSortChange, sort: sortOption } = options || {};
8
9
  const [sort, setSort] = (0, hooks_1.useControllableState)({
9
10
  value: sortOption,
10
- defaultValue: defaultSort,
11
+ defaultValue: defaultSort || [],
11
12
  });
12
13
  const handleSortClick = (0, react_1.useCallback)((id, event) => {
13
14
  if (id === undefined) {
14
- if (process.env.NODE_ENV === "development") {
15
- console.warn(`Aksel: Column id is undefined for sort event on target ${event.target}. Make sure your column definitions include an 'id' property.`);
16
- }
15
+ (0, consoleWarning_1.consoleWarning)("DataTable: Column id is undefined for sort event on target", event.target, "Make sure your column definitions include an 'id' property.");
17
16
  return;
18
17
  }
19
18
  const cumulative = event.shiftKey;
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSort.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSort.ts"],"names":[],"mappings":";;AAqGS,oCAAY;AArGrB,iCAAoC;AACpC,gDAA4D;AAyC5D,SAAS,YAAY,CAAC,OAAyB;IAC7C,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAErE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,4BAAoB,EAAC;QAC3C,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,WAAW;KAC1B,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,CAAC,EAAU,EAAE,KAAgD,EAAE,EAAE;QAC/D,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CACV,0DAA0D,KAAK,CAAC,MAAM,+DAA+D,CACtI,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAC9B,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,eAAe;QAC5B,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,OAAoB,EACpB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAClD,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE;SACvC,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QACjC,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtB,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,iCAAM,CAAC,KAAE,SAAS,EAAE,MAAM,IAAG,CAAC,CAAC,CAAC,CAC1D;YACD,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE;SACxC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;QACpD,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE;KACxC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useTableSort.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSort.ts"],"names":[],"mappings":";;AAsGS,oCAAY;AAtGrB,iCAAoC;AACpC,0EAAuE;AACvE,gDAA4D;AAyC5D,SAAS,YAAY,CAAC,OAA0B;IAC9C,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEtE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,4BAAoB,EAAC;QAC3C,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,WAAW,IAAI,EAAE;KAChC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,CAAC,EAAU,EAAE,KAAgD,EAAE,EAAE;QAC/D,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,IAAA,+BAAc,EACZ,4DAA4D,EAC5D,KAAK,CAAC,MAAM,EACZ,6DAA6D,CAC9D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,CAC9B,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,eAAe;QAC5B,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,OAAoB,EACpB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAClD,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE;SACvC,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QACjC,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtB,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,iCAAM,CAAC,KAAE,SAAS,EAAE,MAAM,IAAG,CAAC,CAAC,CAAC,CAC1D;YACD,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE;SACxC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;QACpD,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE;KACxC,CAAC;AACJ,CAAC"}
@@ -1,16 +1,15 @@
1
- import type { ResizeProps } from "../column-header/useTableColumnResize";
1
+ import type { DataTableColumnHeaderProps } from "../column-header/DataTableColumnHeader";
2
2
  type SortDirection = "asc" | "desc" | "none";
3
3
  /**
4
4
  * TODO:
5
5
  * - Consider "accessorKey" or similar to allow simple column definitions without a cell function.
6
6
  * - Add "align" property for better control over text alignment in cells.
7
7
  */
8
- type ColumnDefinition<T, DetailsT = Record<string, any>> = Pick<ResizeProps, "resizable" | "width" | "defaultWidth" | "autoWidth" | "minWidth" | "maxWidth" | "onWidthChange"> & {
8
+ type ColumnDefinition<T> = {
9
9
  id: string;
10
10
  /**
11
11
  * Text alignment for cells in this column.
12
12
  *
13
- *
14
13
  * @default "left"
15
14
  */
16
15
  align?: "left" | "right" | "center";
@@ -18,13 +17,12 @@ type ColumnDefinition<T, DetailsT = Record<string, any>> = Pick<ResizeProps, "re
18
17
  * Assigned to the cell's `th` element instead of `td` if true.
19
18
  *
20
19
  * Should be used for cells that act as row headers. Each row should have one rowheader, and only have one cell with `isRowHeader: true`,
21
- *
22
- * TODO: Not implemented
23
- * - Add a generic tablecell component that can render either a td or th based on context or this prop.
20
+ * TODO: Better documentation, consider warning if not one column has this set to true.
24
21
  */
25
22
  isRowHeader?: boolean;
26
23
  /**
27
24
  * Renders table header-cell
25
+ * TODO: Pri zero rename to headerCell
28
26
  */
29
27
  header?: React.ReactNode;
30
28
  /**
@@ -33,6 +31,7 @@ type ColumnDefinition<T, DetailsT = Record<string, any>> = Pick<ResizeProps, "re
33
31
  cell: (item: T) => React.ReactNode;
34
32
  /**
35
33
  * Label of header. Renders if header is not provided.
34
+ * TODO: Pri zero consider renaming to header
36
35
  */
37
36
  label: string;
38
37
  /**
@@ -40,12 +39,8 @@ type ColumnDefinition<T, DetailsT = Record<string, any>> = Pick<ResizeProps, "re
40
39
  * Use `sort` and `onSortChange` on the root component to control sort state.
41
40
  */
42
41
  sortable?: boolean;
43
- /**
44
- * Additional metadata that can be used for filtering or other purposes. Not used by the table itself.
45
- */
46
- details?: DetailsT;
47
- };
48
- type ColumnDefinitions<T, DetailsT = Record<string, any>> = ColumnDefinition<T, DetailsT>[];
42
+ } & Pick<DataTableColumnHeaderProps, "width">;
43
+ type ColumnDefinitions<T> = ColumnDefinition<T>[];
49
44
  /**
50
45
  * A single sort entry representing a column's current sort state.
51
46
  * Absent from the `sort` array means the column is unsorted.
@@ -63,4 +58,18 @@ type SortChangeDetail = {
63
58
  /** The new direction for this column. `"none"` means the column was removed from the sort. */
64
59
  direction: "asc" | "desc" | "none";
65
60
  };
66
- export type { ColumnDefinition, ColumnDefinitions, SortDirection, SortEntry, SortChangeDetail, };
61
+ type DataTableLoadingConfig = {
62
+ isLoading?: boolean;
63
+ } & ({
64
+ variant: "content";
65
+ content: React.ReactNode;
66
+ } | {
67
+ variant: "skeleton";
68
+ rows?: number;
69
+ label?: string;
70
+ } | {
71
+ variant: "overlay";
72
+ label?: string;
73
+ });
74
+ type TableRowEntryId = string;
75
+ export type { ColumnDefinition, ColumnDefinitions, DataTableLoadingConfig, SortDirection, SortEntry, SortChangeDetail, TableRowEntryId, };
@@ -1,22 +1,28 @@
1
- import type { UseColumnOptionsResult } from "../hooks/useColumnOptions";
1
+ import type { StickyStartState, UseColumnOptionsResult } from "../hooks/useColumnOptions";
2
+ import type { UseTableItemsReturn } from "../hooks/useTableItems";
2
3
  import type { UseTableSelectionReturn } from "../hooks/useTableSelection";
4
+ import type { UseTableSortResults } from "../hooks/useTableSort";
5
+ import type { DataTableLoadingConfig, TableRowEntryId } from "./DataTable.types";
3
6
  type DataTableContextProps<T> = {
4
7
  layout: "fixed" | "auto";
5
8
  withKeyboardNav: boolean;
6
9
  selectionState: UseTableSelectionReturn;
7
- stickySelection: boolean;
10
+ stickyStart: StickyStartState;
8
11
  stickyHeader: boolean;
9
12
  tableId: string;
10
- showLoadingSkeletons: boolean;
11
- onRowClick?: (rowId: string | number, event: React.MouseEvent<HTMLTableRowElement>) => void;
12
- isLoading?: boolean;
13
- showLoadingOverlay: boolean;
13
+ loading: DataTableLoadingConfig | undefined;
14
+ onRowClick?: (rowId: TableRowEntryId, event: React.MouseEvent<HTMLTableRowElement>) => void;
14
15
  columns: UseColumnOptionsResult<T>["columns"];
15
16
  /**
16
17
  * Used to set exact colspan for detailsPanel, loadingState and emptyState.
17
18
  * This is necessary to ensure that these components span the entire width of the table.
18
19
  */
19
- fullWidthColSpan: number;
20
+ totalColSpan: number;
21
+ /**
22
+ * The current items and related metadata.
23
+ */
24
+ tableItems: UseTableItemsReturn<T>;
25
+ sortingState: UseTableSortResults;
20
26
  };
21
27
  declare const DataTableContextProvider: import("react").FC<DataTableContextProps<any> & {
22
28
  children: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableRoot.context.js","sourceRoot":"","sources":["../../../../src/data/table/root/DataTableRoot.context.ts"],"names":[],"mappings":";;;AAAA,oDAA6D;AA0B7D,MAAM,EAAE,QAAQ,EAAE,wBAAwB,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAC3E,IAAA,6BAAmB,EAA6B;IAC9C,IAAI,EAAE,kBAAkB;IACxB,YAAY,EAAE,mDAAmD;CAClE,CAAC,CAAC;AAcH,4DAAwB;AAExB,kDAAmB;AAZrB,MAAM,EACJ,QAAQ,EAAE,yBAAyB,EACnC,UAAU,EAAE,oBAAoB,GACjC,GAAG,IAAA,6BAAmB,EAAkC;IACvD,IAAI,EAAE,mBAAmB;IACzB,YAAY,EACV,mIAAmI;CACtI,CAAC,CAAC;AAID,8DAAyB;AAEzB,oDAAoB"}
1
+ {"version":3,"file":"DataTableRoot.context.js","sourceRoot":"","sources":["../../../../src/data/table/root/DataTableRoot.context.ts"],"names":[],"mappings":";;;AAAA,oDAA6D;AAsC7D,MAAM,EAAE,QAAQ,EAAE,wBAAwB,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAC3E,IAAA,6BAAmB,EAA6B;IAC9C,IAAI,EAAE,kBAAkB;IACxB,YAAY,EAAE,mDAAmD;CAClE,CAAC,CAAC;AAcH,4DAAwB;AAExB,kDAAmB;AAZrB,MAAM,EACJ,QAAQ,EAAE,yBAAyB,EACnC,UAAU,EAAE,oBAAoB,GACjC,GAAG,IAAA,6BAAmB,EAAkC;IACvD,IAAI,EAAE,mBAAmB;IACzB,YAAY,EACV,mIAAmI;CACtI,CAAC,CAAC;AAID,8DAAyB;AAEzB,oDAAoB"}
@@ -1,11 +1,22 @@
1
- /** biome-ignore-all lint/correctness/useHookAtTopLevel: False positive because of the way forwardRef() is added */
2
1
  import React from "react";
3
2
  import { type DetailsPanelProps } from "../hooks/useTableDetailsPanel";
4
3
  import { type SubRowsProps } from "../hooks/useTableItems";
5
4
  import { type SelectionProps } from "../hooks/useTableSelection";
6
5
  import { type TableSortOptions } from "../hooks/useTableSort";
7
- import type { ColumnDefinitions } from "./DataTable.types";
8
- interface DataTableProps<T> extends React.HTMLAttributes<HTMLTableElement>, TableSortOptions {
6
+ import type { DataTableLoadingConfig, TableRowEntryId } from "./DataTable.types";
7
+ /**
8
+ * TODO: For consideration:
9
+ * - Use namespacing for types. There will be a lot of standalone types connected to this component,
10
+ * it could make sense to access them under DataTable.X instead of separate imports.
11
+ * - Consider having a "Wrapper" component that only handles context and logic like,
12
+ * "DataTableRoot" or "DataGrid" or something, and then have the main "DataTable" component only handle rendering of table itself.
13
+ * This would make props more focused and discoverable since its not mixed with htmltable-props.
14
+ */
15
+ /**
16
+ * TODO:
17
+ * - Test `onColumnDefinitionChange` callback that is called when resize, sort, order etc changes
18
+ */
19
+ interface DataTableProps<T> extends React.HTMLAttributes<HTMLTableElement> {
9
20
  children?: never;
10
21
  /**
11
22
  * Controls vertical cell padding.
@@ -20,8 +31,9 @@ interface DataTableProps<T> extends React.HTMLAttributes<HTMLTableElement>, Tabl
20
31
  /**
21
32
  * Truncate content in cells and show ellipsis for overflowed text.
22
33
  *
23
- * **NB:** When using `layout="auto"`, you have to manually set a `maxWidth` on columns that should be truncated.
24
- * @default true
34
+ * **NB:** When using this together with `layout="auto"`,
35
+ * you have to manually set a `maxWidth` on columns that should be truncated.
36
+ * @default false if layout="auto", else true
25
37
  */
26
38
  truncateContent?: boolean;
27
39
  /**
@@ -29,12 +41,6 @@ interface DataTableProps<T> extends React.HTMLAttributes<HTMLTableElement>, Tabl
29
41
  * @default true
30
42
  */
31
43
  withKeyboardNav?: boolean;
32
- /**
33
- * Custom callback to determine if navigation should be blocked.
34
- * Called before default blocking logic.
35
- * Requires `withKeyboardNav` to be `true`.
36
- */
37
- shouldBlockNavigation?: (event: KeyboardEvent) => boolean;
38
44
  /**
39
45
  * Controls table layout.
40
46
  *
@@ -50,35 +56,14 @@ interface DataTableProps<T> extends React.HTMLAttributes<HTMLTableElement>, Tabl
50
56
  * @default "fixed"
51
57
  */
52
58
  layout?: "fixed" | "auto";
53
- /**
54
- * Defines the columns of the table and how to render them.
55
- *
56
- *
57
- * Each column definition should have a unique `id` (or use the column index as fallback) and a `cell`-renderer function that takes the row data as argument and returns a React node.
58
- */
59
- columnDefinitions: ColumnDefinitions<T>;
60
- /**
61
- * The data to display in the table.
62
- *
63
- *
64
- * Each object in the array represents a row, and the properties of the object are used to render the cells based on the `columnDefinitions`.
65
- */
66
- data: T[];
67
- /**
68
- * Function to get unique row id from row data.
69
- *
70
- *
71
- * If not provided, the row index will be used as id. This can cause issues if your data changes dynamically, so it's recommended to provide a stable id if possible.
72
- */
73
- getRowId?: (rowData: T, index: number) => string | number;
74
59
  /**
75
60
  * Sticky columns that remain visible when horizontally scrolling the table.
76
61
  *
77
62
  * You can specify 1 sticky column on the left and 1 on the right.
78
63
  */
79
64
  stickyColumns?: {
80
- first?: "1";
81
- last?: "1";
65
+ start?: "1";
66
+ end?: "1";
82
67
  };
83
68
  /**
84
69
  * @default true
@@ -88,54 +73,46 @@ interface DataTableProps<T> extends React.HTMLAttributes<HTMLTableElement>, Tabl
88
73
  * Callback invoked when a data row is clicked.
89
74
  * Not called when clicking header, loading, or empty-state rows.
90
75
  */
91
- onRowClick?: (rowId: string | number, event: React.MouseEvent<HTMLTableRowElement>) => void;
76
+ onRowClick?: (rowId: TableRowEntryId, event: React.MouseEvent<HTMLTableRowElement>) => void;
92
77
  /**
93
78
  * Content to render when `data` is empty.
94
79
  * Rendered inside a `DataTable.EmptyState` row spanning all columns.
95
80
  */
96
- emptyState?: React.ReactNode;
97
- loading?: {
98
- /**
99
- * Shows the table in a loading state.
100
- *
101
- * - When `loadingState` is provided, it is rendered inside a `DataTable.LoadingState` row.
102
- * - When `loadingState` is **not** provided, skeleton placeholder rows are rendered instead.
103
- * @default false
104
- */
105
- isLoading?: boolean;
106
- /**
107
- * Custom content to render when `isLoading` is `true`.
108
- * Rendered inside a `DataTable.LoadingState` row spanning all columns.
109
- * When omitted, skeleton rows are rendered based on `loadingRows`.
110
- */
111
- loadingState?: React.ReactNode;
112
- /**
113
- * Number of skeleton rows to render when `isLoading` is `true` and no `loadingState` is provided.
114
- *
115
- *
116
- * If not provided, the rendered content will get a temporarily overlay while loading
117
- */
118
- loadingRows?: number;
119
- /**
120
- * Visually hidden label announced to screen readers when skeleton rows are shown.
121
- * Only used when `isLoading` is `true` and no `loadingState` is provided.
122
- * @default "Laster innhold"
123
- */
124
- loadingLabel?: string;
125
- };
81
+ emptyContent?: React.ReactNode;
126
82
  /**
127
- * Function to get sub-rows for a given row, used for nested rows.
128
- * When provided, an expand toggle column is added automatically.
83
+ * Configures how the table behaves during loading.
129
84
  *
130
- *
131
- * TODO:
132
- * - Table might need to be implemented with role="treegrid" for a11y when having nested rows.
85
+ * Use `variant` to select the loading strategy:
86
+ * - `"content"` — renders custom content inside a full-width row.
87
+ * - `"skeleton"` renders skeleton placeholder rows.
88
+ * - `"overlay"` — keeps existing data visible with a loading overlay.
89
+ */
90
+ loading?: DataTableLoadingConfig;
91
+ /**
92
+ * Adjusts font-size
93
+ * @default "medium"
94
+ */
95
+ textSize?: "small" | "medium";
96
+ /**
97
+ * Object with props related to row selection.
98
+ */
99
+ selection?: SelectionProps<T>;
100
+ /**
101
+ * Object with props related to nested rows (sub-rows).
133
102
  */
134
- selection?: SelectionProps;
135
103
  subRows?: SubRowsProps<T>;
104
+ /**
105
+ * Object with props related to details panel.
106
+ * This is a panel that can be expanded below each row to show arbitrary content.
107
+ */
136
108
  detailsPanel?: DetailsPanelProps<T>;
109
+ /**
110
+ * Object with props related to sorting.
111
+ */
112
+ sorting?: TableSortOptions;
137
113
  }
114
+ declare const DataTableInternal: React.ForwardRefExoticComponent<DataTableProps<any> & React.RefAttributes<HTMLTableElement>>;
138
115
  declare const DataTable: <T>(props: DataTableProps<T> & React.RefAttributes<HTMLTableElement>) => React.ReactElement | null;
139
- export { DataTable };
116
+ export { DataTable, DataTableInternal };
140
117
  export type { DataTableProps };
141
118
  export default DataTable;