@navikt/ds-react 8.9.1 → 8.10.1

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 (408) hide show
  1. package/cjs/alert/base-alert/content/BaseAlertContent.js +4 -1
  2. package/cjs/alert/base-alert/content/BaseAlertContent.js.map +1 -1
  3. package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.d.ts +3 -1
  4. package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js +38 -19
  5. package/cjs/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js.map +1 -1
  6. package/cjs/data/drag-and-drop/item/DragAndDropItem.d.ts +3 -2
  7. package/cjs/data/drag-and-drop/item/DragAndDropItem.js +6 -4
  8. package/cjs/data/drag-and-drop/item/DragAndDropItem.js.map +1 -1
  9. package/cjs/data/drag-and-drop/root/DragAndDrop.context.d.ts +2 -2
  10. package/cjs/data/drag-and-drop/root/DragAndDropRoot.d.ts +7 -32
  11. package/cjs/data/drag-and-drop/root/DragAndDropRoot.js +73 -46
  12. package/cjs/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
  13. package/cjs/data/drag-and-drop/types.d.ts +4 -0
  14. package/cjs/data/table/base-cell/DataTableBaseCell.d.ts +46 -0
  15. package/cjs/data/table/base-cell/DataTableBaseCell.js +63 -0
  16. package/cjs/data/table/base-cell/DataTableBaseCell.js.map +1 -0
  17. package/cjs/data/table/column-header/DataTableColumnHeader.d.ts +31 -0
  18. package/cjs/data/table/column-header/DataTableColumnHeader.js +107 -0
  19. package/cjs/data/table/column-header/DataTableColumnHeader.js.map +1 -0
  20. package/cjs/data/table/column-header/useTableColumnResize.js.map +1 -0
  21. package/cjs/data/table/empty-state/DataTableEmptyState.d.ts +6 -2
  22. package/cjs/data/table/empty-state/DataTableEmptyState.js +2 -2
  23. package/cjs/data/table/empty-state/DataTableEmptyState.js.map +1 -1
  24. package/cjs/data/table/helpers/selection/getMultipleSelectProps.d.ts +7 -7
  25. package/cjs/data/table/helpers/selection/getMultipleSelectProps.js +29 -28
  26. package/cjs/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
  27. package/cjs/data/table/helpers/selection/getSingleSelectProps.d.ts +5 -3
  28. package/cjs/data/table/helpers/selection/getSingleSelectProps.js +8 -12
  29. package/cjs/data/table/helpers/selection/getSingleSelectProps.js.map +1 -1
  30. package/cjs/data/table/helpers/selection/selection.types.d.ts +39 -16
  31. package/cjs/data/table/helpers/table-keyboard.js +3 -0
  32. package/cjs/data/table/helpers/table-keyboard.js.map +1 -1
  33. package/cjs/data/table/hooks/useColumnOptions.d.ts +19 -0
  34. package/cjs/data/table/hooks/useColumnOptions.js +19 -0
  35. package/cjs/data/table/hooks/useColumnOptions.js.map +1 -0
  36. package/cjs/data/table/hooks/useTableExpansion.d.ts +26 -0
  37. package/cjs/data/table/hooks/useTableExpansion.js +68 -0
  38. package/cjs/data/table/hooks/useTableExpansion.js.map +1 -0
  39. package/cjs/data/table/hooks/useTableKeyboardNav.d.ts +2 -1
  40. package/cjs/data/table/hooks/useTableKeyboardNav.js +3 -1
  41. package/cjs/data/table/hooks/useTableKeyboardNav.js.map +1 -1
  42. package/cjs/data/table/hooks/useTableSelection.d.ts +14 -7
  43. package/cjs/data/table/hooks/useTableSelection.js +40 -27
  44. package/cjs/data/table/hooks/useTableSelection.js.map +1 -1
  45. package/cjs/data/table/hooks/useTableSort.d.ts +37 -0
  46. package/cjs/data/table/hooks/useTableSort.js +49 -0
  47. package/cjs/data/table/hooks/useTableSort.js.map +1 -0
  48. package/cjs/data/table/loading-state/DataTableLoadingState.d.ts +6 -2
  49. package/cjs/data/table/loading-state/DataTableLoadingState.js +2 -2
  50. package/cjs/data/table/loading-state/DataTableLoadingState.js.map +1 -1
  51. package/cjs/data/table/root/DataTable.types.d.ts +55 -4
  52. package/cjs/data/table/root/DataTableAuto.d.ts +97 -1
  53. package/cjs/data/table/root/DataTableAuto.js +92 -39
  54. package/cjs/data/table/root/DataTableAuto.js.map +1 -1
  55. package/cjs/data/table/root/DataTableRoot.context.d.ts +22 -1
  56. package/cjs/data/table/root/DataTableRoot.context.js +7 -1
  57. package/cjs/data/table/root/DataTableRoot.context.js.map +1 -1
  58. package/cjs/data/table/root/DataTableRoot.d.ts +0 -6
  59. package/cjs/data/table/root/DataTableRoot.js +5 -4
  60. package/cjs/data/table/root/DataTableRoot.js.map +1 -1
  61. package/cjs/data/table/tbody/DataTableTbody.js +7 -1
  62. package/cjs/data/table/tbody/DataTableTbody.js.map +1 -1
  63. package/cjs/data/table/td/DataTableTd.d.ts +3 -23
  64. package/cjs/data/table/td/DataTableTd.js +3 -7
  65. package/cjs/data/table/td/DataTableTd.js.map +1 -1
  66. package/cjs/data/table/tfoot/DataTableTfoot.js +3 -1
  67. package/cjs/data/table/tfoot/DataTableTfoot.js.map +1 -1
  68. package/cjs/data/table/th/DataTableTh.d.ts +3 -48
  69. package/cjs/data/table/th/DataTableTh.js +3 -57
  70. package/cjs/data/table/th/DataTableTh.js.map +1 -1
  71. package/cjs/data/table/thead/DataTableThead.js +2 -2
  72. package/cjs/data/table/thead/DataTableThead.js.map +1 -1
  73. package/cjs/data/table/tr/DataTableTr.d.ts +8 -0
  74. package/cjs/data/table/tr/DataTableTr.js +131 -9
  75. package/cjs/data/table/tr/DataTableTr.js.map +1 -1
  76. package/cjs/date/datepicker/hooks/useRangeDatepicker.js +1 -1
  77. package/cjs/date/datepicker/hooks/useRangeDatepicker.js.map +1 -1
  78. package/cjs/date/datepicker/parts/DatePicker.DayButton.js +3 -1
  79. package/cjs/date/datepicker/parts/DatePicker.DayButton.js.map +1 -1
  80. package/cjs/date/datepicker/parts/DatePicker.RDP.d.ts +1 -1
  81. package/cjs/date/datepicker/parts/DatePicker.RDP.js +26 -11
  82. package/cjs/date/datepicker/parts/DatePicker.RDP.js.map +1 -1
  83. package/cjs/date/monthpicker/parts/MonthPicker.Button.js +7 -5
  84. package/cjs/date/monthpicker/parts/MonthPicker.Button.js.map +1 -1
  85. package/cjs/date/monthpicker/parts/MonthPicker.Standalone.d.ts +1 -1
  86. package/cjs/dialog/popup/DialogPopupInternal.js +1 -1
  87. package/cjs/dialog/popup/DialogPopupInternal.js.map +1 -1
  88. package/cjs/form/checkbox/CheckboxGroup.context.d.ts +6 -0
  89. package/cjs/form/checkbox/CheckboxGroup.context.js +6 -0
  90. package/cjs/form/checkbox/CheckboxGroup.context.js.map +1 -0
  91. package/cjs/form/checkbox/CheckboxGroup.d.ts +0 -6
  92. package/cjs/form/checkbox/CheckboxGroup.js +8 -8
  93. package/cjs/form/checkbox/CheckboxGroup.js.map +1 -1
  94. package/cjs/form/checkbox/useCheckbox.js +2 -2
  95. package/cjs/form/checkbox/useCheckbox.js.map +1 -1
  96. package/cjs/form/combobox/ComboboxWrapper.js +1 -3
  97. package/cjs/form/combobox/ComboboxWrapper.js.map +1 -1
  98. package/cjs/form/error-summary/ErrorSummary.js +1 -3
  99. package/cjs/form/error-summary/ErrorSummary.js.map +1 -1
  100. package/cjs/form/fieldset/Fieldset.d.ts +0 -4
  101. package/cjs/form/fieldset/Fieldset.js +3 -3
  102. package/cjs/form/fieldset/Fieldset.js.map +1 -1
  103. package/cjs/form/fieldset/useFieldset.d.ts +5 -3
  104. package/cjs/form/fieldset/useFieldset.js +9 -4
  105. package/cjs/form/fieldset/useFieldset.js.map +1 -1
  106. package/cjs/form/radio/RadioGroup.context.d.ts +8 -0
  107. package/cjs/form/radio/RadioGroup.context.js +6 -0
  108. package/cjs/form/radio/RadioGroup.context.js.map +1 -0
  109. package/cjs/form/radio/RadioGroup.d.ts +0 -8
  110. package/cjs/form/radio/RadioGroup.js +10 -10
  111. package/cjs/form/radio/RadioGroup.js.map +1 -1
  112. package/cjs/form/radio/useRadio.js +2 -2
  113. package/cjs/form/radio/useRadio.js.map +1 -1
  114. package/cjs/form/search/Search.js +1 -3
  115. package/cjs/form/search/Search.js.map +1 -1
  116. package/cjs/inline-message/root/InlineMessage.js +2 -5
  117. package/cjs/inline-message/root/InlineMessage.js.map +1 -1
  118. package/cjs/modal/Modal.js +4 -6
  119. package/cjs/modal/Modal.js.map +1 -1
  120. package/cjs/modal/ModalUtils.js +1 -1
  121. package/cjs/modal/ModalUtils.js.map +1 -1
  122. package/cjs/modal/types.d.ts +1 -0
  123. package/cjs/primitives/box/Box.d.ts +1 -1
  124. package/cjs/process/Process.js +1 -5
  125. package/cjs/process/Process.js.map +1 -1
  126. package/cjs/tabs/useTabs.js +3 -7
  127. package/cjs/tabs/useTabs.js.map +1 -1
  128. package/cjs/timeline/Timeline.js +25 -62
  129. package/cjs/timeline/Timeline.js.map +1 -1
  130. package/cjs/timeline/TimelineRow.js +10 -14
  131. package/cjs/timeline/TimelineRow.js.map +1 -1
  132. package/cjs/timeline/hooks/TimelineKeyboardNavProvider.d.ts +16 -0
  133. package/cjs/timeline/hooks/TimelineKeyboardNavProvider.js +179 -0
  134. package/cjs/timeline/hooks/TimelineKeyboardNavProvider.js.map +1 -0
  135. package/cjs/timeline/hooks/usePeriodContext.d.ts +0 -1
  136. package/cjs/timeline/hooks/usePeriodContext.js +0 -1
  137. package/cjs/timeline/hooks/usePeriodContext.js.map +1 -1
  138. package/cjs/timeline/hooks/useRowContext.d.ts +0 -1
  139. package/cjs/timeline/hooks/useRowContext.js +0 -1
  140. package/cjs/timeline/hooks/useRowContext.js.map +1 -1
  141. package/cjs/timeline/hooks/useTimelineContext.d.ts +0 -4
  142. package/cjs/timeline/hooks/useTimelineContext.js +0 -4
  143. package/cjs/timeline/hooks/useTimelineContext.js.map +1 -1
  144. package/cjs/timeline/period/ClickablePeriod.js +6 -20
  145. package/cjs/timeline/period/ClickablePeriod.js.map +1 -1
  146. package/cjs/timeline/period/NonClickablePeriod.js +1 -1
  147. package/cjs/timeline/period/NonClickablePeriod.js.map +1 -1
  148. package/cjs/timeline/pin/PinInternal.js +9 -10
  149. package/cjs/timeline/pin/PinInternal.js.map +1 -1
  150. package/cjs/toggle-group/useToggleGroup.js +1 -1
  151. package/cjs/toggle-group/useToggleGroup.js.map +1 -1
  152. package/cjs/utils/components/HighlightText/HighlightText.js +1 -4
  153. package/cjs/utils/components/HighlightText/HighlightText.js.map +1 -1
  154. package/cjs/utils/components/dismissablelayer/DismissableLayer.js +1 -1
  155. package/cjs/utils/components/dismissablelayer/DismissableLayer.js.map +1 -1
  156. package/cjs/utils/helpers/create-strict-context.js +1 -1
  157. package/cjs/utils/helpers/create-strict-context.js.map +1 -1
  158. package/cjs/utils/hooks/useEventCallback.js +1 -1
  159. package/cjs/utils/hooks/useEventCallback.js.map +1 -1
  160. package/cjs/utils/hooks/useMedia.js +1 -1
  161. package/cjs/utils/hooks/useMedia.js.map +1 -1
  162. package/esm/alert/base-alert/content/BaseAlertContent.js +4 -1
  163. package/esm/alert/base-alert/content/BaseAlertContent.js.map +1 -1
  164. package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.d.ts +3 -1
  165. package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js +38 -19
  166. package/esm/data/drag-and-drop/drag-handler/DragAndDropDragHandler.js.map +1 -1
  167. package/esm/data/drag-and-drop/item/DragAndDropItem.d.ts +3 -2
  168. package/esm/data/drag-and-drop/item/DragAndDropItem.js +6 -4
  169. package/esm/data/drag-and-drop/item/DragAndDropItem.js.map +1 -1
  170. package/esm/data/drag-and-drop/root/DragAndDrop.context.d.ts +2 -2
  171. package/esm/data/drag-and-drop/root/DragAndDropRoot.d.ts +7 -32
  172. package/esm/data/drag-and-drop/root/DragAndDropRoot.js +74 -47
  173. package/esm/data/drag-and-drop/root/DragAndDropRoot.js.map +1 -1
  174. package/esm/data/drag-and-drop/types.d.ts +4 -0
  175. package/esm/data/table/base-cell/DataTableBaseCell.d.ts +46 -0
  176. package/esm/data/table/base-cell/DataTableBaseCell.js +27 -0
  177. package/esm/data/table/base-cell/DataTableBaseCell.js.map +1 -0
  178. package/esm/data/table/column-header/DataTableColumnHeader.d.ts +31 -0
  179. package/esm/data/table/column-header/DataTableColumnHeader.js +71 -0
  180. package/esm/data/table/column-header/DataTableColumnHeader.js.map +1 -0
  181. package/esm/data/table/column-header/useTableColumnResize.js.map +1 -0
  182. package/esm/data/table/empty-state/DataTableEmptyState.d.ts +6 -2
  183. package/esm/data/table/empty-state/DataTableEmptyState.js +2 -2
  184. package/esm/data/table/empty-state/DataTableEmptyState.js.map +1 -1
  185. package/esm/data/table/helpers/selection/getMultipleSelectProps.d.ts +7 -7
  186. package/esm/data/table/helpers/selection/getMultipleSelectProps.js +29 -28
  187. package/esm/data/table/helpers/selection/getMultipleSelectProps.js.map +1 -1
  188. package/esm/data/table/helpers/selection/getSingleSelectProps.d.ts +5 -3
  189. package/esm/data/table/helpers/selection/getSingleSelectProps.js +8 -12
  190. package/esm/data/table/helpers/selection/getSingleSelectProps.js.map +1 -1
  191. package/esm/data/table/helpers/selection/selection.types.d.ts +39 -16
  192. package/esm/data/table/helpers/table-keyboard.js +3 -0
  193. package/esm/data/table/helpers/table-keyboard.js.map +1 -1
  194. package/esm/data/table/hooks/useColumnOptions.d.ts +19 -0
  195. package/esm/data/table/hooks/useColumnOptions.js +17 -0
  196. package/esm/data/table/hooks/useColumnOptions.js.map +1 -0
  197. package/esm/data/table/hooks/useTableExpansion.d.ts +26 -0
  198. package/esm/data/table/hooks/useTableExpansion.js +31 -0
  199. package/esm/data/table/hooks/useTableExpansion.js.map +1 -0
  200. package/esm/data/table/hooks/useTableKeyboardNav.d.ts +2 -1
  201. package/esm/data/table/hooks/useTableKeyboardNav.js +4 -2
  202. package/esm/data/table/hooks/useTableKeyboardNav.js.map +1 -1
  203. package/esm/data/table/hooks/useTableSelection.d.ts +14 -7
  204. package/esm/data/table/hooks/useTableSelection.js +40 -29
  205. package/esm/data/table/hooks/useTableSelection.js.map +1 -1
  206. package/esm/data/table/hooks/useTableSort.d.ts +37 -0
  207. package/esm/data/table/hooks/useTableSort.js +47 -0
  208. package/esm/data/table/hooks/useTableSort.js.map +1 -0
  209. package/esm/data/table/loading-state/DataTableLoadingState.d.ts +6 -2
  210. package/esm/data/table/loading-state/DataTableLoadingState.js +2 -2
  211. package/esm/data/table/loading-state/DataTableLoadingState.js.map +1 -1
  212. package/esm/data/table/root/DataTable.types.d.ts +55 -4
  213. package/esm/data/table/root/DataTableAuto.d.ts +97 -1
  214. package/esm/data/table/root/DataTableAuto.js +94 -41
  215. package/esm/data/table/root/DataTableAuto.js.map +1 -1
  216. package/esm/data/table/root/DataTableRoot.context.d.ts +22 -1
  217. package/esm/data/table/root/DataTableRoot.context.js +5 -1
  218. package/esm/data/table/root/DataTableRoot.context.js.map +1 -1
  219. package/esm/data/table/root/DataTableRoot.d.ts +0 -6
  220. package/esm/data/table/root/DataTableRoot.js +6 -5
  221. package/esm/data/table/root/DataTableRoot.js.map +1 -1
  222. package/esm/data/table/tbody/DataTableTbody.js +8 -2
  223. package/esm/data/table/tbody/DataTableTbody.js.map +1 -1
  224. package/esm/data/table/td/DataTableTd.d.ts +3 -23
  225. package/esm/data/table/td/DataTableTd.js +3 -7
  226. package/esm/data/table/td/DataTableTd.js.map +1 -1
  227. package/esm/data/table/tfoot/DataTableTfoot.js +3 -1
  228. package/esm/data/table/tfoot/DataTableTfoot.js.map +1 -1
  229. package/esm/data/table/th/DataTableTh.d.ts +3 -48
  230. package/esm/data/table/th/DataTableTh.js +4 -58
  231. package/esm/data/table/th/DataTableTh.js.map +1 -1
  232. package/esm/data/table/thead/DataTableThead.js +2 -2
  233. package/esm/data/table/thead/DataTableThead.js.map +1 -1
  234. package/esm/data/table/tr/DataTableTr.d.ts +8 -0
  235. package/esm/data/table/tr/DataTableTr.js +134 -12
  236. package/esm/data/table/tr/DataTableTr.js.map +1 -1
  237. package/esm/date/datepicker/hooks/useRangeDatepicker.js +1 -1
  238. package/esm/date/datepicker/hooks/useRangeDatepicker.js.map +1 -1
  239. package/esm/date/datepicker/parts/DatePicker.DayButton.js +3 -1
  240. package/esm/date/datepicker/parts/DatePicker.DayButton.js.map +1 -1
  241. package/esm/date/datepicker/parts/DatePicker.RDP.d.ts +1 -1
  242. package/esm/date/datepicker/parts/DatePicker.RDP.js +27 -12
  243. package/esm/date/datepicker/parts/DatePicker.RDP.js.map +1 -1
  244. package/esm/date/monthpicker/parts/MonthPicker.Button.js +7 -5
  245. package/esm/date/monthpicker/parts/MonthPicker.Button.js.map +1 -1
  246. package/esm/date/monthpicker/parts/MonthPicker.Standalone.d.ts +1 -1
  247. package/esm/dialog/popup/DialogPopupInternal.js +1 -1
  248. package/esm/dialog/popup/DialogPopupInternal.js.map +1 -1
  249. package/esm/form/checkbox/CheckboxGroup.context.d.ts +6 -0
  250. package/esm/form/checkbox/CheckboxGroup.context.js +3 -0
  251. package/esm/form/checkbox/CheckboxGroup.context.js.map +1 -0
  252. package/esm/form/checkbox/CheckboxGroup.d.ts +0 -6
  253. package/esm/form/checkbox/CheckboxGroup.js +8 -8
  254. package/esm/form/checkbox/CheckboxGroup.js.map +1 -1
  255. package/esm/form/checkbox/useCheckbox.js +1 -1
  256. package/esm/form/checkbox/useCheckbox.js.map +1 -1
  257. package/esm/form/combobox/ComboboxWrapper.js +1 -3
  258. package/esm/form/combobox/ComboboxWrapper.js.map +1 -1
  259. package/esm/form/error-summary/ErrorSummary.js +1 -3
  260. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  261. package/esm/form/fieldset/Fieldset.d.ts +0 -4
  262. package/esm/form/fieldset/Fieldset.js +3 -3
  263. package/esm/form/fieldset/Fieldset.js.map +1 -1
  264. package/esm/form/fieldset/useFieldset.d.ts +5 -3
  265. package/esm/form/fieldset/useFieldset.js +10 -5
  266. package/esm/form/fieldset/useFieldset.js.map +1 -1
  267. package/esm/form/radio/RadioGroup.context.d.ts +8 -0
  268. package/esm/form/radio/RadioGroup.context.js +3 -0
  269. package/esm/form/radio/RadioGroup.context.js.map +1 -0
  270. package/esm/form/radio/RadioGroup.d.ts +0 -8
  271. package/esm/form/radio/RadioGroup.js +9 -9
  272. package/esm/form/radio/RadioGroup.js.map +1 -1
  273. package/esm/form/radio/useRadio.js +1 -1
  274. package/esm/form/radio/useRadio.js.map +1 -1
  275. package/esm/form/search/Search.js +1 -3
  276. package/esm/form/search/Search.js.map +1 -1
  277. package/esm/inline-message/root/InlineMessage.js +2 -5
  278. package/esm/inline-message/root/InlineMessage.js.map +1 -1
  279. package/esm/modal/Modal.js +4 -6
  280. package/esm/modal/Modal.js.map +1 -1
  281. package/esm/modal/ModalUtils.js +1 -1
  282. package/esm/modal/ModalUtils.js.map +1 -1
  283. package/esm/modal/types.d.ts +1 -0
  284. package/esm/primitives/box/Box.d.ts +1 -1
  285. package/esm/process/Process.js +1 -5
  286. package/esm/process/Process.js.map +1 -1
  287. package/esm/tabs/useTabs.js +3 -7
  288. package/esm/tabs/useTabs.js.map +1 -1
  289. package/esm/timeline/Timeline.js +26 -63
  290. package/esm/timeline/Timeline.js.map +1 -1
  291. package/esm/timeline/TimelineRow.js +10 -14
  292. package/esm/timeline/TimelineRow.js.map +1 -1
  293. package/esm/timeline/hooks/TimelineKeyboardNavProvider.d.ts +16 -0
  294. package/esm/timeline/hooks/TimelineKeyboardNavProvider.js +141 -0
  295. package/esm/timeline/hooks/TimelineKeyboardNavProvider.js.map +1 -0
  296. package/esm/timeline/hooks/usePeriodContext.d.ts +0 -1
  297. package/esm/timeline/hooks/usePeriodContext.js +0 -1
  298. package/esm/timeline/hooks/usePeriodContext.js.map +1 -1
  299. package/esm/timeline/hooks/useRowContext.d.ts +0 -1
  300. package/esm/timeline/hooks/useRowContext.js +0 -1
  301. package/esm/timeline/hooks/useRowContext.js.map +1 -1
  302. package/esm/timeline/hooks/useTimelineContext.d.ts +0 -4
  303. package/esm/timeline/hooks/useTimelineContext.js +0 -4
  304. package/esm/timeline/hooks/useTimelineContext.js.map +1 -1
  305. package/esm/timeline/period/ClickablePeriod.js +7 -21
  306. package/esm/timeline/period/ClickablePeriod.js.map +1 -1
  307. package/esm/timeline/period/NonClickablePeriod.js +1 -1
  308. package/esm/timeline/period/NonClickablePeriod.js.map +1 -1
  309. package/esm/timeline/pin/PinInternal.js +10 -11
  310. package/esm/timeline/pin/PinInternal.js.map +1 -1
  311. package/esm/toggle-group/useToggleGroup.js +1 -1
  312. package/esm/toggle-group/useToggleGroup.js.map +1 -1
  313. package/esm/utils/components/HighlightText/HighlightText.js +1 -4
  314. package/esm/utils/components/HighlightText/HighlightText.js.map +1 -1
  315. package/esm/utils/components/dismissablelayer/DismissableLayer.js +1 -1
  316. package/esm/utils/components/dismissablelayer/DismissableLayer.js.map +1 -1
  317. package/esm/utils/helpers/create-strict-context.js +1 -1
  318. package/esm/utils/helpers/create-strict-context.js.map +1 -1
  319. package/esm/utils/hooks/useEventCallback.js +1 -1
  320. package/esm/utils/hooks/useEventCallback.js.map +1 -1
  321. package/esm/utils/hooks/useMedia.js +1 -1
  322. package/esm/utils/hooks/useMedia.js.map +1 -1
  323. package/package.json +9 -7
  324. package/src/alert/base-alert/content/BaseAlertContent.tsx +7 -2
  325. package/src/data/drag-and-drop/drag-handler/DragAndDropDragHandler.tsx +69 -29
  326. package/src/data/drag-and-drop/item/DragAndDropItem.tsx +16 -10
  327. package/src/data/drag-and-drop/root/DragAndDrop.context.tsx +2 -2
  328. package/src/data/drag-and-drop/root/DragAndDropRoot.tsx +291 -246
  329. package/src/data/drag-and-drop/types.ts +5 -0
  330. package/src/data/table/base-cell/DataTableBaseCell.tsx +92 -0
  331. package/src/data/table/column-header/DataTableColumnHeader.tsx +180 -0
  332. package/src/data/table/empty-state/DataTableEmptyState.tsx +5 -3
  333. package/src/data/table/helpers/selection/getMultipleSelectProps.ts +47 -43
  334. package/src/data/table/helpers/selection/getSingleSelectProps.ts +13 -14
  335. package/src/data/table/helpers/selection/selection.types.ts +41 -16
  336. package/src/data/table/helpers/table-keyboard.ts +4 -0
  337. package/src/data/table/hooks/__tests__/useTableSelection.test.ts +93 -56
  338. package/src/data/table/hooks/useColumnOptions.ts +48 -0
  339. package/src/data/table/hooks/useTableExpansion.tsx +100 -0
  340. package/src/data/table/hooks/useTableKeyboardNav.ts +7 -5
  341. package/src/data/table/hooks/useTableSelection.ts +77 -46
  342. package/src/data/table/hooks/useTableSort.ts +103 -0
  343. package/src/data/table/loading-state/DataTableLoadingState.tsx +5 -3
  344. package/src/data/table/root/DataTable.types.ts +64 -5
  345. package/src/data/table/root/DataTableAuto.tsx +382 -104
  346. package/src/data/table/root/DataTableRoot.context.ts +30 -1
  347. package/src/data/table/root/DataTableRoot.tsx +14 -11
  348. package/src/data/table/tbody/DataTableTbody.tsx +17 -6
  349. package/src/data/table/td/DataTableTd.tsx +11 -47
  350. package/src/data/table/tfoot/DataTableTfoot.tsx +10 -7
  351. package/src/data/table/th/DataTableTh.tsx +11 -183
  352. package/src/data/table/thead/DataTableThead.tsx +3 -3
  353. package/src/data/table/tr/DataTableTr.tsx +300 -11
  354. package/src/date/datepicker/hooks/useRangeDatepicker.tsx +1 -1
  355. package/src/date/datepicker/parts/DatePicker.DayButton.tsx +2 -1
  356. package/src/date/datepicker/parts/DatePicker.RDP.tsx +34 -15
  357. package/src/date/monthpicker/parts/MonthPicker.Button.tsx +11 -9
  358. package/src/date/monthpicker/parts/MonthPicker.Standalone.tsx +1 -1
  359. package/src/dialog/popup/DialogPopupInternal.tsx +1 -1
  360. package/src/form/checkbox/CheckboxGroup.context.ts +10 -0
  361. package/src/form/checkbox/CheckboxGroup.tsx +18 -28
  362. package/src/form/checkbox/useCheckbox.ts +1 -1
  363. package/src/form/fieldset/Fieldset.tsx +4 -8
  364. package/src/form/fieldset/useFieldset.ts +13 -6
  365. package/src/form/radio/RadioGroup.context.ts +13 -0
  366. package/src/form/radio/RadioGroup.tsx +22 -31
  367. package/src/form/radio/useRadio.ts +1 -1
  368. package/src/inline-message/root/InlineMessage.tsx +3 -13
  369. package/src/modal/Modal.tsx +12 -6
  370. package/src/modal/ModalUtils.ts +1 -1
  371. package/src/modal/types.ts +1 -0
  372. package/src/primitives/box/Box.tsx +1 -1
  373. package/src/tabs/useTabs.ts +3 -7
  374. package/src/timeline/Timeline.tsx +62 -91
  375. package/src/timeline/TimelineRow.tsx +19 -17
  376. package/src/timeline/hooks/TimelineKeyboardNavProvider.tsx +237 -0
  377. package/src/timeline/hooks/usePeriodContext.tsx +0 -2
  378. package/src/timeline/hooks/useRowContext.tsx +0 -2
  379. package/src/timeline/hooks/useTimelineContext.tsx +0 -8
  380. package/src/timeline/period/ClickablePeriod.tsx +8 -19
  381. package/src/timeline/period/NonClickablePeriod.tsx +2 -0
  382. package/src/timeline/pin/PinInternal.tsx +10 -13
  383. package/src/toggle-group/useToggleGroup.ts +1 -1
  384. package/src/utils/components/dismissablelayer/DismissableLayer.tsx +1 -1
  385. package/src/utils/helpers/create-strict-context.tsx +1 -1
  386. package/src/utils/hooks/useEventCallback.ts +1 -1
  387. package/src/utils/hooks/useMedia.ts +1 -1
  388. package/cjs/data/table/th/DataTableThActions.d.ts +0 -5
  389. package/cjs/data/table/th/DataTableThActions.js +0 -23
  390. package/cjs/data/table/th/DataTableThActions.js.map +0 -1
  391. package/cjs/data/table/th/useTableColumnResize.js.map +0 -1
  392. package/cjs/data/table/thead/DataTableThead.context.d.ts +0 -4
  393. package/cjs/data/table/thead/DataTableThead.context.js +0 -45
  394. package/cjs/data/table/thead/DataTableThead.context.js.map +0 -1
  395. package/esm/data/table/th/DataTableThActions.d.ts +0 -5
  396. package/esm/data/table/th/DataTableThActions.js +0 -18
  397. package/esm/data/table/th/DataTableThActions.js.map +0 -1
  398. package/esm/data/table/th/useTableColumnResize.js.map +0 -1
  399. package/esm/data/table/thead/DataTableThead.context.d.ts +0 -4
  400. package/esm/data/table/thead/DataTableThead.context.js +0 -8
  401. package/esm/data/table/thead/DataTableThead.context.js.map +0 -1
  402. package/src/data/table/th/DataTableThActions.tsx +0 -32
  403. package/src/data/table/thead/DataTableThead.context.ts +0 -10
  404. /package/cjs/data/table/{th → column-header}/useTableColumnResize.d.ts +0 -0
  405. /package/cjs/data/table/{th → column-header}/useTableColumnResize.js +0 -0
  406. /package/esm/data/table/{th → column-header}/useTableColumnResize.d.ts +0 -0
  407. /package/esm/data/table/{th → column-header}/useTableColumnResize.js +0 -0
  408. /package/src/data/table/{th → column-header}/useTableColumnResize.ts +0 -0
