@navikt/ds-react 8.5.2 → 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 (258) 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 -14
  25. package/cjs/data/token-filter/AutoSuggest.js.map +1 -1
  26. package/cjs/data/token-filter/AutoSuggest.types.d.ts +0 -1
  27. package/cjs/data/token-filter/TokenFilter.d.ts +10 -5
  28. package/cjs/data/token-filter/TokenFilter.js +110 -48
  29. package/cjs/data/token-filter/TokenFilter.js.map +1 -1
  30. package/cjs/data/token-filter/TokenFilter.types.d.ts +51 -35
  31. package/cjs/data/token-filter/helpers/generate-autocomplete-options.d.ts +3 -6
  32. package/cjs/data/token-filter/helpers/generate-autocomplete-options.js +24 -37
  33. package/cjs/data/token-filter/helpers/generate-autocomplete-options.js.map +1 -1
  34. package/cjs/data/token-filter/helpers/operators.d.ts +6 -6
  35. package/cjs/data/token-filter/helpers/operators.js +3 -4
  36. package/cjs/data/token-filter/helpers/operators.js.map +1 -1
  37. package/cjs/data/token-filter/helpers/parse-query-text.d.ts +2 -20
  38. package/cjs/data/token-filter/helpers/parse-query-text.js +1 -1
  39. package/cjs/data/token-filter/helpers/parse-query-text.js.map +1 -1
  40. package/cjs/data/token-filter/helpers/query-builder.d.ts +2 -2
  41. package/cjs/data/token-filter/helpers/query-builder.js.map +1 -1
  42. package/cjs/date/Date.Dialog.d.ts +5 -1
  43. package/cjs/date/Date.Dialog.js +6 -2
  44. package/cjs/date/Date.Dialog.js.map +1 -1
  45. package/cjs/date/datepicker/DatePicker.js +3 -2
  46. package/cjs/date/datepicker/DatePicker.js.map +1 -1
  47. package/cjs/date/datepicker/hooks/useDatepicker.js +5 -2
  48. package/cjs/date/datepicker/hooks/useDatepicker.js.map +1 -1
  49. package/cjs/date/datepicker/hooks/useRangeDatepicker.js +3 -1
  50. package/cjs/date/datepicker/hooks/useRangeDatepicker.js.map +1 -1
  51. package/cjs/date/datepicker/parts/DatePicker.Months.d.ts +2 -1
  52. package/cjs/date/datepicker/parts/DatePicker.Months.js +3 -3
  53. package/cjs/date/datepicker/parts/DatePicker.Months.js.map +1 -1
  54. package/cjs/date/datepicker/parts/DatePicker.RDP.d.ts +5 -1
  55. package/cjs/date/datepicker/parts/DatePicker.RDP.js +2 -2
  56. package/cjs/date/datepicker/parts/DatePicker.RDP.js.map +1 -1
  57. package/cjs/date/monthpicker/MonthPicker.js +3 -2
  58. package/cjs/date/monthpicker/MonthPicker.js.map +1 -1
  59. package/cjs/date/monthpicker/hooks/useMonthPicker.js +3 -1
  60. package/cjs/date/monthpicker/hooks/useMonthPicker.js.map +1 -1
  61. package/cjs/date/monthpicker/parts/MonthPicker.Caption.d.ts +4 -1
  62. package/cjs/date/monthpicker/parts/MonthPicker.Caption.js +3 -2
  63. package/cjs/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -1
  64. package/cjs/dropdown/Toggle.js +5 -12
  65. package/cjs/dropdown/Toggle.js.map +1 -1
  66. package/cjs/form/combobox/Input/Input.js +1 -1
  67. package/cjs/form/combobox/Input/Input.js.map +1 -1
  68. package/cjs/inline-message/root/InlineMessage.js +2 -2
  69. package/cjs/inline-message/root/InlineMessage.js.map +1 -1
  70. package/cjs/provider/Provider.d.ts +2 -2
  71. package/cjs/toggle-group/useToggleGroup.js +5 -3
  72. package/cjs/toggle-group/useToggleGroup.js.map +1 -1
  73. package/cjs/tooltip/Tooltip.js +1 -3
  74. package/cjs/tooltip/Tooltip.js.map +1 -1
  75. package/cjs/utils/components/HighlightText/HighlightText.d.ts +8 -0
  76. package/cjs/utils/components/HighlightText/HighlightText.js +27 -0
  77. package/cjs/utils/components/HighlightText/HighlightText.js.map +1 -0
  78. package/cjs/utils/components/Listbox/group/ListboxGroup.d.ts +7 -0
  79. package/cjs/utils/components/Listbox/group/ListboxGroup.js +15 -0
  80. package/cjs/utils/components/Listbox/group/ListboxGroup.js.map +1 -0
  81. package/cjs/utils/components/Listbox/input-slot/ListboxInputSlot.d.ts +7 -0
  82. package/cjs/utils/components/Listbox/input-slot/ListboxInputSlot.js +15 -0
  83. package/cjs/utils/components/Listbox/input-slot/ListboxInputSlot.js.map +1 -0
  84. package/cjs/utils/components/Listbox/item/ListboxItem.d.ts +24 -0
  85. package/cjs/utils/components/Listbox/item/ListboxItem.js +33 -0
  86. package/cjs/utils/components/Listbox/item/ListboxItem.js.map +1 -0
  87. package/cjs/utils/components/Listbox/list/ListboxList.d.ts +8 -0
  88. package/cjs/utils/components/Listbox/list/ListboxList.js +32 -0
  89. package/cjs/utils/components/Listbox/list/ListboxList.js.map +1 -0
  90. package/cjs/utils/components/Listbox/root/ListboxRoot.d.ts +20 -0
  91. package/cjs/utils/components/Listbox/root/ListboxRoot.js +84 -0
  92. package/cjs/utils/components/Listbox/root/ListboxRoot.js.map +1 -0
  93. package/cjs/utils/components/Listbox/root/domHelpers.d.ts +3 -0
  94. package/cjs/utils/components/Listbox/root/domHelpers.js +53 -0
  95. package/cjs/utils/components/Listbox/root/domHelpers.js.map +1 -0
  96. package/cjs/utils/components/focus-boundary/FocusBoundary.js +9 -64
  97. package/cjs/utils/components/focus-boundary/FocusBoundary.js.map +1 -1
  98. package/cjs/utils/helpers/focus.d.ts +14 -0
  99. package/cjs/utils/helpers/focus.js +63 -0
  100. package/cjs/utils/helpers/focus.js.map +1 -0
  101. package/cjs/utils/hooks/useDeferredValue.d.ts +1 -0
  102. package/cjs/utils/hooks/useDeferredValue.js +14 -0
  103. package/cjs/utils/hooks/useDeferredValue.js.map +1 -0
  104. package/esm/data/drag-and-drop/item/DataDragAndDropItem.d.ts +27 -0
  105. package/esm/data/drag-and-drop/item/DataDragAndDropItem.js +55 -0
  106. package/esm/data/drag-and-drop/item/DataDragAndDropItem.js.map +1 -0
  107. package/esm/data/drag-and-drop/root/DataDragAndDrop.context.d.ts +5 -0
  108. package/esm/data/drag-and-drop/root/DataDragAndDrop.context.js +3 -0
  109. package/esm/data/drag-and-drop/root/DataDragAndDrop.context.js.map +1 -0
  110. package/esm/data/drag-and-drop/root/DataDragAndDropRoot.d.ts +24 -0
  111. package/esm/data/drag-and-drop/root/DataDragAndDropRoot.js +71 -0
  112. package/esm/data/drag-and-drop/root/DataDragAndDropRoot.js.map +1 -0
  113. package/esm/data/table/helpers/table-keyboard.d.ts +1 -0
  114. package/esm/data/table/helpers/table-keyboard.js +5 -3
  115. package/esm/data/table/helpers/table-keyboard.js.map +1 -1
  116. package/esm/data/table/root/DataTableRoot.context.d.ts +8 -0
  117. package/esm/data/table/root/DataTableRoot.context.js +7 -0
  118. package/esm/data/table/root/DataTableRoot.context.js.map +1 -0
  119. package/esm/data/table/root/DataTableRoot.js +5 -3
  120. package/esm/data/table/root/DataTableRoot.js.map +1 -1
  121. package/esm/data/table/th/DataTableTh.d.ts +18 -2
  122. package/esm/data/table/th/DataTableTh.js +46 -21
  123. package/esm/data/table/th/DataTableTh.js.map +1 -1
  124. package/esm/data/table/tr/DataTableTr.js +9 -2
  125. package/esm/data/table/tr/DataTableTr.js.map +1 -1
  126. package/esm/data/token-filter/AutoSuggest.d.ts +6 -2
  127. package/esm/data/token-filter/AutoSuggest.js +45 -16
  128. package/esm/data/token-filter/AutoSuggest.js.map +1 -1
  129. package/esm/data/token-filter/AutoSuggest.types.d.ts +0 -1
  130. package/esm/data/token-filter/TokenFilter.d.ts +10 -5
  131. package/esm/data/token-filter/TokenFilter.js +110 -48
  132. package/esm/data/token-filter/TokenFilter.js.map +1 -1
  133. package/esm/data/token-filter/TokenFilter.types.d.ts +51 -35
  134. package/esm/data/token-filter/helpers/generate-autocomplete-options.d.ts +3 -6
  135. package/esm/data/token-filter/helpers/generate-autocomplete-options.js +24 -37
  136. package/esm/data/token-filter/helpers/generate-autocomplete-options.js.map +1 -1
  137. package/esm/data/token-filter/helpers/operators.d.ts +6 -6
  138. package/esm/data/token-filter/helpers/operators.js +3 -4
  139. package/esm/data/token-filter/helpers/operators.js.map +1 -1
  140. package/esm/data/token-filter/helpers/parse-query-text.d.ts +2 -20
  141. package/esm/data/token-filter/helpers/parse-query-text.js +1 -1
  142. package/esm/data/token-filter/helpers/parse-query-text.js.map +1 -1
  143. package/esm/data/token-filter/helpers/query-builder.d.ts +2 -2
  144. package/esm/data/token-filter/helpers/query-builder.js.map +1 -1
  145. package/esm/date/Date.Dialog.d.ts +5 -1
  146. package/esm/date/Date.Dialog.js +6 -2
  147. package/esm/date/Date.Dialog.js.map +1 -1
  148. package/esm/date/datepicker/DatePicker.js +3 -2
  149. package/esm/date/datepicker/DatePicker.js.map +1 -1
  150. package/esm/date/datepicker/hooks/useDatepicker.js +5 -2
  151. package/esm/date/datepicker/hooks/useDatepicker.js.map +1 -1
  152. package/esm/date/datepicker/hooks/useRangeDatepicker.js +3 -1
  153. package/esm/date/datepicker/hooks/useRangeDatepicker.js.map +1 -1
  154. package/esm/date/datepicker/parts/DatePicker.Months.d.ts +2 -1
  155. package/esm/date/datepicker/parts/DatePicker.Months.js +3 -3
  156. package/esm/date/datepicker/parts/DatePicker.Months.js.map +1 -1
  157. package/esm/date/datepicker/parts/DatePicker.RDP.d.ts +5 -1
  158. package/esm/date/datepicker/parts/DatePicker.RDP.js +2 -2
  159. package/esm/date/datepicker/parts/DatePicker.RDP.js.map +1 -1
  160. package/esm/date/monthpicker/MonthPicker.js +3 -2
  161. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  162. package/esm/date/monthpicker/hooks/useMonthPicker.js +3 -1
  163. package/esm/date/monthpicker/hooks/useMonthPicker.js.map +1 -1
  164. package/esm/date/monthpicker/parts/MonthPicker.Caption.d.ts +4 -1
  165. package/esm/date/monthpicker/parts/MonthPicker.Caption.js +3 -2
  166. package/esm/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -1
  167. package/esm/dropdown/Toggle.js +5 -12
  168. package/esm/dropdown/Toggle.js.map +1 -1
  169. package/esm/form/combobox/Input/Input.js +1 -1
  170. package/esm/form/combobox/Input/Input.js.map +1 -1
  171. package/esm/inline-message/root/InlineMessage.js +3 -3
  172. package/esm/inline-message/root/InlineMessage.js.map +1 -1
  173. package/esm/provider/Provider.d.ts +2 -2
  174. package/esm/toggle-group/useToggleGroup.js +6 -4
  175. package/esm/toggle-group/useToggleGroup.js.map +1 -1
  176. package/esm/tooltip/Tooltip.js +1 -3
  177. package/esm/tooltip/Tooltip.js.map +1 -1
  178. package/esm/utils/components/HighlightText/HighlightText.d.ts +8 -0
  179. package/esm/utils/components/HighlightText/HighlightText.js +21 -0
  180. package/esm/utils/components/HighlightText/HighlightText.js.map +1 -0
  181. package/esm/utils/components/Listbox/group/ListboxGroup.d.ts +7 -0
  182. package/esm/utils/components/Listbox/group/ListboxGroup.js +10 -0
  183. package/esm/utils/components/Listbox/group/ListboxGroup.js.map +1 -0
  184. package/esm/utils/components/Listbox/input-slot/ListboxInputSlot.d.ts +7 -0
  185. package/esm/utils/components/Listbox/input-slot/ListboxInputSlot.js +9 -0
  186. package/esm/utils/components/Listbox/input-slot/ListboxInputSlot.js.map +1 -0
  187. package/esm/utils/components/Listbox/item/ListboxItem.d.ts +24 -0
  188. package/esm/utils/components/Listbox/item/ListboxItem.js +27 -0
  189. package/esm/utils/components/Listbox/item/ListboxItem.js.map +1 -0
  190. package/esm/utils/components/Listbox/list/ListboxList.d.ts +8 -0
  191. package/esm/utils/components/Listbox/list/ListboxList.js +27 -0
  192. package/esm/utils/components/Listbox/list/ListboxList.js.map +1 -0
  193. package/esm/utils/components/Listbox/root/ListboxRoot.d.ts +20 -0
  194. package/esm/utils/components/Listbox/root/ListboxRoot.js +79 -0
  195. package/esm/utils/components/Listbox/root/ListboxRoot.js.map +1 -0
  196. package/esm/utils/components/Listbox/root/domHelpers.d.ts +3 -0
  197. package/esm/utils/components/Listbox/root/domHelpers.js +50 -0
  198. package/esm/utils/components/Listbox/root/domHelpers.js.map +1 -0
  199. package/esm/utils/components/focus-boundary/FocusBoundary.js +8 -63
  200. package/esm/utils/components/focus-boundary/FocusBoundary.js.map +1 -1
  201. package/esm/utils/helpers/focus.d.ts +14 -0
  202. package/esm/utils/helpers/focus.js +60 -0
  203. package/esm/utils/helpers/focus.js.map +1 -0
  204. package/esm/utils/hooks/useDeferredValue.d.ts +1 -0
  205. package/esm/utils/hooks/useDeferredValue.js +7 -0
  206. package/esm/utils/hooks/useDeferredValue.js.map +1 -0
  207. package/package.json +7 -7
  208. package/src/data/drag-and-drop/item/DataDragAndDropItem.tsx +101 -0
  209. package/src/data/drag-and-drop/root/DataDragAndDrop.context.tsx +9 -0
  210. package/src/data/drag-and-drop/root/DataDragAndDropRoot.tsx +98 -0
  211. package/src/data/table/helpers/table-keyboard.ts +7 -3
  212. package/src/data/table/root/DataTableRoot.context.ts +13 -0
  213. package/src/data/table/root/DataTableRoot.tsx +16 -13
  214. package/src/data/table/th/DataTableTh.tsx +110 -54
  215. package/src/data/table/tr/DataTableTr.tsx +13 -2
  216. package/src/data/token-filter/AutoSuggest.tsx +142 -35
  217. package/src/data/token-filter/AutoSuggest.types.ts +0 -1
  218. package/src/data/token-filter/TokenFilter.tsx +179 -81
  219. package/src/data/token-filter/TokenFilter.types.ts +70 -44
  220. package/src/data/token-filter/helpers/generate-autocomplete-options.test.ts +97 -157
  221. package/src/data/token-filter/helpers/generate-autocomplete-options.ts +56 -53
  222. package/src/data/token-filter/helpers/operators.test.ts +29 -29
  223. package/src/data/token-filter/helpers/operators.ts +16 -16
  224. package/src/data/token-filter/helpers/parse-query-text.test.ts +37 -35
  225. package/src/data/token-filter/helpers/parse-query-text.ts +7 -26
  226. package/src/data/token-filter/helpers/query-builder.ts +2 -2
  227. package/src/date/Date.Dialog.tsx +15 -0
  228. package/src/date/datepicker/DatePicker.tsx +3 -0
  229. package/src/date/datepicker/hooks/useDatepicker.tsx +7 -2
  230. package/src/date/datepicker/hooks/useRangeDatepicker.tsx +5 -1
  231. package/src/date/datepicker/parts/DatePicker.Months.tsx +9 -1
  232. package/src/date/datepicker/parts/DatePicker.RDP.tsx +7 -1
  233. package/src/date/monthpicker/MonthPicker.tsx +3 -1
  234. package/src/date/monthpicker/hooks/useMonthPicker.tsx +5 -1
  235. package/src/date/monthpicker/parts/MonthPicker.Caption.tsx +20 -2
  236. package/src/dropdown/Toggle.tsx +6 -12
  237. package/src/form/combobox/Input/Input.tsx +2 -2
  238. package/src/inline-message/root/InlineMessage.tsx +5 -5
  239. package/src/provider/Provider.tsx +2 -2
  240. package/src/toggle-group/useToggleGroup.ts +6 -5
  241. package/src/tooltip/Tooltip.tsx +1 -3
  242. package/src/utils/components/HighlightText/HighlightText.tsx +34 -0
  243. package/src/utils/components/Listbox/group/ListboxGroup.tsx +26 -0
  244. package/src/utils/components/Listbox/input-slot/ListboxInputSlot.tsx +22 -0
  245. package/src/utils/components/Listbox/item/ListboxItem.tsx +57 -0
  246. package/src/utils/components/Listbox/list/ListboxList.tsx +38 -0
  247. package/src/utils/components/Listbox/root/ListboxRoot.tsx +104 -0
  248. package/src/utils/components/Listbox/root/domHelpers.ts +59 -0
  249. package/src/utils/components/focus-boundary/FocusBoundary.tsx +8 -78
  250. package/src/utils/helpers/focus.ts +75 -0
  251. package/src/utils/hooks/useDeferredValue.ts +12 -0
  252. package/cjs/data/table/th/DataTableThSortHandle.d.ts +0 -6
  253. package/cjs/data/table/th/DataTableThSortHandle.js +0 -82
  254. package/cjs/data/table/th/DataTableThSortHandle.js.map +0 -1
  255. package/esm/data/table/th/DataTableThSortHandle.d.ts +0 -6
  256. package/esm/data/table/th/DataTableThSortHandle.js +0 -47
  257. package/esm/data/table/th/DataTableThSortHandle.js.map +0 -1
  258. package/src/data/table/th/DataTableThSortHandle.tsx +0 -67
