@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.
Files changed (266) hide show
  1. package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js +0 -1
  2. package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js.map +1 -1
  3. package/cjs/data/drag-and-drop/root/DragAndDropRoot.d.ts +6 -6
  4. package/cjs/data/drag-and-drop/root/DragAndDropRoot.js +6 -29
  5. package/cjs/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
  6. package/cjs/data/stories/Data.test-data.d.ts +3 -6
  7. package/cjs/data/stories/Data.test-data.js +46 -59
  8. package/cjs/data/stories/Data.test-data.js.map +1 -1
  9. package/cjs/data/table/base-cell/DataTableBaseCell.d.ts +18 -18
  10. package/cjs/data/table/base-cell/DataTableBaseCell.js +4 -8
  11. package/cjs/data/table/base-cell/DataTableBaseCell.js.map +1 -1
  12. package/cjs/data/table/column-header/DataTableColumnHeader.d.ts +19 -13
  13. package/cjs/data/table/column-header/DataTableColumnHeader.js +26 -28
  14. package/cjs/data/table/column-header/DataTableColumnHeader.js.map +1 -1
  15. package/cjs/data/table/column-header/useTableColumnResize.d.ts +19 -29
  16. package/cjs/data/table/column-header/useTableColumnResize.js +30 -28
  17. package/cjs/data/table/column-header/useTableColumnResize.js.map +1 -1
  18. package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.d.ts +1 -1
  19. package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.js +2 -2
  20. package/cjs/data/table/details-panel-row/DataTableDetailsPanelRow.js.map +1 -1
  21. package/cjs/data/table/helpers/collectTableRowEntries.d.ts +2 -2
  22. package/cjs/data/table/helpers/selection/getMultipleSelectProps.d.ts +14 -11
  23. package/cjs/data/table/helpers/selection/getMultipleSelectProps.js +45 -51
  24. package/cjs/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
  25. package/cjs/data/table/helpers/selection/getSingleSelectProps.d.ts +9 -8
  26. package/cjs/data/table/helpers/selection/getSingleSelectProps.js +23 -10
  27. package/cjs/data/table/helpers/selection/getSingleSelectProps.js.map +1 -1
  28. package/cjs/data/table/helpers/selection/selection.types.d.ts +24 -32
  29. package/cjs/data/table/helpers/selection/selection.utils.d.ts +21 -0
  30. package/cjs/data/table/helpers/selection/selection.utils.js +46 -0
  31. package/cjs/data/table/helpers/selection/selection.utils.js.map +1 -0
  32. package/cjs/data/table/hooks/useColumnOptions.d.ts +17 -6
  33. package/cjs/data/table/hooks/useColumnOptions.js +26 -8
  34. package/cjs/data/table/hooks/useColumnOptions.js.map +1 -1
  35. package/cjs/data/table/hooks/useTableDetailsPanel.d.ts +10 -14
  36. package/cjs/data/table/hooks/useTableDetailsPanel.js +6 -5
  37. package/cjs/data/table/hooks/useTableDetailsPanel.js.map +1 -1
  38. package/cjs/data/table/hooks/useTableItems.d.ts +32 -19
  39. package/cjs/data/table/hooks/useTableItems.js +13 -15
  40. package/cjs/data/table/hooks/useTableItems.js.map +1 -1
  41. package/cjs/data/table/hooks/useTableKeyboardNav.d.ts +1 -6
  42. package/cjs/data/table/hooks/useTableKeyboardNav.js +1 -4
  43. package/cjs/data/table/hooks/useTableKeyboardNav.js.map +1 -1
  44. package/cjs/data/table/hooks/useTableSelection.d.ts +7 -6
  45. package/cjs/data/table/hooks/useTableSelection.js +52 -35
  46. package/cjs/data/table/hooks/useTableSelection.js.map +1 -1
  47. package/cjs/data/table/hooks/useTableSort.d.ts +15 -9
  48. package/cjs/data/table/hooks/useTableSort.js +9 -11
  49. package/cjs/data/table/hooks/useTableSort.js.map +1 -1
  50. package/cjs/data/table/index.d.ts +1 -1
  51. package/cjs/data/table/index.js +3 -23
  52. package/cjs/data/table/index.js.map +1 -1
  53. package/cjs/data/table/root/DataGridTable.types.d.ts +65 -0
  54. package/cjs/data/table/root/DataGridTable.types.js +3 -0
  55. package/cjs/data/table/root/DataGridTable.types.js.map +1 -0
  56. package/cjs/data/table/root/DataGridTableRoot.d.ts +104 -0
  57. package/cjs/data/table/root/DataGridTableRoot.js +237 -0
  58. package/cjs/data/table/root/DataGridTableRoot.js.map +1 -0
  59. package/cjs/data/table/root/DataTableRoot.context.d.ts +17 -7
  60. package/cjs/data/table/root/DataTableRoot.context.js.map +1 -1
  61. package/cjs/data/table/sub-row-toggle/DataTableSubRowToggle.js +4 -4
  62. package/cjs/data/table/sub-row-toggle/DataTableSubRowToggle.js.map +1 -1
  63. package/cjs/data/table/tbody/DataTableTbody.js +4 -2
  64. package/cjs/data/table/tbody/DataTableTbody.js.map +1 -1
  65. package/cjs/data/table/tr/DataTableTr.d.ts +7 -5
  66. package/cjs/data/table/tr/DataTableTr.js +69 -32
  67. package/cjs/data/table/tr/DataTableTr.js.map +1 -1
  68. package/cjs/data/token-filter/TokenFilter.d.ts +0 -6
  69. package/cjs/data/token-filter/TokenFilter.js +1 -1
  70. package/cjs/data-grid/index.d.ts +2 -0
  71. package/cjs/data-grid/index.js +9 -0
  72. package/cjs/data-grid/index.js.map +1 -0
  73. package/cjs/data-grid/root/DataGrid.types.d.ts +35 -0
  74. package/cjs/{data/table/root/DataTable.types.js → data-grid/root/DataGrid.types.js} +1 -1
  75. package/cjs/data-grid/root/DataGrid.types.js.map +1 -0
  76. package/cjs/data-grid/root/DataGridRoot.context.d.ts +16 -0
  77. package/cjs/data-grid/root/DataGridRoot.context.js +11 -0
  78. package/cjs/data-grid/root/DataGridRoot.context.js.map +1 -0
  79. package/cjs/data-grid/root/DataGridRoot.d.ts +89 -0
  80. package/cjs/data-grid/root/DataGridRoot.js +93 -0
  81. package/cjs/data-grid/root/DataGridRoot.js.map +1 -0
  82. package/cjs/preview.d.ts +1 -0
  83. package/cjs/preview.js +7 -0
  84. package/cjs/preview.js.map +1 -0
  85. package/cjs/table/ColumnHeader.js +2 -1
  86. package/cjs/table/ColumnHeader.js.map +1 -1
  87. package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js +0 -1
  88. package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js.map +1 -1
  89. package/esm/data/drag-and-drop/root/DragAndDropRoot.d.ts +6 -6
  90. package/esm/data/drag-and-drop/root/DragAndDropRoot.js +6 -29
  91. package/esm/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
  92. package/esm/data/stories/Data.test-data.d.ts +3 -6
  93. package/esm/data/stories/Data.test-data.js +46 -59
  94. package/esm/data/stories/Data.test-data.js.map +1 -1
  95. package/esm/data/table/base-cell/DataTableBaseCell.d.ts +18 -18
  96. package/esm/data/table/base-cell/DataTableBaseCell.js +4 -8
  97. package/esm/data/table/base-cell/DataTableBaseCell.js.map +1 -1
  98. package/esm/data/table/column-header/DataTableColumnHeader.d.ts +19 -13
  99. package/esm/data/table/column-header/DataTableColumnHeader.js +27 -29
  100. package/esm/data/table/column-header/DataTableColumnHeader.js.map +1 -1
  101. package/esm/data/table/column-header/useTableColumnResize.d.ts +19 -29
  102. package/esm/data/table/column-header/useTableColumnResize.js +30 -28
  103. package/esm/data/table/column-header/useTableColumnResize.js.map +1 -1
  104. package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.d.ts +1 -1
  105. package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.js +2 -2
  106. package/esm/data/table/details-panel-row/DataTableDetailsPanelRow.js.map +1 -1
  107. package/esm/data/table/helpers/collectTableRowEntries.d.ts +2 -2
  108. package/esm/data/table/helpers/selection/getMultipleSelectProps.d.ts +14 -11
  109. package/esm/data/table/helpers/selection/getMultipleSelectProps.js +45 -51
  110. package/esm/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
  111. package/esm/data/table/helpers/selection/getSingleSelectProps.d.ts +9 -8
  112. package/esm/data/table/helpers/selection/getSingleSelectProps.js +23 -10
  113. package/esm/data/table/helpers/selection/getSingleSelectProps.js.map +1 -1
  114. package/esm/data/table/helpers/selection/selection.types.d.ts +24 -32
  115. package/esm/data/table/helpers/selection/selection.utils.d.ts +21 -0
  116. package/esm/data/table/helpers/selection/selection.utils.js +43 -0
  117. package/esm/data/table/helpers/selection/selection.utils.js.map +1 -0
  118. package/esm/data/table/hooks/useColumnOptions.d.ts +17 -6
  119. package/esm/data/table/hooks/useColumnOptions.js +26 -8
  120. package/esm/data/table/hooks/useColumnOptions.js.map +1 -1
  121. package/esm/data/table/hooks/useTableDetailsPanel.d.ts +10 -14
  122. package/esm/data/table/hooks/useTableDetailsPanel.js +6 -5
  123. package/esm/data/table/hooks/useTableDetailsPanel.js.map +1 -1
  124. package/esm/data/table/hooks/useTableItems.d.ts +32 -19
  125. package/esm/data/table/hooks/useTableItems.js +14 -13
  126. package/esm/data/table/hooks/useTableItems.js.map +1 -1
  127. package/esm/data/table/hooks/useTableKeyboardNav.d.ts +1 -6
  128. package/esm/data/table/hooks/useTableKeyboardNav.js +1 -4
  129. package/esm/data/table/hooks/useTableKeyboardNav.js.map +1 -1
  130. package/esm/data/table/hooks/useTableSelection.d.ts +7 -6
  131. package/esm/data/table/hooks/useTableSelection.js +52 -35
  132. package/esm/data/table/hooks/useTableSelection.js.map +1 -1
  133. package/esm/data/table/hooks/useTableSort.d.ts +15 -9
  134. package/esm/data/table/hooks/useTableSort.js +10 -12
  135. package/esm/data/table/hooks/useTableSort.js.map +1 -1
  136. package/esm/data/table/index.d.ts +1 -1
  137. package/esm/data/table/index.js +1 -21
  138. package/esm/data/table/index.js.map +1 -1
  139. package/esm/data/table/root/DataGridTable.types.d.ts +65 -0
  140. package/esm/data/table/root/DataGridTable.types.js +2 -0
  141. package/esm/data/table/root/DataGridTable.types.js.map +1 -0
  142. package/esm/data/table/root/DataGridTableRoot.d.ts +104 -0
  143. package/esm/data/table/root/DataGridTableRoot.js +202 -0
  144. package/esm/data/table/root/DataGridTableRoot.js.map +1 -0
  145. package/esm/data/table/root/DataTableRoot.context.d.ts +17 -7
  146. package/esm/data/table/root/DataTableRoot.context.js.map +1 -1
  147. package/esm/data/table/sub-row-toggle/DataTableSubRowToggle.js +4 -4
  148. package/esm/data/table/sub-row-toggle/DataTableSubRowToggle.js.map +1 -1
  149. package/esm/data/table/tbody/DataTableTbody.js +4 -2
  150. package/esm/data/table/tbody/DataTableTbody.js.map +1 -1
  151. package/esm/data/table/tr/DataTableTr.d.ts +7 -5
  152. package/esm/data/table/tr/DataTableTr.js +68 -32
  153. package/esm/data/table/tr/DataTableTr.js.map +1 -1
  154. package/esm/data/token-filter/TokenFilter.d.ts +0 -6
  155. package/esm/data/token-filter/TokenFilter.js +1 -1
  156. package/esm/data-grid/index.d.ts +2 -0
  157. package/esm/data-grid/index.js +4 -0
  158. package/esm/data-grid/index.js.map +1 -0
  159. package/esm/data-grid/root/DataGrid.types.d.ts +35 -0
  160. package/esm/data-grid/root/DataGrid.types.js +2 -0
  161. package/esm/data-grid/root/DataGrid.types.js.map +1 -0
  162. package/esm/data-grid/root/DataGridRoot.context.d.ts +16 -0
  163. package/esm/data-grid/root/DataGridRoot.context.js +7 -0
  164. package/esm/data-grid/root/DataGridRoot.context.js.map +1 -0
  165. package/esm/data-grid/root/DataGridRoot.d.ts +89 -0
  166. package/esm/data-grid/root/DataGridRoot.js +57 -0
  167. package/esm/data-grid/root/DataGridRoot.js.map +1 -0
  168. package/esm/preview.d.ts +1 -0
  169. package/esm/preview.js +3 -0
  170. package/esm/preview.js.map +1 -0
  171. package/esm/table/ColumnHeader.js +2 -1
  172. package/esm/table/ColumnHeader.js.map +1 -1
  173. package/package.json +23 -3
  174. package/src/data/drag-and-drop/drag-handler/DragAndDropDragHandler.tsx +0 -1
  175. package/src/data/drag-and-drop/root/DragAndDropRoot.tsx +18 -52
  176. package/src/data/stories/Data.test-data.tsx +76 -65
  177. package/src/data/table/base-cell/DataTableBaseCell.tsx +36 -26
  178. package/src/data/table/column-header/DataTableColumnHeader.tsx +62 -62
  179. package/src/data/table/column-header/useTableColumnResize.ts +63 -79
  180. package/src/data/table/details-panel-row/DataTableDetailsPanelRow.tsx +3 -3
  181. package/src/data/table/helpers/collectTableRowEntries.ts +1 -2
  182. package/src/data/table/helpers/selection/getMultipleSelectProps.ts +69 -83
  183. package/src/data/table/helpers/selection/getSingleSelectProps.ts +35 -17
  184. package/src/data/table/helpers/selection/selection.types.ts +23 -33
  185. package/src/data/table/helpers/selection/selection.utils.test.ts +161 -0
  186. package/src/data/table/helpers/selection/selection.utils.ts +73 -0
  187. package/src/data/table/hooks/__tests__/useTableItems.test.ts +2 -1
  188. package/src/data/table/hooks/useColumnOptions.ts +49 -15
  189. package/src/data/table/hooks/useTableDetailsPanel.tsx +21 -28
  190. package/src/data/table/hooks/useTableItems.ts +60 -38
  191. package/src/data/table/hooks/useTableKeyboardNav.ts +1 -13
  192. package/src/data/table/hooks/useTableSelection.ts +80 -68
  193. package/src/data/table/hooks/useTableSort.ts +36 -23
  194. package/src/data/table/index.tsx +4 -21
  195. package/src/data/table/root/DataGridTable.types.ts +82 -0
  196. package/src/data/table/root/DataGridTableRoot.tsx +566 -0
  197. package/src/data/table/root/DataTableRoot.context.ts +24 -10
  198. package/src/data/table/sub-row-toggle/DataTableSubRowToggle.tsx +6 -5
  199. package/src/data/table/tbody/DataTableTbody.tsx +6 -2
  200. package/src/data/table/tr/DataTableTr.tsx +145 -47
  201. package/src/data/token-filter/TokenFilter.tsx +1 -1
  202. package/src/data-grid/index.ts +3 -0
  203. package/src/data-grid/root/DataGrid.types.ts +36 -0
  204. package/src/data-grid/root/DataGridRoot.context.ts +21 -0
  205. package/src/data-grid/root/DataGridRoot.tsx +152 -0
  206. package/src/preview.ts +2 -0
  207. package/src/table/ColumnHeader.tsx +3 -1
  208. package/cjs/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.d.ts +0 -22
  209. package/cjs/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.js +0 -35
  210. package/cjs/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.js.map +0 -1
  211. package/cjs/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.d.ts +0 -27
  212. package/cjs/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.js +0 -86
  213. package/cjs/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.js.map +0 -1
  214. package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.d.ts +0 -5
  215. package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.js +0 -6
  216. package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.js.map +0 -1
  217. package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.d.ts +0 -24
  218. package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.js +0 -108
  219. package/cjs/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.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/cjs/data/table/root/DataTable.types.d.ts +0 -63
  224. package/cjs/data/table/root/DataTable.types.js.map +0 -1
  225. package/cjs/data/table/root/DataTableRoot.d.ts +0 -141
  226. package/cjs/data/table/root/DataTableRoot.js +0 -229
  227. package/cjs/data/table/root/DataTableRoot.js.map +0 -1
  228. package/cjs/data/table/root/DataTableRoot.legacy.d.ts +0 -177
  229. package/cjs/data/table/root/DataTableRoot.legacy.js +0 -104
  230. package/cjs/data/table/root/DataTableRoot.legacy.js.map +0 -1
  231. package/esm/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.d.ts +0 -22
  232. package/esm/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.js +0 -29
  233. package/esm/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.js.map +0 -1
  234. package/esm/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.d.ts +0 -27
  235. package/esm/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.js +0 -50
  236. package/esm/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.js.map +0 -1
  237. package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.d.ts +0 -5
  238. package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.js +0 -3
  239. package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.js.map +0 -1
  240. package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.d.ts +0 -24
  241. package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.js +0 -68
  242. package/esm/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.js.map +0 -1
  243. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.d.ts +0 -46
  244. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.js +0 -109
  245. package/esm/data/table/helpers/selection/SelectionSubtreeHelper.js.map +0 -1
  246. package/esm/data/table/root/DataTable.types.d.ts +0 -63
  247. package/esm/data/table/root/DataTable.types.js +0 -2
  248. package/esm/data/table/root/DataTable.types.js.map +0 -1
  249. package/esm/data/table/root/DataTableRoot.d.ts +0 -141
  250. package/esm/data/table/root/DataTableRoot.js +0 -193
  251. package/esm/data/table/root/DataTableRoot.js.map +0 -1
  252. package/esm/data/table/root/DataTableRoot.legacy.d.ts +0 -177
  253. package/esm/data/table/root/DataTableRoot.legacy.js +0 -59
  254. package/esm/data/table/root/DataTableRoot.legacy.js.map +0 -1
  255. package/src/data/drag-and-drop-legacy/drag-handler/DragAndDropDragHandlerLegacy.tsx +0 -104
  256. package/src/data/drag-and-drop-legacy/item/DragAndDropItemLegacy.tsx +0 -74
  257. package/src/data/drag-and-drop-legacy/root/DragAndDropLegacy.context.tsx +0 -11
  258. package/src/data/drag-and-drop-legacy/root/DragAndDropLegacyRoot.tsx +0 -94
  259. package/src/data/table/Readme.md +0 -11
  260. package/src/data/table/helpers/selection/SelectionSubtreeHelper.test.ts +0 -66
  261. package/src/data/table/helpers/selection/SelectionSubtreeHelper.ts +0 -162
  262. package/src/data/table/hooks/__tests__/useTableSelection.test.ts +0 -488
  263. package/src/data/table/root/DataTable.types.ts +0 -87
  264. package/src/data/table/root/DataTableRoot.legacy.tsx +0 -297
  265. package/src/data/table/root/DataTableRoot.tsx +0 -562
  266. package/src/data/table/root/agent-feature-gap.md +0 -96