@@ -1,23 +1,19 @@
1
- function getSingleSelectProps({ selectedKeys, setSelectedKeys, disabledKeys, }) {
1
+ function getSingleSelectProps({ selectedKeysSet, setSelectedKeys, disabledKeysSet, name, }) {
2
2
  const handleSelectionChange = (key) => {
3
- if (selectedKeys.includes(key)) {
4
- setSelectedKeys([]);
5
- }
6
- else {
7
- setSelectedKeys([key]);
3
+ if (disabledKeysSet.has(key)) {
4
+ return;
8
5
  }
6
+ setSelectedKeys([key]);
9
7
  };
10
8
  return {
11
9
  getRowRadioProps: (key) => ({
12
- /* TODO: Add support for label visuallyhidden */
13
- /* children: `Select row with id ${key}`, */
14
- checked: selectedKeys.includes(key),
10
+ checked: selectedKeysSet.has(key),
15
11
  onChange: () => handleSelectionChange(key),
16
- disabled: disabledKeys.includes(key),
12
+ disabled: disabledKeysSet.has(key),
17
13
  value: key,
18
- /* TODO: Make this unique to avoid issue with multipe tables */
19
- name: "data-table-single-select",
14
+ name,
20
15
  }),
16
+ toggleSelection: handleSelectionChange,
21
17
  };
22
18
  }
23
19
  export { getSingleSelectProps };
@@ -1 +1 @@
1
- {"version":3,"file":"getSingleSelectProps.js","sourceRoot":"","sources":["../../../../../src/data/table/helpers/selection/getSingleSelectProps.ts"],"names":[],"mappings":"AAQA,SAAS,oBAAoB,CAAC,EAC5B,YAAY,EACZ,eAAe,EACf,YAAY,GACa;IACzB,MAAM,qBAAqB,GAAG,CAAC,GAAoB,EAAE,EAAE;QACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,eAAe,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,gBAAgB,EAAE,CAAC,GAAoB,EAAmB,EAAE,CAAC,CAAC;YAC5D,gDAAgD;YAChD,4CAA4C;YAC5C,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAC1C,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;YACpC,KAAK,EAAE,GAAG;YACV,+DAA+D;YAC/D,IAAI,EAAE,0BAA0B;SACjC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"getSingleSelectProps.js","sourceRoot":"","sources":["../../../../../src/data/table/helpers/selection/getSingleSelectProps.ts"],"names":[],"mappings":"AASA,SAAS,oBAAoB,CAAC,EAC5B,eAAe,EACf,eAAe,EACf,eAAe,EACf,IAAI,GACqB;IACzB,MAAM,qBAAqB,GAAG,CAAC,GAAoB,EAAE,EAAE;QACrD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO;QACL,gBAAgB,EAAE,CAAC,GAAoB,EAAmB,EAAE,CAAC,CAAC;YAC5D,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;YACjC,QAAQ,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAC1C,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;YAClC,KAAK,EAAE,GAAG;YACV,IAAI;SACL,CAAC;QACF,eAAe,EAAE,qBAAqB;KACvC,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { CheckboxInputProps } from "../../../../form/checkbox/checkbox-input/CheckboxInput.js";
2
2
  import type { RadioInputProps } from "../../../../form/radio/radio-input/RadioInput.js";
3
- type SelectionT = (string | number)[] | "all";
3
+ type SelectedKeysT = (string | number)[];
4
4
  type SelectionProps = {
5
5
  /**
6
6
  * Enables selection of rows.
@@ -12,31 +12,54 @@ type SelectionProps = {
12
12
  * @default "none"
13
13
  */
14
14
  selectionMode?: "none" | "single" | "multiple";
15
- selectedKeys?: SelectionT;
16
- defaultSelectedKeys?: SelectionT;
17
- onSelectionChange?: (keys: SelectionT) => void;
18
- disabledKeys?: (string | number)[];
15
+ /**
16
+ * Controlled selected keys. Should be used in conjunction with `onSelectionChange`.
17
+ */
18
+ selectedKeys?: SelectedKeysT;
19
+ /**
20
+ * Default selected keys when using uncontrolled selection. Should not be used together with `selectedKeys`.
21
+ */
22
+ defaultSelectedKeys?: SelectedKeysT;
23
+ /**
24
+ * Callback with array of selected keys.
25
+ */
26
+ onSelectionChange?: (keys: SelectedKeysT) => void;
27
+ /**
28
+ * Keys that should be disabled for selection. These keys will not be selectable and will be styled as disabled.
29
+ *
30
+ *
31
+ * TODO: Consider making this optionally a callback with (rowData:T) => boolean, to allow for more dynamic disabling of selection based on row data.
32
+ */
33
+ disabledSelectionKeys?: SelectedKeysT;
34
+ /**
35
+ * If true, stops clicking a row from toggling its selection state. This can be used if you want to only allow selection through the checkboxes/radios, and not have the entire row be clickable for selection.
36
+ *
37
+ * @default false
38
+ */
39
+ disableRowSelectionOnClick?: boolean;
19
40
  };
20
41
  type NoneSelection = {
21
42
  selectionMode: "none";
22
- allKeys: (string | number)[];
23
- selectedKeys: (string | number)[];
24
- disabledKeys: (string | number)[];
43
+ selectedKeys: SelectedKeysT;
44
+ disabledSelectionKeys: SelectedKeysT;
25
45
  };
26
46
  type SingleSelection = {
27
47
  selectionMode: "single";
28
- allKeys: (string | number)[];
29
- selectedKeys: (string | number)[];
30
- disabledKeys: (string | number)[];
48
+ selectedKeys: SelectedKeysT;
49
+ disabledSelectionKeys: SelectedKeysT;
31
50
  getRowRadioProps: (key: string | number) => RadioInputProps;
51
+ toggleSelection: (key: string | number) => void;
32
52
  };
33
53
  type MultipleSelection = {
34
54
  selectionMode: "multiple";
35
- allKeys: (string | number)[];
36
- selectedKeys: SelectionT;
37
- disabledKeys: (string | number)[];
55
+ selectedKeys: SelectedKeysT;
56
+ disabledSelectionKeys: SelectedKeysT;
38
57
  getTheadCheckboxProps: () => CheckboxInputProps;
39
58
  getRowCheckboxProps: (key: string | number) => CheckboxInputProps;
59
+ toggleSelection: (key: string | number) => void;
60
+ };
61
+ type TableSelectionBase = {
62
+ isRowSelected: (rowId: string | number) => boolean;
40
63
  };
41
- type TableSelection = NoneSelection | SingleSelection | MultipleSelection;
42
- export type { MultipleSelection, NoneSelection, SelectionProps, SelectionT, SingleSelection, TableSelection, };
64
+ type TableSelection = TableSelectionBase & (NoneSelection | SingleSelection | MultipleSelection);
65
+ export type { MultipleSelection, NoneSelection, SelectionProps, SingleSelection, TableSelection, SelectedKeysT, };
@@ -47,6 +47,9 @@ function shouldBlockNavigation(event) {
47
47
  if (!el) {
48
48
  return false;
49
49
  }
50
+ if (el.dataset.disableKeyboardNav === "true") {
51
+ return true;
52
+ }
50
53
  if (el.isContentEditable) {
51
54
  return true;
52
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"table-keyboard.js","sourceRoot":"","sources":["../../../../src/data/table/helpers/table-keyboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-keyboard.js","sourceRoot":"","sources":["../../../../src/data/table/helpers/table-keyboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ColumnDefinition, ColumnDefinitions } from "../root/DataTable.types.js";
2
+ import type { SelectionProps } from "./useTableSelection.js";
3
+ type UseColumnOptions = {
4
+ stickyColumns?: {
5
+ first?: "1";
6
+ last?: "1";
7
+ };
8
+ selectionMode: SelectionProps["selectionMode"];
9
+ };
10
+ type UseColumnOptionsResult<T> = {
11
+ columns: {
12
+ isSticky: "start" | "end" | false;
13
+ colDef: ColumnDefinition<T>;
14
+ }[];
15
+ stickySelection: boolean;
16
+ };
17
+ declare function useColumnOptions<T>(columnDefinitions: ColumnDefinitions<T>, options: UseColumnOptions): UseColumnOptionsResult<T>;
18
+ export { useColumnOptions };
19
+ export type { UseColumnOptionsResult };
@@ -0,0 +1,17 @@
1
+ function useColumnOptions(columnDefinitions, options) {
2
+ const { stickyColumns, selectionMode } = options;
3
+ const hasSelection = selectionMode !== "none";
4
+ return {
5
+ stickySelection: selectionMode !== "none" && (stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.first) === "1",
6
+ columns: columnDefinitions.map((colDef, index) => {
7
+ const isFirstSticky = (stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.first) === "1" && index === 0 && !hasSelection;
8
+ const isLastSticky = (stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.last) === "1" && index === columnDefinitions.length - 1;
9
+ return {
10
+ isSticky: isFirstSticky ? "start" : isLastSticky ? "end" : false,
11
+ colDef,
12
+ };
13
+ }),
14
+ };
15
+ }
16
+ export { useColumnOptions };
17
+ //# sourceMappingURL=useColumnOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnOptions.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useColumnOptions.ts"],"names":[],"mappings":"AAsBA,SAAS,gBAAgB,CACvB,iBAAuC,EACvC,OAAyB;IAEzB,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEjD,MAAM,YAAY,GAAG,aAAa,KAAK,MAAM,CAAC;IAE9C,OAAO;QACL,eAAe,EAAE,aAAa,KAAK,MAAM,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,MAAK,GAAG;QACzE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC/C,MAAM,aAAa,GACjB,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,MAAK,GAAG,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;YAC/D,MAAM,YAAY,GAChB,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,MAAK,GAAG,IAAI,KAAK,KAAK,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;YAExE,OAAO;gBACL,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;gBAChE,MAAM;aACP,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ type DataTableExpansionContextT = {
3
+ expandedIds: (string | number)[];
4
+ isExpanded: (id: string | number) => boolean;
5
+ toggleExpansion: (id: string | number) => void;
6
+ toggleAll: () => void;
7
+ isAllExpanded: boolean;
8
+ getDetailsPanelContent?: (row: unknown) => React.ReactNode;
9
+ getDetailsPanelHeight?: (row: unknown) => number | "auto";
10
+ showExpandAll?: boolean;
11
+ enableExpansion: boolean;
12
+ };
13
+ declare const useDataTableExpansion: <S extends boolean = true>(strict?: S | undefined) => S extends true ? DataTableExpansionContextT : DataTableExpansionContextT | undefined;
14
+ type TableExpansionOptions<T> = {
15
+ detailsPanelRowIds?: (string | number)[];
16
+ defaultDetailsPanelRowIds?: (string | number)[];
17
+ onDetailsPanelChange?: (ids: (string | number)[]) => void;
18
+ allRowKeys: (string | number)[];
19
+ getDetailsPanelContent?: (row: T) => React.ReactNode;
20
+ getDetailsPanelHeight?: (row: T) => number | "auto";
21
+ showExpandAll?: boolean;
22
+ };
23
+ declare function DataTableExpansionProvider<T>({ children, detailsPanelRowIds, defaultDetailsPanelRowIds, onDetailsPanelChange, allRowKeys, getDetailsPanelContent, getDetailsPanelHeight, showExpandAll, }: TableExpansionOptions<T> & {
24
+ children: React.ReactNode;
25
+ }): React.JSX.Element;
26
+ export { DataTableExpansionProvider, useDataTableExpansion };
@@ -0,0 +1,31 @@
1
+ import React, { useCallback } from "react";
2
+ import { createStrictContext } from "../../../utils/helpers/index.js";
3
+ import { useControllableState } from "../../../utils/hooks/index.js";
4
+ const { Provider: DataTableExpansionContextProvider, useContext: useDataTableExpansion, } = createStrictContext({
5
+ name: "DataTableExpansionContext",
6
+ errorMessage: "useDataTableExpansion must be used within a DataTableExpansionProvider.",
7
+ });
8
+ function DataTableExpansionProvider({ children, detailsPanelRowIds, defaultDetailsPanelRowIds = [], onDetailsPanelChange, allRowKeys, getDetailsPanelContent, getDetailsPanelHeight, showExpandAll = false, }) {
9
+ const [expandedIds, setExpandedIds] = useControllableState({
10
+ value: detailsPanelRowIds,
11
+ defaultValue: defaultDetailsPanelRowIds,
12
+ });
13
+ const isExpanded = useCallback((id) => expandedIds.includes(id), [expandedIds]);
14
+ const toggleExpansion = useCallback((id) => {
15
+ const next = expandedIds.includes(id)
16
+ ? expandedIds.filter((eid) => eid !== id)
17
+ : [...expandedIds, id];
18
+ setExpandedIds(next);
19
+ onDetailsPanelChange === null || onDetailsPanelChange === void 0 ? void 0 : onDetailsPanelChange(next);
20
+ }, [expandedIds, setExpandedIds, onDetailsPanelChange]);
21
+ const isAllExpanded = allRowKeys.length > 0 &&
22
+ allRowKeys.every((key) => expandedIds.includes(key));
23
+ const toggleAll = useCallback(() => {
24
+ const next = isAllExpanded ? [] : [...allRowKeys];
25
+ setExpandedIds(next);
26
+ onDetailsPanelChange === null || onDetailsPanelChange === void 0 ? void 0 : onDetailsPanelChange(next);
27
+ }, [isAllExpanded, allRowKeys, setExpandedIds, onDetailsPanelChange]);
28
+ return (React.createElement(DataTableExpansionContextProvider, { expandedIds: expandedIds, isExpanded: isExpanded, toggleExpansion: toggleExpansion, toggleAll: toggleAll, isAllExpanded: isAllExpanded, getDetailsPanelContent: getDetailsPanelContent, getDetailsPanelHeight: getDetailsPanelHeight, showExpandAll: showExpandAll, enableExpansion: !!getDetailsPanelContent }, children));
29
+ }
30
+ export { DataTableExpansionProvider, useDataTableExpansion };
31
+ //# sourceMappingURL=useTableExpansion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableExpansion.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableExpansion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAc5D,MAAM,EACJ,QAAQ,EAAE,iCAAiC,EAC3C,UAAU,EAAE,qBAAqB,GAClC,GAAG,mBAAmB,CAA6B;IAClD,IAAI,EAAE,2BAA2B;IACjC,YAAY,EACV,yEAAyE;CAC5E,CAAC,CAAC;AAYH,SAAS,0BAA0B,CAAI,EACrC,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,GAAG,EAAE,EAC9B,oBAAoB,EACpB,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,GAAG,KAAK,GACoC;IACzD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,oBAAoB,CAAC;QACzD,KAAK,EAAE,kBAAkB;QACzB,YAAY,EAAE,yBAAyB;KACxC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,EAAmB,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EACjD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,EAAmB,EAAE,EAAE;QACtB,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC;QACzB,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,IAAI,CAAC,CAAC;IAC/B,CAAC,EACD,CAAC,WAAW,EAAE,cAAc,EAAE,oBAAoB,CAAC,CACpD,CAAC;IAEF,MAAM,aAAa,GACjB,UAAU,CAAC,MAAM,GAAG,CAAC;QACrB,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAClD,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,IAAI,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEtE,OAAO,CACL,oBAAC,iCAAiC,IAChC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,sBAAsB,EACpB,sBAEa,EAEf,qBAAqB,EACnB,qBAAwE,EAE1E,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,CAAC,CAAC,sBAAsB,IAExC,QAAQ,CACyB,CACrC,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,CAAC"}
@@ -6,8 +6,9 @@ type UseTableKeyboardNavOptions = {
6
6
  */
7
7
  shouldBlockNavigation?: (event: KeyboardEvent) => boolean;
8
8
  };
9
- declare function useTableKeyboardNav(tableRef: HTMLTableElement | null, { enabled, shouldBlockNavigation: customBlockFn }: UseTableKeyboardNavOptions): {
9
+ declare function useTableKeyboardNav({ enabled, shouldBlockNavigation: customBlockFn, }: UseTableKeyboardNavOptions): {
10
10
  tabIndex: number | undefined;
11
+ setTableRef: import("react").Dispatch<import("react").SetStateAction<HTMLTableElement | null>>;
11
12
  };
12
13
  export { useTableKeyboardNav };
13
14
  export type { UseTableKeyboardNavOptions };
@@ -1,11 +1,12 @@
1
- import { useEffect } from "react";
1
+ import { useEffect, useState } from "react";
2
2
  import { useEventCallback } from "../../../utils/hooks/index.js";
3
3
  import { focusInitialTableTarget } from "../helpers/table-cell.js";
4
4
  import { focusCellAndUpdateTabIndex } from "../helpers/table-focus.js";
5
5
  import { findFirstCell, findFirstCellInRow, findLastCell, findLastCellInRow, findNextFocusableCell, } from "../helpers/table-grid-nav.js";
6
6
  import { getNavigationAction, shouldBlockNavigation, } from "../helpers/table-keyboard.js";
7
7
  import { useGridCache } from "./useGridCache.js";
8
- function useTableKeyboardNav(tableRef, { enabled, shouldBlockNavigation: customBlockFn }) {
8
+ function useTableKeyboardNav({ enabled, shouldBlockNavigation: customBlockFn, }) {
9
+ const [tableRef, setTableRef] = useState(null);
9
10
  const { getTableGrid, activeCell, setActiveCell } = useGridCache(tableRef, enabled);
10
11
  /**
11
12
  * Executes a navigation action and returns the target cell.
@@ -117,6 +118,7 @@ function useTableKeyboardNav(tableRef, { enabled, shouldBlockNavigation: customB
117
118
  return {
118
119
  /* Table should only have tabIndex until the focus is moved inside and is enabled */
119
120
  tabIndex: enabled ? (activeCell ? undefined : 0) : undefined,
121
+ setTableRef,
120
122
  };
121
123
  }
122
124
  export { useTableKeyboardNav };
@@ -1 +1 @@
1
- {"version":3,"file":"useTableKeyboardNav.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableKeyboardNav.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTableKeyboardNav.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableKeyboardNav.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,15 @@
1
- import type { SelectionProps, SelectionT, TableSelection } from "../helpers/selection/selection.types.js";
2
- type UseTableSelectionArgs<T> = SelectionProps & {
3
- data: T[];
4
- getRowId: (rowData: T, index: number) => string | number;
1
+ import type { SelectionProps, TableSelection } from "../helpers/selection/selection.types.js";
2
+ type UseTableSelectionArgs = SelectionProps & {
3
+ allRowKeys: (string | number)[];
5
4
  };
6
- declare function useTableSelection<T>({ selectionMode, defaultSelectedKeys, selectedKeys: selectedKeysProp, onSelectionChange, disabledKeys, data, getRowId, }: UseTableSelectionArgs<T>): TableSelection;
7
- export { useTableSelection };
8
- export type { SelectionProps, SelectionT };
5
+ type UseTableSelectionReturn = {
6
+ selection: TableSelection;
7
+ renderSelection: boolean;
8
+ };
9
+ declare function useTableSelection({ selectionMode, defaultSelectedKeys, selectedKeys: selectedKeysProp, onSelectionChange, disabledSelectionKeys, allRowKeys, }: UseTableSelectionArgs): UseTableSelectionReturn;
10
+ /**
11
+ * TODO: Only temp needed to keep Root happy
12
+ */
13
+ declare const noSelectionState: UseTableSelectionReturn;
14
+ export { useTableSelection, noSelectionState };
15
+ export type { SelectionProps, UseTableSelectionReturn };
@@ -1,47 +1,58 @@
1
- import { useMemo } from "react";
1
+ import { useCallback, useMemo } from "react";
2
+ import { useId } from "../../../utils-external/index.js";
2
3
  import { useControllableState } from "../../../utils/hooks/index.js";
3
4
  import { getMultipleSelectProps } from "../helpers/selection/getMultipleSelectProps.js";
4
5
  import { getSingleSelectProps } from "../helpers/selection/getSingleSelectProps.js";
5
- function useTableSelection({ selectionMode = "none", defaultSelectedKeys, selectedKeys: selectedKeysProp, onSelectionChange, disabledKeys = [], data, getRowId, }) {
6
- const allKeys = useMemo(() => data.map((item, index) => getRowId(item, index)), [data, getRowId]);
6
+ function useTableSelection({ selectionMode = "none", defaultSelectedKeys, selectedKeys: selectedKeysProp, onSelectionChange, disabledSelectionKeys = [], allRowKeys, }) {
7
+ const radioGroupName = useId();
7
8
  const [selectedKeys, setSelectedKeys] = useControllableState({
8
9
  value: selectionMode !== "none" ? selectedKeysProp : undefined,
9
10
  defaultValue: defaultSelectedKeys !== null && defaultSelectedKeys !== void 0 ? defaultSelectedKeys : [],
10
11
  onChange: onSelectionChange,
11
12
  });
13
+ const selectedKeysSet = useMemo(() => new Set(selectedKeys), [selectedKeys]);
14
+ const disabledKeysSet = useMemo(() => new Set(disabledSelectionKeys), [disabledSelectionKeys]);
15
+ const isRowSelected = useCallback((rowId) => selectedKeysSet.has(rowId), [selectedKeysSet]);
16
+ const baseSelection = { selectedKeys, disabledSelectionKeys, isRowSelected };
12
17
  if (selectionMode === "none") {
13
- return { selectionMode, allKeys, selectedKeys: [], disabledKeys };
18
+ return {
19
+ selection: Object.assign(Object.assign({ selectionMode }, baseSelection), { selectedKeys: [] }),
20
+ renderSelection: false,
21
+ };
14
22
  }
15
23
  if (selectionMode === "single") {
16
- const arrayKeys = Array.isArray(selectedKeys) ? selectedKeys : [];
17
- const { getRowRadioProps } = getSingleSelectProps({
18
- selectedKeys: arrayKeys,
19
- setSelectedKeys,
20
- disabledKeys,
21
- });
22
24
  return {
23
- selectionMode,
24
- allKeys,
25
- selectedKeys: arrayKeys,
26
- disabledKeys,
27
- getRowRadioProps,
25
+ selection: Object.assign(Object.assign({ selectionMode }, baseSelection), getSingleSelectProps({
26
+ selectedKeysSet,
27
+ setSelectedKeys,
28
+ disabledKeysSet,
29
+ name: radioGroupName,
30
+ })),
31
+ renderSelection: allRowKeys.length !== 0,
28
32
  };
29
33
  }
30
- const { getTheadCheckboxProps, getRowCheckboxProps } = getMultipleSelectProps({
31
- selectedKeys,
32
- setSelectedKeys,
33
- disabledKeys,
34
- allKeys,
35
- totalCount: data.length,
36
- });
37
34
  return {
38
- selectionMode,
39
- allKeys,
40
- selectedKeys,
41
- disabledKeys,
42
- getTheadCheckboxProps,
43
- getRowCheckboxProps,
35
+ selection: Object.assign(Object.assign({ selectionMode }, baseSelection), getMultipleSelectProps({
36
+ selectedKeysSet,
37
+ selectedKeys,
38
+ setSelectedKeys,
39
+ disabledKeysSet,
40
+ allRowKeys,
41
+ })),
42
+ renderSelection: allRowKeys.length !== 0,
44
43
  };
45
44
  }
46
- export { useTableSelection };
45
+ /**
46
+ * TODO: Only temp needed to keep Root happy
47
+ */
48
+ const noSelectionState = {
49
+ selection: {
50
+ selectionMode: "none",
51
+ selectedKeys: [],
52
+ disabledSelectionKeys: [],
53
+ isRowSelected: () => false,
54
+ },
55
+ renderSelection: false,
56
+ };
57
+ export { useTableSelection, noSelectionState };
47
58
  //# sourceMappingURL=useTableSelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTableSelection.js","sourceRoot":"","sources":["../../../../src/data/table/hooks/useTableSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAYjF,SAAS,iBAAiB,CAAI,EAC5B,aAAa,GAAG,MAAM,EACtB,mBAAmB,EACnB,YAAY,EAAE,gBAAgB,EAC9B,iBAAiB,EACjB,YAAY,GAAG,EAAE,EACjB,IAAI,EACJ,QAAQ,GACiB;IACzB,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EACtD,CAAC,IAAI,EAAE,QAAQ,CAAC,CACjB,CAAC;IAEF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,oBAAoB,CAAa;QACvE,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,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;IACpE,CAAC;IAED,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,CAAC;YAChD,YAAY,EAAE,SAAS;YACvB,eAAe;YACf,YAAY;SACb,CAAC,CAAC;QAEH,OAAO;YACL,aAAa;YACb,OAAO;YACP,YAAY,EAAE,SAAS;YACvB,YAAY;YACZ,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,sBAAsB,CAC3E;QACE,YAAY;QACZ,eAAe;QACf,YAAY;QACZ,OAAO;QACP,UAAU,EAAE,IAAI,CAAC,MAAM;KACxB,CACF,CAAC;IAEF,OAAO;QACL,aAAa;QACb,OAAO;QACP,YAAY;QACZ,YAAY;QACZ,qBAAqB;QACrB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,iBAAiB,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,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;AAiBjF,SAAS,iBAAiB,CAAC,EACzB,aAAa,GAAG,MAAM,EACtB,mBAAmB,EACnB,YAAY,EAAE,gBAAgB,EAC9B,iBAAiB,EACjB,qBAAqB,GAAG,EAAE,EAC1B,UAAU,GACY;IACtB,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,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,eAAe,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,gCACP,aAAa,IACV,aAAa,GACb,sBAAsB,CAAC;YACxB,eAAe;YACf,YAAY;YACZ,eAAe;YACf,eAAe;YACf,UAAU;SACX,CAAC,CACH;QACD,eAAe,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC;KACzC,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,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { SortChangeDetail, SortEntry } from "../root/DataTable.types.js";
2
+ type TableSortOptions = {
3
+ /**
4
+ * Current sort state. Each entry represents a sorted column.
5
+ * Columns not present in the array are unsorted.
6
+ * Supports multi-column sorting when multiple entries are provided.
7
+ *
8
+ * When provided, the component is controlled — you must also handle `onSortChange`.
9
+ * For uncontrolled usage, use `defaultSort` instead.
10
+ */
11
+ sort?: SortEntry[];
12
+ /**
13
+ * Initial sort state for uncontrolled usage.
14
+ * Use `sort` + `onSortChange` for controlled usage.
15
+ * @default []
16
+ */
17
+ defaultSort?: SortEntry[];
18
+ /**
19
+ * Called when the user clicks a sortable column header.
20
+ * - `sort` — the full updated sort array after cycling: unsorted → asc → desc → unsorted.
21
+ * - `detail` — the specific column that changed, including its new direction (`"none"` means removed).
22
+ */
23
+ onSortChange?: (sort: SortEntry[], detail: SortChangeDetail) => void;
24
+ };
25
+ type UseTableSortResults = {
26
+ /**
27
+ * Handler for when a sortable column header is clicked. Pass the column's `id` as an argument.
28
+ */
29
+ onSortClick: (columnId: string, event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
30
+ /**
31
+ * The current sort state, to be passed to the table header for rendering sort indicators.
32
+ */
33
+ sortState: SortEntry[];
34
+ };
35
+ declare function useTableSort(options: TableSortOptions): UseTableSortResults;
36
+ export { useTableSort };
37
+ export type { TableSortOptions };
@@ -0,0 +1,47 @@
1
+ import { useCallback } from "react";
2
+ import { useControllableState } from "../../../utils/hooks/index.js";
3
+ function useTableSort(options) {
4
+ const { defaultSort = [], onSortChange, sort: sortOption } = options;
5
+ const [sort, setSort] = useControllableState({
6
+ value: sortOption,
7
+ defaultValue: defaultSort,
8
+ });
9
+ const handleSortClick = useCallback((id, event) => {
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
+ }
14
+ return;
15
+ }
16
+ const cumulative = event.shiftKey;
17
+ const base = cumulative ? sort : sort.filter((s) => s.columnId === id);
18
+ const { next, detail } = nextSortEntries(base, id);
19
+ setSort(next);
20
+ onSortChange === null || onSortChange === void 0 ? void 0 : onSortChange(next, detail);
21
+ }, [onSortChange, setSort, sort]);
22
+ return {
23
+ onSortClick: handleSortClick,
24
+ sortState: sort,
25
+ };
26
+ }
27
+ function nextSortEntries(current, columnId) {
28
+ const existing = current.find((s) => s.columnId === columnId);
29
+ if (!existing) {
30
+ return {
31
+ next: [...current, { columnId, direction: "asc" }],
32
+ detail: { columnId, direction: "asc" },
33
+ };
34
+ }
35
+ if (existing.direction === "asc") {
36
+ return {
37
+ next: current.map((s) => s.columnId === columnId ? Object.assign(Object.assign({}, s), { direction: "desc" }) : s),
38
+ detail: { columnId, direction: "desc" },
39
+ };
40
+ }
41
+ return {
42
+ next: current.filter((s) => s.columnId !== columnId),
43
+ detail: { columnId, direction: "none" },
44
+ };
45
+ }
46
+ export { useTableSort };
47
+ //# sourceMappingURL=useTableSort.js.map
@@ -0,0 +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,5 +1,9 @@
1
1
  import React from "react";
2
- type DataTableLoadingStateProps = React.HTMLAttributes<HTMLDivElement>;
3
- declare const DataTableLoadingState: React.ForwardRefExoticComponent<DataTableLoadingStateProps & React.RefAttributes<HTMLDivElement>>;
2
+ type DataTableLoadingStateProps = React.HTMLAttributes<HTMLDivElement> & {
3
+ colSpan?: number;
4
+ };
5
+ declare const DataTableLoadingState: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
6
+ colSpan?: number;
7
+ } & React.RefAttributes<HTMLDivElement>>;
4
8
  export { DataTableLoadingState };
5
9
  export type { DataTableLoadingStateProps };
@@ -12,9 +12,9 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  import React, { forwardRef } from "react";
13
13
  import { cl } from "../../../utils/helpers/index.js";
14
14
  const DataTableLoadingState = forwardRef((_a, forwardedRef) => {
15
- var { className, children } = _a, rest = __rest(_a, ["className", "children"]);
15
+ var { className, children, colSpan = 999 } = _a, rest = __rest(_a, ["className", "children", "colSpan"]);
16
16
  return (React.createElement("tr", null,
17
- React.createElement("td", { colSpan: 999 },
17
+ React.createElement("td", { colSpan: colSpan },
18
18
  React.createElement("div", Object.assign({}, rest, { ref: forwardedRef, className: cl("aksel-data-table__loading-state", className) }), children))));
19
19
  });
20
20
  export { DataTableLoadingState };
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableLoadingState.js","sourceRoot":"","sources":["../../../../src/data/table/loading-state/DataTableLoadingState.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAI5C,MAAM,qBAAqB,GAAG,UAAU,CAGtC,CAAC,EAAgC,EAAE,YAAY,EAAE,EAAE;QAAlD,EAAE,SAAS,EAAE,QAAQ,OAAW,EAAN,IAAI,cAA9B,yBAAgC,CAAF;IAC/B,OAAO,CACL;QACE,4BAAI,OAAO,EAAE,GAAG;YACd,6CACM,IAAI,IACR,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,KAE1D,QAAQ,CACL,CACH,CACF,CACN,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"DataTableLoadingState.js","sourceRoot":"","sources":["../../../../src/data/table/loading-state/DataTableLoadingState.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAM5C,MAAM,qBAAqB,GAAG,UAAU,CAGtC,CAAC,EAA+C,EAAE,YAAY,EAAE,EAAE;QAAjE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,GAAG,OAAW,EAAN,IAAI,cAA7C,oCAA+C,CAAF;IAC9C,OAAO,CACL;QACE,4BAAI,OAAO,EAAE,OAAO;YAClB,6CACM,IAAI,IACR,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,KAE1D,QAAQ,CACL,CACH,CACF,CACN,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,qBAAqB,EAAE,CAAC"}