@@ -32,25 +32,57 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
36
39
  exports.AutoSuggest = void 0;
37
40
  const react_1 = __importStar(require("react"));
38
- const box_1 = require("../../primitives/box");
41
+ const search_1 = require("../../form/search");
39
42
  const stack_1 = require("../../primitives/stack");
40
43
  const typography_1 = require("../../typography");
41
- const AutoSuggest = (0, react_1.forwardRef)(({ options, onSelect }, ref) => {
42
- return (react_1.default.createElement(box_1.Box, { ref: ref, padding: "space-6" }, options.map((group) => (react_1.default.createElement("div", { key: group.label },
43
- react_1.default.createElement(typography_1.Label, { as: "div" }, group.label),
44
- react_1.default.createElement(stack_1.VStack, { gap: "space-4" }, group.options.map((option) => {
45
- var _a, _b;
46
- return (react_1.default.createElement("div", { key: option.value },
47
- react_1.default.createElement("button", { type: "button", onClick: () => { var _a;
48
- /* @ts-expect-error TODO: We need to convert the data properly */
49
- return onSelect((_a = option.value) !== null && _a !== void 0 ? _a : option.propertyKey); } },
50
- react_1.default.createElement("span", null, (_b = (_a = option.value) !== null && _a !== void 0 ? _a : option.label) !== null && _b !== void 0 ? _b : option.propertyLabel),
51
- option.description && react_1.default.createElement("span", null, option.description),
52
- option.tags && option.tags.length > 0 && (react_1.default.createElement("div", null, option.tags.map((tag) => (react_1.default.createElement("span", { key: tag }, tag))))))));
53
- })))))));
44
+ const ListboxGroup_1 = require("../../utils/components/Listbox/group/ListboxGroup");
45
+ const ListboxItem_1 = require("../../utils/components/Listbox/item/ListboxItem");
46
+ const ListboxRoot_1 = __importDefault(require("../../utils/components/Listbox/root/ListboxRoot"));
47
+ const DismissableLayer_1 = require("../../utils/components/dismissablelayer/DismissableLayer");
48
+ const Floating_1 = require("../../utils/components/floating/Floating");
49
+ const hooks_1 = require("../../utils/hooks");
50
+ const AutoSuggest = (0, react_1.forwardRef)(({ options, onSelect, value, onChange, open, setOpen }, ref) => {
51
+ const [virtuallyFocusedItemId, setVirtuallyFocusedItemId] = (0, react_1.useState)("");
52
+ const [inputRef, setInputRef] = (0, react_1.useState)(null);
53
+ /* Unsure why N version works, but not regular here */
54
+ const mergedRef = (0, hooks_1.useMergeRefsN)([setInputRef, ref]);
55
+ const handleClose = () => {
56
+ setOpen(false);
57
+ };
58
+ const handleChange = (newValue) => {
59
+ onChange(newValue);
60
+ setOpen(true);
61
+ };
62
+ const handleSelectOption = (option) => {
63
+ const createdNewToken = onSelect(option);
64
+ if (createdNewToken) {
65
+ inputRef === null || inputRef === void 0 ? void 0 : inputRef.focus();
66
+ setOpen(false);
67
+ }
68
+ };
69
+ return (react_1.default.createElement(Floating_1.Floating, null,
70
+ react_1.default.createElement(ListboxRoot_1.default, { setVirtuallyFocusedItemId: setVirtuallyFocusedItemId },
71
+ react_1.default.createElement(Floating_1.Floating.Anchor, null,
72
+ react_1.default.createElement(ListboxRoot_1.default.InputSlot, null,
73
+ react_1.default.createElement(search_1.Search, { label: "Tabells\u00F8k", variant: "simple", className: "aksel-property-filter__input", placeholder: "Type to filter...", ref: mergedRef, value: value, onChange: handleChange, onClick: () => {
74
+ setOpen(true);
75
+ }, onFocus: () => setOpen(true) }))),
76
+ open && (react_1.default.createElement(AutoSuggestPopup, { options: options, onSelect: handleSelectOption, focusedValue: virtuallyFocusedItemId, setFocusedValue: setVirtuallyFocusedItemId, onClose: handleClose, safeZoneAnchor: inputRef })))));
54
77
  });
55
78
  exports.AutoSuggest = AutoSuggest;
79
+ const AutoSuggestPopup = (0, react_1.forwardRef)(({ options, onSelect, focusedValue, setFocusedValue, onClose, safeZoneAnchor, }, ref) => {
80
+ return (react_1.default.createElement(DismissableLayer_1.DismissableLayer, { asChild: true, onDismiss: onClose, safeZone: { anchor: safeZoneAnchor } },
81
+ react_1.default.createElement(Floating_1.Floating.Content, { ref: ref, align: "start", side: "bottom", fallbackPlacements: [], sideOffset: 8, className: "aksel-property-filter__popup" },
82
+ react_1.default.createElement("div", { className: "aksel-property-filter__popup-inner" },
83
+ react_1.default.createElement(ListboxRoot_1.default.List, { setVirtuallyFocusedItemId: setFocusedValue }, options.map((group) => (react_1.default.createElement(ListboxGroup_1.ListboxGroup, { key: group.label, label: group.label }, group.options.map((item) => (react_1.default.createElement(ListboxItem_1.ListboxItem, { key: item.value, id: item.value, onClick: () => onSelect(item), hasVirtualFocus: focusedValue === item.value },
84
+ react_1.default.createElement(stack_1.VStack, { gap: "space-0" },
85
+ react_1.default.createElement(typography_1.Label, { as: "div" }, item.label),
86
+ item.description && (react_1.default.createElement(typography_1.Detail, { as: "div" }, item.description))))))))))))));
87
+ });
56
88
  //# sourceMappingURL=AutoSuggest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutoSuggest.js","sourceRoot":"","sources":["../../../src/data/token-filter/AutoSuggest.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,8CAA2C;AAC3C,kDAAgD;AAChD,iDAAyC;AASzC,MAAM,WAAW,GAAG,IAAA,kBAAU,EAC5B,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;IAC7B,OAAO,CACL,8BAAC,SAAG,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAC,SAAS,IAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,uCAAK,GAAG,EAAE,KAAK,CAAC,KAAK;QACnB,8BAAC,kBAAK,IAAC,EAAE,EAAC,KAAK,IAAE,KAAK,CAAC,KAAK,CAAS;QACrC,8BAAC,cAAM,IAAC,GAAG,EAAC,SAAS,IAClB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;;YAC5B,OAAO,CACL,uCAAK,GAAG,EAAE,MAAM,CAAC,KAAK;gBACpB,0CACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE;oBACZ,iEAAiE;oBACjE,OAAA,QAAQ,CAAC,MAAA,MAAM,CAAC,KAAK,mCAAI,MAAM,CAAC,WAAW,CAAC,CAAA,EAAA;oBAG9C,4CAEG,MAAA,MAAA,MAAM,CAAC,KAAK,mCAAI,MAAM,CAAC,KAAK,mCAAI,MAAM,CAAC,aAAa,CAChD;oBACN,MAAM,CAAC,WAAW,IAAI,4CAAO,MAAM,CAAC,WAAW,CAAQ;oBACvD,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CACxC,2CACG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACxB,wCAAM,GAAG,EAAE,GAAG,IAAG,GAAG,CAAQ,CAC7B,CAAC,CACE,CACP,CACM,CACL,CACP,CAAC;QACJ,CAAC,CAAC,CACK,CACL,CACP,CAAC,CACE,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEO,kCAAW"}
1
+ {"version":3,"file":"AutoSuggest.js","sourceRoot":"","sources":["../../../src/data/token-filter/AutoSuggest.tsx"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@ interface AutoCompleteOption {
6
6
  value: string;
7
7
  label: string;
8
8
  tags?: string[];
9
- filteringTags?: string[];
10
9
  description?: string;
11
10
  }
12
11
  export type { AutoCompleteOption, OptionGroup };
@@ -1,11 +1,16 @@
1
1
  import React from "react";
2
- import type { QueryFilterQuery, QueryFilteringOptions, QueryFilteringProperties } from "./TokenFilter.types";
2
+ import type { ExternalOptions, ExternalPropertyDefinitions, ExternalQuery } from "./TokenFilter.types";
3
3
  type TokenFilterProps = {
4
- query: QueryFilterQuery;
5
- onChange: (newQuery: QueryFilterQuery) => void;
4
+ query: ExternalQuery;
5
+ onChange: (newQuery: ExternalQuery) => void;
6
6
  className?: string;
7
- filteringOptions: QueryFilteringOptions;
8
- filteringProperties: QueryFilteringProperties;
7
+ propertyDefinitions: ExternalPropertyDefinitions;
8
+ options: ExternalOptions;
9
9
  };
10
+ /**
11
+ * TODO:
12
+ * - Implement onChange handler to update query state when user selects an autocomplete option.
13
+ * - Handle token rendering and editing (e.g., show tokens for matched properties/operators/values, allow deleting tokens).
14
+ */
10
15
  export declare const TokenFilter: React.ForwardRefExoticComponent<TokenFilterProps & React.RefAttributes<HTMLDivElement>>;
11
16
  export {};
@@ -35,68 +35,130 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.TokenFilter = void 0;
37
37
  const react_1 = __importStar(require("react"));
38
- const popover_1 = require("../../popover");
38
+ const chips_1 = require("../../chips");
39
+ const stack_1 = require("../../primitives/stack");
39
40
  const helpers_1 = require("../../utils/helpers");
40
41
  const AutoSuggest_1 = require("./AutoSuggest");
41
42
  const generate_autocomplete_options_1 = require("./helpers/generate-autocomplete-options");
42
43
  const parse_query_text_1 = require("./helpers/parse-query-text");
43
- exports.TokenFilter = (0, react_1.forwardRef)(({ query, className, filteringProperties, filteringOptions }, ref) => {
44
- const [inputAnchor, setInputAnchor] = (0, react_1.useState)(null);
44
+ /**
45
+ * TODO:
46
+ * - Implement onChange handler to update query state when user selects an autocomplete option.
47
+ * - Handle token rendering and editing (e.g., show tokens for matched properties/operators/values, allow deleting tokens).
48
+ */
49
+ exports.TokenFilter = (0, react_1.forwardRef)(({ query, className, propertyDefinitions, options, onChange }, ref) => {
45
50
  const [filterText, setFilterText] = (0, react_1.useState)("");
46
- const { properties, options } = derrivedFilterState(filteringProperties, filteringOptions);
47
- const queryState = (0, parse_query_text_1.parseQueryText)(filterText, properties);
48
- const autoCompleteOptions = (0, generate_autocomplete_options_1.generateAutoCompleteOptions)(queryState, properties, options);
49
- const handleSelectOption = (value) => {
50
- setFilterText(value);
51
- setCustomOpen(false);
51
+ const [open, setOpen] = (0, react_1.useState)(false);
52
+ const { parsedPropertyDefinitions, parsedPropertyOptions } = derrivedFilterState(propertyDefinitions, options);
53
+ const queryState = (0, parse_query_text_1.parseQueryText)(filterText, parsedPropertyDefinitions);
54
+ const autoCompleteOptions = (0, generate_autocomplete_options_1.generateAutoCompleteOptions)(queryState, parsedPropertyDefinitions, parsedPropertyOptions);
55
+ const { addToken, removeToken } = createActionHandlers({
56
+ query,
57
+ onChange,
58
+ });
59
+ const createToken = (newText) => {
60
+ const newQueryState = (0, parse_query_text_1.parseQueryText)(newText, parsedPropertyDefinitions);
61
+ let newToken = null;
62
+ switch (newQueryState.step) {
63
+ case "property": {
64
+ if (newQueryState.value === "") {
65
+ return false;
66
+ }
67
+ newToken = {
68
+ propertyKey: newQueryState.property.key,
69
+ operator: newQueryState.operator,
70
+ value: newQueryState.value,
71
+ };
72
+ break;
73
+ }
74
+ case "free-text": {
75
+ break;
76
+ }
77
+ case "operator": {
78
+ break;
79
+ }
80
+ }
81
+ if (newToken) {
82
+ addToken(newToken);
83
+ setFilterText("");
84
+ return true;
85
+ }
86
+ return false;
87
+ };
88
+ const handleSelectOption = (option) => {
89
+ const newQueryState = (0, parse_query_text_1.parseQueryText)(option.value, parsedPropertyDefinitions);
90
+ if ((newQueryState.step === "property" && newQueryState.value === "") ||
91
+ newQueryState.step === "operator") {
92
+ /* Add space after for better formatting */
93
+ /* TODO: Handle this scenario better */
94
+ setFilterText(`${option.value} `);
95
+ return false;
96
+ }
97
+ setFilterText(option.value);
98
+ return createToken(option.value);
52
99
  };
53
- const [customOpen, setCustomOpen] = (0, react_1.useState)(false);
54
100
  return (react_1.default.createElement("div", { ref: ref, className: (0, helpers_1.cl)("aksel-property-filter", className), role: "search" },
55
- react_1.default.createElement("input", { type: "text", className: "aksel-property-filter__input", placeholder: "Type to filter...", ref: setInputAnchor, value: filterText, onChange: (e) => setFilterText(e.target.value), onFocus: () => setCustomOpen(true) }),
56
- react_1.default.createElement(popover_1.Popover, { anchorEl: inputAnchor, open: customOpen, onClose: () => {
57
- setFilterText("");
58
- setCustomOpen(false);
59
- } },
60
- react_1.default.createElement(AutoSuggest_1.AutoSuggest
61
- /* @ts-expect-error TODO: handle conversion better */
62
- , {
63
- /* @ts-expect-error TODO: handle conversion better */
64
- options: autoCompleteOptions.options, onSelect: handleSelectOption })),
65
- query.tokens.map((token, index) => {
66
- return (react_1.default.createElement("div", { key: index, className: "aksel-property-filter__token" },
67
- react_1.default.createElement("strong", null, token.propertyKey),
68
- " ",
69
- token.operator,
70
- " "));
71
- }),
72
- react_1.default.createElement("ul", null, filteringProperties.map((prop) => (react_1.default.createElement("li", { key: prop.key }, prop.propertyLabel)))),
73
- react_1.default.createElement("pre", null, JSON.stringify(queryState, null, 2)),
74
- react_1.default.createElement("pre", null, JSON.stringify(autoCompleteOptions, null, 2))));
101
+ react_1.default.createElement(AutoSuggest_1.AutoSuggest, { onSelect: handleSelectOption, options: autoCompleteOptions.options, value: filterText, onChange: setFilterText, open: open, setOpen: setOpen }),
102
+ react_1.default.createElement(stack_1.HStack, { marginBlock: "space-8", gap: "space-8" }, query.tokens.map((token, index) => {
103
+ return (react_1.default.createElement(react_1.default.Fragment, { key: `${token.propertyKey}-${token.operator}-${token.value}-${index}` },
104
+ react_1.default.createElement(chips_1.Chips.Removable, { key: index, onClick: () => {
105
+ removeToken(index);
106
+ } }, `${token.propertyKey} ${token.operator} ${token.value}`),
107
+ index < query.tokens.length - 1 && (react_1.default.createElement("span", null, query.operation))));
108
+ }))));
75
109
  });
76
- function derrivedFilterState(filteringProperties, filteringOptions) {
77
- var _a, _b, _c;
110
+ function derrivedFilterState(propertyDefinitions, propteryOptions) {
111
+ var _a, _b, _c, _d, _e, _f, _g, _h;
78
112
  const propertyMap = new Map();
79
- for (const property of filteringProperties) {
113
+ for (const property of propertyDefinitions) {
80
114
  propertyMap.set(property.key, {
81
- propertyKey: property.key,
82
- propertyLabel: (_a = property === null || property === void 0 ? void 0 : property.propertyLabel) !== null && _a !== void 0 ? _a : "",
83
- groupValuesLabel: (_b = property === null || property === void 0 ? void 0 : property.groupValuesLabel) !== null && _b !== void 0 ? _b : "",
84
- propertyGroup: property === null || property === void 0 ? void 0 : property.group,
85
- operators: (_c = property === null || property === void 0 ? void 0 : property.operators) !== null && _c !== void 0 ? _c : [],
86
- /* defaultOperator: property?.defaultOperator ?? '=', */
115
+ key: property.key,
116
+ label: (_a = property === null || property === void 0 ? void 0 : property.label) !== null && _a !== void 0 ? _a : "",
117
+ groupLabel: (_b = property === null || property === void 0 ? void 0 : property.groupLabel) !== null && _b !== void 0 ? _b : "",
118
+ group: (_c = property === null || property === void 0 ? void 0 : property.group) !== null && _c !== void 0 ? _c : "",
119
+ operators: (_d = property === null || property === void 0 ? void 0 : property.operators) !== null && _d !== void 0 ? _d : [],
87
120
  externalProperty: property,
88
121
  });
89
122
  }
90
- const internalOptions = filteringOptions.map((option) => {
91
- var _a, _b, _c, _d, _e;
92
- return ({
93
- property: (_a = propertyMap.get(option.propertyKey)) !== null && _a !== void 0 ? _a : null,
123
+ const internalOptions = [];
124
+ for (const option of propteryOptions) {
125
+ internalOptions.push({
126
+ property: (_e = propertyMap.get(option.propertyKey)) !== null && _e !== void 0 ? _e : null,
94
127
  value: option.value,
95
- label: (_c = (_b = option.label) !== null && _b !== void 0 ? _b : option.value) !== null && _c !== void 0 ? _c : "",
96
- tags: (_d = option.tags) !== null && _d !== void 0 ? _d : [],
97
- filteringTags: (_e = option.filteringTags) !== null && _e !== void 0 ? _e : [],
128
+ label: (_g = (_f = option.label) !== null && _f !== void 0 ? _f : option.value) !== null && _g !== void 0 ? _g : "",
129
+ tags: (_h = option.tags) !== null && _h !== void 0 ? _h : [],
98
130
  });
99
- });
100
- return { properties: [...propertyMap.values()], options: internalOptions };
131
+ }
132
+ return {
133
+ parsedPropertyDefinitions: [...propertyMap.values()],
134
+ parsedPropertyOptions: internalOptions,
135
+ };
136
+ }
137
+ function createActionHandlers({ query, onChange, }) {
138
+ const handleChange = (newQuery) => {
139
+ onChange(newQuery);
140
+ };
141
+ const addToken = (token) => {
142
+ handleChange(Object.assign(Object.assign({}, query), { tokens: [...query.tokens, token] }));
143
+ };
144
+ const updateToken = (updateIndex, updatedToken) => {
145
+ handleChange(Object.assign(Object.assign({}, query), { tokens: query.tokens.map((token, index) => index === updateIndex ? updatedToken : token) }));
146
+ };
147
+ const updateOperation = (operation) => {
148
+ handleChange(Object.assign(Object.assign({}, query), { operation }));
149
+ };
150
+ const removeToken = (removeIndex) => {
151
+ handleChange(Object.assign(Object.assign({}, query), { tokens: query.tokens.filter((_, index) => index !== removeIndex) }));
152
+ };
153
+ const removeAllTokens = () => {
154
+ handleChange(Object.assign(Object.assign({}, query), { tokens: [] }));
155
+ };
156
+ return {
157
+ addToken,
158
+ updateToken,
159
+ updateOperation,
160
+ removeToken,
161
+ removeAllTokens,
162
+ };
101
163
  }
102
164
  //# sourceMappingURL=TokenFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TokenFilter.js","sourceRoot":"","sources":["../../../src/data/token-filter/TokenFilter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TokenFilter.js","sourceRoot":"","sources":["../../../src/data/token-filter/TokenFilter.tsx"],"names":[],"mappings":"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"}
@@ -1,52 +1,68 @@
1
- type QueryFilterOperator = "<" | "<=" | ">" | ">=" | ":" | "!:" | "=" | "!=" | "^" | "!^" | (string & {});
2
- type QueryFilterOperation = "and" | "or";
3
- type QueryFilterToken = {
1
+ type OperatorT = "<" | "<=" | ">" | ">=" | ":" | "!:" | "=" | "!=" | "^" | "!^" | (string & {});
2
+ type OperationT = "and" | "or";
3
+ type ExternalToken = {
4
4
  propertyKey: string;
5
- operator: QueryFilterOperator;
6
- value: any;
5
+ operator: OperatorT;
6
+ value: string;
7
7
  };
8
- type QueryFilterQuery = {
9
- tokens: QueryFilterToken[];
10
- operation: QueryFilterOperation;
8
+ type ExternalQuery = {
9
+ tokens: ExternalToken[];
10
+ operation: OperationT;
11
11
  };
12
- type QueryFilteringOption = {
12
+ type ExternalOption = {
13
13
  propertyKey: string;
14
- value: any;
14
+ value: string;
15
15
  label?: string;
16
16
  tags?: string[];
17
- filteringTags?: string[];
18
17
  disabled?: boolean;
19
18
  };
20
- type QueryFilteringOptions = QueryFilteringOption[];
21
- type QueryFilteringOptionGroup = {
19
+ type ExternalOptions = ExternalOption[];
20
+ type ExternalPropertyGroup = {
22
21
  label: string;
23
- options: QueryFilteringOptions;
22
+ options: ExternalOptions;
24
23
  };
25
- type QueryFilteringScopedOperator = string | {
24
+ type ExternalPropertyDefinition = {
25
+ key: string;
26
+ label: string;
27
+ groupLabel?: string;
28
+ group?: string;
29
+ operators?: ExternalPropertyOperator[];
30
+ };
31
+ type ExternalPropertyDefinitions = ExternalPropertyDefinition[];
32
+ type ExternalPropertyOperator = string | {
26
33
  operator: string;
27
- tokenType: "single" | "multiple";
34
+ type: "single" | "multiple";
28
35
  };
29
- type QueryFilteringProperty = {
36
+ export type { ExternalOption, ExternalOptions, ExternalPropertyDefinition, ExternalPropertyDefinitions, ExternalPropertyGroup, ExternalQuery, ExternalToken, OperationT, OperatorT, };
37
+ type InternalPropertyDefinition = {
30
38
  key: string;
31
- propertyLabel: string;
32
- groupValuesLabel?: string;
33
- group?: string;
34
- operators?: QueryFilteringScopedOperator[];
39
+ label: string;
40
+ groupLabel: string;
41
+ group: string;
42
+ operators: ExternalPropertyOperator[];
43
+ externalProperty: ExternalPropertyDefinition;
35
44
  };
36
- type QueryFilteringProperties = QueryFilteringProperty[];
37
- type ParsedProperty = {
38
- propertyKey: string;
39
- propertyLabel: string;
40
- groupValuesLabel: string;
41
- propertyGroup: string;
42
- operators: QueryFilteringScopedOperator[];
43
- externalProperty: QueryFilteringProperty;
44
- };
45
- type ParsedOption = {
46
- property: ParsedProperty | null;
47
- value: any;
45
+ type InternalPropertyOption = {
46
+ property: InternalPropertyDefinition | null;
47
+ value: string;
48
48
  label: string;
49
49
  tags: string[];
50
- filteringTags: string[];
51
50
  };
52
- export type { QueryFilterOperator, QueryFilterQuery, QueryFilteringOptions, QueryFilteringProperty, QueryFilterOperation, QueryFilteringProperties, ParsedProperty, ParsedOption, QueryFilteringOption, QueryFilteringOptionGroup, };
51
+ type InternalParsedTextState = {
52
+ /** User has typed property + complete operator + value (e.g., "Status != active") */
53
+ step: "property";
54
+ property: InternalPropertyDefinition;
55
+ operator: OperatorT;
56
+ value: string;
57
+ } | {
58
+ /** User is typing the operator after property (e.g., "Status !") */
59
+ step: "operator";
60
+ property: InternalPropertyDefinition;
61
+ operatorPrefix: string;
62
+ } | {
63
+ /** No property match; treat as free-text search */
64
+ step: "free-text";
65
+ value: string;
66
+ operator?: OperatorT;
67
+ };
68
+ export type { InternalPropertyDefinition, InternalPropertyOption, InternalParsedTextState, };
@@ -1,6 +1,5 @@
1
1
  import type { AutoCompleteOption, OptionGroup } from "../AutoSuggest.types";
2
- import type { ParsedOption, ParsedProperty } from "../TokenFilter.types";
3
- import { type ParsedText } from "./parse-query-text";
2
+ import type { InternalParsedTextState, InternalPropertyDefinition, InternalPropertyOption } from "../TokenFilter.types";
4
3
  /**
5
4
  * Generates "options" to be used as autosuggest-ottion based on the current query state.
6
5
  *
@@ -14,11 +13,9 @@ import { type ParsedText } from "./parse-query-text";
14
13
  * Used by the UI to determine cursor position and input replacement.
15
14
  * - options: Grouped suggestions to display (properties, operators, or values).
16
15
  */
17
- declare function generateAutoCompleteOptions(queryState: ParsedText, filteringProperties?: ParsedProperty[], filteringOptions?: ParsedOption[]): {
16
+ type AutoCompleteResult = {
18
17
  value: string;
19
18
  options: OptionGroup<AutoCompleteOption>[];
20
- } | {
21
- value: string;
22
- options: OptionGroup<ParsedProperty>[];
23
19
  };
20
+ declare function generateAutoCompleteOptions(queryState: InternalParsedTextState, filteringProperties?: InternalPropertyDefinition[], filteringOptions?: InternalPropertyOption[]): AutoCompleteResult;
24
21
  export { generateAutoCompleteOptions };
@@ -5,19 +5,6 @@ const grouping_1 = require("./grouping");
5
5
  const operators_1 = require("./operators");
6
6
  const query_builder_1 = require("./query-builder");
7
7
  const text_matching_1 = require("./text-matching");
8
- /**
9
- * Generates "options" to be used as autosuggest-ottion based on the current query state.
10
- *
11
- * The query parser recognizes three states:
12
- * - "property": User has selected/matched a property and operator ("Status = active")
13
- * - "operator": User has matched a property but is typing the operator ("Status" or "Status !")
14
- * - "free-text": User is typing freely without a property match (e.g., "act" or "!: test")
15
- *
16
- * @returns
17
- * - value: The canonical query string representation for the current state.
18
- * Used by the UI to determine cursor position and input replacement.
19
- * - options: Grouped suggestions to display (properties, operators, or values).
20
- */
21
8
  function generateAutoCompleteOptions(queryState, filteringProperties = [], filteringOptions = []) {
22
9
  var _a;
23
10
  /* State: Property and operator are matched, suggest values */
@@ -31,14 +18,11 @@ function generateAutoCompleteOptions(queryState, filteringProperties = [], filte
31
18
  /* State: Property matched, but operator is incomplete */
32
19
  if (queryState.step === "operator") {
33
20
  const operators = filterOperatorsByPrefix(getValidOperatorsForProperty(queryState.property), queryState.operatorPrefix);
34
- const partialQuery = (0, query_builder_1.buildQueryString)(queryState.property.propertyLabel, queryState.operatorPrefix, "");
21
+ const partialQuery = (0, query_builder_1.buildQueryString)(queryState.property.label, queryState.operatorPrefix, "");
35
22
  /**
36
23
  * Edge case: User typed an invalid operator prefix that doesn't match any operators.
37
24
  * This can happen when typing characters that don't start any valid operator.
38
25
  * Return empty suggestions gracefully - the UI will show "no results".
39
- *
40
- * TODO: When per-property operator configuration is implemented,
41
- * this could also occur when a property restricts which operators are valid.
42
26
  */
43
27
  if (operators.length === 0) {
44
28
  return {
@@ -74,7 +58,10 @@ function generateAutoCompleteOptions(queryState, filteringProperties = [], filte
74
58
  */
75
59
  return {
76
60
  value: queryState.value,
77
- options: createValueSuggestions(filteringOptions, (_a = queryState.operator) !== null && _a !== void 0 ? _a : "=", queryState.value),
61
+ options: [
62
+ ...generatePropertySuggestions(filteringProperties, queryState.value),
63
+ ...createValueSuggestions(filteringOptions, (_a = queryState.operator) !== null && _a !== void 0 ? _a : "=", queryState.value),
64
+ ],
78
65
  };
79
66
  }
80
67
  /**
@@ -120,15 +107,18 @@ function generatePropertySuggestions(filteringProperties = [], filterText = "")
120
107
  if (!property) {
121
108
  continue;
122
109
  }
123
- if ((0, text_matching_1.matchesFilterText)([
124
- property.propertyLabel,
125
- property.groupValuesLabel,
126
- property.propertyGroup,
127
- ].filter(Boolean), filterText)) {
110
+ if ((0, text_matching_1.matchesFilterText)([property.label, property.groupLabel, property.group].filter(Boolean), filterText)) {
128
111
  filteredProperties.push(property);
129
112
  }
130
113
  }
131
- return (0, grouping_1.createGroups)(filteredProperties, (property) => property.propertyGroup, "Properties");
114
+ const groups = (0, grouping_1.createGroups)(filteredProperties, (property) => property.group, "Properties");
115
+ return groups.map((group) => ({
116
+ label: group.label,
117
+ options: group.options.map((property) => ({
118
+ value: (0, query_builder_1.buildQueryString)(property.label, "", ""),
119
+ label: property.label,
120
+ })),
121
+ }));
132
122
  }
133
123
  function generateOperatorSuggestions(property, operatorPrefix = "") {
134
124
  const operators = filterOperatorsByPrefix(getValidOperatorsForProperty(property), operatorPrefix);
@@ -141,8 +131,8 @@ function generateOperatorSuggestions(property, operatorPrefix = "") {
141
131
  options: operators.map((operator) => {
142
132
  var _a;
143
133
  return ({
144
- value: (0, query_builder_1.buildQueryString)(property.propertyLabel, operator, ""),
145
- label: (0, query_builder_1.buildQueryString)(property.propertyLabel, operator, ""),
134
+ value: (0, query_builder_1.buildQueryString)(property.label, operator, ""),
135
+ label: (0, query_builder_1.buildQueryString)(property.label, operator, ""),
146
136
  description: (_a = query_builder_1.OPERATOR_LABELS[operator]) !== null && _a !== void 0 ? _a : "",
147
137
  });
148
138
  }),
@@ -153,9 +143,11 @@ function generateOperatorSuggestions(property, operatorPrefix = "") {
153
143
  * Creates value suggestions for autocomplete.
154
144
  * When scopedProperty is provided, only shows values for that property (single group).
155
145
  * When scopedProperty is omitted, searches across all properties (multiple groups).
146
+ * TODO: This could potentially contain an unlimited number of options if there are many values across properties.
147
+ * May need virtualization/async or other filtering mechanism.
156
148
  */
157
149
  function createValueSuggestions(filteringOptions = [], operator, filterText = "", scopedProperty) {
158
- var _a, _b;
150
+ var _a;
159
151
  const groups = {};
160
152
  for (const option of filteringOptions) {
161
153
  if (!(option === null || option === void 0 ? void 0 : option.property)) {
@@ -166,19 +158,15 @@ function createValueSuggestions(filteringOptions = [], operator, filterText = ""
166
158
  continue;
167
159
  }
168
160
  /* Build search fields */
169
- const searchFields = [
170
- option.label,
171
- ...((_a = option.tags) !== null && _a !== void 0 ? _a : []),
172
- ...((_b = option.filteringTags) !== null && _b !== void 0 ? _b : []),
173
- ];
161
+ const searchFields = [option.label, ...((_a = option.tags) !== null && _a !== void 0 ? _a : [])];
174
162
  if (!scopedProperty) {
175
- searchFields.push(option.property.propertyLabel);
163
+ searchFields.push(option.property.label);
176
164
  }
177
165
  const matches = (0, text_matching_1.matchesFilterText)(searchFields.filter(Boolean), filterText);
178
166
  if (!matches) {
179
167
  continue;
180
168
  }
181
- const groupLabel = option.property.groupValuesLabel || "Values";
169
+ const groupLabel = option.property.groupLabel || "Values";
182
170
  if (!groups[groupLabel]) {
183
171
  groups[groupLabel] = {
184
172
  label: groupLabel,
@@ -186,10 +174,9 @@ function createValueSuggestions(filteringOptions = [], operator, filterText = ""
186
174
  };
187
175
  }
188
176
  groups[groupLabel].options.push({
189
- value: (0, query_builder_1.buildQueryString)(option.property.propertyLabel, operator, option.value),
190
- label: option.label,
177
+ value: (0, query_builder_1.buildQueryString)(option.property.label, operator, option.value),
178
+ label: (0, query_builder_1.buildQueryString)(option.property.label, operator, option.value),
191
179
  tags: option.tags,
192
- filteringTags: option.filteringTags,
193
180
  });
194
181
  }
195
182
  return Object.values(groups).filter((group) => group.options.length > 0);
@@ -1 +1 @@
1
- {"version":3,"file":"generate-autocomplete-options.js","sourceRoot":"","sources":["../../../../src/data/token-filter/helpers/generate-autocomplete-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-autocomplete-options.js","sourceRoot":"","sources":["../../../../src/data/token-filter/helpers/generate-autocomplete-options.ts"],"names":[],"mappings":"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"}