@@ -1,63 +1,80 @@
1
1
  import { useCallback, useMemo } from "react";
2
+ import { useDataGridContext } from "../../../data-grid/root/DataGridRoot.context.js";
2
3
  import { useId } from "../../../utils-external/index.js";
3
4
  import { useControllableState } from "../../../utils/hooks/index.js";
4
5
  import { getMultipleSelectProps } from "../helpers/selection/getMultipleSelectProps.js";
5
6
  import { getSingleSelectProps } from "../helpers/selection/getSingleSelectProps.js";
6
- function useTableSelection({ selection = {}, visibleRowIds = [], childRowIdsById, }) {
7
- const { selectionMode = "none", defaultSelectedKeys, selectedKeys: selectedKeysProp, onSelectionChange, disabledSelectionKeys = [], disableRowSelectionOnClick = false, } = selection;
7
+ function useTableSelection({ selection = {
8
+ mode: "none",
9
+ }, selectionTrigger = "row", tableItems, }) {
10
+ const { isLoading } = useDataGridContext();
11
+ const { mode, defaultSelectedRowIds, selectedRowIds: selectedRowIdsProp, onSelectedRowIdsChange, enableRowSelection, } = selection;
12
+ const { visibleRowIds = [] } = tableItems;
8
13
  const radioGroupName = useId();
9
14
  const [selectedKeys, setSelectedKeys] = useControllableState({
10
- value: selectionMode !== "none" ? selectedKeysProp : undefined,
11
- defaultValue: defaultSelectedKeys !== null && defaultSelectedKeys !== void 0 ? defaultSelectedKeys : [],
12
- onChange: onSelectionChange,
15
+ value: mode !== "none" ? selectedRowIdsProp : undefined,
16
+ defaultValue: defaultSelectedRowIds !== null && defaultSelectedRowIds !== void 0 ? defaultSelectedRowIds : [],
17
+ onChange: onSelectedRowIdsChange,
13
18
  });
14
19
  const selectedKeysSet = useMemo(() => new Set(selectedKeys), [selectedKeys]);
15
- const disabledKeysSet = useMemo(() => new Set(disabledSelectionKeys), [disabledSelectionKeys]);
16
20
  const isRowSelected = useCallback((rowId) => selectedKeysSet.has(rowId), [selectedKeysSet]);
17
- const baseSelection = { selectedKeys, disabledSelectionKeys, isRowSelected };
18
- if (selectionMode === "none") {
21
+ return useMemo(() => {
22
+ const baseSelection = { selectedKeys, isRowSelected };
23
+ if (mode === "none") {
24
+ return {
25
+ selection: Object.assign(Object.assign({ mode }, baseSelection), { selectedKeys: [] }),
26
+ selectionTrigger,
27
+ renderSelection: false,
28
+ };
29
+ }
30
+ if (mode === "single") {
31
+ return {
32
+ selection: Object.assign(Object.assign({ mode }, baseSelection), getSingleSelectProps({
33
+ selectedKeysSet,
34
+ setSelectedKeys,
35
+ name: radioGroupName,
36
+ enableRowSelection,
37
+ })),
38
+ selectionTrigger,
39
+ renderSelection: visibleRowIds.length !== 0,
40
+ };
41
+ }
19
42
  return {
20
- selection: Object.assign(Object.assign({ selectionMode }, baseSelection), { selectedKeys: [] }),
21
- disableRowSelectionOnClick,
22
- renderSelection: false,
23
- };
24
- }
25
- if (selectionMode === "single") {
26
- return {
27
- selection: Object.assign(Object.assign({ selectionMode }, baseSelection), getSingleSelectProps({
43
+ selection: Object.assign(Object.assign({ mode }, baseSelection), getMultipleSelectProps({
28
44
  selectedKeysSet,
45
+ selectedKeys,
29
46
  setSelectedKeys,
30
- disabledKeysSet,
31
- name: radioGroupName,
47
+ enableRowSelection,
48
+ tableItems,
49
+ isLoading,
32
50
  })),
33
- disableRowSelectionOnClick,
51
+ selectionTrigger,
34
52
  renderSelection: visibleRowIds.length !== 0,
35
53
  };
36
- }
37
- return {
38
- selection: Object.assign(Object.assign({ selectionMode }, baseSelection), getMultipleSelectProps({
39
- selectedKeysSet,
40
- selectedKeys,
41
- setSelectedKeys,
42
- disabledKeysSet,
43
- visibleRowIds,
44
- childRowIdsById,
45
- })),
46
- disableRowSelectionOnClick,
47
- renderSelection: visibleRowIds.length !== 0,
48
- };
54
+ }, [
55
+ mode,
56
+ selectedKeys,
57
+ selectedKeysSet,
58
+ isRowSelected,
59
+ selectionTrigger,
60
+ visibleRowIds,
61
+ setSelectedKeys,
62
+ radioGroupName,
63
+ enableRowSelection,
64
+ tableItems,
65
+ isLoading,
66
+ ]);
49
67
  }
50
68
  /**
51
69
  * TODO: Only temp needed to keep Root happy
52
70
  */
53
71
  const noSelectionState = {
54
72
  selection: {
55
- selectionMode: "none",
73
+ mode: "none",
56
74
  selectedKeys: [],
57
- disabledSelectionKeys: [],
58
75
  isRowSelected: () => false,
59
76
  },
60
- disableRowSelectionOnClick: false,
77
+ selectionTrigger: "row",
61
78
  renderSelection: false,
62
79
  };
63
80
  export { useTableSelection, noSelectionState };
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSelection.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;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,KAAK,EAAE,CAAC;IAE/B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,oBAAoB,CAAgB;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,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAE7E,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,qBAAqB,CAAC,EACpC,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/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,oBAAoB,CAAC;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,sBAAsB,CAAC;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;AAEF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"useTableSelection.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAoBjF,SAAS,iBAAiB,CAAI,EAC5B,SAAS,GAAG;IACV,IAAI,EAAE,MAAM;CACb,EACD,gBAAgB,GAAG,KAAK,EACxB,UAAU,GACe;IACzB,MAAM,EAAE,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC3C,MAAM,EACJ,IAAI,EACJ,qBAAqB,EACrB,cAAc,EAAE,kBAAkB,EAClC,sBAAsB,EACtB,kBAAkB,GACnB,GAAG,SAAS,CAAC;IAEd,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC;IAE1C,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC;IAE/B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,oBAAoB,CAAW;QACrE,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;QACvD,YAAY,EAAE,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,EAAE;QACzC,QAAQ,EAAE,sBAAsB;KACjC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAE7E,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAAsB,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EACtD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,aAAa,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;QAEtD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO;gBACL,SAAS,gCACP,IAAI,IACD,aAAa,KAChB,YAAY,EAAE,EAAE,GACjB;gBACD,gBAAgB;gBAChB,eAAe,EAAE,KAAK;aACvB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO;gBACL,SAAS,gCACP,IAAI,IACD,aAAa,GACb,oBAAoB,CAAC;oBACtB,eAAe;oBACf,eAAe;oBACf,IAAI,EAAE,cAAc;oBACpB,kBAAkB;iBACnB,CAAC,CACH;gBACD,gBAAgB;gBAChB,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;aAC5C,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,gCACP,IAAI,IACD,aAAa,GACb,sBAAsB,CAAC;gBACxB,eAAe;gBACf,YAAY;gBACZ,eAAe;gBACf,kBAAkB;gBAClB,UAAU;gBACV,SAAS;aACV,CAAC,CACH;YACD,gBAAgB;YAChB,eAAe,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;SAC5C,CAAC;IACJ,CAAC,EAAE;QACD,IAAI;QACJ,YAAY;QACZ,eAAe;QACf,aAAa;QACb,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,cAAc;QACd,kBAAkB;QAClB,UAAU;QACV,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,gBAAgB,GAA4B;IAChD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;KAC3B;IACD,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,26 +1,32 @@
1
- import type { SortChangeDetail, SortEntry } from "../root/DataTable.types.js";
1
+ import type { SortChangeDetail, SortEntry } from "../root/DataGridTable.types.js";
2
2
  type TableSortOptions = {
3
3
  /**
4
4
  * Current sort state. Each entry represents a sorted column.
5
5
  * Columns not present in the array are unsorted.
6
6
  * Supports multi-column sorting when multiple entries are provided.
7
7
  *
8
- * When provided, the component is controlled you must also handle `onSortChange`.
9
- * For uncontrolled usage, use `defaultSort` instead.
8
+ * When provided, the component is controlled - you must also handle `onSortOrderChange`.
9
+ * For uncontrolled usage, use `defaultSortOrder` instead.
10
10
  */
11
- sort?: SortEntry[];
11
+ sortOrder?: SortEntry[];
12
12
  /**
13
13
  * Initial sort state for uncontrolled usage.
14
- * Use `sort` + `onSortChange` for controlled usage.
14
+ * Use `sortOrder` + `onSortOrderChange` for controlled usage.
15
15
  * @default []
16
16
  */
17
- defaultSort?: SortEntry[];
17
+ defaultSortOrder?: SortEntry[];
18
18
  /**
19
19
  * Called when the user clicks a sortable column header.
20
20
  * - `sort` — the full updated sort array after cycling: unsorted → asc → desc → unsorted.
21
21
  * - `detail` — the specific column that changed, including its new direction (`"none"` means removed).
22
22
  */
23
- onSortChange?: (sort: SortEntry[], detail: SortChangeDetail) => void;
23
+ onSortOrderChange?: (sortOrder: SortEntry[], detail: SortChangeDetail) => void;
24
+ /**
25
+ * When true, allows multiple columns to be sorted by holding Shift while clicking headers.
26
+ *
27
+ * @default true
28
+ */
29
+ allowMultiSort?: boolean;
24
30
  };
25
31
  type UseTableSortResults = {
26
32
  /**
@@ -32,6 +38,6 @@ type UseTableSortResults = {
32
38
  */
33
39
  sortState: SortEntry[];
34
40
  };
35
- declare function useTableSort(options: TableSortOptions): UseTableSortResults;
41
+ declare function useTableSort(options?: TableSortOptions): UseTableSortResults;
36
42
  export { useTableSort };
37
- export type { TableSortOptions };
43
+ export type { TableSortOptions, UseTableSortResults };
@@ -1,24 +1,22 @@
1
- import { useCallback } from "react";
2
- import { useControllableState } from "../../../utils/hooks/index.js";
1
+ import { consoleWarning } from "../../../utils/helpers/consoleWarning.js";
2
+ import { useControllableState, useEventCallback } from "../../../utils/hooks/index.js";
3
3
  function useTableSort(options) {
4
- const { defaultSort = [], onSortChange, sort: sortOption } = options;
4
+ const { defaultSortOrder, onSortOrderChange, sortOrder, allowMultiSort = true, } = options || {};
5
5
  const [sort, setSort] = useControllableState({
6
- value: sortOption,
7
- defaultValue: defaultSort,
6
+ value: sortOrder,
7
+ defaultValue: defaultSortOrder || [],
8
8
  });
9
- const handleSortClick = useCallback((id, event) => {
9
+ const handleSortClick = useEventCallback((id, event) => {
10
10
  if (id === undefined) {
11
- if (process.env.NODE_ENV === "development") {
12
- console.warn(`Aksel: Column id is undefined for sort event on target ${event.target}. Make sure your column definitions include an 'id' property.`);
13
- }
11
+ consoleWarning("DataGrid.Table: Column id is undefined for sort event on target", event.target, "Make sure your column definitions include an 'id' property.");
14
12
  return;
15
13
  }
16
- const cumulative = event.shiftKey;
14
+ const cumulative = allowMultiSort && event.shiftKey;
17
15
  const base = cumulative ? sort : sort.filter((s) => s.columnId === id);
18
16
  const { next, detail } = nextSortEntries(base, id);
19
17
  setSort(next);
20
- onSortChange === null || onSortChange === void 0 ? void 0 : onSortChange(next, detail);
21
- }, [onSortChange, setSort, sort]);
18
+ onSortOrderChange === null || onSortOrderChange === void 0 ? void 0 : onSortOrderChange(next, detail);
19
+ });
22
20
  return {
23
21
  onSortClick: handleSortClick,
24
22
  sortState: sort,
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSort.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;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,oBAAoB,CAAC;QAC3C,KAAK,EAAE,UAAU;QACjB,YAAY,EAAE,WAAW;KAC1B,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,WAAW,CACjC,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;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"useTableSort.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAkD9E,SAAS,YAAY,CAAC,OAA0B;IAC9C,MAAM,EACJ,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,cAAc,GAAG,IAAI,GACtB,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAAC;QAC3C,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,gBAAgB,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,gBAAgB,CACtC,CAAC,EAAU,EAAE,KAAgD,EAAE,EAAE;QAC/D,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,cAAc,CACZ,iEAAiE,EACjE,KAAK,CAAC,MAAM,EACZ,6DAA6D,CAC9D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,IAAI,KAAK,CAAC,QAAQ,CAAC;QACpD,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,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CACF,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;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1 +1 @@
1
- export { DataTable, type DataTableProps } from "./root/DataTableRoot.js";
1
+ export { DataGridTable, type DataGridTableProps, } from "./root/DataGridTableRoot.js";
@@ -1,23 +1,3 @@
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.js";
12
- export type {
13
- DataTableProps,
14
- DataTableCaptionProps,
15
- DataTableTheadProps,
16
- DataTableTbodyProps,
17
- DataTableTrProps,
18
- DataTableThProps,
19
- DataTableTdProps,
20
- DataTableTfootProps,
21
- } from "./root/DataTableRoot.legacy.js"; */
22
- export { DataTable } from "./root/DataTableRoot.js";
2
+ export { DataGridTable, } from "./root/DataGridTableRoot.js";
23
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/table/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb;;;;;;;;;;;;;;;;;;;wCAmBwC;AAExC,OAAO,EAAE,SAAS,EAAuB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/table/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EACL,aAAa,GAEd,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { DataTableColumnHeaderProps } from "../column-header/DataTableColumnHeader.js";
2
+ /**
3
+ * TODO:
4
+ * - Consider "accessorKey" or similar to allow simple column definitions without a cell function.
5
+ */
6
+ type ColumnDefinition<T> = {
7
+ id: string;
8
+ /**
9
+ * Uses `<th>` instead of `<td>` for the cell if true.
10
+ *
11
+ * Should be used on the column that acts as row header.
12
+ * There should be exactly one column with this set to true.
13
+ */
14
+ isRowHeader?: boolean;
15
+ /**
16
+ * Name of the column.
17
+ * Used in the header cell unless `headerCell` is provided.
18
+ * Also used in the settings dialog.
19
+ */
20
+ header: string;
21
+ /**
22
+ * Overrides header cell content. Should not differ too much from `header`.
23
+ */
24
+ headerCell?: React.ReactNode;
25
+ /**
26
+ * Renders table body cell content.
27
+ */
28
+ bodyCell: (item: T) => React.ReactNode;
29
+ /**
30
+ * Makes the column sortable. Renders the header as a sort button.
31
+ * Use `sorting` prop on `DataGrid.Table` to configure sorting behavior and state management.
32
+ */
33
+ isSortable?: boolean;
34
+ } & Pick<DataTableColumnHeaderProps, "width" | "align">;
35
+ type ColumnDefinitions<T> = ColumnDefinition<T>[];
36
+ /**
37
+ * A single sort entry representing a column's current sort state.
38
+ * Absent from the `sort` array means the column is unsorted.
39
+ */
40
+ type SortEntry = {
41
+ columnId: string;
42
+ direction: "asc" | "desc";
43
+ };
44
+ /**
45
+ * The column that changed in a sort operation, passed as the second argument
46
+ * to `onSortChange`. Useful for triggering targeted server-side sort requests.
47
+ */
48
+ type SortChangeDetail = {
49
+ columnId: string;
50
+ /** The new direction for this column. `"none"` means the column was removed from the sort. */
51
+ direction: "asc" | "desc" | "none";
52
+ };
53
+ type DataTableLoadingConfig = {
54
+ variant: "content";
55
+ content: React.ReactNode;
56
+ } | {
57
+ variant: "skeleton";
58
+ rows?: number;
59
+ label?: string;
60
+ } | {
61
+ variant: "overlay";
62
+ label?: string;
63
+ };
64
+ type TableRowEntryId = string;
65
+ export type { ColumnDefinition, ColumnDefinitions, DataTableLoadingConfig, SortEntry, SortChangeDetail, TableRowEntryId, };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DataGridTable.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGridTable.types.js","sourceRoot":"","sources":["../../../../src/data/table/root/DataGridTable.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,104 @@
1
+ import React from "react";
2
+ import { type DetailsPanelProps } from "../hooks/useTableDetailsPanel.js";
3
+ import { type SubRowsProps } from "../hooks/useTableItems.js";
4
+ import { type TableSortOptions } from "../hooks/useTableSort.js";
5
+ import type { DataTableLoadingConfig } from "./DataGridTable.types.js";
6
+ interface DataGridTableProps<T> extends React.HTMLAttributes<HTMLTableElement> {
7
+ children?: never;
8
+ /**
9
+ * Controls table layout.
10
+ *
11
+ * ### fixed
12
+ * Gives you full control of column widths. This is required for resizable columns.
13
+ *
14
+ * ### auto
15
+ * Makes the columns resize automatically based on the content.
16
+ * The table will take up at least 100% of available width.
17
+ *
18
+ * **NB:** When using this with `truncateContent`, you have to manually
19
+ * set a `contentMaxWidth` on cells that should be truncated.
20
+ * @default "fixed"
21
+ */
22
+ layout?: "fixed" | "auto";
23
+ /**
24
+ * Whether the header should be sticky.
25
+ * For this to work, you have to put the component in a flex container with a height restriction.
26
+ *
27
+ * @example
28
+ * <VStack height="100vh">
29
+ * <div>Content before DataGrid</div>
30
+ * <DataGrid>
31
+ * <DataGrid.Table />
32
+ * </DataGrid>
33
+ * <div>Content after DataGrid</div>
34
+ * </VStack>
35
+ *
36
+ * @example
37
+ * <div style={{ display: "flex", maxHeight: "500px" }}>
38
+ * <DataGrid>
39
+ * <DataGrid.Table />
40
+ * </DataGrid>
41
+ * </div>
42
+ *
43
+ * @default true
44
+ */
45
+ stickyHeader?: boolean;
46
+ /**
47
+ * Callback invoked when a row in the table body is clicked.
48
+ *
49
+ * Call `event.preventDefault()` inside the callback to prevent the default row click behavior, such as selection.
50
+ */
51
+ onRowAction?: ({ row, id, event, }: {
52
+ row: T;
53
+ id: string;
54
+ event: React.MouseEvent<HTMLTableRowElement>;
55
+ }) => void;
56
+ /**
57
+ * Content to render when `data` is empty.
58
+ * Rendered inside a row spanning all columns.
59
+ */
60
+ emptyContent?: React.ReactNode;
61
+ /**
62
+ * Configures how the table behaves during loading.
63
+ *
64
+ * Use `variant` to select the loading strategy:
65
+ * - `"content"` — renders custom content inside a full-width row.
66
+ * - `"skeleton"` — renders skeleton placeholder rows.
67
+ * - `"overlay"` — keeps existing data visible with a loading overlay.
68
+ *
69
+ * @default { variant: "skeleton", rows: 5 }
70
+ */
71
+ loadingContent?: DataTableLoadingConfig;
72
+ /**
73
+ * Object with props related to nested rows (sub-rows).
74
+ */
75
+ subRows?: SubRowsProps<T>;
76
+ /**
77
+ * Object with props related to details panel.
78
+ * This is a panel that can be expanded below each row to show arbitrary content.
79
+ */
80
+ detailsPanel?: DetailsPanelProps<T>;
81
+ /**
82
+ * Object with props related to sorting.
83
+ */
84
+ sorting?: TableSortOptions;
85
+ /**
86
+ * Determines if selection is triggered by clicking the row or the selection control (checkbox/radio).
87
+ * @default "row"
88
+ */
89
+ selectionTrigger?: "row" | "control";
90
+ }
91
+ declare const DataGridTableInternal: React.ForwardRefExoticComponent<DataGridTableProps<any> & React.RefAttributes<HTMLTableElement>>;
92
+ declare const DataGridTable: <RowT>(props: DataGridTableProps<RowT> & React.RefAttributes<HTMLTableElement>) => React.ReactElement | null;
93
+ export declare namespace DataGridTable {
94
+ type Props<T = unknown> = DataGridTableProps<T>;
95
+ type Sorting = TableSortOptions;
96
+ type SortEntry = import("./DataGridTable.types.js").SortEntry;
97
+ type SortChangeDetail = import("./DataGridTable.types.js").SortChangeDetail;
98
+ type LoadingContent = DataTableLoadingConfig;
99
+ type SubRows<T = unknown> = SubRowsProps<T>;
100
+ type DetailsPanel<T = unknown> = DetailsPanelProps<T>;
101
+ }
102
+ export { DataGridTable, DataGridTableInternal };
103
+ export type { DataGridTableProps };
104
+ export default DataGridTable;
@@ -0,0 +1,202 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React, { forwardRef, memo, useCallback, useEffect, useRef, useState, } from "react";
13
+ import { useDataGridContext } from "../../../data-grid/root/DataGridRoot.context.js";
14
+ import { Skeleton } from "../../../skeleton/index.js";
15
+ import { useId } from "../../../utils-external/index.js";
16
+ import { Slot } from "../../../utils/components/slot/Slot.js";
17
+ import { cl } from "../../../utils/helpers/index.js";
18
+ import { useMergeRefs } from "../../../utils/hooks/index.js";
19
+ import { DataTableBaseCell } from "../base-cell/DataTableBaseCell.js";
20
+ import { DataTableColumnHeader } from "../column-header/DataTableColumnHeader.js";
21
+ import { DataTableDetailsPanelRow } from "../details-panel-row/DataTableDetailsPanelRow.js";
22
+ import { DataTableEmptyState } from "../empty-state/DataTableEmptyState.js";
23
+ import { useColumnOptions } from "../hooks/useColumnOptions.js";
24
+ import { DataTableDetailsPanelProvider, } from "../hooks/useTableDetailsPanel.js";
25
+ import { useTableItems } from "../hooks/useTableItems.js";
26
+ import { useTableKeyboardNav } from "../hooks/useTableKeyboardNav.js";
27
+ import { useTableSelection } from "../hooks/useTableSelection.js";
28
+ import { useTableSort } from "../hooks/useTableSort.js";
29
+ import { DataTableLoadingState } from "../loading-state/DataTableLoadingState.js";
30
+ import { DataTableSubRowToggle } from "../sub-row-toggle/DataTableSubRowToggle.js";
31
+ import { DataTableTbody } from "../tbody/DataTableTbody.js";
32
+ import { DataTableThead } from "../thead/DataTableThead.js";
33
+ import { DataTableTr } from "../tr/DataTableTr.js";
34
+ import { DataTableContextProvider, useDataTableContext, } from "./DataTableRoot.context.js";
35
+ const DataGridTableInternal = forwardRef((_a, forwardedRef) => {
36
+ var _b, _c, _d;
37
+ var { className, id, layout = "fixed", stickyHeader = true, onRowAction, emptyContent, loadingContent = {
38
+ variant: "skeleton",
39
+ rows: 5,
40
+ label: "Laster innhold",
41
+ }, // TODO translate label
42
+ detailsPanel, subRows, sorting, selectionTrigger = "row" } = _a, rest = __rest(_a, ["className", "id", "layout", "stickyHeader", "onRowAction", "emptyContent", "loadingContent", "detailsPanel", "subRows", "sorting", "selectionTrigger"]);
43
+ const { columnDefinitions, data, getRowId, selection, isLoading, tableSettings, } = useDataGridContext();
44
+ const sortingState = useTableSort(sorting);
45
+ const tableItems = useTableItems({
46
+ items: data,
47
+ getRowId,
48
+ subRows,
49
+ });
50
+ const tableSelectionState = useTableSelection({
51
+ selection,
52
+ selectionTrigger,
53
+ tableItems,
54
+ });
55
+ const { columns, stickyStart, totalColSpan } = useColumnOptions(columnDefinitions, {
56
+ stickyColumns: tableSettings === null || tableSettings === void 0 ? void 0 : tableSettings.stickyColumns,
57
+ hasSelection: tableSelectionState.selection.mode !== "none",
58
+ hasDetailsPanel: !!(detailsPanel === null || detailsPanel === void 0 ? void 0 : detailsPanel.getContent),
59
+ layout,
60
+ });
61
+ const tableId = useId(id);
62
+ const truncateContent = (_b = tableSettings === null || tableSettings === void 0 ? void 0 : tableSettings.truncateContent) !== null && _b !== void 0 ? _b : layout !== "auto";
63
+ return (React.createElement(DataTableContextProvider, { layout: layout, withKeyboardNav: true, selectionState: tableSelectionState, stickyStart: stickyStart, stickyHeader: stickyHeader, tableId: tableId, loading: loadingContent, onRowAction: onRowAction, columns: columns, totalColSpan: totalColSpan, tableItems: tableItems, sortingState: sortingState },
64
+ React.createElement(TableElementWrapper, { enabled: true, hasStickyColumns: !!(((_c = tableSettings === null || tableSettings === void 0 ? void 0 : tableSettings.stickyColumns) === null || _c === void 0 ? void 0 : _c.start) ||
65
+ ((_d = tableSettings === null || tableSettings === void 0 ? void 0 : tableSettings.stickyColumns) === null || _d === void 0 ? void 0 : _d.end)) },
66
+ React.createElement("table", Object.assign({}, rest, { ref: forwardedRef, className: cl("aksel-data-table", className), "data-zebra-stripes": tableSettings === null || tableSettings === void 0 ? void 0 : tableSettings.zebraStripes, "data-truncate-content": truncateContent, "data-density": tableSettings === null || tableSettings === void 0 ? void 0 : tableSettings.rowDensity, "data-text-size": tableSettings === null || tableSettings === void 0 ? void 0 : tableSettings.textSize, "data-layout": layout, "data-loading": isLoading || undefined, "aria-busy": isLoading || undefined }),
67
+ React.createElement(DataTableDetailsPanelProvider, { detailsPanel: detailsPanel },
68
+ React.createElement(DataTableThead, null,
69
+ React.createElement(DataTableTr, null, columns.map(({ isSticky, isStickyLast, stickyLeftOffset, colDef }) => {
70
+ var _a, _b;
71
+ return (React.createElement(DataTableColumnHeader, { id: colDef.id, width: colDef.width, align: (_a = colDef.align) !== null && _a !== void 0 ? _a : "left", key: colDef.id, isSticky: isSticky, sortable: colDef.isSortable, label: colDef.header, style: stickyLeftOffset
72
+ ? { left: stickyLeftOffset }
73
+ : undefined, "data-sticky-last": isStickyLast || undefined }, (_b = colDef.headerCell) !== null && _b !== void 0 ? _b : colDef.header));
74
+ }))),
75
+ React.createElement(DataTableTbody, null,
76
+ React.createElement(DataTableTBodyContent, { emptyContent: emptyContent })))))));
77
+ });
78
+ /**
79
+ * Temp optimization to avoid re-renders on every keyboard-move, selection change etc
80
+ */
81
+ function TableElementWrapper({ children, enabled, hasStickyColumns, }) {
82
+ const [applyStickyStyles, setApplyStickyStyles] = useState(false);
83
+ const tableWrapperRef = useRef(null);
84
+ const tableRef = useRef(null);
85
+ const rafRef = useRef(null);
86
+ const { tabIndex, setTableRef } = useTableKeyboardNav({
87
+ enabled,
88
+ });
89
+ const mergedTableRefs = useMergeRefs(tableRef, setTableRef);
90
+ const updateStickyStyles = useCallback(() => {
91
+ if (!tableWrapperRef.current) {
92
+ return;
93
+ }
94
+ const doesWrapperHasScroll = tableWrapperRef.current.scrollWidth > tableWrapperRef.current.clientWidth;
95
+ setApplyStickyStyles(doesWrapperHasScroll);
96
+ }, []);
97
+ const scheduleStickyStylesUpdate = useCallback(() => {
98
+ if (rafRef.current !== null) {
99
+ return;
100
+ }
101
+ rafRef.current = requestAnimationFrame(() => {
102
+ rafRef.current = null;
103
+ updateStickyStyles();
104
+ });
105
+ }, [updateStickyStyles]);
106
+ useEffect(function observeAndUpdateStickyStyles() {
107
+ if (!hasStickyColumns) {
108
+ return;
109
+ }
110
+ const tableWrapperElement = tableWrapperRef.current;
111
+ if (!tableWrapperElement) {
112
+ return;
113
+ }
114
+ const handleResize = () => scheduleStickyStylesUpdate();
115
+ window.addEventListener("resize", handleResize);
116
+ let resizeObserver;
117
+ if (typeof ResizeObserver !== "undefined") {
118
+ resizeObserver = new ResizeObserver(handleResize);
119
+ resizeObserver.observe(tableWrapperElement);
120
+ if (tableRef.current) {
121
+ resizeObserver.observe(tableRef.current);
122
+ }
123
+ }
124
+ scheduleStickyStylesUpdate();
125
+ return () => {
126
+ window.removeEventListener("resize", handleResize);
127
+ resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
128
+ if (rafRef.current !== null) {
129
+ cancelAnimationFrame(rafRef.current);
130
+ rafRef.current = null;
131
+ }
132
+ };
133
+ }, [scheduleStickyStylesUpdate, hasStickyColumns]);
134
+ return (React.createElement("div", { className: "aksel-data-table__border-wrapper" },
135
+ React.createElement("div", { ref: tableWrapperRef, className: "aksel-data-table__scroll-wrapper" },
136
+ React.createElement(Slot, { tabIndex: tabIndex,
137
+ /* @ts-expect-error Ref is not typed correctly to handle this case */
138
+ ref: mergedTableRefs, "data-scroll": applyStickyStyles ? "true" : undefined }, children))));
139
+ }
140
+ function DataTableTBodyContent({ emptyContent }) {
141
+ var _a, _b, _c;
142
+ const { columns, loading, totalColSpan, tableItems } = useDataTableContext();
143
+ const { isLoading } = useDataGridContext();
144
+ if (isLoading && (loading === null || loading === void 0 ? void 0 : loading.variant) === "content") {
145
+ return (React.createElement(DataTableLoadingState, { colSpan: totalColSpan }, loading.content));
146
+ }
147
+ if (isLoading && (loading === null || loading === void 0 ? void 0 : loading.variant) === "skeleton") {
148
+ const rows = (_a = loading.rows) !== null && _a !== void 0 ? _a : 5;
149
+ const label = (_b = loading.label) !== null && _b !== void 0 ? _b : "Laster innhold"; // TODO translate
150
+ return (React.createElement(React.Fragment, null,
151
+ React.createElement("tr", null,
152
+ React.createElement("td", { colSpan: totalColSpan, className: "aksel-sr-only" }, label)),
153
+ Array.from({ length: rows }, (_, rowIndex) => (React.createElement(DataTableTr, { key: `skeleton-row-${rowIndex}`, "aria-hidden": true }, columns.map(({ isSticky, isStickyLast, stickyLeftOffset, colDef }, colDefIndex) => {
154
+ var _a;
155
+ return (React.createElement(DataTableBaseCell, { align: (_a = colDef.align) !== null && _a !== void 0 ? _a : "left", key: colDef.id || colDefIndex, as: colDef.isRowHeader ? "th" : "td", isSticky: isSticky, style: stickyLeftOffset ? { left: stickyLeftOffset } : undefined, "data-sticky-last": isStickyLast || undefined },
156
+ React.createElement(Skeleton, { variant: "text" })));
157
+ }))))));
158
+ }
159
+ if (tableItems.items.length === 0 && emptyContent !== undefined) {
160
+ return (React.createElement(DataTableEmptyState, { colSpan: totalColSpan }, emptyContent));
161
+ }
162
+ const renderLoadingAnnouncement = isLoading && (loading === null || loading === void 0 ? void 0 : loading.variant) === "overlay";
163
+ const overlayLabel = (loading === null || loading === void 0 ? void 0 : loading.variant) === "overlay"
164
+ ? ((_c = loading.label) !== null && _c !== void 0 ? _c : "Laster innhold") // TODO translate
165
+ : "Laster innhold";
166
+ return (React.createElement(React.Fragment, null,
167
+ renderLoadingAnnouncement && (React.createElement("tr", null,
168
+ React.createElement("td", { colSpan: totalColSpan, className: "aksel-sr-only" }, overlayLabel))),
169
+ tableItems.items.map((rowData, rowIndex) => {
170
+ const rowId = tableItems.visibleRowIds[rowIndex];
171
+ const details = rowId != null ? tableItems.itemDetails.get(rowId) : undefined;
172
+ /* Should in theory be impossible. Look about typing this? */
173
+ if (!details) {
174
+ return null;
175
+ }
176
+ return (React.createElement(DataTableDataRow, { key: details.id, rowData: rowData, details: details, columns: columns }));
177
+ })));
178
+ }
179
+ const DataTableDataRow = memo(function DataTableDataRow({ rowData, details, columns, }) {
180
+ const hasSubRows = details.children.length > 0;
181
+ return (React.createElement(React.Fragment, null,
182
+ React.createElement(DataTableTr, { rowId: details.id }, columns.map(({ isSticky, isStickyLast, stickyLeftOffset, colDef }, colDefIndex) => {
183
+ var _a;
184
+ const renderNestedToggle = colDefIndex === 0 && hasSubRows;
185
+ const renderNestedIndent = colDefIndex === 0 && (details.level > 0 || hasSubRows);
186
+ const style = Object.assign({ "--__axc-data-table-nested-depth": details.level }, (stickyLeftOffset ? { left: stickyLeftOffset } : {}));
187
+ return (React.createElement(DataTableBaseCell, { align: (_a = colDef.align) !== null && _a !== void 0 ? _a : "left", key: colDef.id || colDefIndex, as: colDef.isRowHeader ? "th" : "td", isSticky: isSticky, "data-nested": renderNestedIndent || undefined, "data-sticky-last": isStickyLast || undefined, style: style, beforeContent: renderNestedToggle ? (React.createElement(DataTableSubRowToggle, { details: details })) : undefined }, colDef.bodyCell(rowData)));
188
+ })),
189
+ React.createElement(DataTableDetailsPanelRow, { rowId: details.id, rowData: rowData })));
190
+ },
191
+ /* TODO: Might be some better metrics we could use to optimize this */
192
+ (prev, next) => prev.rowData === next.rowData &&
193
+ prev.columns === next.columns &&
194
+ prev.details.id === next.details.id &&
195
+ prev.details.level === next.details.level &&
196
+ prev.details.children.length === next.details.children.length);
197
+ const DataGridTable = DataGridTableInternal;
198
+ // docgen doesn't work well with type params, so we let it use DataGridTableInternal instead
199
+ // eslint-disable-next-line import/export
200
+ export { DataGridTable, DataGridTableInternal };
201
+ export default DataGridTable;
202
+ //# sourceMappingURL=DataGridTableRoot.js.map