@navikt/ds-react 8.6.0 → 8.7.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 (250) hide show
  1. package/cjs/data/drag-and-drop/item/DataDragAndDropItem.d.ts +27 -0
  2. package/cjs/data/drag-and-drop/item/DataDragAndDropItem.js +91 -0
  3. package/cjs/data/drag-and-drop/item/DataDragAndDropItem.js.map +1 -0
  4. package/cjs/data/drag-and-drop/root/DataDragAndDrop.context.d.ts +5 -0
  5. package/cjs/data/drag-and-drop/root/DataDragAndDrop.context.js +6 -0
  6. package/cjs/data/drag-and-drop/root/DataDragAndDrop.context.js.map +1 -0
  7. package/cjs/data/drag-and-drop/root/DataDragAndDropRoot.d.ts +24 -0
  8. package/cjs/data/drag-and-drop/root/DataDragAndDropRoot.js +111 -0
  9. package/cjs/data/drag-and-drop/root/DataDragAndDropRoot.js.map +1 -0
  10. package/cjs/data/table/helpers/table-keyboard.d.ts +1 -0
  11. package/cjs/data/table/helpers/table-keyboard.js +5 -3
  12. package/cjs/data/table/helpers/table-keyboard.js.map +1 -1
  13. package/cjs/data/table/root/DataTableRoot.context.d.ts +8 -0
  14. package/cjs/data/table/root/DataTableRoot.context.js +11 -0
  15. package/cjs/data/table/root/DataTableRoot.context.js.map +1 -0
  16. package/cjs/data/table/root/DataTableRoot.js +5 -3
  17. package/cjs/data/table/root/DataTableRoot.js.map +1 -1
  18. package/cjs/data/table/th/DataTableTh.d.ts +18 -2
  19. package/cjs/data/table/th/DataTableTh.js +45 -20
  20. package/cjs/data/table/th/DataTableTh.js.map +1 -1
  21. package/cjs/data/table/tr/DataTableTr.js +9 -2
  22. package/cjs/data/table/tr/DataTableTr.js.map +1 -1
  23. package/cjs/data/token-filter/AutoSuggest.d.ts +6 -2
  24. package/cjs/data/token-filter/AutoSuggest.js +46 -11
  25. package/cjs/data/token-filter/AutoSuggest.js.map +1 -1
  26. package/cjs/data/token-filter/TokenFilter.d.ts +5 -5
  27. package/cjs/data/token-filter/TokenFilter.js +105 -42
  28. package/cjs/data/token-filter/TokenFilter.js.map +1 -1
  29. package/cjs/data/token-filter/TokenFilter.types.d.ts +51 -33
  30. package/cjs/data/token-filter/helpers/generate-autocomplete-options.d.ts +2 -3
  31. package/cjs/data/token-filter/helpers/generate-autocomplete-options.js +11 -15
  32. package/cjs/data/token-filter/helpers/generate-autocomplete-options.js.map +1 -1
  33. package/cjs/data/token-filter/helpers/operators.d.ts +6 -6
  34. package/cjs/data/token-filter/helpers/operators.js +3 -4
  35. package/cjs/data/token-filter/helpers/operators.js.map +1 -1
  36. package/cjs/data/token-filter/helpers/parse-query-text.d.ts +2 -20
  37. package/cjs/data/token-filter/helpers/parse-query-text.js +1 -1
  38. package/cjs/data/token-filter/helpers/parse-query-text.js.map +1 -1
  39. package/cjs/data/token-filter/helpers/query-builder.d.ts +2 -2
  40. package/cjs/data/token-filter/helpers/query-builder.js.map +1 -1
  41. package/cjs/date/Date.Dialog.d.ts +5 -1
  42. package/cjs/date/Date.Dialog.js +6 -2
  43. package/cjs/date/Date.Dialog.js.map +1 -1
  44. package/cjs/date/datepicker/DatePicker.js +3 -2
  45. package/cjs/date/datepicker/DatePicker.js.map +1 -1
  46. package/cjs/date/datepicker/hooks/useDatepicker.js +5 -2
  47. package/cjs/date/datepicker/hooks/useDatepicker.js.map +1 -1
  48. package/cjs/date/datepicker/hooks/useRangeDatepicker.js +3 -1
  49. package/cjs/date/datepicker/hooks/useRangeDatepicker.js.map +1 -1
  50. package/cjs/date/datepicker/parts/DatePicker.Months.d.ts +2 -1
  51. package/cjs/date/datepicker/parts/DatePicker.Months.js +3 -3
  52. package/cjs/date/datepicker/parts/DatePicker.Months.js.map +1 -1
  53. package/cjs/date/datepicker/parts/DatePicker.RDP.d.ts +5 -1
  54. package/cjs/date/datepicker/parts/DatePicker.RDP.js +2 -2
  55. package/cjs/date/datepicker/parts/DatePicker.RDP.js.map +1 -1
  56. package/cjs/date/monthpicker/MonthPicker.js +3 -2
  57. package/cjs/date/monthpicker/MonthPicker.js.map +1 -1
  58. package/cjs/date/monthpicker/hooks/useMonthPicker.js +3 -1
  59. package/cjs/date/monthpicker/hooks/useMonthPicker.js.map +1 -1
  60. package/cjs/date/monthpicker/parts/MonthPicker.Caption.d.ts +4 -1
  61. package/cjs/date/monthpicker/parts/MonthPicker.Caption.js +3 -2
  62. package/cjs/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -1
  63. package/cjs/dropdown/Toggle.js +5 -12
  64. package/cjs/dropdown/Toggle.js.map +1 -1
  65. package/cjs/form/combobox/Input/Input.js +1 -1
  66. package/cjs/form/combobox/Input/Input.js.map +1 -1
  67. package/cjs/inline-message/root/InlineMessage.js +2 -2
  68. package/cjs/inline-message/root/InlineMessage.js.map +1 -1
  69. package/cjs/provider/Provider.d.ts +2 -2
  70. package/cjs/tooltip/Tooltip.js +1 -3
  71. package/cjs/tooltip/Tooltip.js.map +1 -1
  72. package/cjs/utils/components/HighlightText/HighlightText.d.ts +8 -0
  73. package/cjs/utils/components/HighlightText/HighlightText.js +27 -0
  74. package/cjs/utils/components/HighlightText/HighlightText.js.map +1 -0
  75. package/cjs/utils/components/Listbox/group/ListboxGroup.d.ts +7 -0
  76. package/cjs/utils/components/Listbox/group/ListboxGroup.js +15 -0
  77. package/cjs/utils/components/Listbox/group/ListboxGroup.js.map +1 -0
  78. package/cjs/utils/components/Listbox/input-slot/ListboxInputSlot.d.ts +7 -0
  79. package/cjs/utils/components/Listbox/input-slot/ListboxInputSlot.js +15 -0
  80. package/cjs/utils/components/Listbox/input-slot/ListboxInputSlot.js.map +1 -0
  81. package/cjs/utils/components/Listbox/item/ListboxItem.d.ts +24 -0
  82. package/cjs/utils/components/Listbox/item/ListboxItem.js +33 -0
  83. package/cjs/utils/components/Listbox/item/ListboxItem.js.map +1 -0
  84. package/cjs/utils/components/Listbox/list/ListboxList.d.ts +8 -0
  85. package/cjs/utils/components/Listbox/list/ListboxList.js +32 -0
  86. package/cjs/utils/components/Listbox/list/ListboxList.js.map +1 -0
  87. package/cjs/utils/components/Listbox/root/ListboxRoot.d.ts +20 -0
  88. package/cjs/utils/components/Listbox/root/ListboxRoot.js +84 -0
  89. package/cjs/utils/components/Listbox/root/ListboxRoot.js.map +1 -0
  90. package/cjs/utils/components/Listbox/root/domHelpers.d.ts +3 -0
  91. package/cjs/utils/components/Listbox/root/domHelpers.js +53 -0
  92. package/cjs/utils/components/Listbox/root/domHelpers.js.map +1 -0
  93. package/cjs/utils/components/focus-boundary/FocusBoundary.js +9 -64
  94. package/cjs/utils/components/focus-boundary/FocusBoundary.js.map +1 -1
  95. package/cjs/utils/helpers/focus.d.ts +14 -0
  96. package/cjs/utils/helpers/focus.js +63 -0
  97. package/cjs/utils/helpers/focus.js.map +1 -0
  98. package/cjs/utils/hooks/useDeferredValue.d.ts +1 -0
  99. package/cjs/utils/hooks/useDeferredValue.js +14 -0
  100. package/cjs/utils/hooks/useDeferredValue.js.map +1 -0
  101. package/esm/data/drag-and-drop/item/DataDragAndDropItem.d.ts +27 -0
  102. package/esm/data/drag-and-drop/item/DataDragAndDropItem.js +55 -0
  103. package/esm/data/drag-and-drop/item/DataDragAndDropItem.js.map +1 -0
  104. package/esm/data/drag-and-drop/root/DataDragAndDrop.context.d.ts +5 -0
  105. package/esm/data/drag-and-drop/root/DataDragAndDrop.context.js +3 -0
  106. package/esm/data/drag-and-drop/root/DataDragAndDrop.context.js.map +1 -0
  107. package/esm/data/drag-and-drop/root/DataDragAndDropRoot.d.ts +24 -0
  108. package/esm/data/drag-and-drop/root/DataDragAndDropRoot.js +71 -0
  109. package/esm/data/drag-and-drop/root/DataDragAndDropRoot.js.map +1 -0
  110. package/esm/data/table/helpers/table-keyboard.d.ts +1 -0
  111. package/esm/data/table/helpers/table-keyboard.js +5 -3
  112. package/esm/data/table/helpers/table-keyboard.js.map +1 -1
  113. package/esm/data/table/root/DataTableRoot.context.d.ts +8 -0
  114. package/esm/data/table/root/DataTableRoot.context.js +7 -0
  115. package/esm/data/table/root/DataTableRoot.context.js.map +1 -0
  116. package/esm/data/table/root/DataTableRoot.js +5 -3
  117. package/esm/data/table/root/DataTableRoot.js.map +1 -1
  118. package/esm/data/table/th/DataTableTh.d.ts +18 -2
  119. package/esm/data/table/th/DataTableTh.js +46 -21
  120. package/esm/data/table/th/DataTableTh.js.map +1 -1
  121. package/esm/data/table/tr/DataTableTr.js +9 -2
  122. package/esm/data/table/tr/DataTableTr.js.map +1 -1
  123. package/esm/data/token-filter/AutoSuggest.d.ts +6 -2
  124. package/esm/data/token-filter/AutoSuggest.js +45 -13
  125. package/esm/data/token-filter/AutoSuggest.js.map +1 -1
  126. package/esm/data/token-filter/TokenFilter.d.ts +5 -5
  127. package/esm/data/token-filter/TokenFilter.js +105 -42
  128. package/esm/data/token-filter/TokenFilter.js.map +1 -1
  129. package/esm/data/token-filter/TokenFilter.types.d.ts +51 -33
  130. package/esm/data/token-filter/helpers/generate-autocomplete-options.d.ts +2 -3
  131. package/esm/data/token-filter/helpers/generate-autocomplete-options.js +11 -15
  132. package/esm/data/token-filter/helpers/generate-autocomplete-options.js.map +1 -1
  133. package/esm/data/token-filter/helpers/operators.d.ts +6 -6
  134. package/esm/data/token-filter/helpers/operators.js +3 -4
  135. package/esm/data/token-filter/helpers/operators.js.map +1 -1
  136. package/esm/data/token-filter/helpers/parse-query-text.d.ts +2 -20
  137. package/esm/data/token-filter/helpers/parse-query-text.js +1 -1
  138. package/esm/data/token-filter/helpers/parse-query-text.js.map +1 -1
  139. package/esm/data/token-filter/helpers/query-builder.d.ts +2 -2
  140. package/esm/data/token-filter/helpers/query-builder.js.map +1 -1
  141. package/esm/date/Date.Dialog.d.ts +5 -1
  142. package/esm/date/Date.Dialog.js +6 -2
  143. package/esm/date/Date.Dialog.js.map +1 -1
  144. package/esm/date/datepicker/DatePicker.js +3 -2
  145. package/esm/date/datepicker/DatePicker.js.map +1 -1
  146. package/esm/date/datepicker/hooks/useDatepicker.js +5 -2
  147. package/esm/date/datepicker/hooks/useDatepicker.js.map +1 -1
  148. package/esm/date/datepicker/hooks/useRangeDatepicker.js +3 -1
  149. package/esm/date/datepicker/hooks/useRangeDatepicker.js.map +1 -1
  150. package/esm/date/datepicker/parts/DatePicker.Months.d.ts +2 -1
  151. package/esm/date/datepicker/parts/DatePicker.Months.js +3 -3
  152. package/esm/date/datepicker/parts/DatePicker.Months.js.map +1 -1
  153. package/esm/date/datepicker/parts/DatePicker.RDP.d.ts +5 -1
  154. package/esm/date/datepicker/parts/DatePicker.RDP.js +2 -2
  155. package/esm/date/datepicker/parts/DatePicker.RDP.js.map +1 -1
  156. package/esm/date/monthpicker/MonthPicker.js +3 -2
  157. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  158. package/esm/date/monthpicker/hooks/useMonthPicker.js +3 -1
  159. package/esm/date/monthpicker/hooks/useMonthPicker.js.map +1 -1
  160. package/esm/date/monthpicker/parts/MonthPicker.Caption.d.ts +4 -1
  161. package/esm/date/monthpicker/parts/MonthPicker.Caption.js +3 -2
  162. package/esm/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -1
  163. package/esm/dropdown/Toggle.js +5 -12
  164. package/esm/dropdown/Toggle.js.map +1 -1
  165. package/esm/form/combobox/Input/Input.js +1 -1
  166. package/esm/form/combobox/Input/Input.js.map +1 -1
  167. package/esm/inline-message/root/InlineMessage.js +3 -3
  168. package/esm/inline-message/root/InlineMessage.js.map +1 -1
  169. package/esm/provider/Provider.d.ts +2 -2
  170. package/esm/tooltip/Tooltip.js +1 -3
  171. package/esm/tooltip/Tooltip.js.map +1 -1
  172. package/esm/utils/components/HighlightText/HighlightText.d.ts +8 -0
  173. package/esm/utils/components/HighlightText/HighlightText.js +21 -0
  174. package/esm/utils/components/HighlightText/HighlightText.js.map +1 -0
  175. package/esm/utils/components/Listbox/group/ListboxGroup.d.ts +7 -0
  176. package/esm/utils/components/Listbox/group/ListboxGroup.js +10 -0
  177. package/esm/utils/components/Listbox/group/ListboxGroup.js.map +1 -0
  178. package/esm/utils/components/Listbox/input-slot/ListboxInputSlot.d.ts +7 -0
  179. package/esm/utils/components/Listbox/input-slot/ListboxInputSlot.js +9 -0
  180. package/esm/utils/components/Listbox/input-slot/ListboxInputSlot.js.map +1 -0
  181. package/esm/utils/components/Listbox/item/ListboxItem.d.ts +24 -0
  182. package/esm/utils/components/Listbox/item/ListboxItem.js +27 -0
  183. package/esm/utils/components/Listbox/item/ListboxItem.js.map +1 -0
  184. package/esm/utils/components/Listbox/list/ListboxList.d.ts +8 -0
  185. package/esm/utils/components/Listbox/list/ListboxList.js +27 -0
  186. package/esm/utils/components/Listbox/list/ListboxList.js.map +1 -0
  187. package/esm/utils/components/Listbox/root/ListboxRoot.d.ts +20 -0
  188. package/esm/utils/components/Listbox/root/ListboxRoot.js +79 -0
  189. package/esm/utils/components/Listbox/root/ListboxRoot.js.map +1 -0
  190. package/esm/utils/components/Listbox/root/domHelpers.d.ts +3 -0
  191. package/esm/utils/components/Listbox/root/domHelpers.js +50 -0
  192. package/esm/utils/components/Listbox/root/domHelpers.js.map +1 -0
  193. package/esm/utils/components/focus-boundary/FocusBoundary.js +8 -63
  194. package/esm/utils/components/focus-boundary/FocusBoundary.js.map +1 -1
  195. package/esm/utils/helpers/focus.d.ts +14 -0
  196. package/esm/utils/helpers/focus.js +60 -0
  197. package/esm/utils/helpers/focus.js.map +1 -0
  198. package/esm/utils/hooks/useDeferredValue.d.ts +1 -0
  199. package/esm/utils/hooks/useDeferredValue.js +7 -0
  200. package/esm/utils/hooks/useDeferredValue.js.map +1 -0
  201. package/package.json +7 -7
  202. package/src/data/drag-and-drop/item/DataDragAndDropItem.tsx +101 -0
  203. package/src/data/drag-and-drop/root/DataDragAndDrop.context.tsx +9 -0
  204. package/src/data/drag-and-drop/root/DataDragAndDropRoot.tsx +98 -0
  205. package/src/data/table/helpers/table-keyboard.ts +7 -3
  206. package/src/data/table/root/DataTableRoot.context.ts +13 -0
  207. package/src/data/table/root/DataTableRoot.tsx +16 -13
  208. package/src/data/table/th/DataTableTh.tsx +110 -54
  209. package/src/data/table/tr/DataTableTr.tsx +13 -2
  210. package/src/data/token-filter/AutoSuggest.tsx +142 -29
  211. package/src/data/token-filter/TokenFilter.tsx +174 -79
  212. package/src/data/token-filter/TokenFilter.types.ts +70 -42
  213. package/src/data/token-filter/helpers/generate-autocomplete-options.test.ts +97 -97
  214. package/src/data/token-filter/helpers/generate-autocomplete-options.ts +31 -38
  215. package/src/data/token-filter/helpers/operators.test.ts +29 -29
  216. package/src/data/token-filter/helpers/operators.ts +16 -16
  217. package/src/data/token-filter/helpers/parse-query-text.test.ts +37 -35
  218. package/src/data/token-filter/helpers/parse-query-text.ts +7 -26
  219. package/src/data/token-filter/helpers/query-builder.ts +2 -2
  220. package/src/date/Date.Dialog.tsx +15 -0
  221. package/src/date/datepicker/DatePicker.tsx +3 -0
  222. package/src/date/datepicker/hooks/useDatepicker.tsx +7 -2
  223. package/src/date/datepicker/hooks/useRangeDatepicker.tsx +5 -1
  224. package/src/date/datepicker/parts/DatePicker.Months.tsx +9 -1
  225. package/src/date/datepicker/parts/DatePicker.RDP.tsx +7 -1
  226. package/src/date/monthpicker/MonthPicker.tsx +3 -1
  227. package/src/date/monthpicker/hooks/useMonthPicker.tsx +5 -1
  228. package/src/date/monthpicker/parts/MonthPicker.Caption.tsx +20 -2
  229. package/src/dropdown/Toggle.tsx +6 -12
  230. package/src/form/combobox/Input/Input.tsx +2 -2
  231. package/src/inline-message/root/InlineMessage.tsx +5 -5
  232. package/src/provider/Provider.tsx +2 -2
  233. package/src/tooltip/Tooltip.tsx +1 -3
  234. package/src/utils/components/HighlightText/HighlightText.tsx +34 -0
  235. package/src/utils/components/Listbox/group/ListboxGroup.tsx +26 -0
  236. package/src/utils/components/Listbox/input-slot/ListboxInputSlot.tsx +22 -0
  237. package/src/utils/components/Listbox/item/ListboxItem.tsx +57 -0
  238. package/src/utils/components/Listbox/list/ListboxList.tsx +38 -0
  239. package/src/utils/components/Listbox/root/ListboxRoot.tsx +104 -0
  240. package/src/utils/components/Listbox/root/domHelpers.ts +59 -0
  241. package/src/utils/components/focus-boundary/FocusBoundary.tsx +8 -78
  242. package/src/utils/helpers/focus.ts +75 -0
  243. package/src/utils/hooks/useDeferredValue.ts +12 -0
  244. package/cjs/data/table/th/DataTableThSortHandle.d.ts +0 -6
  245. package/cjs/data/table/th/DataTableThSortHandle.js +0 -82
  246. package/cjs/data/table/th/DataTableThSortHandle.js.map +0 -1
  247. package/esm/data/table/th/DataTableThSortHandle.d.ts +0 -6
  248. package/esm/data/table/th/DataTableThSortHandle.js +0 -47
  249. package/esm/data/table/th/DataTableThSortHandle.js.map +0 -1
  250. package/src/data/table/th/DataTableThSortHandle.tsx +0 -67
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ interface DataDragAndDropItemProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ /**
5
+ * Unique id
6
+ */
7
+ id: string;
8
+ /**
9
+ * Index of the item being dragged
10
+ */
11
+ index: number;
12
+ }
13
+ /**
14
+ * TODO
15
+ *
16
+ * @see 🏷️ {@link DataDragAndDropItemProps}
17
+ * @example
18
+ * ```tsx
19
+ * <DragAndDrop.Item numOfSelectedRows={selectedRows.length} onClear={handleClear}>
20
+ * TODO
21
+ * </DragAndDrop.Item>
22
+ * ```
23
+ */
24
+ declare const DataDragAndDropItem: React.ForwardRefExoticComponent<DataDragAndDropItemProps & React.RefAttributes<HTMLDivElement>>;
25
+ export default DataDragAndDropItem;
26
+ export { DataDragAndDropItem };
27
+ export type { DataDragAndDropItemProps };
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __rest = (this && this.__rest) || function (s, e) {
36
+ var t = {};
37
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
38
+ t[p] = s[p];
39
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
40
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
41
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
42
+ t[p[i]] = s[p[i]];
43
+ }
44
+ return t;
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.DataDragAndDropItem = void 0;
48
+ const sortable_1 = require("@dnd-kit/react/sortable");
49
+ const react_1 = __importStar(require("react"));
50
+ const aksel_icons_1 = require("@navikt/aksel-icons");
51
+ const stack_1 = require("../../../primitives/stack");
52
+ const helpers_1 = require("../../../utils/helpers");
53
+ const hooks_1 = require("../../../utils/hooks");
54
+ const DataDragAndDrop_context_1 = require("../root/DataDragAndDrop.context");
55
+ /**
56
+ * TODO
57
+ *
58
+ * @see 🏷️ {@link DataDragAndDropItemProps}
59
+ * @example
60
+ * ```tsx
61
+ * <DragAndDrop.Item numOfSelectedRows={selectedRows.length} onClear={handleClear}>
62
+ * TODO
63
+ * </DragAndDrop.Item>
64
+ * ```
65
+ */
66
+ const DataDragAndDropItem = react_1.default.forwardRef((_a, forwardedRef) => {
67
+ var { children, id, index, className } = _a, rest = __rest(_a, ["children", "id", "index", "className"]);
68
+ const handleRef = (0, react_1.useRef)(null);
69
+ const { ref, isDragging, isDropTarget } = (0, sortable_1.useSortable)({
70
+ id,
71
+ index,
72
+ handle: handleRef,
73
+ });
74
+ const mergedRef = (0, hooks_1.useMergeRefs)(ref, forwardedRef);
75
+ const context = react_1.default.useContext(DataDragAndDrop_context_1.DataDragAndDropContext);
76
+ const mouseDragging = isDragging && (context === null || context === void 0 ? void 0 : context.inputMethod) === "mouse";
77
+ const mouseDropTarget = isDropTarget && (context === null || context === void 0 ? void 0 : context.inputMethod) === "mouse";
78
+ const keyboardDragging = isDragging && (context === null || context === void 0 ? void 0 : context.inputMethod) === "keyboard";
79
+ return (react_1.default.createElement(stack_1.HStack, { gap: "space-8", align: "center", wrap: false, asChild: true },
80
+ react_1.default.createElement("div", Object.assign({ ref: mergedRef }, rest, { className: (0, helpers_1.cl)("aksel-data-table__drag-and-drop-item", className), "data-dragging": isDragging, "data-mouse-dragging": mouseDragging, "data-keyboard-dragging": keyboardDragging, "data-drop-target": mouseDropTarget, tabIndex: -1 }),
81
+ react_1.default.createElement("div", { className: "aksel-data-table__drag-and-drop-item-drag-handler", ref: handleRef },
82
+ keyboardDragging && (react_1.default.createElement("span", { className: "aksel-data-table__drag-and-drop-item-keyboard-drag-icon", "data-direction": "up" },
83
+ react_1.default.createElement(aksel_icons_1.CaretUpCircleFillIcon, { "aria-hidden": true, fontSize: "1.2rem" }))),
84
+ react_1.default.createElement(aksel_icons_1.DragVerticalIcon, { "aria-hidden": true, title: "Dra for \u00E5 flytte", fontSize: "1.5rem" }),
85
+ keyboardDragging && (react_1.default.createElement("span", { className: "aksel-data-table__drag-and-drop-item-keyboard-drag-icon", "data-direction": "down" },
86
+ react_1.default.createElement(aksel_icons_1.CaretDownCircleFillIcon, { "aria-hidden": true, fontSize: "1.2rem" })))),
87
+ react_1.default.createElement("div", null, children))));
88
+ });
89
+ exports.DataDragAndDropItem = DataDragAndDropItem;
90
+ exports.default = DataDragAndDropItem;
91
+ //# sourceMappingURL=DataDragAndDropItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataDragAndDropItem.js","sourceRoot":"","sources":["../../../../src/data/drag-and-drop/item/DataDragAndDropItem.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,+CAAsC;AACtC,qDAI6B;AAC7B,qDAAmD;AACnD,oDAA4C;AAC5C,gDAAoD;AACpD,6EAAyE;AAczE;;;;;;;;;;GAUG;AACH,MAAM,mBAAmB,GAAG,eAAK,CAAC,UAAU,CAG1C,CAAC,EAA2C,EAAE,YAAY,EAAE,EAAE;QAA7D,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,OAAW,EAAN,IAAI,cAAzC,wCAA2C,CAAF;IAC1C,MAAM,SAAS,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAA,sBAAW,EAAC;QACpD,EAAE;QACF,KAAK;QACL,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,gDAAsB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,UAAU,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,MAAK,OAAO,CAAC;IACrE,MAAM,eAAe,GAAG,YAAY,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,MAAK,OAAO,CAAC;IACzE,MAAM,gBAAgB,GAAG,UAAU,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,MAAK,UAAU,CAAC;IAE3E,OAAO,CACL,8BAAC,cAAM,IAAC,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO;QAEvD,qDACE,GAAG,EAAE,SAAS,IACV,IAAI,IACR,SAAS,EAAE,IAAA,YAAE,EAAC,sCAAsC,EAAE,SAAS,CAAC,mBACjD,UAAU,yBACJ,aAAa,4BACV,gBAAgB,sBACtB,eAAe,EACjC,QAAQ,EAAE,CAAC,CAAC;YAEZ,uCACE,SAAS,EAAC,mDAAmD,EAC7D,GAAG,EAAE,SAAS;gBAIb,gBAAgB,IAAI,CACnB,wCACE,SAAS,EAAC,yDAAyD,oBACpD,IAAI;oBAEnB,8BAAC,mCAAqB,yBAAa,QAAQ,EAAC,QAAQ,GAAG,CAClD,CACR;gBACD,8BAAC,8BAAgB,yBAEf,KAAK,EAAC,uBAAkB,EACxB,QAAQ,EAAC,QAAQ,GACjB;gBACD,gBAAgB,IAAI,CACnB,wCACE,SAAS,EAAC,yDAAyD,oBACpD,MAAM;oBAErB,8BAAC,qCAAuB,yBAAa,QAAQ,EAAC,QAAQ,GAAG,CACpD,CACR,CACG;YACN,2CAAM,QAAQ,CAAO,CACjB,CACC,CACV,CAAC;AACJ,CAAC,CAAC,CAAC;AAGM,kDAAmB;AAD5B,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ interface DataDragAndDropContextType {
2
+ inputMethod: "mouse" | "keyboard" | null;
3
+ }
4
+ export declare const DataDragAndDropContext: import("react").Context<DataDragAndDropContextType | undefined>;
5
+ export {};
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataDragAndDropContext = void 0;
4
+ const react_1 = require("react");
5
+ exports.DataDragAndDropContext = (0, react_1.createContext)(undefined);
6
+ //# sourceMappingURL=DataDragAndDrop.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataDragAndDrop.context.js","sourceRoot":"","sources":["../../../../src/data/drag-and-drop/root/DataDragAndDrop.context.tsx"],"names":[],"mappings":";;;AAAA,iCAAsC;AAMzB,QAAA,sBAAsB,GAAG,IAAA,qBAAa,EAEjD,SAAS,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import DataDragAndDropItem, { DataDragAndDropItemProps } from "../item/DataDragAndDropItem";
3
+ interface DataDragAndDropProps extends React.HTMLAttributes<HTMLTableElement> {
4
+ children: any[];
5
+ setItems: React.Dispatch<React.SetStateAction<any[]>>;
6
+ }
7
+ interface DataDragAndDropRootComponent extends React.ForwardRefExoticComponent<DataDragAndDropProps & React.RefAttributes<HTMLTableElement>> {
8
+ /**
9
+ * @see 🏷️ {@link DataDragAndDropItemProps}
10
+ * * @example
11
+ * ```jsx
12
+ * <DragAndDrop>
13
+ * <DragAndDrop.Item id="1" index={0}>
14
+ * ...
15
+ * </DragAndDrop.Item>
16
+ * </DragAndDrop>
17
+ * ```
18
+ */
19
+ Item: typeof DataDragAndDropItem;
20
+ }
21
+ declare const DataDragAndDrop: DataDragAndDropRootComponent;
22
+ export { DataDragAndDrop, DataDragAndDropItem };
23
+ export default DataDragAndDrop;
24
+ export type { DataDragAndDropItemProps, DataDragAndDropProps };
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __rest = (this && this.__rest) || function (s, e) {
36
+ var t = {};
37
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
38
+ t[p] = s[p];
39
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
40
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
41
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
42
+ t[p[i]] = s[p[i]];
43
+ }
44
+ return t;
45
+ };
46
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.DataDragAndDropItem = exports.DataDragAndDrop = void 0;
51
+ const react_1 = require("@dnd-kit/react");
52
+ const sortable_1 = require("@dnd-kit/react/sortable");
53
+ const react_2 = __importStar(require("react"));
54
+ const stack_1 = require("../../../primitives/stack");
55
+ const DataDragAndDropItem_1 = __importDefault(require("../item/DataDragAndDropItem"));
56
+ exports.DataDragAndDropItem = DataDragAndDropItem_1.default;
57
+ const DataDragAndDrop_context_1 = require("./DataDragAndDrop.context");
58
+ const DataDragAndDrop = (0, react_2.forwardRef)((_a, forwardedRef) => {
59
+ var { setItems, children } = _a, rest = __rest(_a, ["setItems", "children"]);
60
+ const [inputMethod, setInputMethod] = react_2.default.useState(null);
61
+ const setItemOrder = (initalIndex, targetIndex) => {
62
+ setItems((items) => {
63
+ const newItems = [...items];
64
+ const [movedItem] = newItems.splice(initalIndex, 1);
65
+ newItems.splice(targetIndex, 0, movedItem);
66
+ return newItems;
67
+ });
68
+ };
69
+ return (react_2.default.createElement(DataDragAndDrop_context_1.DataDragAndDropContext.Provider, { value: { inputMethod } },
70
+ react_2.default.createElement(react_1.DragDropProvider
71
+ // TODO Look into overriding default keybinds, might eliminate context need
72
+ , {
73
+ // TODO Look into overriding default keybinds, might eliminate context need
74
+ onBeforeDragStart: (event) => {
75
+ var _a;
76
+ return setInputMethod(((_a = event.operation.activatorEvent) === null || _a === void 0 ? void 0 : _a.type) === "pointerdown"
77
+ ? "mouse"
78
+ : "keyboard");
79
+ }, onDragOver: (event) => {
80
+ var _a;
81
+ if (((_a = event.operation.activatorEvent) === null || _a === void 0 ? void 0 : _a.type) === "pointerdown") {
82
+ // Prevents items to rearrange while dragging with mouse, but allows keyboard dragging to work as intended
83
+ event.preventDefault();
84
+ }
85
+ }, onDragEnd: (event) => {
86
+ var _a;
87
+ if (((_a = event.operation.activatorEvent) === null || _a === void 0 ? void 0 : _a.type) === "pointerdown") {
88
+ const { source, target } = event.operation;
89
+ if (!(0, sortable_1.isSortable)(source) || !(0, sortable_1.isSortable)(target))
90
+ return;
91
+ setItemOrder(source.initialIndex, target.index);
92
+ }
93
+ } },
94
+ react_2.default.createElement(stack_1.VStack, { asChild: true, gap: "space-12" },
95
+ react_2.default.createElement("div", Object.assign({}, rest, { ref: forwardedRef }), children)),
96
+ react_2.default.createElement(react_1.DragOverlay, null, (source) => {
97
+ // Overlay not needed and causes glitching when using keyboard
98
+ if (inputMethod === "keyboard")
99
+ return null;
100
+ if (!(0, sortable_1.isSortable)(source))
101
+ return null;
102
+ if ((0, react_2.isValidElement)(children[source.initialIndex])) {
103
+ return children[source.initialIndex];
104
+ }
105
+ return null;
106
+ }))));
107
+ });
108
+ exports.DataDragAndDrop = DataDragAndDrop;
109
+ DataDragAndDrop.Item = DataDragAndDropItem_1.default;
110
+ exports.default = DataDragAndDrop;
111
+ //# sourceMappingURL=DataDragAndDropRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataDragAndDropRoot.js","sourceRoot":"","sources":["../../../../src/data/drag-and-drop/root/DataDragAndDropRoot.tsx"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ declare function getNavigationAction(event: KeyboardEvent): NavigationAction | n
30
30
  * - Select arrow down/up for opening popup
31
31
  * - User is navigating inside multiline textarea
32
32
  * - contenteditable attrb is in use
33
+ * - element has attribute data-block-keyboard-nav="true"
33
34
  */
34
35
  declare function shouldBlockNavigation(event: KeyboardEvent): boolean;
35
36
  export { getNavigationAction, shouldBlockNavigation };
@@ -41,6 +41,7 @@ function getNavigationAction(event) {
41
41
  * - Select arrow down/up for opening popup
42
42
  * - User is navigating inside multiline textarea
43
43
  * - contenteditable attrb is in use
44
+ * - element has attribute data-block-keyboard-nav="true"
44
45
  */
45
46
  function shouldBlockNavigation(event) {
46
47
  const key = event.key;
@@ -54,8 +55,8 @@ function shouldBlockNavigation(event) {
54
55
  if (el.isContentEditable) {
55
56
  return true;
56
57
  }
57
- /* If not any of these elements, assueme "safe" to navigate */
58
- const editable = el.closest('input, textarea, select, [contenteditable="true"]');
58
+ /* If not any of these elements, assume "safe" to navigate */
59
+ const editable = el.closest('input, textarea, select, [contenteditable="true"], [data-block-keyboard-nav="true"]');
59
60
  if (!editable) {
60
61
  return false;
61
62
  }
@@ -71,7 +72,8 @@ function shouldBlockNavigation(event) {
71
72
  }
72
73
  return false;
73
74
  }
74
- return editable.hasAttribute("contenteditable");
75
+ return (editable.hasAttribute("contenteditable") ||
76
+ editable.hasAttribute("data-block-keyboard-nav"));
75
77
  }
76
78
  function shouldBlockInputArrow(input, key) {
77
79
  if (input.type === "checkbox" || input.type === "radio") {
@@ -1 +1 @@
1
- {"version":3,"file":"table-keyboard.js","sourceRoot":"","sources":["../../../../src/data/table/helpers/table-keyboard.ts"],"names":[],"mappings":";;AA0JS,kDAAmB;AAAE,sDAAqB;AA1JnD,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;IACxB,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACzB,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC1B,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAClB,CAAC;AAWX;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,KAAoB;IAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAEtB,0CAA0C;IAC1C,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,GAAkB,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YACnC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;YACxB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YACnC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;YACtB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,qBAAqB,CAAC,KAAoB;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,GAAG,KAAK,CAAC,MAA4B,CAAC;IAC9C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,mDAAmD,CACpD,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,YAAY,gBAAgB,EAAE,CAAC;QACzC,OAAO,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ,YAAY,mBAAmB,EAAE,CAAC;QAC5C,OAAO,wBAAwB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,QAAQ,YAAY,iBAAiB,EAAE,CAAC;QAC1C,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAuB,EAAE,GAAW;IACjE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAA6B,EAC7B,GAAW;IAEX,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC;IAClC,OAAO,sBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAAW,EACX,KAAa,EACb,GAAW,EACX,WAAmB;IAEnB,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QAChD,OAAO,GAAG,GAAG,WAAW,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
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,8 @@
1
+ interface DataTableContextProps {
2
+ layout: "fixed" | "auto";
3
+ }
4
+ declare const DataTableContextProvider: import("react").FC<DataTableContextProps & {
5
+ children: React.ReactNode;
6
+ ref?: never;
7
+ }>, useDataTableContext: <S extends boolean = true>(strict?: S | undefined) => S extends true ? DataTableContextProps : DataTableContextProps | undefined;
8
+ export { DataTableContextProvider, useDataTableContext };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useDataTableContext = exports.DataTableContextProvider = void 0;
4
+ const helpers_1 = require("../../../utils/helpers");
5
+ const { Provider: DataTableContextProvider, useContext: useDataTableContext } = (0, helpers_1.createStrictContext)({
6
+ name: "DataTableContext",
7
+ errorMessage: "useDataTableContext must be used within DataTable",
8
+ });
9
+ exports.DataTableContextProvider = DataTableContextProvider;
10
+ exports.useDataTableContext = useDataTableContext;
11
+ //# sourceMappingURL=DataTableRoot.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTableRoot.context.js","sourceRoot":"","sources":["../../../../src/data/table/root/DataTableRoot.context.ts"],"names":[],"mappings":";;;AAAA,oDAA6D;AAM7D,MAAM,EAAE,QAAQ,EAAE,wBAAwB,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAC3E,IAAA,6BAAmB,EAAwB;IACzC,IAAI,EAAE,kBAAkB;IACxB,YAAY,EAAE,mDAAmD;CAClE,CAAC,CAAC;AAEI,4DAAwB;AAAE,kDAAmB"}
@@ -62,6 +62,7 @@ const DataTableThead_1 = require("../thead/DataTableThead");
62
62
  Object.defineProperty(exports, "DataTableThead", { enumerable: true, get: function () { return DataTableThead_1.DataTableThead; } });
63
63
  const DataTableTr_1 = require("../tr/DataTableTr");
64
64
  Object.defineProperty(exports, "DataTableTr", { enumerable: true, get: function () { return DataTableTr_1.DataTableTr; } });
65
+ const DataTableRoot_context_1 = require("./DataTableRoot.context");
65
66
  const useTableKeyboardNav_1 = require("./useTableKeyboardNav");
66
67
  /**
67
68
  * TODO Component description etc.
@@ -77,9 +78,10 @@ const DataTable = (0, react_1.forwardRef)((_a, forwardedRef) => {
77
78
  enabled: withKeyboardNav,
78
79
  shouldBlockNavigation,
79
80
  });
80
- return (react_1.default.createElement("div", { className: "aksel-data-table__border-wrapper" },
81
- react_1.default.createElement("div", { className: "aksel-data-table__scroll-wrapper" },
82
- react_1.default.createElement("table", Object.assign({}, rest, { ref: mergedRef, className: (0, helpers_1.cl)("aksel-data-table", className), "data-zebra-stripes": zebraStripes, "data-truncate-content": truncateContent, "data-density": rowDensity, "data-layout": layout, tabIndex: tabIndex })))));
81
+ return (react_1.default.createElement(DataTableRoot_context_1.DataTableContextProvider, { layout: layout },
82
+ react_1.default.createElement("div", { className: "aksel-data-table__border-wrapper" },
83
+ react_1.default.createElement("div", { className: "aksel-data-table__scroll-wrapper" },
84
+ react_1.default.createElement("table", Object.assign({}, rest, { ref: mergedRef, className: (0, helpers_1.cl)("aksel-data-table", className), "data-zebra-stripes": zebraStripes, "data-truncate-content": truncateContent, "data-density": rowDensity, "data-layout": layout, tabIndex: tabIndex }))))));
83
85
  });
84
86
  exports.DataTable = DataTable;
85
87
  DataTable.Caption = DataTableCaption_1.DataTableCaption;
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableRoot.js","sourceRoot":"","sources":["../../../../src/data/table/root/DataTableRoot.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoD;AACpD,oDAA4C;AAC5C,gDAAoD;AACpD,kEAGqC;AAyNnC,iGA3NA,mCAAgB,OA2NA;AAxNlB,4DAGiC;AAsN/B,+FAxNA,+BAAc,OAwNA;AArNhB,mDAAuE;AAsNrE,4FAtNO,yBAAW,OAsNP;AArNb,4DAGiC;AAmN/B,+FArNA,+BAAc,OAqNA;AAlNhB,mDAAuE;AAmNrE,4FAnNO,yBAAW,OAmNP;AAlNb,4DAGiC;AAgN/B,+FAlNA,+BAAc,OAkNA;AA/MhB,mDAAuE;AAgNrE,4FAhNO,yBAAW,OAgNP;AA/Mb,+DAA4D;AAgJ5D;;;;;GAKG;AACH,MAAM,SAAS,GAAG,IAAA,kBAAU,EAC1B,CACE,EASC,EACD,YAAY,EACZ,EAAE;QAXF,EACE,SAAS,EACT,UAAU,GAAG,QAAQ,EACrB,eAAe,GAAG,KAAK,EACvB,YAAY,GAAG,KAAK,EACpB,eAAe,GAAG,IAAI,EACtB,qBAAqB,EACrB,MAAM,GAAG,OAAO,OAEjB,EADI,IAAI,cART,oHASC,CADQ;IAIT,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAA0B,IAAI,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE1D,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,yCAAmB,EAAC,QAAQ,EAAE;QACjD,OAAO,EAAE,eAAe;QACxB,qBAAqB;KACtB,CAAC,CAAC;IAEH,OAAO,CACL,uCAAK,SAAS,EAAC,kCAAkC;QAC/C,uCAAK,SAAS,EAAC,kCAAkC;YAC/C,yDACM,IAAI,IACR,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAA,YAAE,EAAC,kBAAkB,EAAE,SAAS,CAAC,wBACxB,YAAY,2BACT,eAAe,kBACxB,UAAU,iBACX,MAAM,EACnB,QAAQ,EAAE,QAAQ,IAClB,CACE,CACF,CACP,CAAC;AACJ,CAAC,CACwB,CAAC;AAW1B,8BAAS;AATX,SAAS,CAAC,OAAO,GAAG,mCAAgB,CAAC;AACrC,SAAS,CAAC,KAAK,GAAG,+BAAc,CAAC;AACjC,SAAS,CAAC,KAAK,GAAG,+BAAc,CAAC;AACjC,SAAS,CAAC,EAAE,GAAG,yBAAW,CAAC;AAC3B,SAAS,CAAC,EAAE,GAAG,yBAAW,CAAC;AAC3B,SAAS,CAAC,EAAE,GAAG,yBAAW,CAAC;AAC3B,SAAS,CAAC,KAAK,GAAG,+BAAc,CAAC;AAYjC,kBAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"DataTableRoot.js","sourceRoot":"","sources":["../../../../src/data/table/root/DataTableRoot.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoD;AACpD,oDAA4C;AAC5C,gDAAoD;AACpD,kEAGqC;AA4NnC,iGA9NA,mCAAgB,OA8NA;AA3NlB,4DAGiC;AAyN/B,+FA3NA,+BAAc,OA2NA;AAxNhB,mDAAuE;AAyNrE,4FAzNO,yBAAW,OAyNP;AAxNb,4DAGiC;AAsN/B,+FAxNA,+BAAc,OAwNA;AArNhB,mDAAuE;AAsNrE,4FAtNO,yBAAW,OAsNP;AArNb,4DAGiC;AAmN/B,+FArNA,+BAAc,OAqNA;AAlNhB,mDAAuE;AAmNrE,4FAnNO,yBAAW,OAmNP;AAlNb,mEAAmE;AACnE,+DAA4D;AAgJ5D;;;;;GAKG;AACH,MAAM,SAAS,GAAG,IAAA,kBAAU,EAC1B,CACE,EASC,EACD,YAAY,EACZ,EAAE;QAXF,EACE,SAAS,EACT,UAAU,GAAG,QAAQ,EACrB,eAAe,GAAG,KAAK,EACvB,YAAY,GAAG,KAAK,EACpB,eAAe,GAAG,IAAI,EACtB,qBAAqB,EACrB,MAAM,GAAG,OAAO,OAEjB,EADI,IAAI,cART,oHASC,CADQ;IAIT,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAA0B,IAAI,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE1D,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,yCAAmB,EAAC,QAAQ,EAAE;QACjD,OAAO,EAAE,eAAe;QACxB,qBAAqB;KACtB,CAAC,CAAC;IAEH,OAAO,CACL,8BAAC,gDAAwB,IAAC,MAAM,EAAE,MAAM;QACtC,uCAAK,SAAS,EAAC,kCAAkC;YAC/C,uCAAK,SAAS,EAAC,kCAAkC;gBAC/C,yDACM,IAAI,IACR,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAA,YAAE,EAAC,kBAAkB,EAAE,SAAS,CAAC,wBACxB,YAAY,2BACT,eAAe,kBACxB,UAAU,iBACX,MAAM,EACnB,QAAQ,EAAE,QAAQ,IAClB,CACE,CACF,CACmB,CAC5B,CAAC;AACJ,CAAC,CACwB,CAAC;AAW1B,8BAAS;AATX,SAAS,CAAC,OAAO,GAAG,mCAAgB,CAAC;AACrC,SAAS,CAAC,KAAK,GAAG,+BAAc,CAAC;AACjC,SAAS,CAAC,KAAK,GAAG,+BAAc,CAAC;AACjC,SAAS,CAAC,EAAE,GAAG,yBAAW,CAAC;AAC3B,SAAS,CAAC,EAAE,GAAG,yBAAW,CAAC;AAC3B,SAAS,CAAC,EAAE,GAAG,yBAAW,CAAC;AAC3B,SAAS,CAAC,KAAK,GAAG,+BAAc,CAAC;AAYjC,kBAAe,SAAS,CAAC"}
@@ -1,9 +1,24 @@
1
1
  import React from "react";
2
+ type SortDirection = "asc" | "desc" | "none";
2
3
  interface DataTableThProps extends React.HTMLAttributes<HTMLTableCellElement> {
3
4
  resizeHandler?: (event: React.MouseEvent<HTMLButtonElement> | React.TouchEvent<HTMLButtonElement>) => void;
4
5
  size?: number;
5
- sortDirection?: "asc" | "desc" | "none" | false;
6
- onSortChange?: (direction: "asc" | "desc" | "none", event: Event) => void;
6
+ /**
7
+ * Makes the column header sortable. The entire header cell content becomes
8
+ * a clickable button when true.
9
+ */
10
+ sortable?: boolean;
11
+ /**
12
+ * Current sort direction. Only relevant when `sortable` is true.
13
+ * Uses values matching the `aria-sort` attribute directly.
14
+ * @default "none"
15
+ */
16
+ sortDirection?: SortDirection;
17
+ /**
18
+ * Called when the user clicks the sortable header.
19
+ * The consumer is responsible for determining and setting the next sort state.
20
+ */
21
+ onSortClick?: (event: React.MouseEvent<HTMLElement>) => void;
7
22
  render?: {
8
23
  filterMenu?: {
9
24
  title: string;
@@ -15,6 +30,7 @@ interface DataTableThProps extends React.HTMLAttributes<HTMLTableCellElement> {
15
30
  */
16
31
  colSpan?: number;
17
32
  rowSpan?: number;
33
+ keyboardResizingHandler?: (size: number) => void;
18
34
  }
19
35
  /**
20
36
  * TODO:
@@ -47,34 +47,59 @@ Object.defineProperty(exports, "__esModule", { value: true });
47
47
  exports.DataTableTh = void 0;
48
48
  const react_1 = __importStar(require("react"));
49
49
  const aksel_icons_1 = require("@navikt/aksel-icons");
50
- const action_menu_1 = require("../../../action-menu");
51
- const stack_1 = require("../../../primitives/stack");
52
50
  const helpers_1 = require("../../../utils/helpers");
53
- const DataTableThActions_1 = require("./DataTableThActions");
54
- const DataTableThSortHandle_1 = require("./DataTableThSortHandle");
51
+ const SORT_ICON = {
52
+ asc: aksel_icons_1.SortUpIcon,
53
+ desc: aksel_icons_1.SortDownIcon,
54
+ none: aksel_icons_1.ArrowsUpDownIcon,
55
+ };
55
56
  /**
56
57
  * TODO:
57
58
  * - Plan for pinning: Move it into "settings" dialog like here: https://cloudscape.design/examples/react/table.html
58
59
  */
59
60
  const DataTableTh = (0, react_1.forwardRef)((_a, forwardedRef) => {
60
- var { className, children, resizeHandler, size, sortDirection, onSortChange, style, render } = _a, rest = __rest(_a, ["className", "children", "resizeHandler", "size", "sortDirection", "onSortChange", "style", "render"]);
61
- const { filterMenu } = render || {};
62
- return (react_1.default.createElement("th", Object.assign({}, rest, { ref: forwardedRef, className: (0, helpers_1.cl)("aksel-data-table__th", className), style: Object.assign({ width: size }, style) }),
63
- react_1.default.createElement(stack_1.HStack, { align: "center", gap: "space-8", wrap: false },
64
- react_1.default.createElement("div", { className: "aksel-data-table__th-content" }, children),
65
- react_1.default.createElement(DataTableThSortHandle_1.DataTableThSortHandle, { sortDirection: sortDirection, onSortChange: onSortChange }),
66
- react_1.default.createElement(stack_1.Spacer, null),
67
- react_1.default.createElement(DataTableThActions_1.DataTableThActions, null,
68
- sortDirection && (react_1.default.createElement(action_menu_1.ActionMenu.Group, { label: "Sortering" },
69
- react_1.default.createElement(action_menu_1.ActionMenu.Item, { onSelect: (event) => onSortChange === null || onSortChange === void 0 ? void 0 : onSortChange("desc", event), icon: react_1.default.createElement(aksel_icons_1.SortUpIcon, { "aria-hidden": true }) }, sortDirection === "desc" ? "Fjern sortering" : "A-Z"),
70
- react_1.default.createElement(action_menu_1.ActionMenu.Item, { onSelect: (event) => onSortChange === null || onSortChange === void 0 ? void 0 : onSortChange("asc", event), icon: react_1.default.createElement(aksel_icons_1.SortDownIcon, { "aria-hidden": true }) }, sortDirection === "asc" ? "Fjern sortering" : "Z-A"))),
71
- filterMenu && (react_1.default.createElement(action_menu_1.ActionMenu.Group, { label: "Filter" },
72
- react_1.default.createElement(action_menu_1.ActionMenu.Sub, null,
73
- react_1.default.createElement(action_menu_1.ActionMenu.SubTrigger, { icon: react_1.default.createElement(aksel_icons_1.FunnelIcon, { "aria-hidden": true }) }, filterMenu.title),
74
- react_1.default.createElement(action_menu_1.ActionMenu.SubContent, null, filterMenu.content)))))),
61
+ var { className, children, resizeHandler, size, sortable = false, sortDirection = "none", onSortClick, style, keyboardResizingHandler } = _a, rest = __rest(_a, ["className", "children", "resizeHandler", "size", "sortable", "sortDirection", "onSortClick", "style", "keyboardResizingHandler"]);
62
+ const [resizeHandlerActive, setResizeHandlerActive] = react_1.default.useState(false);
63
+ const [isOverflowing, setIsOverflowing] = react_1.default.useState(false);
64
+ const contentRef = react_1.default.useRef(null);
65
+ const keyDownHandler = (event) => {
66
+ if (keyboardResizingHandler) {
67
+ if (event.key === "Enter" || event.key === " ") {
68
+ event.preventDefault();
69
+ setResizeHandlerActive((active) => !active);
70
+ }
71
+ else if (resizeHandlerActive &&
72
+ (event.key === "ArrowLeft" || event.key === "ArrowRight")) {
73
+ event.preventDefault();
74
+ keyboardResizingHandler(event.key === "ArrowRight" ? 10 : -10);
75
+ }
76
+ }
77
+ };
78
+ const SortIcon = sortable ? SORT_ICON[sortDirection] : null;
79
+ return (react_1.default.createElement("th", Object.assign({}, rest, { ref: forwardedRef, className: (0, helpers_1.cl)("aksel-data-table__th", className), "data-sortable": sortable, style: Object.assign({ width: size }, style), "aria-sort": sortable ? getAriaSort(sortDirection) : undefined, onPointerEnter: () => {
80
+ const el = contentRef.current;
81
+ setIsOverflowing(el ? el.scrollWidth > el.offsetWidth : false);
82
+ console.info("is overflowing", isOverflowing);
83
+ }, onPointerLeave: () => setIsOverflowing(false) }),
84
+ sortable ? (react_1.default.createElement("button", { className: "aksel-data-table__th-sort-button", onClick: sortable ? onSortClick : undefined },
85
+ SortIcon && (react_1.default.createElement(SortIcon, { "aria-hidden": true, "data-sort-direction": sortDirection, className: "aksel-data-table__th-sort-icon" })),
86
+ react_1.default.createElement("div", { ref: contentRef, className: "aksel-data-table__th-content" }, children))) : (react_1.default.createElement("div", { ref: contentRef, className: "aksel-data-table__th-content" }, children)),
75
87
  resizeHandler && (react_1.default.createElement("button", {
76
88
  // TODO: Should probably not be a button since it doesn't have onClick
77
- onMouseDown: resizeHandler, onTouchStart: resizeHandler, className: "aksel-data-table__th-resize-handle" }))));
89
+ onMouseDown: resizeHandler, onTouchStart: resizeHandler, onBlur: () => setResizeHandlerActive(false), className: "aksel-data-table__th-resize-handle", "data-active": resizeHandlerActive, "data-block-keyboard-nav": true, onKeyDown: keyDownHandler }, resizeHandlerActive && (react_1.default.createElement(react_1.default.Fragment, null,
90
+ react_1.default.createElement("span", { className: "aksel-data-table__th-resize-handle-indicator aksel-data-table__th-resize-handle-indicator--start" },
91
+ react_1.default.createElement(aksel_icons_1.CaretLeftCircleFillIcon, { "aria-hidden": true, fontSize: "1.5rem" })),
92
+ react_1.default.createElement("span", { className: "aksel-data-table__th-resize-handle-indicator aksel-data-table__th-resize-handle-indicator--end" },
93
+ react_1.default.createElement(aksel_icons_1.CaretRightCircleFillIcon, { "aria-hidden": true, fontSize: "1.5rem" }))))))));
78
94
  });
79
95
  exports.DataTableTh = DataTableTh;
96
+ function getAriaSort(sortDirection) {
97
+ if (sortDirection === "asc")
98
+ return "ascending";
99
+ if (sortDirection === "desc")
100
+ return "descending";
101
+ if (sortDirection === "none")
102
+ return "none";
103
+ return undefined;
104
+ }
80
105
  //# sourceMappingURL=DataTableTh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableTh.js","sourceRoot":"","sources":["../../../../src/data/table/th/DataTableTh.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,qDAA2E;AAC3E,sDAAkD;AAClD,qDAA2D;AAC3D,oDAA4C;AAC5C,6DAA0D;AAC1D,mEAAgE;AAwBhE;;;GAGG;AACH,MAAM,WAAW,GAAG,IAAA,kBAAU,EAC5B,CACE,EAUC,EACD,YAAY,EACZ,EAAE;QAZF,EACE,SAAS,EACT,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,KAAK,EACL,MAAM,OAEP,EADI,IAAI,cATT,sGAUC,CADQ;IAIT,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IAEpC,OAAO,CACL,sDACM,IAAI,IACR,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,IAAA,YAAE,EAAC,sBAAsB,EAAE,SAAS,CAAC,EAChD,KAAK,kBAAI,KAAK,EAAE,IAAI,IAAK,KAAK;QAE9B,8BAAC,cAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,SAAS,EAAC,IAAI,EAAE,KAAK;YAC9C,uCAAK,SAAS,EAAC,8BAA8B,IAAE,QAAQ,CAAO;YAE9D,8BAAC,6CAAqB,IACpB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,GAC1B;YACF,8BAAC,cAAM,OAAG;YAEV,8BAAC,uCAAkB;gBAGhB,aAAa,IAAI,CAChB,8BAAC,wBAAU,CAAC,KAAK,IAAC,KAAK,EAAC,WAAW;oBACjC,8BAAC,wBAAU,CAAC,IAAI,IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,MAAM,EAAE,KAAK,CAAC,EAClD,IAAI,EAAE,8BAAC,wBAAU,0BAAe,IAE/B,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CACrC;oBAClB,8BAAC,wBAAU,CAAC,IAAI,IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,KAAK,EAAE,KAAK,CAAC,EACjD,IAAI,EAAE,8BAAC,0BAAY,0BAAe,IAEjC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CACpC,CACD,CACpB;gBACA,UAAU,IAAI,CACb,8BAAC,wBAAU,CAAC,KAAK,IAAC,KAAK,EAAC,QAAQ;oBAC9B,8BAAC,wBAAU,CAAC,GAAG;wBACb,8BAAC,wBAAU,CAAC,UAAU,IAAC,IAAI,EAAE,8BAAC,wBAAU,0BAAe,IACpD,UAAU,CAAC,KAAK,CACK;wBACxB,8BAAC,wBAAU,CAAC,UAAU,QAEnB,UAAU,CAAC,OAAO,CACG,CACT,CACA,CACpB,CACkB,CACd;QAER,aAAa,IAAI,CAChB;YACE,sEAAsE;YACtE,WAAW,EAAE,aAAa,EAC1B,YAAY,EAAE,aAAa,EAC3B,SAAS,EAAC,oCAAoC,GAC9C,CACH,CACE,CACN,CAAC;AACJ,CAAC,CACF,CAAC;AAEO,kCAAW"}
1
+ {"version":3,"file":"DataTableTh.js","sourceRoot":"","sources":["../../../../src/data/table/th/DataTableTh.tsx"],"names":[],"mappings":"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"}
@@ -47,11 +47,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
47
47
  exports.DataTableTr = void 0;
48
48
  const react_1 = __importStar(require("react"));
49
49
  const helpers_1 = require("../../../utils/helpers");
50
+ const DataTableRoot_context_1 = require("../root/DataTableRoot.context");
50
51
  const DataTableTr = (0, react_1.forwardRef)((_a, forwardedRef) => {
51
- var { className, selected = false } = _a, rest = __rest(_a, ["className", "selected"]);
52
+ var { className, children, selected = false } = _a, rest = __rest(_a, ["className", "children", "selected"]);
53
+ const rootContext = (0, DataTableRoot_context_1.useDataTableContext)();
54
+ const renderFillerCell = rootContext.layout === "fixed" && children;
52
55
  return (react_1.default.createElement("tr", Object.assign({}, rest, { ref: forwardedRef, className: (0, helpers_1.cl)("aksel-data-table__tr", className, {
53
56
  "aksel-data-table__tr--selected": selected,
54
- }) })));
57
+ }) }),
58
+ children,
59
+ renderFillerCell && (
60
+ /* TODO: Consider chaning between th and td based on context */
61
+ react_1.default.createElement("div", { className: "aksel-data-table__th aksel-data-table__filler-cell" }))));
55
62
  });
56
63
  exports.DataTableTr = DataTableTr;
57
64
  //# sourceMappingURL=DataTableTr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableTr.js","sourceRoot":"","sources":["../../../../src/data/table/tr/DataTableTr.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,oDAA4C;AAM5C,MAAM,WAAW,GAAG,IAAA,kBAAU,EAC5B,CAAC,EAAwC,EAAE,YAAY,EAAE,EAAE;QAA1D,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK,OAAW,EAAN,IAAI,cAAtC,yBAAwC,CAAF;IACrC,OAAO,CACL,sDACM,IAAI,IACR,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,IAAA,YAAE,EAAC,sBAAsB,EAAE,SAAS,EAAE;YAC/C,gCAAgC,EAAE,QAAQ;SAC3C,CAAC,IACF,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEO,kCAAW"}
1
+ {"version":3,"file":"DataTableTr.js","sourceRoot":"","sources":["../../../../src/data/table/tr/DataTableTr.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,oDAA4C;AAC5C,yEAAoE;AAMpE,MAAM,WAAW,GAAG,IAAA,kBAAU,EAC5B,CAAC,EAAkD,EAAE,YAAY,EAAE,EAAE;QAApE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,OAAW,EAAN,IAAI,cAAhD,qCAAkD,CAAF;IAC/C,MAAM,WAAW,GAAG,IAAA,2CAAmB,GAAE,CAAC;IAE1C,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC;IAEpE,OAAO,CACL,sDACM,IAAI,IACR,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,IAAA,YAAE,EAAC,sBAAsB,EAAE,SAAS,EAAE;YAC/C,gCAAgC,EAAE,QAAQ;SAC3C,CAAC;QAED,QAAQ;QACR,gBAAgB,IAAI;QACnB,+DAA+D;QAC/D,uCAAK,SAAS,EAAC,oDAAoD,GAAG,CACvE,CACE,CACN,CAAC;AACJ,CAAC,CACF,CAAC;AAEO,kCAAW"}
@@ -2,8 +2,12 @@ import React from "react";
2
2
  import type { AutoCompleteOption, OptionGroup } from "./AutoSuggest.types";
3
3
  interface AutoSuggestProps {
4
4
  options: OptionGroup<AutoCompleteOption>[];
5
- onSelect: (value: string) => void;
5
+ onSelect: (option: AutoCompleteOption) => boolean;
6
6
  className?: string;
7
+ value: string;
8
+ onChange: (newValue: string) => void;
9
+ open: boolean;
10
+ setOpen: (open: boolean) => void;
7
11
  }
8
- declare const AutoSuggest: React.ForwardRefExoticComponent<AutoSuggestProps & React.RefAttributes<HTMLDivElement>>;
12
+ declare const AutoSuggest: React.ForwardRefExoticComponent<AutoSuggestProps & React.RefAttributes<HTMLInputElement>>;
9
13
  export { AutoSuggest };