@salt-ds/lab 1.0.0-alpha.73 → 1.0.0-alpha.75

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 (454) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/css/salt-lab.css +332 -18
  3. package/dist-cjs/app-header/AppHeader.js +5 -1
  4. package/dist-cjs/app-header/AppHeader.js.map +1 -1
  5. package/dist-cjs/breadcrumbs/Breadcrumb.js.map +1 -1
  6. package/dist-cjs/breadcrumbs/Breadcrumbs.js +11 -2
  7. package/dist-cjs/breadcrumbs/Breadcrumbs.js.map +1 -1
  8. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -6
  9. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  10. package/dist-cjs/button-bar/ButtonBar.js +1 -1
  11. package/dist-cjs/button-bar/ButtonBar.js.map +1 -1
  12. package/dist-cjs/button-bar/internal/DescendantContext.js.map +1 -1
  13. package/dist-cjs/calendar/useCalendarSelection.js +2 -2
  14. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
  15. package/dist-cjs/cascading-menu/CascadingMenu.js +19 -13
  16. package/dist-cjs/cascading-menu/CascadingMenu.js.map +1 -1
  17. package/dist-cjs/cascading-menu/CascadingMenuItem.js +2 -4
  18. package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
  19. package/dist-cjs/cascading-menu/CascadingMenuList.js +1 -2
  20. package/dist-cjs/cascading-menu/CascadingMenuList.js.map +1 -1
  21. package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js +4 -1
  22. package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  23. package/dist-cjs/cascading-menu/internal/useMouseHandlers.js +1 -1
  24. package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  25. package/dist-cjs/cascading-menu/internal/useRefsManager.js +3 -1
  26. package/dist-cjs/cascading-menu/internal/useRefsManager.js.map +1 -1
  27. package/dist-cjs/collapsible/Collapsible.js +47 -0
  28. package/dist-cjs/collapsible/Collapsible.js.map +1 -0
  29. package/dist-cjs/collapsible/CollapsibleContext.js +23 -0
  30. package/dist-cjs/collapsible/CollapsibleContext.js.map +1 -0
  31. package/dist-cjs/collapsible/CollapsiblePanel.css.js +6 -0
  32. package/dist-cjs/collapsible/CollapsiblePanel.css.js.map +1 -0
  33. package/dist-cjs/collapsible/CollapsiblePanel.js +42 -0
  34. package/dist-cjs/collapsible/CollapsiblePanel.js.map +1 -0
  35. package/dist-cjs/collapsible/CollapsibleTrigger.js +35 -0
  36. package/dist-cjs/collapsible/CollapsibleTrigger.js.map +1 -0
  37. package/dist-cjs/color-chooser/AlphaInputField.js +1 -1
  38. package/dist-cjs/color-chooser/AlphaInputField.js.map +1 -1
  39. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  40. package/dist-cjs/color-chooser/DictTabs.js +1 -1
  41. package/dist-cjs/color-chooser/DictTabs.js.map +1 -1
  42. package/dist-cjs/color-chooser/RGBAInputField.js +2 -2
  43. package/dist-cjs/color-chooser/RGBAInputField.js.map +1 -1
  44. package/dist-cjs/combo-box/useCombobox.js.map +1 -1
  45. package/dist-cjs/combo-box-deprecated/ComboBoxDeprecated.js +1 -1
  46. package/dist-cjs/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  47. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js +1 -2
  48. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  49. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js +0 -4
  50. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  51. package/dist-cjs/combo-box-deprecated/internal/useComboBox.js +4 -1
  52. package/dist-cjs/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  53. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js +7 -2
  54. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  55. package/dist-cjs/common-hooks/useAutoSizer.js +0 -9
  56. package/dist-cjs/common-hooks/useAutoSizer.js.map +1 -1
  57. package/dist-cjs/common-hooks/useCollapsibleGroups.js +37 -49
  58. package/dist-cjs/common-hooks/useCollapsibleGroups.js.map +1 -1
  59. package/dist-cjs/common-hooks/useCollectionItems.js +6 -11
  60. package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
  61. package/dist-cjs/common-hooks/useKeyboardNavigationPanel.js +7 -7
  62. package/dist-cjs/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  63. package/dist-cjs/common-hooks/useSelection.js +1 -1
  64. package/dist-cjs/common-hooks/useSelection.js.map +1 -1
  65. package/dist-cjs/common-hooks/useTypeahead.js +2 -2
  66. package/dist-cjs/common-hooks/useTypeahead.js.map +1 -1
  67. package/dist-cjs/common-hooks/useViewportTracking.js +1 -1
  68. package/dist-cjs/common-hooks/useViewportTracking.js.map +1 -1
  69. package/dist-cjs/common-hooks/utils/collection-item-utils.js +1 -1
  70. package/dist-cjs/common-hooks/utils/collection-item-utils.js.map +1 -1
  71. package/dist-cjs/contact-details/ContactAction.js +1 -0
  72. package/dist-cjs/contact-details/ContactAction.js.map +1 -1
  73. package/dist-cjs/contact-details/ContactSecondaryInfo.js +1 -1
  74. package/dist-cjs/contact-details/ContactSecondaryInfo.js.map +1 -1
  75. package/dist-cjs/contact-details/internal/ContactDetailsContext.js +2 -2
  76. package/dist-cjs/contact-details/internal/ContactDetailsContext.js.map +1 -1
  77. package/dist-cjs/contact-details/internal/FavoriteToggleWithTooltip.js +10 -1
  78. package/dist-cjs/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  79. package/dist-cjs/content-status/ContentStatus.js.map +1 -1
  80. package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
  81. package/dist-cjs/date-input/DateInput.css.js +1 -1
  82. package/dist-cjs/date-picker/useFocusOut.js +1 -1
  83. package/dist-cjs/date-picker/useFocusOut.js.map +1 -1
  84. package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
  85. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  86. package/dist-cjs/index.js +36 -0
  87. package/dist-cjs/index.js.map +1 -1
  88. package/dist-cjs/input-legacy/InputLegacy.css.js +1 -1
  89. package/dist-cjs/list/List.js +1 -1
  90. package/dist-cjs/list/List.js.map +1 -1
  91. package/dist-cjs/list/ListItem.css.js +1 -1
  92. package/dist-cjs/list/ListItem.js +2 -1
  93. package/dist-cjs/list/ListItem.js.map +1 -1
  94. package/dist-cjs/list/keyset.js.map +1 -1
  95. package/dist-cjs/list/useList.js +1 -3
  96. package/dist-cjs/list/useList.js.map +1 -1
  97. package/dist-cjs/list/useListHeight.js +3 -3
  98. package/dist-cjs/list/useListHeight.js.map +1 -1
  99. package/dist-cjs/list-deprecated/List.js +4 -1
  100. package/dist-cjs/list-deprecated/List.js.map +1 -1
  101. package/dist-cjs/list-deprecated/ListBase.js +18 -17
  102. package/dist-cjs/list-deprecated/ListBase.js.map +1 -1
  103. package/dist-cjs/list-deprecated/ListItem.js.map +1 -1
  104. package/dist-cjs/list-deprecated/ListItemBase.js +1 -0
  105. package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
  106. package/dist-cjs/list-deprecated/internal/helpers.js.map +1 -1
  107. package/dist-cjs/list-deprecated/internal/scrollIntoView.js +2 -2
  108. package/dist-cjs/list-deprecated/internal/scrollIntoView.js.map +1 -1
  109. package/dist-cjs/list-deprecated/internal/useListAutoSizer.js.map +1 -1
  110. package/dist-cjs/list-deprecated/itemToString.js.map +1 -1
  111. package/dist-cjs/list-deprecated/useList.js +3 -10
  112. package/dist-cjs/list-deprecated/useList.js.map +1 -1
  113. package/dist-cjs/list-deprecated/useListItem.js.map +1 -1
  114. package/dist-cjs/list-next/ListNext.js.map +1 -1
  115. package/dist-cjs/metric/MetricContent.js +1 -0
  116. package/dist-cjs/metric/MetricContent.js.map +1 -1
  117. package/dist-cjs/number-input/NumberInput.css.js +1 -1
  118. package/dist-cjs/number-input/internal/utils.js +1 -1
  119. package/dist-cjs/number-input/internal/utils.js.map +1 -1
  120. package/dist-cjs/query-input/QueryInput.js +10 -10
  121. package/dist-cjs/query-input/QueryInput.js.map +1 -1
  122. package/dist-cjs/query-input/internal/QueryInputBody.js +1 -1
  123. package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
  124. package/dist-cjs/query-input/internal/SearchList.js +1 -1
  125. package/dist-cjs/query-input/internal/SearchList.js.map +1 -1
  126. package/dist-cjs/query-input/internal/usePopperStatus.js +2 -2
  127. package/dist-cjs/query-input/internal/usePopperStatus.js.map +1 -1
  128. package/dist-cjs/query-input/useQueryInput.js +6 -6
  129. package/dist-cjs/query-input/useQueryInput.js.map +1 -1
  130. package/dist-cjs/responsive/OverflowReducer.js +0 -2
  131. package/dist-cjs/responsive/OverflowReducer.js.map +1 -1
  132. package/dist-cjs/responsive/overflowUtils.js +6 -3
  133. package/dist-cjs/responsive/overflowUtils.js.map +1 -1
  134. package/dist-cjs/responsive/useDynamicCollapse.js +6 -3
  135. package/dist-cjs/responsive/useDynamicCollapse.js.map +1 -1
  136. package/dist-cjs/responsive/useOverflow.js +2 -2
  137. package/dist-cjs/responsive/useOverflow.js.map +1 -1
  138. package/dist-cjs/responsive/useOverflowCollectionItems.js +1 -1
  139. package/dist-cjs/responsive/useOverflowCollectionItems.js.map +1 -1
  140. package/dist-cjs/responsive/useOverflowLayout.js +1 -1
  141. package/dist-cjs/responsive/useOverflowLayout.js.map +1 -1
  142. package/dist-cjs/responsive/useReclaimSpace.js +1 -1
  143. package/dist-cjs/responsive/useReclaimSpace.js.map +1 -1
  144. package/dist-cjs/responsive/useResizeObserver.js +7 -2
  145. package/dist-cjs/responsive/useResizeObserver.js.map +1 -1
  146. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  147. package/dist-cjs/table/TBody.js +32 -0
  148. package/dist-cjs/table/TBody.js.map +1 -0
  149. package/dist-cjs/table/TD.js +30 -0
  150. package/dist-cjs/table/TD.js.map +1 -0
  151. package/dist-cjs/table/TFoot.js +45 -0
  152. package/dist-cjs/table/TFoot.js.map +1 -0
  153. package/dist-cjs/table/TH.js +30 -0
  154. package/dist-cjs/table/TH.js.map +1 -0
  155. package/dist-cjs/table/THead.js +45 -0
  156. package/dist-cjs/table/THead.js.map +1 -0
  157. package/dist-cjs/table/TR.js +30 -0
  158. package/dist-cjs/table/TR.js.map +1 -0
  159. package/dist-cjs/table/Table.css.js +6 -0
  160. package/dist-cjs/table/Table.css.js.map +1 -0
  161. package/dist-cjs/table/Table.js +47 -0
  162. package/dist-cjs/table/Table.js.map +1 -0
  163. package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
  164. package/dist-cjs/tabs/Tabs.js +0 -8
  165. package/dist-cjs/tabs/Tabs.js.map +1 -1
  166. package/dist-cjs/tabs/drag-drop/useDragSpacers.js +6 -7
  167. package/dist-cjs/tabs/drag-drop/useDragSpacers.js.map +1 -1
  168. package/dist-cjs/tabs/useActivationIndicator.js.map +1 -1
  169. package/dist-cjs/tabs-next/TabNextTrigger.js +2 -1
  170. package/dist-cjs/tabs-next/TabNextTrigger.js.map +1 -1
  171. package/dist-cjs/tabs-next/hooks/useOverflow.js +3 -5
  172. package/dist-cjs/tabs-next/hooks/useOverflow.js.map +1 -1
  173. package/dist-cjs/tokenized-input/useTokenizedInput.js +5 -5
  174. package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
  175. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +1 -1
  176. package/dist-cjs/tree/Tree.js.map +1 -1
  177. package/dist-cjs/vertical-navigation/SubMenuContext.js +34 -0
  178. package/dist-cjs/vertical-navigation/SubMenuContext.js.map +1 -0
  179. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js +6 -0
  180. package/dist-cjs/vertical-navigation/VerticalNavigation.css.js.map +1 -0
  181. package/dist-cjs/vertical-navigation/VerticalNavigation.js +34 -0
  182. package/dist-cjs/vertical-navigation/VerticalNavigation.js.map +1 -0
  183. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js +48 -0
  184. package/dist-cjs/vertical-navigation/VerticalNavigationItem.js.map +1 -0
  185. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +6 -0
  186. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
  187. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js +83 -0
  188. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
  189. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js +29 -0
  190. package/dist-cjs/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
  191. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js +6 -0
  192. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
  193. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js +24 -0
  194. package/dist-cjs/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
  195. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js +6 -0
  196. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
  197. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js +69 -0
  198. package/dist-cjs/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
  199. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +6 -0
  200. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
  201. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js +35 -0
  202. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
  203. package/dist-es/app-header/AppHeader.js +5 -1
  204. package/dist-es/app-header/AppHeader.js.map +1 -1
  205. package/dist-es/breadcrumbs/Breadcrumb.js.map +1 -1
  206. package/dist-es/breadcrumbs/Breadcrumbs.js +11 -2
  207. package/dist-es/breadcrumbs/Breadcrumbs.js.map +1 -1
  208. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -6
  209. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  210. package/dist-es/button-bar/ButtonBar.js +1 -1
  211. package/dist-es/button-bar/ButtonBar.js.map +1 -1
  212. package/dist-es/button-bar/internal/DescendantContext.js.map +1 -1
  213. package/dist-es/calendar/useCalendarSelection.js +2 -2
  214. package/dist-es/calendar/useCalendarSelection.js.map +1 -1
  215. package/dist-es/cascading-menu/CascadingMenu.js +19 -13
  216. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  217. package/dist-es/cascading-menu/CascadingMenuItem.js +2 -4
  218. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  219. package/dist-es/cascading-menu/CascadingMenuList.js +1 -2
  220. package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
  221. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js +4 -1
  222. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  223. package/dist-es/cascading-menu/internal/useMouseHandlers.js +1 -1
  224. package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  225. package/dist-es/cascading-menu/internal/useRefsManager.js +3 -1
  226. package/dist-es/cascading-menu/internal/useRefsManager.js.map +1 -1
  227. package/dist-es/collapsible/Collapsible.js +45 -0
  228. package/dist-es/collapsible/Collapsible.js.map +1 -0
  229. package/dist-es/collapsible/CollapsibleContext.js +20 -0
  230. package/dist-es/collapsible/CollapsibleContext.js.map +1 -0
  231. package/dist-es/collapsible/CollapsiblePanel.css.js +4 -0
  232. package/dist-es/collapsible/CollapsiblePanel.css.js.map +1 -0
  233. package/dist-es/collapsible/CollapsiblePanel.js +40 -0
  234. package/dist-es/collapsible/CollapsiblePanel.js.map +1 -0
  235. package/dist-es/collapsible/CollapsibleTrigger.js +33 -0
  236. package/dist-es/collapsible/CollapsibleTrigger.js.map +1 -0
  237. package/dist-es/color-chooser/AlphaInputField.js +1 -1
  238. package/dist-es/color-chooser/AlphaInputField.js.map +1 -1
  239. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  240. package/dist-es/color-chooser/DictTabs.js +1 -1
  241. package/dist-es/color-chooser/DictTabs.js.map +1 -1
  242. package/dist-es/color-chooser/RGBAInputField.js +2 -2
  243. package/dist-es/color-chooser/RGBAInputField.js.map +1 -1
  244. package/dist-es/combo-box/useCombobox.js.map +1 -1
  245. package/dist-es/combo-box-deprecated/ComboBoxDeprecated.js +1 -1
  246. package/dist-es/combo-box-deprecated/ComboBoxDeprecated.js.map +1 -1
  247. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js +1 -2
  248. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  249. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js +1 -5
  250. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  251. package/dist-es/combo-box-deprecated/internal/useComboBox.js +4 -1
  252. package/dist-es/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  253. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js +7 -2
  254. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  255. package/dist-es/common-hooks/useAutoSizer.js +0 -9
  256. package/dist-es/common-hooks/useAutoSizer.js.map +1 -1
  257. package/dist-es/common-hooks/useCollapsibleGroups.js +38 -50
  258. package/dist-es/common-hooks/useCollapsibleGroups.js.map +1 -1
  259. package/dist-es/common-hooks/useCollectionItems.js +6 -11
  260. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  261. package/dist-es/common-hooks/useKeyboardNavigationPanel.js +8 -8
  262. package/dist-es/common-hooks/useKeyboardNavigationPanel.js.map +1 -1
  263. package/dist-es/common-hooks/useSelection.js +1 -1
  264. package/dist-es/common-hooks/useSelection.js.map +1 -1
  265. package/dist-es/common-hooks/useTypeahead.js +2 -2
  266. package/dist-es/common-hooks/useTypeahead.js.map +1 -1
  267. package/dist-es/common-hooks/useViewportTracking.js +1 -1
  268. package/dist-es/common-hooks/useViewportTracking.js.map +1 -1
  269. package/dist-es/common-hooks/utils/collection-item-utils.js +1 -1
  270. package/dist-es/common-hooks/utils/collection-item-utils.js.map +1 -1
  271. package/dist-es/contact-details/ContactAction.js +1 -0
  272. package/dist-es/contact-details/ContactAction.js.map +1 -1
  273. package/dist-es/contact-details/ContactSecondaryInfo.js +1 -1
  274. package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
  275. package/dist-es/contact-details/internal/ContactDetailsContext.js +2 -2
  276. package/dist-es/contact-details/internal/ContactDetailsContext.js.map +1 -1
  277. package/dist-es/contact-details/internal/FavoriteToggleWithTooltip.js +10 -1
  278. package/dist-es/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  279. package/dist-es/content-status/ContentStatus.js.map +1 -1
  280. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  281. package/dist-es/date-input/DateInput.css.js +1 -1
  282. package/dist-es/date-picker/useFocusOut.js +1 -1
  283. package/dist-es/date-picker/useFocusOut.js.map +1 -1
  284. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  285. package/dist-es/dropdown/useDropdown.js.map +1 -1
  286. package/dist-es/index.js +17 -0
  287. package/dist-es/index.js.map +1 -1
  288. package/dist-es/input-legacy/InputLegacy.css.js +1 -1
  289. package/dist-es/list/List.js +2 -2
  290. package/dist-es/list/List.js.map +1 -1
  291. package/dist-es/list/ListItem.css.js +1 -1
  292. package/dist-es/list/ListItem.js +2 -1
  293. package/dist-es/list/ListItem.js.map +1 -1
  294. package/dist-es/list/keyset.js.map +1 -1
  295. package/dist-es/list/useList.js +1 -3
  296. package/dist-es/list/useList.js.map +1 -1
  297. package/dist-es/list/useListHeight.js +3 -3
  298. package/dist-es/list/useListHeight.js.map +1 -1
  299. package/dist-es/list-deprecated/List.js +4 -1
  300. package/dist-es/list-deprecated/List.js.map +1 -1
  301. package/dist-es/list-deprecated/ListBase.js +19 -18
  302. package/dist-es/list-deprecated/ListBase.js.map +1 -1
  303. package/dist-es/list-deprecated/ListItem.js.map +1 -1
  304. package/dist-es/list-deprecated/ListItemBase.js +1 -0
  305. package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
  306. package/dist-es/list-deprecated/internal/helpers.js.map +1 -1
  307. package/dist-es/list-deprecated/internal/scrollIntoView.js +2 -2
  308. package/dist-es/list-deprecated/internal/scrollIntoView.js.map +1 -1
  309. package/dist-es/list-deprecated/internal/useListAutoSizer.js.map +1 -1
  310. package/dist-es/list-deprecated/itemToString.js.map +1 -1
  311. package/dist-es/list-deprecated/useList.js +3 -10
  312. package/dist-es/list-deprecated/useList.js.map +1 -1
  313. package/dist-es/list-deprecated/useListItem.js.map +1 -1
  314. package/dist-es/list-next/ListNext.js.map +1 -1
  315. package/dist-es/metric/MetricContent.js +1 -0
  316. package/dist-es/metric/MetricContent.js.map +1 -1
  317. package/dist-es/number-input/NumberInput.css.js +1 -1
  318. package/dist-es/number-input/internal/utils.js +1 -1
  319. package/dist-es/number-input/internal/utils.js.map +1 -1
  320. package/dist-es/query-input/QueryInput.js +10 -10
  321. package/dist-es/query-input/QueryInput.js.map +1 -1
  322. package/dist-es/query-input/internal/QueryInputBody.js +1 -1
  323. package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
  324. package/dist-es/query-input/internal/SearchList.js +1 -1
  325. package/dist-es/query-input/internal/SearchList.js.map +1 -1
  326. package/dist-es/query-input/internal/usePopperStatus.js +2 -2
  327. package/dist-es/query-input/internal/usePopperStatus.js.map +1 -1
  328. package/dist-es/query-input/useQueryInput.js +6 -6
  329. package/dist-es/query-input/useQueryInput.js.map +1 -1
  330. package/dist-es/responsive/OverflowReducer.js +0 -2
  331. package/dist-es/responsive/OverflowReducer.js.map +1 -1
  332. package/dist-es/responsive/overflowUtils.js +6 -3
  333. package/dist-es/responsive/overflowUtils.js.map +1 -1
  334. package/dist-es/responsive/useDynamicCollapse.js +6 -3
  335. package/dist-es/responsive/useDynamicCollapse.js.map +1 -1
  336. package/dist-es/responsive/useOverflow.js +2 -2
  337. package/dist-es/responsive/useOverflow.js.map +1 -1
  338. package/dist-es/responsive/useOverflowCollectionItems.js +1 -1
  339. package/dist-es/responsive/useOverflowCollectionItems.js.map +1 -1
  340. package/dist-es/responsive/useOverflowLayout.js +1 -1
  341. package/dist-es/responsive/useOverflowLayout.js.map +1 -1
  342. package/dist-es/responsive/useReclaimSpace.js +1 -1
  343. package/dist-es/responsive/useReclaimSpace.js.map +1 -1
  344. package/dist-es/responsive/useResizeObserver.js +7 -2
  345. package/dist-es/responsive/useResizeObserver.js.map +1 -1
  346. package/dist-es/search-input/SearchInput.js.map +1 -1
  347. package/dist-es/table/TBody.js +30 -0
  348. package/dist-es/table/TBody.js.map +1 -0
  349. package/dist-es/table/TD.js +28 -0
  350. package/dist-es/table/TD.js.map +1 -0
  351. package/dist-es/table/TFoot.js +43 -0
  352. package/dist-es/table/TFoot.js.map +1 -0
  353. package/dist-es/table/TH.js +28 -0
  354. package/dist-es/table/TH.js.map +1 -0
  355. package/dist-es/table/THead.js +43 -0
  356. package/dist-es/table/THead.js.map +1 -0
  357. package/dist-es/table/TR.js +28 -0
  358. package/dist-es/table/TR.js.map +1 -0
  359. package/dist-es/table/Table.css.js +4 -0
  360. package/dist-es/table/Table.css.js.map +1 -0
  361. package/dist-es/table/Table.js +44 -0
  362. package/dist-es/table/Table.js.map +1 -0
  363. package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
  364. package/dist-es/tabs/Tabs.js +1 -9
  365. package/dist-es/tabs/Tabs.js.map +1 -1
  366. package/dist-es/tabs/drag-drop/useDragSpacers.js +6 -7
  367. package/dist-es/tabs/drag-drop/useDragSpacers.js.map +1 -1
  368. package/dist-es/tabs/useActivationIndicator.js.map +1 -1
  369. package/dist-es/tabs-next/TabNextTrigger.js +2 -1
  370. package/dist-es/tabs-next/TabNextTrigger.js.map +1 -1
  371. package/dist-es/tabs-next/hooks/useOverflow.js +4 -6
  372. package/dist-es/tabs-next/hooks/useOverflow.js.map +1 -1
  373. package/dist-es/tokenized-input/useTokenizedInput.js +5 -5
  374. package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
  375. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +1 -1
  376. package/dist-es/tree/Tree.js.map +1 -1
  377. package/dist-es/vertical-navigation/SubMenuContext.js +30 -0
  378. package/dist-es/vertical-navigation/SubMenuContext.js.map +1 -0
  379. package/dist-es/vertical-navigation/VerticalNavigation.css.js +4 -0
  380. package/dist-es/vertical-navigation/VerticalNavigation.css.js.map +1 -0
  381. package/dist-es/vertical-navigation/VerticalNavigation.js +32 -0
  382. package/dist-es/vertical-navigation/VerticalNavigation.js.map +1 -0
  383. package/dist-es/vertical-navigation/VerticalNavigationItem.js +45 -0
  384. package/dist-es/vertical-navigation/VerticalNavigationItem.js.map +1 -0
  385. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +4 -0
  386. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js.map +1 -0
  387. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js +81 -0
  388. package/dist-es/vertical-navigation/VerticalNavigationItemContent.js.map +1 -0
  389. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js +27 -0
  390. package/dist-es/vertical-navigation/VerticalNavigationItemExpansionIcon.js.map +1 -0
  391. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js +4 -0
  392. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.css.js.map +1 -0
  393. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js +22 -0
  394. package/dist-es/vertical-navigation/VerticalNavigationItemLabel.js.map +1 -0
  395. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js +4 -0
  396. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.css.js.map +1 -0
  397. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js +67 -0
  398. package/dist-es/vertical-navigation/VerticalNavigationItemTrigger.js.map +1 -0
  399. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +4 -0
  400. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js.map +1 -0
  401. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js +33 -0
  402. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.js.map +1 -0
  403. package/dist-types/breadcrumbs/Breadcrumb.d.ts +2 -2
  404. package/dist-types/breadcrumbs/Breadcrumbs.d.ts +2 -2
  405. package/dist-types/cascading-menu/CascadingMenuList.d.ts +3 -1
  406. package/dist-types/cascading-menu/CascadingMenuProps.d.ts +1 -1
  407. package/dist-types/cascading-menu/internal/useMenuTriggerHandlers.d.ts +3 -2
  408. package/dist-types/collapsible/Collapsible.d.ts +16 -0
  409. package/dist-types/collapsible/CollapsibleContext.d.ts +9 -0
  410. package/dist-types/collapsible/CollapsiblePanel.d.ts +4 -0
  411. package/dist-types/collapsible/CollapsibleTrigger.d.ts +5 -0
  412. package/dist-types/collapsible/index.d.ts +3 -0
  413. package/dist-types/combo-box-deprecated/internal/useComboBox.d.ts +5 -5
  414. package/dist-types/combo-box-deprecated/internal/useMultiSelectComboBox.d.ts +7 -7
  415. package/dist-types/common-hooks/useAutoSizer.d.ts +1 -1
  416. package/dist-types/common-hooks/useCollapsibleGroups.d.ts +2 -2
  417. package/dist-types/common-hooks/useCollectionItems.d.ts +1 -1
  418. package/dist-types/common-hooks/useSelection.d.ts +1 -1
  419. package/dist-types/content-status/ContentStatus.d.ts +1 -1
  420. package/dist-types/dropdown/DropdownButton.d.ts +1 -1
  421. package/dist-types/dropdown/dropdownTypes.d.ts +2 -2
  422. package/dist-types/dropdown/useDropdown.d.ts +1 -1
  423. package/dist-types/index.d.ts +3 -0
  424. package/dist-types/list/useListHeight.d.ts +1 -1
  425. package/dist-types/list-deprecated/ListBase.d.ts +4 -8
  426. package/dist-types/list-deprecated/ListProps.d.ts +7 -6
  427. package/dist-types/list-deprecated/internal/helpers.d.ts +3 -2
  428. package/dist-types/list-deprecated/internal/useListAutoSizer.d.ts +2 -7
  429. package/dist-types/list-deprecated/itemToString.d.ts +2 -2
  430. package/dist-types/list-deprecated/useList.d.ts +1 -1
  431. package/dist-types/metric/internal/helpers.d.ts +1 -1
  432. package/dist-types/query-input/internal/usePopperStatus.d.ts +3 -3
  433. package/dist-types/responsive/overflowTypes.d.ts +1 -1
  434. package/dist-types/responsive/overflowUtils.d.ts +1 -1
  435. package/dist-types/responsive/useReclaimSpace.d.ts +1 -1
  436. package/dist-types/search-input/SearchInput.d.ts +1 -1
  437. package/dist-types/table/TBody.d.ts +4 -0
  438. package/dist-types/table/TD.d.ts +4 -0
  439. package/dist-types/table/TFoot.d.ts +20 -0
  440. package/dist-types/table/TH.d.ts +4 -0
  441. package/dist-types/table/THead.d.ts +20 -0
  442. package/dist-types/table/TR.d.ts +4 -0
  443. package/dist-types/table/Table.d.ts +20 -0
  444. package/dist-types/table/index.d.ts +7 -0
  445. package/dist-types/vertical-navigation/SubMenuContext.d.ts +14 -0
  446. package/dist-types/vertical-navigation/VerticalNavigation.d.ts +5 -0
  447. package/dist-types/vertical-navigation/VerticalNavigationItem.d.ts +12 -0
  448. package/dist-types/vertical-navigation/VerticalNavigationItemContent.d.ts +4 -0
  449. package/dist-types/vertical-navigation/VerticalNavigationItemExpansionIcon.d.ts +2 -0
  450. package/dist-types/vertical-navigation/VerticalNavigationItemLabel.d.ts +4 -0
  451. package/dist-types/vertical-navigation/VerticalNavigationItemTrigger.d.ts +6 -0
  452. package/dist-types/vertical-navigation/VerticalNavigationSubMenu.d.ts +4 -0
  453. package/dist-types/vertical-navigation/index.d.ts +7 -0
  454. package/package.json +3 -6
@@ -1 +1 @@
1
- {"version":3,"file":"useList.js","sources":["../src/list-deprecated/useList.ts"],"sourcesContent":["import {\n ownerDocument,\n useControlled,\n useForkRef,\n useId,\n useIsFocusVisible,\n} from \"@salt-ds/core\";\n\nimport {\n type AriaAttributes,\n type Dispatch,\n type FocusEvent,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEvent,\n type Ref,\n type SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type {\n ListMultiSelectionVariant,\n ListProps,\n ListSelectionVariant,\n} from \"./ListProps\";\n\ntype keyHandler = (event: KeyboardEvent<HTMLInputElement>) => void;\n\ninterface listBoxAriaProps\n extends Pick<\n AriaAttributes,\n \"aria-activedescendant\" | \"aria-multiselectable\"\n > {\n role: string; // We will default it to be 'listbox', but users can override\n}\nexport interface ListState<\n Item = string,\n Variant extends ListSelectionVariant = \"default\",\n> {\n id?: string;\n focusVisible: boolean;\n selectedItem?: Variant extends ListMultiSelectionVariant ? Array<Item> : Item;\n highlightedIndex?: number;\n isDeselectable: boolean;\n isMultiSelect: boolean;\n isDisabled: boolean;\n}\n\nexport interface ListHelpers<\n Item = string,\n Variant extends ListSelectionVariant = \"default\",\n> {\n setFocusVisible: (visible: boolean) => void;\n setSelectedItem: Dispatch<\n SetStateAction<\n (Variant extends ListMultiSelectionVariant ? Item[] : Item) | undefined\n >\n >;\n setHighlightedIndex: (highlightedIndex?: number) => void;\n handleSelect: (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => void;\n keyDownHandlers: { [key: string]: KeyboardEventHandler };\n // TODO: Form Field\n}\n\nexport function useList<Item, Variant extends ListSelectionVariant>(\n props: ListProps<Item, Variant> = {},\n): {\n focusedRef: Ref<any>;\n listProps: Partial<ListProps<Item, Variant>> & listBoxAriaProps;\n state: ListState<Item, Variant>;\n helpers: ListHelpers<Item, Variant>;\n} {\n validateProps(props);\n\n const generatedId = useId(props.id);\n\n const {\n id = generatedId,\n source = [],\n itemCount = source.length,\n getItemId = (index) => `${id}-item-${index}`,\n getItemAtIndex: getItemAtIndexProp,\n getItemIndex: getItemIndexProp,\n displayedItemCount = 10,\n initialSelectedItem,\n selectionVariant,\n disabled = false,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onMouseDown,\n onMouseLeave,\n onSelect,\n disableMouseDown,\n restoreLastFocus,\n highlightedIndex: highlightedIndexProp,\n selectedItem: selectedItemProp,\n tabToSelect,\n ...restProps\n } = props;\n\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef,\n } = useIsFocusVisible();\n\n const { current: isDeselectable } = useRef(\n selectionVariant === \"deselectable\",\n );\n const { current: isMultiSelect } = useRef(\n selectionVariant === \"multiple\" ||\n selectionVariant === \"extended\" ||\n Array.isArray(initialSelectedItem) ||\n Array.isArray(selectedItemProp),\n );\n\n const { current: isExtendedSelect } = useRef(selectionVariant === \"extended\");\n\n let getItemIndex = useCallback(\n (item: Item) => source.indexOf(item),\n [source],\n );\n let getItemAtIndex = useCallback((index: number) => source[index], [source]);\n\n const indexComparator = useCallback(\n (a: Item, b: Item) => getItemIndex(a) - getItemIndex(b),\n [getItemIndex],\n );\n\n // Only use getItemIndex and getItemAtIndex if both are defined; otherwise keep the defaults\n if (\n typeof getItemIndexProp === \"function\" &&\n typeof getItemAtIndexProp === \"function\"\n ) {\n getItemIndex = getItemIndexProp;\n getItemAtIndex = getItemAtIndexProp;\n }\n\n const rootRef = useRef();\n const [focusVisible, setFocusVisible] = useState(false);\n const [lastFocusedIndex, setLastFocusedIndex] = useState(-1);\n\n const [selectedItem, setSelectedItem] = useControlled<\n undefined | (Variant extends ListMultiSelectionVariant ? Item[] : Item)\n >({\n controlled: selectedItemProp,\n default:\n initialSelectedItem ??\n ((isMultiSelect\n ? []\n : null) as unknown as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item),\n name: \"useList\",\n state: \"selectedItem\",\n });\n\n const [highlightedIndex, setHighlightedIndex] = useControlled<\n number | undefined\n >({\n controlled: highlightedIndexProp,\n default: undefined,\n name: \"useList\",\n state: \"highlightedIndex\",\n });\n\n const handleSingleSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n const isSelected = item === selectedItem;\n let nextItem: Item | null;\n\n if (isSelected && !isDeselectable) {\n return;\n }\n\n if (!isSelected) {\n nextItem = item;\n setHighlightedIndex(index);\n } else {\n nextItem = null;\n }\n\n setSelectedItem(\n nextItem as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItem as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n }\n },\n [isDeselectable, onChange, selectedItem],\n );\n\n const handleMultiSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n const isSelected = (selectedItem as Item[]).indexOf(item as Item) !== -1;\n let nextItems = selectedItem as Item[];\n\n if (!isSelected) {\n nextItems = nextItems.concat([item]).sort(indexComparator);\n setHighlightedIndex(index);\n } else {\n nextItems = nextItems.filter((selected) => selected !== item);\n }\n\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n },\n [indexComparator, onChange, selectedItem],\n );\n\n const handleRangeSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index?: number,\n ) => {\n const currentSelection =\n event.ctrlKey || event.metaKey ? selectedItem : ([] as Item[]);\n\n const lastSelectedItemIndex =\n (selectedItem as Item[]).length > 0\n ? getItemIndex(\n (selectedItem as Item[])[(selectedItem as Item[]).length - 1],\n )\n : 0;\n\n const startRegion = Math.min(\n index ?? lastSelectedItemIndex,\n lastSelectedItemIndex,\n );\n const endRegion = Math.max(\n index ?? lastSelectedItemIndex,\n lastSelectedItemIndex,\n );\n const rangeSelection = source.slice(startRegion, endRegion + 1);\n // concat the current selection with a new selection and remove duplicates for overlaps\n const nextItems = [\n ...new Set([...(currentSelection as Item[]), ...rangeSelection]),\n ];\n // remove text selection caused by shift clicking\n ownerDocument(event.currentTarget).getSelection()?.removeAllRanges();\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n },\n [getItemIndex, onChange, selectedItem, source],\n );\n\n const handleExtendedSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n let nextItems = selectedItem as Item[];\n if (event.shiftKey) {\n handleRangeSelect(event, index);\n } else if (\n (selectedItem as Item[]).length === 0 ||\n event.ctrlKey ||\n event.metaKey\n ) {\n console.log(\"handleMulti\");\n handleMultiSelect(event, index, item);\n } else {\n nextItems = [item] as Item[];\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n }\n },\n [handleMultiSelect, handleRangeSelect, onChange, selectedItem],\n );\n\n const handleSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item | null,\n ) => {\n if (item == null || (item as any).disabled) {\n return;\n }\n\n if (onSelect) {\n console.log(\"onSelect\");\n onSelect(event, item);\n }\n\n if (isExtendedSelect) {\n handleExtendedSelect(event, index, item);\n } else if (isMultiSelect) {\n handleMultiSelect(event, index, item);\n } else {\n handleSingleSelect(event, index, item);\n }\n },\n [\n handleExtendedSelect,\n handleMultiSelect,\n handleSingleSelect,\n isExtendedSelect,\n isMultiSelect,\n onSelect,\n ],\n );\n\n const saveFocusedIndex = (index: number) => {\n setLastFocusedIndex(index);\n return index;\n };\n\n const keyDownHandlers: { [key: string]: keyHandler } = {\n ArrowUp: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(Math.max(0, (prevHighlightedIndex ?? itemCount) - 1)),\n );\n },\n ArrowDown: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.min(itemCount - 1, (prevHighlightedIndex ?? -1) + 1),\n ),\n );\n },\n PageUp: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.max(\n 0,\n (prevHighlightedIndex ?? displayedItemCount) - displayedItemCount,\n ),\n ),\n );\n },\n PageDown: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.min(\n itemCount - 1,\n (prevHighlightedIndex ?? 0) + displayedItemCount,\n ),\n ),\n );\n },\n Home: (event) => {\n event.preventDefault();\n setHighlightedIndex(saveFocusedIndex(0));\n },\n End: (event) => {\n event.preventDefault();\n setHighlightedIndex(saveFocusedIndex(itemCount - 1));\n },\n Enter: (event) => {\n event.preventDefault();\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n },\n \" \": (event) => {\n event.preventDefault();\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n },\n Tab: (event) => {\n if (tabToSelect) {\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n } else {\n setHighlightedIndex(undefined);\n }\n },\n };\n\n const handleKeyDown: keyHandler = (event) => {\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n const handler: keyHandler = keyDownHandlers[event.key];\n\n if (handler) {\n handler(event);\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n handleFocusVisible(event);\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n // Work out the index to highlight\n if (highlightedIndex === undefined) {\n const firstSelectedItem = isMultiSelect\n ? (selectedItem as Item[])[0]\n : (selectedItem as Item | undefined);\n\n setHighlightedIndex(\n Math.max(\n restoreLastFocus\n ? lastFocusedIndex\n : firstSelectedItem\n ? getItemIndex(firstSelectedItem)\n : -1,\n 0,\n ),\n );\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n setHighlightedIndex(undefined);\n handleBlurVisible();\n if (!isFocusVisibleRef.current) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n if (disableMouseDown) {\n event.preventDefault();\n } else if (onMouseDown) {\n onMouseDown(event);\n }\n };\n\n const handleMouseLeave = (event: MouseEvent<HTMLDivElement>) => {\n if (focusVisible && id) {\n // Get the root node of the component if we have access to it otherwise default to current document\n const rootNode = (\n rootRef.current || ownerDocument(event.currentTarget)\n ).getRootNode();\n\n const listNode = (rootNode as Document).getElementById(id);\n\n // Safety check as `mouseleave` could have been accidentally triggered by an opening tooltip\n // when you use keyboard to navigate, hence the focusVisible check earlier\n if (listNode?.contains(event.target as Node)) {\n setHighlightedIndex(undefined);\n }\n } else {\n setHighlightedIndex(undefined);\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n };\n\n const eventHandlers = {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n };\n\n const ariaProps: listBoxAriaProps = {\n role: \"listbox\",\n \"aria-activedescendant\":\n highlightedIndex !== undefined && highlightedIndex >= 0\n ? getItemId(highlightedIndex)\n : undefined,\n };\n\n if (isMultiSelect) {\n ariaProps[\"aria-multiselectable\"] = true;\n }\n\n return {\n focusedRef: useForkRef(rootRef, focusVisibleRef),\n state: {\n id,\n focusVisible,\n selectedItem,\n highlightedIndex,\n isDeselectable,\n isMultiSelect,\n isDisabled: disabled,\n },\n helpers: {\n setFocusVisible,\n setSelectedItem,\n setHighlightedIndex,\n keyDownHandlers,\n handleSelect,\n },\n listProps: {\n id,\n source,\n itemCount,\n disableMouseDown,\n displayedItemCount,\n getItemAtIndex,\n getItemIndex,\n getItemId,\n disabled,\n ...ariaProps,\n ...restProps,\n ...(disabled ? {} : eventHandlers),\n },\n };\n}\n\nconst validateProps = <Item, Variant extends ListSelectionVariant>(\n props: ListProps<Item, Variant>,\n) => {\n if (process.env.NODE_ENV !== \"production\") {\n const { source, itemCount, getItemIndex, getItemAtIndex } = props;\n\n const hasIndexer =\n typeof getItemIndex === \"function\" &&\n typeof getItemAtIndex === \"function\";\n\n const hasNoIndexer =\n getItemIndex === undefined && getItemAtIndex === undefined;\n\n const sourceNotArray = !Array.isArray(source);\n\n // biome-ignore lint/correctness/useHookAtTopLevel: NODE_ENV is invariant at runtime.\n useEffect(() => {\n if (sourceNotArray) {\n console.error(\"`source` for useList must be an array.\");\n }\n }, [sourceNotArray]);\n\n // biome-ignore lint/correctness/useHookAtTopLevel: NODE_ENV is invariant at runtime.\n useEffect(() => {\n if (!hasNoIndexer && !hasIndexer) {\n console.error(\n \"useList needs to have both `getItemIndex` and `getItemAtIndex`.\",\n );\n }\n\n if (!hasNoIndexer && itemCount === undefined) {\n console.error(\n \"useList needs to have `itemCount` if an indexer is used.\",\n );\n }\n }, [hasIndexer, hasNoIndexer, itemCount]);\n }\n};\n"],"names":["useId","useIsFocusVisible","useRef","useCallback","useState","useControlled","ownerDocument","useForkRef","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"useList.js","sources":["../src/list-deprecated/useList.ts"],"sourcesContent":["import {\n ownerDocument,\n useControlled,\n useForkRef,\n useId,\n useIsFocusVisible,\n} from \"@salt-ds/core\";\n\nimport {\n type AriaAttributes,\n type Dispatch,\n type FocusEvent,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEvent,\n type Ref,\n type SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type {\n ListMultiSelectionVariant,\n ListProps,\n ListSelectionVariant,\n} from \"./ListProps\";\n\ntype keyHandler = (event: KeyboardEvent<HTMLInputElement>) => void;\n\ninterface listBoxAriaProps\n extends Pick<\n AriaAttributes,\n \"aria-activedescendant\" | \"aria-multiselectable\"\n > {\n role: string; // We will default it to be 'listbox', but users can override\n}\nexport interface ListState<\n Item = string,\n Variant extends ListSelectionVariant = \"default\",\n> {\n id?: string;\n focusVisible: boolean;\n selectedItem?: Variant extends ListMultiSelectionVariant ? Array<Item> : Item;\n highlightedIndex?: number;\n isDeselectable: boolean;\n isMultiSelect: boolean;\n isDisabled: boolean;\n}\n\nexport interface ListHelpers<\n Item = string,\n Variant extends ListSelectionVariant = \"default\",\n> {\n setFocusVisible: (visible: boolean) => void;\n setSelectedItem: Dispatch<\n SetStateAction<\n (Variant extends ListMultiSelectionVariant ? Item[] : Item) | undefined\n >\n >;\n setHighlightedIndex: (highlightedIndex?: number) => void;\n handleSelect: (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => void;\n keyDownHandlers: { [key: string]: KeyboardEventHandler };\n // TODO: Form Field\n}\n\nexport function useList<Item, Variant extends ListSelectionVariant>(\n props: ListProps<Item, Variant> = {},\n): {\n focusedRef: Ref<unknown>;\n listProps: Partial<ListProps<Item, Variant>> & listBoxAriaProps;\n state: ListState<Item, Variant>;\n helpers: ListHelpers<Item, Variant>;\n} {\n validateProps(props);\n\n const generatedId = useId(props.id);\n\n const {\n id = generatedId,\n source = [],\n itemCount = source.length,\n getItemId = (index) => `${id}-item-${index}`,\n getItemAtIndex: getItemAtIndexProp,\n getItemIndex: getItemIndexProp,\n displayedItemCount = 10,\n initialSelectedItem,\n selectionVariant,\n disabled = false,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onMouseDown,\n onMouseLeave,\n onSelect,\n disableMouseDown,\n restoreLastFocus,\n highlightedIndex: highlightedIndexProp,\n selectedItem: selectedItemProp,\n tabToSelect,\n ...restProps\n } = props;\n\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef,\n } = useIsFocusVisible();\n\n const { current: isDeselectable } = useRef(\n selectionVariant === \"deselectable\",\n );\n const { current: isMultiSelect } = useRef(\n selectionVariant === \"multiple\" ||\n selectionVariant === \"extended\" ||\n Array.isArray(initialSelectedItem) ||\n Array.isArray(selectedItemProp),\n );\n\n const { current: isExtendedSelect } = useRef(selectionVariant === \"extended\");\n\n let getItemIndex = useCallback(\n (item: Item) => source.indexOf(item),\n [source],\n );\n let getItemAtIndex = useCallback((index: number) => source[index], [source]);\n\n const indexComparator = useCallback(\n (a: Item, b: Item) => getItemIndex(a) - getItemIndex(b),\n [getItemIndex],\n );\n\n // Only use getItemIndex and getItemAtIndex if both are defined; otherwise keep the defaults\n if (\n typeof getItemIndexProp === \"function\" &&\n typeof getItemAtIndexProp === \"function\"\n ) {\n getItemIndex = getItemIndexProp;\n getItemAtIndex = getItemAtIndexProp;\n }\n\n const rootRef = useRef<HTMLElement>(null);\n const [focusVisible, setFocusVisible] = useState(false);\n const [lastFocusedIndex, setLastFocusedIndex] = useState(-1);\n\n const [selectedItem, setSelectedItem] = useControlled<\n undefined | (Variant extends ListMultiSelectionVariant ? Item[] : Item)\n >({\n controlled: selectedItemProp,\n default:\n initialSelectedItem ??\n ((isMultiSelect\n ? []\n : null) as unknown as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item),\n name: \"useList\",\n state: \"selectedItem\",\n });\n\n const [highlightedIndex, setHighlightedIndex] = useControlled<\n number | undefined\n >({\n controlled: highlightedIndexProp,\n default: undefined,\n name: \"useList\",\n state: \"highlightedIndex\",\n });\n\n const handleSingleSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n const isSelected = item === selectedItem;\n let nextItem: Item | null;\n\n if (isSelected && !isDeselectable) {\n return;\n }\n\n if (!isSelected) {\n nextItem = item;\n setHighlightedIndex(index);\n } else {\n nextItem = null;\n }\n\n setSelectedItem(\n nextItem as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItem as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n }\n },\n [onChange, selectedItem],\n );\n\n const handleMultiSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n const isSelected = (selectedItem as Item[]).indexOf(item as Item) !== -1;\n let nextItems = selectedItem as Item[];\n\n if (!isSelected) {\n nextItems = nextItems.concat([item]).sort(indexComparator);\n setHighlightedIndex(index);\n } else {\n nextItems = nextItems.filter((selected) => selected !== item);\n }\n\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n },\n [indexComparator, onChange, selectedItem],\n );\n\n const handleRangeSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index?: number,\n ) => {\n const currentSelection =\n event.ctrlKey || event.metaKey ? selectedItem : ([] as Item[]);\n\n const lastSelectedItemIndex =\n (selectedItem as Item[]).length > 0\n ? getItemIndex(\n (selectedItem as Item[])[(selectedItem as Item[]).length - 1],\n )\n : 0;\n\n const startRegion = Math.min(\n index ?? lastSelectedItemIndex,\n lastSelectedItemIndex,\n );\n const endRegion = Math.max(\n index ?? lastSelectedItemIndex,\n lastSelectedItemIndex,\n );\n const rangeSelection = source.slice(startRegion, endRegion + 1);\n // concat the current selection with a new selection and remove duplicates for overlaps\n const nextItems = [\n ...new Set([...(currentSelection as Item[]), ...rangeSelection]),\n ];\n // remove text selection caused by shift clicking\n ownerDocument(event.currentTarget).getSelection()?.removeAllRanges();\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant ? Item[] : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n },\n [getItemIndex, onChange, selectedItem, source],\n );\n\n const handleExtendedSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item,\n ) => {\n let nextItems = selectedItem as Item[];\n if (event.shiftKey) {\n handleRangeSelect(event, index);\n } else if (\n (selectedItem as Item[]).length === 0 ||\n event.ctrlKey ||\n event.metaKey\n ) {\n console.log(\"handleMulti\");\n handleMultiSelect(event, index, item);\n } else {\n nextItems = [item] as Item[];\n setSelectedItem(\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n\n if (onChange) {\n onChange(\n event,\n nextItems as Variant extends ListMultiSelectionVariant\n ? Item[]\n : Item,\n );\n }\n }\n },\n [handleMultiSelect, handleRangeSelect, onChange, selectedItem],\n );\n\n const handleSelect = useCallback(\n (\n event: MouseEvent<HTMLElement> | KeyboardEvent<HTMLElement>,\n index: number | undefined,\n item: Item | null,\n ) => {\n if (item == null || (item as Record<string, unknown>).disabled) {\n return;\n }\n\n if (onSelect) {\n console.log(\"onSelect\");\n onSelect(event, item);\n }\n\n if (isExtendedSelect) {\n handleExtendedSelect(event, index, item);\n } else if (isMultiSelect) {\n handleMultiSelect(event, index, item);\n } else {\n handleSingleSelect(event, index, item);\n }\n },\n [handleExtendedSelect, handleMultiSelect, handleSingleSelect, onSelect],\n );\n\n const saveFocusedIndex = (index: number) => {\n setLastFocusedIndex(index);\n return index;\n };\n\n const keyDownHandlers: { [key: string]: keyHandler } = {\n ArrowUp: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(Math.max(0, (prevHighlightedIndex ?? itemCount) - 1)),\n );\n },\n ArrowDown: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.min(itemCount - 1, (prevHighlightedIndex ?? -1) + 1),\n ),\n );\n },\n PageUp: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.max(\n 0,\n (prevHighlightedIndex ?? displayedItemCount) - displayedItemCount,\n ),\n ),\n );\n },\n PageDown: (event) => {\n event.preventDefault();\n setHighlightedIndex((prevHighlightedIndex?: number) =>\n saveFocusedIndex(\n Math.min(\n itemCount - 1,\n (prevHighlightedIndex ?? 0) + displayedItemCount,\n ),\n ),\n );\n },\n Home: (event) => {\n event.preventDefault();\n setHighlightedIndex(saveFocusedIndex(0));\n },\n End: (event) => {\n event.preventDefault();\n setHighlightedIndex(saveFocusedIndex(itemCount - 1));\n },\n Enter: (event) => {\n event.preventDefault();\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n },\n \" \": (event) => {\n event.preventDefault();\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n },\n Tab: (event) => {\n if (tabToSelect) {\n handleSelect(\n event,\n highlightedIndex,\n highlightedIndex != null && highlightedIndex > -1\n ? getItemAtIndex(highlightedIndex)\n : null,\n );\n } else {\n setHighlightedIndex(undefined);\n }\n },\n };\n\n const handleKeyDown: keyHandler = (event) => {\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n const handler: keyHandler = keyDownHandlers[event.key];\n\n if (handler) {\n handler(event);\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n const handleFocus = (event: FocusEvent<HTMLDivElement>) => {\n handleFocusVisible(event);\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n // Work out the index to highlight\n if (highlightedIndex === undefined) {\n const firstSelectedItem = isMultiSelect\n ? (selectedItem as Item[])[0]\n : (selectedItem as Item | undefined);\n\n setHighlightedIndex(\n Math.max(\n restoreLastFocus\n ? lastFocusedIndex\n : firstSelectedItem\n ? getItemIndex(firstSelectedItem)\n : -1,\n 0,\n ),\n );\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n setHighlightedIndex(undefined);\n handleBlurVisible();\n if (!isFocusVisibleRef.current) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n if (disableMouseDown) {\n event.preventDefault();\n } else if (onMouseDown) {\n onMouseDown(event);\n }\n };\n\n const handleMouseLeave = (event: MouseEvent<HTMLDivElement>) => {\n if (focusVisible && id) {\n // Get the root node of the component if we have access to it otherwise default to current document\n const rootNode = (\n rootRef.current || ownerDocument(event.currentTarget)\n ).getRootNode();\n\n const listNode = (rootNode as Document).getElementById(id);\n\n // Safety check as `mouseleave` could have been accidentally triggered by an opening tooltip\n // when you use keyboard to navigate, hence the focusVisible check earlier\n if (listNode?.contains(event.target as Node)) {\n setHighlightedIndex(undefined);\n }\n } else {\n setHighlightedIndex(undefined);\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n };\n\n const eventHandlers = {\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n };\n\n const ariaProps: listBoxAriaProps = {\n role: \"listbox\",\n \"aria-activedescendant\":\n highlightedIndex !== undefined && highlightedIndex >= 0\n ? getItemId(highlightedIndex)\n : undefined,\n };\n\n if (isMultiSelect) {\n ariaProps[\"aria-multiselectable\"] = true;\n }\n\n return {\n focusedRef: useForkRef(rootRef, focusVisibleRef),\n state: {\n id,\n focusVisible,\n selectedItem,\n highlightedIndex,\n isDeselectable,\n isMultiSelect,\n isDisabled: disabled,\n },\n helpers: {\n setFocusVisible,\n setSelectedItem,\n setHighlightedIndex,\n keyDownHandlers,\n handleSelect,\n },\n listProps: {\n id,\n source,\n itemCount,\n disableMouseDown,\n displayedItemCount,\n getItemAtIndex,\n getItemIndex,\n getItemId,\n disabled,\n ...ariaProps,\n ...restProps,\n ...(disabled ? {} : eventHandlers),\n },\n };\n}\n\nconst validateProps = <Item, Variant extends ListSelectionVariant>(\n props: ListProps<Item, Variant>,\n) => {\n if (process.env.NODE_ENV !== \"production\") {\n const { source, itemCount, getItemIndex, getItemAtIndex } = props;\n\n const hasIndexer =\n typeof getItemIndex === \"function\" &&\n typeof getItemAtIndex === \"function\";\n\n const hasNoIndexer =\n getItemIndex === undefined && getItemAtIndex === undefined;\n\n const sourceNotArray = !Array.isArray(source);\n\n // biome-ignore lint/correctness/useHookAtTopLevel: NODE_ENV is invariant at runtime.\n useEffect(() => {\n if (sourceNotArray) {\n console.error(\"`source` for useList must be an array.\");\n }\n }, [sourceNotArray]);\n\n // biome-ignore lint/correctness/useHookAtTopLevel: NODE_ENV is invariant at runtime.\n useEffect(() => {\n if (!hasNoIndexer && !hasIndexer) {\n console.error(\n \"useList needs to have both `getItemIndex` and `getItemAtIndex`.\",\n );\n }\n\n if (!hasNoIndexer && itemCount === undefined) {\n console.error(\n \"useList needs to have `itemCount` if an indexer is used.\",\n );\n }\n }, [hasIndexer, hasNoIndexer, itemCount]);\n }\n};\n"],"names":["useId","useIsFocusVisible","useRef","useCallback","useState","useControlled","ownerDocument","useForkRef","useEffect"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useListItem.js","sources":["../src/list-deprecated/useListItem.ts"],"sourcesContent":["import { type MouseEvent, useCallback, useEffect, useMemo } from \"react\";\nimport type { ListChildComponentProps } from \"react-window\";\n\nimport type { ListItemProps } from \"./ListItem\";\nimport type { ListItemBaseProps } from \"./ListItemBase\";\n\nimport { useListItemContext } from \"./ListItemContext\";\nimport { useListStateContext } from \"./ListStateContext\";\n\ntype UseItemHookReturnType<Item> = {\n /**\n * Item data\n */\n item: Item;\n /**\n * Utility function for converting item data to a string\n */\n itemToString: (item: Item) => string;\n /**\n * Properties applied to a basic list item component\n */\n itemProps: ListItemBaseProps;\n};\n\nexport interface IndexedListItemProps<Item> extends ListItemProps<Item> {\n ariaProps?: {\n role?: string;\n \"aria-disabled\"?: string;\n \"aria-checked\"?: string;\n \"aria-posinset\"?: number;\n \"aria-setsize\"?: number;\n };\n\n index: number;\n itemHeight?: number | string;\n}\n\nexport function useListItem<Item>(\n props: IndexedListItemProps<Item>,\n): UseItemHookReturnType<Item> {\n validateProps(props);\n\n const context = useListItemContext<Item>();\n const { state, helpers } = useListStateContext();\n const { setHighlightedIndex, setFocusVisible, handleSelect } = helpers;\n const {\n focusVisible,\n highlightedIndex,\n selectedItem,\n isDeselectable,\n isDisabled,\n isMultiSelect,\n } = state;\n const {\n index,\n item,\n onClick,\n onMouseDown,\n onMouseMove,\n id = context.getItemId(index),\n itemHeight = context.getItemHeight?.(index),\n itemToString = context.itemToString,\n itemTextHighlightPattern = context.itemTextHighlightPattern,\n // An item can be disabled by\n // 1. Setting disabled attribute on the item object, or\n // 2. Passing a disabled prop directly or\n // 3. Using the disabled state in list context\n //TODO Not sure where disabled needs to be defined\n disabled = (item as any).disabled || isDisabled,\n ariaProps: ariaPropsProp,\n style: styleProp,\n ...restProps\n } = props;\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: JSON.stringify is used to compare objects\n const style = useMemo(\n () => ({\n height: itemHeight,\n ...styleProp,\n }),\n [itemHeight, JSON.stringify(styleProp)],\n );\n\n const highlighted = index === highlightedIndex;\n const selected = isMultiSelect\n ? selectedItem.indexOf(item) !== -1\n : item === selectedItem;\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n handleSelect(event, index, item);\n\n if (onClick) {\n onClick(event);\n }\n },\n [handleSelect, index, item, onClick],\n );\n\n const handleMouseMove = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n setHighlightedIndex(index);\n setFocusVisible(false);\n\n if (onMouseMove) {\n onMouseMove(event);\n }\n },\n [index, setFocusVisible, setHighlightedIndex, onMouseMove],\n );\n\n const handleMouseDown = (\n event: MouseEvent<HTMLDivElement, globalThis.MouseEvent>,\n ) => {\n if (context.disableMouseDown) {\n event.preventDefault();\n } else if (onMouseDown) {\n onMouseDown(event);\n }\n };\n\n const eventHandlers = {\n onClick: handleClick,\n onMouseMove: handleMouseMove,\n onMouseDown: handleMouseDown,\n };\n\n const ariaProps = {\n role: \"option\",\n ...(disabled && { \"aria-disabled\": true }),\n ...ariaPropsProp,\n };\n\n if (selected) {\n ariaProps[`${isMultiSelect ? \"aria-selected\" : \"aria-checked\"}`] = true;\n }\n\n return {\n item: item!,\n itemToString,\n itemProps: {\n \"data-option-index\": index,\n id,\n style,\n deselectable: isDeselectable || isMultiSelect,\n disabled,\n selected,\n highlighted,\n itemTextHighlightPattern,\n focusVisible: focusVisible && highlighted,\n tooltipText: item ? itemToString(item) : undefined,\n ...ariaProps,\n ...restProps,\n ...(disabled ? {} : eventHandlers),\n },\n };\n}\n\ntype VirtualizedListItemProps = Pick<\n ListChildComponentProps,\n \"index\" | \"style\" | \"data\"\n>;\n\nexport const useVirtualizedListItem = (props: VirtualizedListItemProps) => {\n const { index, data, style = {} } = props;\n // Filter out inline width added by `react-window` so that it can only be defined using css.\n const { width: _unusedWidth, height: itemHeight, ...restStyle } = style;\n\n return useListItem({\n index,\n itemHeight,\n style: restStyle,\n item: data[index],\n ariaProps: {\n \"aria-posinset\": index + 1,\n \"aria-setsize\": data.length,\n },\n });\n};\n\nconst validateProps = <Item>(props: IndexedListItemProps<Item>) => {\n const { index, item } = props;\n\n /* eslint-disable react-hooks/rules-of-hooks */\n useEffect(() => {\n if (item === undefined) {\n console.warn(\"useListItem needs `item`.\");\n }\n if (index === undefined) {\n console.warn(\"useListItem needs to know item's index.\");\n }\n }, [index, item]);\n /* eslint-enable react-hooks/rules-of-hooks */\n};\n"],"names":["useListItemContext","useListStateContext","useMemo","useCallback","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"useListItem.js","sources":["../src/list-deprecated/useListItem.ts"],"sourcesContent":["import { type MouseEvent, useCallback, useEffect, useMemo } from \"react\";\nimport type { ListChildComponentProps } from \"react-window\";\n\nimport type { ListItemProps } from \"./ListItem\";\nimport type { ListItemBaseProps } from \"./ListItemBase\";\n\nimport { useListItemContext } from \"./ListItemContext\";\nimport { useListStateContext } from \"./ListStateContext\";\n\ntype UseItemHookReturnType<Item> = {\n /**\n * Item data\n */\n item: Item;\n /**\n * Utility function for converting item data to a string\n */\n itemToString: (item: Item) => string;\n /**\n * Properties applied to a basic list item component\n */\n itemProps: ListItemBaseProps;\n};\n\nexport interface IndexedListItemProps<Item> extends ListItemProps<Item> {\n ariaProps?: {\n role?: string;\n \"aria-disabled\"?: string;\n \"aria-checked\"?: string;\n \"aria-posinset\"?: number;\n \"aria-setsize\"?: number;\n };\n\n index: number;\n itemHeight?: number | string;\n}\n\nexport function useListItem<Item>(\n props: IndexedListItemProps<Item>,\n): UseItemHookReturnType<Item> {\n validateProps(props);\n\n const context = useListItemContext<Item>();\n const { state, helpers } = useListStateContext();\n const { setHighlightedIndex, setFocusVisible, handleSelect } = helpers;\n const {\n focusVisible,\n highlightedIndex,\n selectedItem,\n isDeselectable,\n isDisabled,\n isMultiSelect,\n } = state;\n const {\n index,\n item,\n onClick,\n onMouseDown,\n onMouseMove,\n id = context.getItemId(index),\n itemHeight = context.getItemHeight?.(index),\n itemToString = context.itemToString,\n itemTextHighlightPattern = context.itemTextHighlightPattern,\n // An item can be disabled by\n // 1. Setting disabled attribute on the item object, or\n // 2. Passing a disabled prop directly or\n // 3. Using the disabled state in list context\n //TODO Not sure where disabled needs to be defined\n disabled = (item as Record<string, unknown>).disabled || isDisabled,\n ariaProps: ariaPropsProp,\n style: styleProp,\n ...restProps\n } = props;\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: JSON.stringify is used to compare objects\n const style = useMemo(\n () => ({\n height: itemHeight,\n ...styleProp,\n }),\n [itemHeight, JSON.stringify(styleProp)],\n );\n\n const highlighted = index === highlightedIndex;\n const selected = isMultiSelect\n ? selectedItem.indexOf(item) !== -1\n : item === selectedItem;\n\n const handleClick = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n handleSelect(event, index, item);\n\n if (onClick) {\n onClick(event);\n }\n },\n [handleSelect, index, item, onClick],\n );\n\n const handleMouseMove = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n setHighlightedIndex(index);\n setFocusVisible(false);\n\n if (onMouseMove) {\n onMouseMove(event);\n }\n },\n [index, setFocusVisible, setHighlightedIndex, onMouseMove],\n );\n\n const handleMouseDown = (\n event: MouseEvent<HTMLDivElement, globalThis.MouseEvent>,\n ) => {\n if (context.disableMouseDown) {\n event.preventDefault();\n } else if (onMouseDown) {\n onMouseDown(event);\n }\n };\n\n const eventHandlers = {\n onClick: handleClick,\n onMouseMove: handleMouseMove,\n onMouseDown: handleMouseDown,\n };\n\n const ariaProps = {\n role: \"option\",\n ...(disabled && { \"aria-disabled\": true }),\n ...ariaPropsProp,\n };\n\n if (selected) {\n ariaProps[`${isMultiSelect ? \"aria-selected\" : \"aria-checked\"}`] = true;\n }\n\n return {\n item: item as Item,\n itemToString,\n itemProps: {\n \"data-option-index\": index,\n id,\n style,\n deselectable: isDeselectable || isMultiSelect,\n disabled,\n selected,\n highlighted,\n itemTextHighlightPattern,\n focusVisible: focusVisible && highlighted,\n tooltipText: item ? itemToString(item) : undefined,\n ...ariaProps,\n ...restProps,\n ...(disabled ? {} : eventHandlers),\n },\n };\n}\n\ntype VirtualizedListItemProps = Pick<\n ListChildComponentProps,\n \"index\" | \"style\" | \"data\"\n>;\n\nexport const useVirtualizedListItem = (props: VirtualizedListItemProps) => {\n const { index, data, style = {} } = props;\n // Filter out inline width added by `react-window` so that it can only be defined using css.\n const { width: _unusedWidth, height: itemHeight, ...restStyle } = style;\n\n return useListItem({\n index,\n itemHeight,\n style: restStyle,\n item: data[index],\n ariaProps: {\n \"aria-posinset\": index + 1,\n \"aria-setsize\": data.length,\n },\n });\n};\n\nconst validateProps = <Item>(props: IndexedListItemProps<Item>) => {\n const { index, item } = props;\n\n /* eslint-disable react-hooks/rules-of-hooks */\n useEffect(() => {\n if (item === undefined) {\n console.warn(\"useListItem needs `item`.\");\n }\n if (index === undefined) {\n console.warn(\"useListItem needs to know item's index.\");\n }\n }, [index, item]);\n /* eslint-enable react-hooks/rules-of-hooks */\n};\n"],"names":["useListItemContext","useListStateContext","useMemo","useCallback","useEffect"],"mappings":";;;;;;AAqCO,SAAS,YACd,KAC6B,EAAA;AAvC/B,EAAA,IAAA,EAAA;AAwCE,EAAA,aAAA,CAAc,KAAK,CAAA;AAEnB,EAAA,MAAM,UAAUA,kCAAyB,EAAA;AACzC,EAAA,MAAM,EAAE,KAAA,EAAO,OAAQ,EAAA,GAAIC,oCAAoB,EAAA;AAC/C,EAAA,MAAM,EAAE,mBAAA,EAAqB,eAAiB,EAAA,YAAA,EAAiB,GAAA,OAAA;AAC/D,EAAM,MAAA;AAAA,IACJ,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AACJ,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,EAAA,GAAK,OAAQ,CAAA,SAAA,CAAU,KAAK,CAAA;AAAA,IAC5B,UAAA,GAAA,CAAa,EAAQ,GAAA,OAAA,CAAA,aAAA,KAAR,IAAwB,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAA,KAAA,CAAA;AAAA,IACrC,eAAe,OAAQ,CAAA,YAAA;AAAA,IACvB,2BAA2B,OAAQ,CAAA,wBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMnC,QAAA,GAAY,KAAiC,QAAY,IAAA,UAAA;AAAA,IACzD,SAAW,EAAA,aAAA;AAAA,IACX,KAAO,EAAA,SAAA;AAAA,IACP,GAAG;AAAA,GACD,GAAA,KAAA;AAGJ,EAAA,MAAM,KAAQ,GAAAC,aAAA;AAAA,IACZ,OAAO;AAAA,MACL,MAAQ,EAAA,UAAA;AAAA,MACR,GAAG;AAAA,KACL,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,IAAK,CAAA,SAAA,CAAU,SAAS,CAAC;AAAA,GACxC;AAEA,EAAA,MAAM,cAAc,KAAU,KAAA,gBAAA;AAC9B,EAAA,MAAM,WAAW,aACb,GAAA,YAAA,CAAa,QAAQ,IAAI,CAAA,KAAM,KAC/B,IAAS,KAAA,YAAA;AAEb,EAAA,MAAM,WAAc,GAAAC,iBAAA;AAAA,IAClB,CAAC,KAAsC,KAAA;AACrC,MAAa,YAAA,CAAA,KAAA,EAAO,OAAO,IAAI,CAAA;AAE/B,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA;AACf,KACF;AAAA,IACA,CAAC,YAAA,EAAc,KAAO,EAAA,IAAA,EAAM,OAAO;AAAA,GACrC;AAEA,EAAA,MAAM,eAAkB,GAAAA,iBAAA;AAAA,IACtB,CAAC,KAAsC,KAAA;AACrC,MAAA,mBAAA,CAAoB,KAAK,CAAA;AACzB,MAAA,eAAA,CAAgB,KAAK,CAAA;AAErB,MAAA,IAAI,WAAa,EAAA;AACf,QAAA,WAAA,CAAY,KAAK,CAAA;AAAA;AACnB,KACF;AAAA,IACA,CAAC,KAAA,EAAO,eAAiB,EAAA,mBAAA,EAAqB,WAAW;AAAA,GAC3D;AAEA,EAAM,MAAA,eAAA,GAAkB,CACtB,KACG,KAAA;AACH,IAAA,IAAI,QAAQ,gBAAkB,EAAA;AAC5B,MAAA,KAAA,CAAM,cAAe,EAAA;AAAA,eACZ,WAAa,EAAA;AACtB,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA;AACnB,GACF;AAEA,EAAA,MAAM,aAAgB,GAAA;AAAA,IACpB,OAAS,EAAA,WAAA;AAAA,IACT,WAAa,EAAA,eAAA;AAAA,IACb,WAAa,EAAA;AAAA,GACf;AAEA,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,IAAM,EAAA,QAAA;AAAA,IACN,GAAI,QAAA,IAAY,EAAE,eAAA,EAAiB,IAAK,EAAA;AAAA,IACxC,GAAG;AAAA,GACL;AAEA,EAAA,IAAI,QAAU,EAAA;AACZ,IAAA,SAAA,CAAU,CAAG,EAAA,aAAA,GAAgB,eAAkB,GAAA,cAAc,EAAE,CAAI,GAAA,IAAA;AAAA;AAGrE,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAW,EAAA;AAAA,MACT,mBAAqB,EAAA,KAAA;AAAA,MACrB,EAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAc,cAAkB,IAAA,aAAA;AAAA,MAChC,QAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,wBAAA;AAAA,MACA,cAAc,YAAgB,IAAA,WAAA;AAAA,MAC9B,WAAa,EAAA,IAAA,GAAO,YAAa,CAAA,IAAI,CAAI,GAAA,MAAA;AAAA,MACzC,GAAG,SAAA;AAAA,MACH,GAAG,SAAA;AAAA,MACH,GAAI,QAAW,GAAA,EAAK,GAAA;AAAA;AACtB,GACF;AACF;AAOa,MAAA,sBAAA,GAAyB,CAAC,KAAoC,KAAA;AACzE,EAAA,MAAM,EAAE,KAAO,EAAA,IAAA,EAAM,KAAQ,GAAA,IAAO,GAAA,KAAA;AAEpC,EAAA,MAAM,EAAE,KAAO,EAAA,YAAA,EAAc,QAAQ,UAAY,EAAA,GAAG,WAAc,GAAA,KAAA;AAElE,EAAA,OAAO,WAAY,CAAA;AAAA,IACjB,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAO,EAAA,SAAA;AAAA,IACP,IAAA,EAAM,KAAK,KAAK,CAAA;AAAA,IAChB,SAAW,EAAA;AAAA,MACT,iBAAiB,KAAQ,GAAA,CAAA;AAAA,MACzB,gBAAgB,IAAK,CAAA;AAAA;AACvB,GACD,CAAA;AACH;AAEA,MAAM,aAAA,GAAgB,CAAO,KAAsC,KAAA;AACjE,EAAM,MAAA,EAAE,KAAO,EAAA,IAAA,EAAS,GAAA,KAAA;AAGxB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAS,MAAW,EAAA;AACtB,MAAA,OAAA,CAAQ,KAAK,2BAA2B,CAAA;AAAA;AAE1C,IAAA,IAAI,UAAU,MAAW,EAAA;AACvB,MAAA,OAAA,CAAQ,KAAK,yCAAyC,CAAA;AAAA;AACxD,GACC,EAAA,CAAC,KAAO,EAAA,IAAI,CAAC,CAAA;AAElB,CAAA;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListNext.js","sources":["../src/list-next/ListNext.tsx"],"sourcesContent":["import { makePrefixer, useForkRef, useId } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type SyntheticEvent,\n useRef,\n} from \"react\";\nimport listNextCss from \"./ListNext.css\";\nimport { ListNextContext } from \"./ListNextContext\";\nimport { useList } from \"./useList\";\n\nconst withBaseName = makePrefixer(\"saltListNext\");\n\nexport interface ListNextProps\n extends Omit<ComponentPropsWithoutRef<\"ul\">, \"onChange\" | \"onSelect\"> {\n /**\n * If true, all items in list will be disabled.\n */\n disabled?: boolean;\n /* If `true`, the component will not receive focus. */\n disableFocus?: boolean;\n /* Value for the controlled version. */\n highlightedItem?: string;\n /* Value for the controlled version. */\n selected?: string;\n /* Callback for change event. Returns current selection.*/\n onChange?: (\n event: SyntheticEvent,\n data: { value: string | undefined },\n ) => void;\n /* Callback for select event. Returns new selected item.*/\n onSelect?: (event: SyntheticEvent, data: { value: string }) => void;\n /* Initial selection. */\n defaultSelected?: string;\n}\n\nexport const ListNext = forwardRef<HTMLUListElement, ListNextProps>(\n function ListNext(\n {\n children,\n className,\n disabled,\n disableFocus,\n id,\n onSelect,\n onFocus,\n onBlur,\n onKeyDown,\n onMouseOver,\n highlightedItem,\n selected,\n defaultSelected,\n onChange,\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-list-next\",\n css: listNextCss,\n window: targetWindow,\n });\n\n const listId = useId(id);\n const listRef = useRef<HTMLUListElement>(null);\n const handleRef = useForkRef(listRef, ref);\n const {\n focusHandler,\n keyDownHandler,\n blurHandler,\n mouseOverHandler,\n activeDescendant,\n contextValue,\n focusVisibleRef,\n } = useList({\n disabled,\n highlightedItem,\n selected,\n defaultSelected,\n onChange,\n onSelect,\n id: listId,\n ref: listRef,\n });\n\n const setListRef = useForkRef(focusVisibleRef, handleRef);\n\n const handleFocus = (event: FocusEvent<HTMLUListElement>) => {\n focusHandler(event);\n onFocus?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLUListElement>) => {\n if (disableFocus) {\n event.preventDefault();\n return;\n }\n keyDownHandler(event);\n onKeyDown?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLUListElement>) => {\n blurHandler();\n onBlur?.(event);\n };\n\n const handleMouseOver = (event: MouseEvent<HTMLUListElement>) => {\n mouseOverHandler();\n onMouseOver?.(event);\n };\n\n return (\n <ListNextContext.Provider value={contextValue}>\n <ul\n // TODO: fix type from useIsFocusVisible\n // @ts-ignore\n ref={setListRef}\n id={listId}\n className={clsx(withBaseName(), className)}\n role=\"listbox\"\n tabIndex={disabled || disableFocus ? -1 : 0}\n aria-activedescendant={disabled ? undefined : activeDescendant}\n aria-disabled={disabled}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onMouseOver={handleMouseOver}\n {...rest}\n >\n {children}\n </ul>\n </ListNextContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","ListNext","useWindow","useComponentCssInjection","listNextCss","useId","useRef","useForkRef","useList","jsx","ListNextContext","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"ListNext.js","sources":["../src/list-next/ListNext.tsx"],"sourcesContent":["import { makePrefixer, useForkRef, useId } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type SyntheticEvent,\n useRef,\n} from \"react\";\nimport listNextCss from \"./ListNext.css\";\nimport { ListNextContext } from \"./ListNextContext\";\nimport { useList } from \"./useList\";\n\nconst withBaseName = makePrefixer(\"saltListNext\");\n\nexport interface ListNextProps\n extends Omit<ComponentPropsWithoutRef<\"ul\">, \"onChange\" | \"onSelect\"> {\n /**\n * If true, all items in list will be disabled.\n */\n disabled?: boolean;\n /* If `true`, the component will not receive focus. */\n disableFocus?: boolean;\n /* Value for the controlled version. */\n highlightedItem?: string;\n /* Value for the controlled version. */\n selected?: string;\n /* Callback for change event. Returns current selection.*/\n onChange?: (\n event: SyntheticEvent,\n data: { value: string | undefined },\n ) => void;\n /* Callback for select event. Returns new selected item.*/\n onSelect?: (event: SyntheticEvent, data: { value: string }) => void;\n /* Initial selection. */\n defaultSelected?: string;\n}\n\nexport const ListNext = forwardRef<HTMLUListElement, ListNextProps>(\n function ListNext(\n {\n children,\n className,\n disabled,\n disableFocus,\n id,\n onSelect,\n onFocus,\n onBlur,\n onKeyDown,\n onMouseOver,\n highlightedItem,\n selected,\n defaultSelected,\n onChange,\n ...rest\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-list-next\",\n css: listNextCss,\n window: targetWindow,\n });\n\n const listId = useId(id);\n const listRef = useRef<HTMLUListElement>(null);\n const handleRef = useForkRef(listRef, ref);\n const {\n focusHandler,\n keyDownHandler,\n blurHandler,\n mouseOverHandler,\n activeDescendant,\n contextValue,\n focusVisibleRef,\n } = useList({\n disabled,\n highlightedItem,\n selected,\n defaultSelected,\n onChange,\n onSelect,\n id: listId,\n ref: listRef,\n });\n\n const setListRef = useForkRef(focusVisibleRef, handleRef);\n\n const handleFocus = (event: FocusEvent<HTMLUListElement>) => {\n focusHandler(event);\n onFocus?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLUListElement>) => {\n if (disableFocus) {\n event.preventDefault();\n return;\n }\n keyDownHandler(event);\n onKeyDown?.(event);\n };\n\n const handleBlur = (event: FocusEvent<HTMLUListElement>) => {\n blurHandler();\n onBlur?.(event);\n };\n\n const handleMouseOver = (event: MouseEvent<HTMLUListElement>) => {\n mouseOverHandler();\n onMouseOver?.(event);\n };\n\n return (\n <ListNextContext.Provider value={contextValue}>\n <ul\n // TODO: fix type from useIsFocusVisible\n // @ts-expect-error\n ref={setListRef}\n id={listId}\n className={clsx(withBaseName(), className)}\n role=\"listbox\"\n tabIndex={disabled || disableFocus ? -1 : 0}\n aria-activedescendant={disabled ? undefined : activeDescendant}\n aria-disabled={disabled}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onMouseOver={handleMouseOver}\n {...rest}\n >\n {children}\n </ul>\n </ListNextContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","ListNext","useWindow","useComponentCssInjection","listNextCss","useId","useRef","useForkRef","useList","jsx","ListNextContext","clsx"],"mappings":"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"}
@@ -60,6 +60,7 @@ const MetricContent = react.forwardRef(
60
60
  {
61
61
  ...restProps,
62
62
  className: clsx.clsx(withBaseName(), className),
63
+ role: "presentation",
63
64
  "aria-labelledby": `${titleId || ""} ${subtitleId || ""}`,
64
65
  ref,
65
66
  children: [
@@ -1 +1 @@
1
- {"version":3,"file":"MetricContent.js","sources":["../src/metric/MetricContent.tsx"],"sourcesContent":["import {\n Display1,\n Display2,\n Display3,\n makePrefixer,\n Text,\n} from \"@salt-ds/core\";\nimport { ArrowDownIcon, ArrowUpIcon, type IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentType, forwardRef, type HTMLAttributes } from \"react\";\nimport { useMetricContext } from \"./internal\";\n\nimport metricContentCss from \"./MetricContent.css\";\n\nexport interface MetricContentProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * These props will be passed to the indicator icon. Use this to render a\n * custom icon.\n *\n * @see `Icon` for a list of valid props.\n */\n IndicatorIconProps?: Partial<IconProps>;\n /**\n * Replace the default Icon component\n */\n IndicatorIconComponent?: ComponentType<IconProps>;\n\n /**\n * Other data that may serve as additional information to the main value\n */\n subvalue?: string | number;\n /**\n * The main value to display in the metric\n */\n value: string | number;\n}\n\nconst iconComponentMap = {\n down: ArrowDownIcon,\n up: ArrowUpIcon,\n};\n\nconst withBaseName = makePrefixer(\"saltMetricContent\");\n\nexport const MetricContent = forwardRef<HTMLDivElement, MetricContentProps>(\n function MetricContent(\n {\n IndicatorIconProps,\n IndicatorIconComponent,\n className,\n value,\n subvalue,\n ...restProps\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-metric-content\",\n css: metricContentCss,\n window: targetWindow,\n });\n\n const {\n direction,\n showIndicator,\n indicatorPosition,\n size = \"medium\",\n valueId,\n titleId,\n subtitleId,\n } = useMetricContext();\n\n const iconSize = size === \"large\" ? 2 : 1;\n\n const valueComponentMap = {\n small: Display3,\n medium: Display2,\n large: Display1,\n };\n const ValueComponent = valueComponentMap[size];\n\n const iconProps = {\n \"aria-label\": direction,\n className: withBaseName(\"indicator\"),\n name: direction ? `movement-${direction}` : \"\",\n size: iconSize,\n ...IndicatorIconProps,\n };\n\n const IconComponent =\n IndicatorIconComponent ??\n (direction ? iconComponentMap[direction] : undefined);\n\n const icon =\n showIndicator && IconComponent ? <IconComponent {...iconProps} /> : null;\n\n return (\n <div\n {...restProps}\n className={clsx(withBaseName(), className)}\n aria-labelledby={`${titleId || \"\"} ${subtitleId || \"\"}`}\n ref={ref}\n >\n <div className={withBaseName(\"value-container\")}>\n {indicatorPosition === \"start\" && icon}\n <ValueComponent\n data-testid=\"metric-value\"\n id={valueId}\n className={withBaseName(\"value\")}\n >\n {value}\n </ValueComponent>\n {indicatorPosition === \"end\" && icon}\n </div>\n {subvalue && (\n <Text\n className={withBaseName(\"subvalue\")}\n data-testid=\"metric-subvalue\"\n >\n {subvalue}\n </Text>\n )}\n </div>\n );\n },\n);\n"],"names":["ArrowDownIcon","ArrowUpIcon","makePrefixer","forwardRef","MetricContent","useWindow","useComponentCssInjection","metricContentCss","useMetricContext","Display3","Display2","Display1","jsxs","clsx","jsx","Text"],"mappings":";;;;;;;;;;;;AAuCA,MAAM,gBAAmB,GAAA;AAAA,EACvB,IAAM,EAAAA,mBAAA;AAAA,EACN,EAAI,EAAAC;AACN,CAAA;AAEA,MAAM,YAAA,GAAeC,kBAAa,mBAAmB,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cACP,CAAA;AAAA,IACE,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,IAAO,GAAA,QAAA;AAAA,MACP,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,QACEC,8BAAiB,EAAA;AAErB,IAAM,MAAA,QAAA,GAAW,IAAS,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA;AAExC,IAAA,MAAM,iBAAoB,GAAA;AAAA,MACxB,KAAO,EAAAC,aAAA;AAAA,MACP,MAAQ,EAAAC,aAAA;AAAA,MACR,KAAO,EAAAC;AAAA,KACT;AACA,IAAM,MAAA,cAAA,GAAiB,kBAAkB,IAAI,CAAA;AAE7C,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,YAAc,EAAA,SAAA;AAAA,MACd,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,MACnC,IAAM,EAAA,SAAA,GAAY,CAAY,SAAA,EAAA,SAAS,CAAK,CAAA,GAAA,EAAA;AAAA,MAC5C,IAAM,EAAA,QAAA;AAAA,MACN,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,aACJ,GAAA,sBAAA,KACC,SAAY,GAAA,gBAAA,CAAiB,SAAS,CAAI,GAAA,MAAA,CAAA;AAE7C,IAAA,MAAM,OACJ,aAAiB,IAAA,aAAA,kCAAiB,aAAe,EAAA,EAAA,GAAG,WAAW,CAAK,GAAA,IAAA;AAEtE,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,SAAA;AAAA,QACJ,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,mBAAiB,CAAG,EAAA,OAAA,IAAW,EAAE,CAAA,CAAA,EAAI,cAAc,EAAE,CAAA,CAAA;AAAA,QACrD,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAD,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,iBAAiB,CAC3C,EAAA,QAAA,EAAA;AAAA,YAAA,iBAAA,KAAsB,OAAW,IAAA,IAAA;AAAA,4BAClCE,cAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,aAAY,EAAA,cAAA;AAAA,gBACZ,EAAI,EAAA,OAAA;AAAA,gBACJ,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,gBAE9B,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YACC,sBAAsB,KAAS,IAAA;AAAA,WAClC,EAAA,CAAA;AAAA,UACC,QACC,oBAAAA,cAAA;AAAA,YAACC,SAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,cAClC,aAAY,EAAA,iBAAA;AAAA,cAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"MetricContent.js","sources":["../src/metric/MetricContent.tsx"],"sourcesContent":["import {\n Display1,\n Display2,\n Display3,\n makePrefixer,\n Text,\n} from \"@salt-ds/core\";\nimport { ArrowDownIcon, ArrowUpIcon, type IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentType, forwardRef, type HTMLAttributes } from \"react\";\nimport { useMetricContext } from \"./internal\";\n\nimport metricContentCss from \"./MetricContent.css\";\n\nexport interface MetricContentProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * These props will be passed to the indicator icon. Use this to render a\n * custom icon.\n *\n * @see `Icon` for a list of valid props.\n */\n IndicatorIconProps?: Partial<IconProps>;\n /**\n * Replace the default Icon component\n */\n IndicatorIconComponent?: ComponentType<IconProps>;\n\n /**\n * Other data that may serve as additional information to the main value\n */\n subvalue?: string | number;\n /**\n * The main value to display in the metric\n */\n value: string | number;\n}\n\nconst iconComponentMap = {\n down: ArrowDownIcon,\n up: ArrowUpIcon,\n};\n\nconst withBaseName = makePrefixer(\"saltMetricContent\");\n\nexport const MetricContent = forwardRef<HTMLDivElement, MetricContentProps>(\n function MetricContent(\n {\n IndicatorIconProps,\n IndicatorIconComponent,\n className,\n value,\n subvalue,\n ...restProps\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-metric-content\",\n css: metricContentCss,\n window: targetWindow,\n });\n\n const {\n direction,\n showIndicator,\n indicatorPosition,\n size = \"medium\",\n valueId,\n titleId,\n subtitleId,\n } = useMetricContext();\n\n const iconSize = size === \"large\" ? 2 : 1;\n\n const valueComponentMap = {\n small: Display3,\n medium: Display2,\n large: Display1,\n };\n const ValueComponent = valueComponentMap[size];\n\n const iconProps = {\n \"aria-label\": direction,\n className: withBaseName(\"indicator\"),\n name: direction ? `movement-${direction}` : \"\",\n size: iconSize,\n ...IndicatorIconProps,\n };\n\n const IconComponent =\n IndicatorIconComponent ??\n (direction ? iconComponentMap[direction] : undefined);\n\n const icon =\n showIndicator && IconComponent ? <IconComponent {...iconProps} /> : null;\n\n return (\n <div\n {...restProps}\n className={clsx(withBaseName(), className)}\n role=\"presentation\"\n aria-labelledby={`${titleId || \"\"} ${subtitleId || \"\"}`}\n ref={ref}\n >\n <div className={withBaseName(\"value-container\")}>\n {indicatorPosition === \"start\" && icon}\n <ValueComponent\n data-testid=\"metric-value\"\n id={valueId}\n className={withBaseName(\"value\")}\n >\n {value}\n </ValueComponent>\n {indicatorPosition === \"end\" && icon}\n </div>\n {subvalue && (\n <Text\n className={withBaseName(\"subvalue\")}\n data-testid=\"metric-subvalue\"\n >\n {subvalue}\n </Text>\n )}\n </div>\n );\n },\n);\n"],"names":["ArrowDownIcon","ArrowUpIcon","makePrefixer","forwardRef","MetricContent","useWindow","useComponentCssInjection","metricContentCss","useMetricContext","Display3","Display2","Display1","jsxs","clsx","jsx","Text"],"mappings":";;;;;;;;;;;;AAuCA,MAAM,gBAAmB,GAAA;AAAA,EACvB,IAAM,EAAAA,mBAAA;AAAA,EACN,EAAI,EAAAC;AACN,CAAA;AAEA,MAAM,YAAA,GAAeC,kBAAa,mBAAmB,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cACP,CAAA;AAAA,IACE,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,IAAO,GAAA,QAAA;AAAA,MACP,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,QACEC,8BAAiB,EAAA;AAErB,IAAM,MAAA,QAAA,GAAW,IAAS,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA;AAExC,IAAA,MAAM,iBAAoB,GAAA;AAAA,MACxB,KAAO,EAAAC,aAAA;AAAA,MACP,MAAQ,EAAAC,aAAA;AAAA,MACR,KAAO,EAAAC;AAAA,KACT;AACA,IAAM,MAAA,cAAA,GAAiB,kBAAkB,IAAI,CAAA;AAE7C,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB,YAAc,EAAA,SAAA;AAAA,MACd,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,MACnC,IAAM,EAAA,SAAA,GAAY,CAAY,SAAA,EAAA,SAAS,CAAK,CAAA,GAAA,EAAA;AAAA,MAC5C,IAAM,EAAA,QAAA;AAAA,MACN,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,aACJ,GAAA,sBAAA,KACC,SAAY,GAAA,gBAAA,CAAiB,SAAS,CAAI,GAAA,MAAA,CAAA;AAE7C,IAAA,MAAM,OACJ,aAAiB,IAAA,aAAA,kCAAiB,aAAe,EAAA,EAAA,GAAG,WAAW,CAAK,GAAA,IAAA;AAEtE,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,SAAA;AAAA,QACJ,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,IAAK,EAAA,cAAA;AAAA,QACL,mBAAiB,CAAG,EAAA,OAAA,IAAW,EAAE,CAAA,CAAA,EAAI,cAAc,EAAE,CAAA,CAAA;AAAA,QACrD,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAD,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,iBAAiB,CAC3C,EAAA,QAAA,EAAA;AAAA,YAAA,iBAAA,KAAsB,OAAW,IAAA,IAAA;AAAA,4BAClCE,cAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,aAAY,EAAA,cAAA;AAAA,gBACZ,EAAI,EAAA,OAAA;AAAA,gBACJ,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,gBAE9B,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YACC,sBAAsB,KAAS,IAAA;AAAA,WAClC,EAAA,CAAA;AAAA,UACC,QACC,oBAAAA,cAAA;AAAA,YAACC,SAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,cAClC,aAAY,EAAA,iBAAA;AAAA,cAEX,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA;AAGN;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Styles applied to number container */\n.saltNumberInput {\n --numberInput-border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--numberInput-borderColor);\n --numberInput-borderColor: var(--salt-editable-borderColor);\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-outlineColor: var(--salt-focused-outlineColor);\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n --numberInput-outline: none;\n\n align-items: center;\n background: var(--numberInput-background);\n border-radius: var(--salt-palette-corner-weak, 0);\n box-sizing: border-box;\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n gap: var(--salt-spacing-50);\n height: var(--salt-size-base);\n min-height: var(--salt-size-base);\n min-width: 4em;\n overflow: hidden;\n outline: var(--numberInput-outline);\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-50);\n padding-top: var(--salt-spacing-50);\n padding-bottom: var(--salt-spacing-50);\n position: relative;\n width: 100%;\n}\n\n.saltNumberInput:hover {\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-borderColor: var(--salt-editable-borderColor-hover);\n\n background: var(--numberInput-background-hover);\n cursor: var(--salt-cursor-text);\n}\n\n.saltNumberInput:active {\n --numberInput-borderColor: var(--salt-editable-borderColor-active);\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-borderWidth: var(--salt-size-fixed-200);\n\n background: var(--numberInput-background-active);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltNumberInput-primary {\n --numberInput-background: var(--salt-editable-primary-background);\n --numberInput-background-active: var(--salt-editable-primary-background-active);\n --numberInput-background-hover: var(--salt-editable-primary-background-hover);\n --numberInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --numberInput-background-readonly: var(--salt-editable-primary-background-readonly);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltNumberInput-secondary {\n --numberInput-background: var(--salt-editable-secondary-background);\n --numberInput-background-active: var(--salt-editable-secondary-background-active);\n --numberInput-background-hover: var(--salt-editable-secondary-background-active);\n --numberInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --numberInput-background-readonly: var(--salt-editable-secondary-background-readonly);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltNumberInput-error,\n.saltNumberInput-error:hover {\n --numberInput-background: var(--salt-status-error-background);\n --numberInput-background-active: var(--salt-status-error-background);\n --numberInput-background-hover: var(--salt-status-error-background);\n --numberInput-borderColor: var(--salt-status-error-borderColor);\n --numberInput-outlineColor: var(--salt-status-error-borderColor);\n --numberInput-background-readonly: var(--salt-status-error-background);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltNumberInput-warning,\n.saltNumberInput-warning:hover {\n --numberInput-background: var(--salt-status-warning-background);\n --numberInput-background-active: var(--salt-status-warning-background);\n --numberInput-background-hover: var(--salt-status-warning-background);\n --numberInput-borderColor: var(--salt-status-warning-borderColor);\n --numberInput-outlineColor: var(--salt-status-warning-borderColor);\n --numberInput-background-readonly: var(--salt-status-warning-background);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltNumberInput-success,\n.saltNumberInput-success:hover {\n --numberInput-background: var(--salt-status-success-background);\n --numberInput-background-active: var(--salt-status-success-background);\n --numberInput-background-hover: var(--salt-status-success-background);\n --numberInput-borderColor: var(--salt-status-success-borderColor);\n --numberInput-outlineColor: var(--salt-status-success-borderColor);\n --numberInput-background-readonly: var(--salt-status-success-background);\n}\n\n/* Style applied to inner input component */\n.saltNumberInput-input {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: inherit;\n display: block;\n flex: 1;\n font: inherit;\n letter-spacing: var(--salt-text-letterSpacing);\n line-height: var(--salt-text-lineHeight);\n margin: 0;\n min-width: 0;\n padding: 0;\n text-align: var(--numberInput-textAlign);\n width: 100%;\n}\n\n.saltNumberInput-input:focus {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltNumberInput-input::selection {\n background: var(--salt-content-foreground-highlight);\n}\n\n/* Style applied to placeholder text */\n.saltNumberInput-input::placeholder {\n color: var(--salt-content-secondary-foreground);\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Styling when focused */\n.saltNumberInput-focused {\n --numberInput-borderColor: var(--numberInput-outlineColor);\n --numberInput-borderWidth: var(--salt-size-fixed-200);\n\n outline: var(--saltNumberInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--numberInput-outlineColor));\n}\n\n/* Style applied if `bordered={true}` */\n.saltNumberInput-bordered {\n --numberInput-border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--numberInput-borderColor);\n --numberInput-borderWidth: 0;\n\n border: var(--numberInput-border);\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltNumberInput-bordered.saltNumberInput-focused,\n.saltNumberInput-bordered:active {\n --numberInput-borderWidth: var(--salt-size-fixed-200);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltNumberInput-bordered.saltNumberInput-readOnly,\n.saltNumberInput-bordered.saltNumberInput-disabled:hover {\n --numberInput-borderWidth: 0;\n}\n\n/* Styling when focused and hovered when `bordered={true}` */\n.saltNumberInput-bordered.saltNumberInput-focused:hover {\n --numberInput-borderColor: var(--salt-editable-borderColor-active);\n}\n\n/* Style applied if `readOnly={true}` */\n.saltNumberInput-readOnly,\n.saltNumberInput-bordered.saltNumberInput-readOnly {\n --numberInput-borderColor: var(--salt-editable-borderColor-readonly);\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n\n background: var(--numberInput-background-readonly);\n cursor: var(--salt-cursor-readonly);\n}\n\n/* Styling when focused if `disabled={true}` */\n.saltNumberInput-focused.saltNumberInput-disabled {\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n outline: none;\n}\n\n/* Styling when focused if `readOnly={true}` */\n.saltNumberInput-focused.saltNumberInput-readOnly {\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n}\n\n.saltNumberInput:hover.saltNumberInput-readOnly {\n --numberInput-borderColor: var(--salt-editable-borderColor-readonly);\n}\n\n/* Style applied to selected input if `disabled={true}` */\n.saltNumberInput-disabled .saltNumberInput-input::selection {\n background: none;\n}\n\n/* Style applied to input if `disabled={true}` */\n.saltNumberInput-disabled,\n.saltNumberInput-disabled:hover,\n.saltNumberInput-disabled:active {\n --numberInput-borderColor: var(--salt-editable-borderColor-disabled);\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n\n background: var(--numberInput-background-disabled);\n cursor: var(--salt-cursor-disabled);\n color: var(--saltNumberInput-color-disabled, var(--salt-content-primary-foreground-disabled));\n}\n\n/* Style applied to start adornments */\n.saltNumberInput-startAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-right: var(--salt-spacing-100);\n column-gap: var(--salt-spacing-100);\n}\n\n/* Style applied to end adornments */\n.saltNumberInput-endAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-left: var(--salt-spacing-100);\n column-gap: var(--salt-spacing-100);\n}\n\n.saltNumberInput-startAdornmentContainer {\n margin-left: calc(var(--salt-spacing-50) * -1);\n}\n\n.saltNumberInput-startAdornmentContainer > .saltButton,\n.saltNumberInput-endAdornmentContainer > .saltButton {\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--button-borderWidth));\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-borderRadius: var(--salt-palette-corner-weaker);\n}\n\n.saltNumberInput-inputTextAlignLeft {\n --numberInput-textAlign: left;\n}\n\n.saltNumberInput-inputTextAlignCenter {\n --numberInput-textAlign: center;\n}\n\n.saltNumberInput-inputTextAlignRight {\n --numberInput-textAlign: right;\n}\n\n/* --- Buttons --- */\n\n/* Styles applied to number buttons container */\n.saltNumberInput-buttonContainer {\n --numberInput-buttonGap: var(--salt-spacing-fixed-200);\n display: flex;\n flex-direction: column;\n gap: var(--numberInput-buttonGap);\n justify-content: center;\n}\n\n.saltNumberInput-hiddenButtons .saltNumberInput-buttonContainer {\n display: none;\n}\n\n/* Styles applied to number buttons */\n.saltNumberInput-numberButton {\n --saltButton-height: calc((var(--salt-size-base) - (var(--salt-spacing-50) * 2) - var(--salt-size-fixed-200)) / 2);\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--button-borderWidth));\n}\n\n.saltNumberInput-numberButtonIncrement {\n --saltButton-borderRadius: var(--salt-palette-corner-weaker, 0) var(--salt-palette-corner-weaker, 0) 0 0;\n}\n.saltNumberInput-numberButtonDecrement {\n --saltButton-borderRadius: 0 0 var(--salt-palette-corner-weaker, 0) var(--salt-palette-corner-weaker, 0);\n}\n\n.saltNumberInput-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--numberInput-borderColor);\n}\n\n.saltNumberInput-focused .saltNumberInput-activationIndicator {\n border-bottom: var(--salt-size-fixed-200) var(--salt-borderStyle-solid) var(--salt-editable-borderColor-active);\n}\n\n.saltNumberInput-bordered.saltNumberInput-focused .saltNumberInput-activationIndicator {\n /* Activation indicator width minus the border from the number input. */\n border-bottom-width: var(--salt-size-fixed-100);\n}\n\n.saltNumberInput-bordered .saltNumberInput-activationIndicator,\n.saltNumberInput-readOnly.saltNumberInput-focused .saltNumberInput-activationIndicator {\n border-bottom-width: 0;\n}\n";
3
+ var css_248z = "/* Styles applied to number container */\n.saltNumberInput {\n --numberInput-border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--numberInput-borderColor);\n --numberInput-borderColor: var(--salt-editable-borderColor);\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-outlineColor: var(--salt-focused-outlineColor);\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n --numberInput-outline: none;\n\n align-items: center;\n background: var(--numberInput-background);\n border-radius: var(--salt-palette-corner-weak, 0);\n box-sizing: border-box;\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n gap: var(--salt-spacing-50);\n height: var(--salt-size-base);\n min-height: var(--salt-size-base);\n min-width: 4em;\n overflow: hidden;\n outline: var(--numberInput-outline);\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-50);\n padding-top: var(--salt-spacing-50);\n padding-bottom: var(--salt-spacing-50);\n position: relative;\n width: 100%;\n}\n\n.saltNumberInput:hover {\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-borderColor: var(--salt-editable-borderColor-hover);\n\n background: var(--numberInput-background-hover);\n cursor: var(--salt-cursor-text);\n}\n\n.saltNumberInput:active {\n --numberInput-borderColor: var(--salt-editable-borderColor-active);\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-borderWidth: var(--salt-size-fixed-200);\n\n background: var(--numberInput-background-active);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltNumberInput-primary {\n --numberInput-background: var(--salt-editable-primary-background);\n --numberInput-background-active: var(--salt-editable-primary-background-active);\n --numberInput-background-hover: var(--salt-editable-primary-background-hover);\n --numberInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --numberInput-background-readonly: var(--salt-editable-primary-background-readonly);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltNumberInput-secondary {\n --numberInput-background: var(--salt-editable-secondary-background);\n --numberInput-background-active: var(--salt-editable-secondary-background-active);\n --numberInput-background-hover: var(--salt-editable-secondary-background-active);\n --numberInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --numberInput-background-readonly: var(--salt-editable-secondary-background-readonly);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltNumberInput-error,\n.saltNumberInput-error:hover {\n --numberInput-background: var(--salt-status-error-background);\n --numberInput-background-active: var(--salt-status-error-background);\n --numberInput-background-hover: var(--salt-status-error-background);\n --numberInput-borderColor: var(--salt-status-error-borderColor);\n --numberInput-outlineColor: var(--salt-status-error-borderColor);\n --numberInput-background-readonly: var(--salt-status-error-background);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltNumberInput-warning,\n.saltNumberInput-warning:hover {\n --numberInput-background: var(--salt-status-warning-background);\n --numberInput-background-active: var(--salt-status-warning-background);\n --numberInput-background-hover: var(--salt-status-warning-background);\n --numberInput-borderColor: var(--salt-status-warning-borderColor);\n --numberInput-outlineColor: var(--salt-status-warning-borderColor);\n --numberInput-background-readonly: var(--salt-status-warning-background);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltNumberInput-success,\n.saltNumberInput-success:hover {\n --numberInput-background: var(--salt-status-success-background);\n --numberInput-background-active: var(--salt-status-success-background);\n --numberInput-background-hover: var(--salt-status-success-background);\n --numberInput-borderColor: var(--salt-status-success-borderColor);\n --numberInput-outlineColor: var(--salt-status-success-borderColor);\n --numberInput-background-readonly: var(--salt-status-success-background);\n}\n\n/* Style applied to inner input component */\n.saltNumberInput-input {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: inherit;\n display: block;\n flex: 1;\n font: inherit;\n letter-spacing: var(--salt-text-letterSpacing);\n line-height: var(--salt-text-lineHeight);\n margin: 0;\n min-width: 0;\n padding: 0;\n text-align: var(--numberInput-textAlign);\n width: 100%;\n}\n\n.saltNumberInput-input:focus {\n outline: none;\n}\n\n/* Style applied to placeholder text */\n.saltNumberInput-input::placeholder {\n color: var(--salt-content-secondary-foreground);\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Styling when focused */\n.saltNumberInput-focused {\n --numberInput-borderColor: var(--numberInput-outlineColor);\n --numberInput-borderWidth: var(--salt-size-fixed-200);\n\n outline: var(--saltNumberInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--numberInput-outlineColor));\n}\n\n/* Style applied if `bordered={true}` */\n.saltNumberInput-bordered {\n --numberInput-border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--numberInput-borderColor);\n --numberInput-borderWidth: 0;\n\n border: var(--numberInput-border);\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltNumberInput-bordered.saltNumberInput-focused,\n.saltNumberInput-bordered:active {\n --numberInput-borderWidth: var(--salt-size-fixed-200);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltNumberInput-bordered.saltNumberInput-readOnly,\n.saltNumberInput-bordered.saltNumberInput-disabled:hover {\n --numberInput-borderWidth: 0;\n}\n\n/* Styling when focused and hovered when `bordered={true}` */\n.saltNumberInput-bordered.saltNumberInput-focused:hover {\n --numberInput-borderColor: var(--salt-editable-borderColor-active);\n}\n\n/* Style applied if `readOnly={true}` */\n.saltNumberInput-readOnly,\n.saltNumberInput-bordered.saltNumberInput-readOnly {\n --numberInput-borderColor: var(--salt-editable-borderColor-readonly);\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n\n background: var(--numberInput-background-readonly);\n cursor: var(--salt-cursor-readonly);\n}\n\n/* Styling when focused if `disabled={true}` */\n.saltNumberInput-focused.saltNumberInput-disabled {\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n outline: none;\n}\n\n/* Styling when focused if `readOnly={true}` */\n.saltNumberInput-focused.saltNumberInput-readOnly {\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n}\n\n.saltNumberInput:hover.saltNumberInput-readOnly {\n --numberInput-borderColor: var(--salt-editable-borderColor-readonly);\n}\n\n/* Style applied to selected input if `disabled={true}` */\n.saltNumberInput-disabled .saltNumberInput-input::selection {\n background: none;\n}\n\n/* Style applied to input if `disabled={true}` */\n.saltNumberInput-disabled,\n.saltNumberInput-disabled:hover,\n.saltNumberInput-disabled:active {\n --numberInput-borderColor: var(--salt-editable-borderColor-disabled);\n --numberInput-borderStyle: var(--salt-borderStyle-solid);\n --numberInput-borderWidth: var(--salt-size-fixed-100);\n\n background: var(--numberInput-background-disabled);\n cursor: var(--salt-cursor-disabled);\n color: var(--saltNumberInput-color-disabled, var(--salt-content-primary-foreground-disabled));\n}\n\n/* Style applied to start adornments */\n.saltNumberInput-startAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-right: var(--salt-spacing-100);\n column-gap: var(--salt-spacing-100);\n}\n\n/* Style applied to end adornments */\n.saltNumberInput-endAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-left: var(--salt-spacing-100);\n column-gap: var(--salt-spacing-100);\n}\n\n.saltNumberInput-startAdornmentContainer {\n margin-left: calc(var(--salt-spacing-50) * -1);\n}\n\n.saltNumberInput-startAdornmentContainer > .saltButton,\n.saltNumberInput-endAdornmentContainer > .saltButton {\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--button-borderWidth));\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-borderRadius: var(--salt-palette-corner-weaker);\n}\n\n.saltNumberInput-inputTextAlignLeft {\n --numberInput-textAlign: left;\n}\n\n.saltNumberInput-inputTextAlignCenter {\n --numberInput-textAlign: center;\n}\n\n.saltNumberInput-inputTextAlignRight {\n --numberInput-textAlign: right;\n}\n\n/* --- Buttons --- */\n\n/* Styles applied to number buttons container */\n.saltNumberInput-buttonContainer {\n --numberInput-buttonGap: var(--salt-spacing-fixed-200);\n display: flex;\n flex-direction: column;\n gap: var(--numberInput-buttonGap);\n justify-content: center;\n}\n\n.saltNumberInput-hiddenButtons .saltNumberInput-buttonContainer {\n display: none;\n}\n\n/* Styles applied to number buttons */\n.saltNumberInput-numberButton {\n --saltButton-height: calc((var(--salt-size-base) - (var(--salt-spacing-50) * 2) - var(--salt-size-fixed-200)) / 2);\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--button-borderWidth));\n}\n\n.saltNumberInput-numberButtonIncrement {\n --saltButton-borderRadius: var(--salt-palette-corner-weaker, 0) var(--salt-palette-corner-weaker, 0) 0 0;\n}\n.saltNumberInput-numberButtonDecrement {\n --saltButton-borderRadius: 0 0 var(--salt-palette-corner-weaker, 0) var(--salt-palette-corner-weaker, 0);\n}\n\n.saltNumberInput-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--numberInput-borderColor);\n}\n\n.saltNumberInput-focused .saltNumberInput-activationIndicator {\n border-bottom: var(--salt-size-fixed-200) var(--salt-borderStyle-solid) var(--salt-editable-borderColor-active);\n}\n\n.saltNumberInput-bordered.saltNumberInput-focused .saltNumberInput-activationIndicator {\n /* Activation indicator width minus the border from the number input. */\n border-bottom-width: var(--salt-size-fixed-100);\n}\n\n.saltNumberInput-bordered .saltNumberInput-activationIndicator,\n.saltNumberInput-readOnly.saltNumberInput-focused .saltNumberInput-activationIndicator {\n border-bottom-width: 0;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=NumberInput.css.js.map
@@ -27,7 +27,7 @@ const sanitizeInput = (value) => {
27
27
  let sanitizedInput = value.replace(/[^0-9.+-]/g, "");
28
28
  sanitizedInput = sanitizedInput.replace(
29
29
  /^([+-]?)(.*)$/,
30
- (match, sign, rest) => {
30
+ (_match, sign, rest) => {
31
31
  return sign + rest.replace(/[+-]/g, "");
32
32
  }
33
33
  );
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../src/number-input/internal/utils.ts"],"sourcesContent":["// The input should only accept numbers, decimal points, and plus/minus symbols\nexport const isAllowedNonNumeric = (inputCharacter: number | string) => {\n if (typeof inputCharacter === \"number\") return;\n return (\n (\"-+\".includes(inputCharacter) && inputCharacter.length === 1) ||\n inputCharacter === \"\"\n );\n};\n\nexport const toFloat = (inputValue: number | string) => {\n // Plus, minus, and empty characters are treated as 0\n if (isAllowedNonNumeric(inputValue)) return 0;\n return Number.parseFloat(inputValue.toString());\n};\n\nexport const isValidNumber = (num: string | number) => {\n if (typeof num === \"number\") {\n return !Number.isNaN(num);\n }\n\n // Empty\n if (!num) {\n return false;\n }\n\n return (\n // Normal type: 11.28\n /^\\s*-?\\d+(\\.\\d+)?\\s*$/.test(num) ||\n // Pre-number: 1.\n /^\\s*-?\\d+\\.\\s*$/.test(num) ||\n // Post-number: .1\n /^\\s*-?\\.\\d+\\s*$/.test(num)\n );\n};\n\nexport const sanitizeInput = (value: string | number) => {\n if (typeof value === \"number\") return value;\n let sanitizedInput = value.replace(/[^0-9.+-]/g, \"\");\n sanitizedInput = sanitizedInput.replace(\n /^([+-]?)(.*)$/,\n (match, sign, rest) => {\n return sign + rest.replace(/[+-]/g, \"\");\n },\n );\n const parts = sanitizedInput.split(\".\");\n if (parts.length > 2) {\n sanitizedInput = `${parts[0]}.${parts.slice(1).join(\"\")}`;\n }\n\n return sanitizedInput;\n};\n\nexport const isOutOfRange = (\n value: number | string | undefined,\n min: number,\n max: number,\n) => {\n if (value === undefined) return true;\n const floatValue = toFloat(value);\n return floatValue > max || floatValue < min;\n};\n\nexport const clampToRange = (min: number, max: number, value: number) => {\n if (value < min) return min;\n if (value > max) return max;\n return value;\n};\n\nconst isExponential = (number: string | number) => {\n const str = String(number);\n\n return !Number.isNaN(Number(str)) && str.includes(\"e\");\n};\n\nexport const getNumberPrecision = (number: string | number) => {\n const numStr: string = String(sanitizeInput(number));\n\n if (isExponential(number)) {\n let precision = Number(numStr.slice(numStr.indexOf(\"e-\") + 2));\n\n const decimalMatch = numStr.match(/\\.(\\d+)/);\n if (decimalMatch?.[1]) {\n precision += decimalMatch[1].length;\n }\n return precision;\n }\n\n return numStr.includes(\".\") && isValidNumber(numStr)\n ? numStr.length - numStr.indexOf(\".\") - 1\n : 0;\n};\n\nexport const isEmpty = (value: number | string) => {\n return value === \"\";\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../src/number-input/internal/utils.ts"],"sourcesContent":["// The input should only accept numbers, decimal points, and plus/minus symbols\nexport const isAllowedNonNumeric = (inputCharacter: number | string) => {\n if (typeof inputCharacter === \"number\") return;\n return (\n (\"-+\".includes(inputCharacter) && inputCharacter.length === 1) ||\n inputCharacter === \"\"\n );\n};\n\nexport const toFloat = (inputValue: number | string) => {\n // Plus, minus, and empty characters are treated as 0\n if (isAllowedNonNumeric(inputValue)) return 0;\n return Number.parseFloat(inputValue.toString());\n};\n\nexport const isValidNumber = (num: string | number) => {\n if (typeof num === \"number\") {\n return !Number.isNaN(num);\n }\n\n // Empty\n if (!num) {\n return false;\n }\n\n return (\n // Normal type: 11.28\n /^\\s*-?\\d+(\\.\\d+)?\\s*$/.test(num) ||\n // Pre-number: 1.\n /^\\s*-?\\d+\\.\\s*$/.test(num) ||\n // Post-number: .1\n /^\\s*-?\\.\\d+\\s*$/.test(num)\n );\n};\n\nexport const sanitizeInput = (value: string | number) => {\n if (typeof value === \"number\") return value;\n let sanitizedInput = value.replace(/[^0-9.+-]/g, \"\");\n sanitizedInput = sanitizedInput.replace(\n /^([+-]?)(.*)$/,\n (_match, sign, rest) => {\n return sign + rest.replace(/[+-]/g, \"\");\n },\n );\n const parts = sanitizedInput.split(\".\");\n if (parts.length > 2) {\n sanitizedInput = `${parts[0]}.${parts.slice(1).join(\"\")}`;\n }\n\n return sanitizedInput;\n};\n\nexport const isOutOfRange = (\n value: number | string | undefined,\n min: number,\n max: number,\n) => {\n if (value === undefined) return true;\n const floatValue = toFloat(value);\n return floatValue > max || floatValue < min;\n};\n\nexport const clampToRange = (min: number, max: number, value: number) => {\n if (value < min) return min;\n if (value > max) return max;\n return value;\n};\n\nconst isExponential = (number: string | number) => {\n const str = String(number);\n\n return !Number.isNaN(Number(str)) && str.includes(\"e\");\n};\n\nexport const getNumberPrecision = (number: string | number) => {\n const numStr: string = String(sanitizeInput(number));\n\n if (isExponential(number)) {\n let precision = Number(numStr.slice(numStr.indexOf(\"e-\") + 2));\n\n const decimalMatch = numStr.match(/\\.(\\d+)/);\n if (decimalMatch?.[1]) {\n precision += decimalMatch[1].length;\n }\n return precision;\n }\n\n return numStr.includes(\".\") && isValidNumber(numStr)\n ? numStr.length - numStr.indexOf(\".\") - 1\n : 0;\n};\n\nexport const isEmpty = (value: number | string) => {\n return value === \"\";\n};\n"],"names":[],"mappings":"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"}
@@ -20,17 +20,17 @@ const withBaseName = core.makePrefixer("saltQueryInput");
20
20
  const QueryInput = react.forwardRef(
21
21
  function QueryInput2(props, externalRef) {
22
22
  const {
23
- disabled,
24
- categories,
25
- selectedItems,
26
- onChange,
27
- defaultSelectedItems,
23
+ disabled: _disabled,
24
+ categories: _categories,
25
+ selectedItems: _selectedItems,
26
+ onChange: _onChange,
27
+ defaultSelectedItems: _defaultSelectedItems,
28
28
  showCategory,
29
- autoClose,
30
- displayedItemCount,
31
- booleanOperator,
32
- onBooleanOperatorChange,
33
- defaultBooleanOperator,
29
+ autoClose: _autoClose,
30
+ displayedItemCount: _displayedItemCount,
31
+ booleanOperator: _booleanOperator,
32
+ onBooleanOperatorChange: _onBooleanOperatorChange,
33
+ defaultBooleanOperator: _defaultBooleanOperator,
34
34
  className,
35
35
  ...restProps
36
36
  } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"QueryInput.js","sources":["../src/query-input/QueryInput.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { QueryInputBody, ValueSelector } from \"./internal\";\nimport queryInputCss from \"./QueryInput.css\";\nimport type { QueryInputCategory, QueryInputItem } from \"./queryInputTypes\";\nimport { type BooleanOperator, useQueryInput } from \"./useQueryInput\";\n\nconst withBaseName = makePrefixer(\"saltQueryInput\");\n\nexport interface QueryInputProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n disabled?: boolean;\n categories: QueryInputCategory[];\n selectedItems?: QueryInputItem[];\n onChange?: (items: QueryInputItem[]) => void;\n defaultSelectedItems?: QueryInputItem[];\n showCategory?: boolean;\n autoClose?: boolean;\n displayedItemCount?: number;\n booleanOperator?: BooleanOperator;\n onBooleanOperatorChange?: (newOperator: BooleanOperator) => void;\n defaultBooleanOperator?: BooleanOperator;\n}\n\nexport const QueryInput = forwardRef<HTMLDivElement, QueryInputProps>(\n function QueryInput(props, externalRef) {\n const {\n disabled,\n categories,\n selectedItems,\n onChange,\n defaultSelectedItems,\n showCategory,\n autoClose,\n displayedItemCount,\n booleanOperator,\n onBooleanOperatorChange,\n defaultBooleanOperator,\n className,\n ...restProps\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-query-input\",\n css: queryInputCss,\n window: targetWindow,\n });\n\n const {\n queryInputProps,\n queryInputBodyRef,\n queryInputBodyProps,\n valueSelectorProps,\n } = useQueryInput(props, externalRef);\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n onBlur={queryInputProps.onBlur}\n onFocus={queryInputProps.onFocus}\n data-testid=\"query-input\"\n {...restProps}\n >\n <QueryInputBody\n ref={queryInputBodyRef}\n {...queryInputBodyProps}\n showCategory={showCategory}\n />\n <ValueSelector {...valueSelectorProps} />\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","QueryInput","useWindow","useComponentCssInjection","queryInputCss","useQueryInput","jsxs","clsx","jsx","QueryInputBody","ValueSelector"],"mappings":";;;;;;;;;;;;;;;;;;AAUA,MAAM,YAAA,GAAeA,kBAAa,gBAAgB,CAAA;AAiB3C,MAAM,UAAa,GAAAC,gBAAA;AAAA,EACxB,SAASC,WAAW,CAAA,KAAA,EAAO,WAAa,EAAA;AACtC,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,eAAA;AAAA,MACA,uBAAA;AAAA,MACA,sBAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,YAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,eAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACF,GAAIC,2BAAc,CAAA,KAAA,EAAO,WAAW,CAAA;AAEpC,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,QAAQ,eAAgB,CAAA,MAAA;AAAA,QACxB,SAAS,eAAgB,CAAA,OAAA;AAAA,QACzB,aAAY,EAAA,aAAA;AAAA,QACX,GAAG,SAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAACC,6BAAA;AAAA,YAAA;AAAA,cACC,GAAK,EAAA,iBAAA;AAAA,cACJ,GAAG,mBAAA;AAAA,cACJ;AAAA;AAAA,WACF;AAAA,0BACAD,cAAA,CAACE,2BAAe,EAAA,EAAA,GAAG,kBAAoB,EAAA;AAAA;AAAA;AAAA,KACzC;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"QueryInput.js","sources":["../src/query-input/QueryInput.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { QueryInputBody, ValueSelector } from \"./internal\";\nimport queryInputCss from \"./QueryInput.css\";\nimport type { QueryInputCategory, QueryInputItem } from \"./queryInputTypes\";\nimport { type BooleanOperator, useQueryInput } from \"./useQueryInput\";\n\nconst withBaseName = makePrefixer(\"saltQueryInput\");\n\nexport interface QueryInputProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n disabled?: boolean;\n categories: QueryInputCategory[];\n selectedItems?: QueryInputItem[];\n onChange?: (items: QueryInputItem[]) => void;\n defaultSelectedItems?: QueryInputItem[];\n showCategory?: boolean;\n autoClose?: boolean;\n displayedItemCount?: number;\n booleanOperator?: BooleanOperator;\n onBooleanOperatorChange?: (newOperator: BooleanOperator) => void;\n defaultBooleanOperator?: BooleanOperator;\n}\n\nexport const QueryInput = forwardRef<HTMLDivElement, QueryInputProps>(\n function QueryInput(props, externalRef) {\n const {\n disabled: _disabled,\n categories: _categories,\n selectedItems: _selectedItems,\n onChange: _onChange,\n defaultSelectedItems: _defaultSelectedItems,\n showCategory,\n autoClose: _autoClose,\n displayedItemCount: _displayedItemCount,\n booleanOperator: _booleanOperator,\n onBooleanOperatorChange: _onBooleanOperatorChange,\n defaultBooleanOperator: _defaultBooleanOperator,\n className,\n ...restProps\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-query-input\",\n css: queryInputCss,\n window: targetWindow,\n });\n\n const {\n queryInputProps,\n queryInputBodyRef,\n queryInputBodyProps,\n valueSelectorProps,\n } = useQueryInput(props, externalRef);\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n onBlur={queryInputProps.onBlur}\n onFocus={queryInputProps.onFocus}\n data-testid=\"query-input\"\n {...restProps}\n >\n <QueryInputBody\n ref={queryInputBodyRef}\n {...queryInputBodyProps}\n showCategory={showCategory}\n />\n <ValueSelector {...valueSelectorProps} />\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","QueryInput","useWindow","useComponentCssInjection","queryInputCss","useQueryInput","jsxs","clsx","jsx","QueryInputBody","ValueSelector"],"mappings":";;;;;;;;;;;;;;;;;;AAUA,MAAM,YAAA,GAAeA,kBAAa,gBAAgB,CAAA;AAiB3C,MAAM,UAAa,GAAAC,gBAAA;AAAA,EACxB,SAASC,WAAW,CAAA,KAAA,EAAO,WAAa,EAAA;AACtC,IAAM,MAAA;AAAA,MACJ,QAAU,EAAA,SAAA;AAAA,MACV,UAAY,EAAA,WAAA;AAAA,MACZ,aAAe,EAAA,cAAA;AAAA,MACf,QAAU,EAAA,SAAA;AAAA,MACV,oBAAsB,EAAA,qBAAA;AAAA,MACtB,YAAA;AAAA,MACA,SAAW,EAAA,UAAA;AAAA,MACX,kBAAoB,EAAA,mBAAA;AAAA,MACpB,eAAiB,EAAA,gBAAA;AAAA,MACjB,uBAAyB,EAAA,wBAAA;AAAA,MACzB,sBAAwB,EAAA,uBAAA;AAAA,MACxB,SAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,YAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,eAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACF,GAAIC,2BAAc,CAAA,KAAA,EAAO,WAAW,CAAA;AAEpC,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,QAAQ,eAAgB,CAAA,MAAA;AAAA,QACxB,SAAS,eAAgB,CAAA,OAAA;AAAA,QACzB,aAAY,EAAA,aAAA;AAAA,QACX,GAAG,SAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAACC,6BAAA;AAAA,YAAA;AAAA,cACC,GAAK,EAAA,iBAAA;AAAA,cACJ,GAAG,mBAAA;AAAA,cACJ;AAAA;AAAA,WACF;AAAA,0BACAD,cAAA,CAACE,2BAAe,EAAA,EAAA,GAAG,kBAAoB,EAAA;AAAA;AAAA;AAAA,KACzC;AAAA;AAGN;;;;"}
@@ -35,7 +35,7 @@ const QueryInputBody = react.forwardRef(
35
35
  }
36
36
  return (item) => item.value;
37
37
  }, [showCategory]);
38
- const stringToItem = (selectedItems2, value) => {
38
+ const stringToItem = (_selectedItems, value) => {
39
39
  return {
40
40
  category: null,
41
41
  value
@@ -1 +1 @@
1
- {"version":3,"file":"QueryInputBody.js","sources":["../src/query-input/internal/QueryInputBody.tsx"],"sourcesContent":["import { makePrefixer, ToggleButton, ToggleButtonGroup } from \"@salt-ds/core\";\nimport { FilterIcon } from \"@salt-ds/icons\";\nimport {\n type ChangeEventHandler,\n type FocusEventHandler,\n forwardRef,\n type KeyboardEventHandler,\n type Ref,\n type SyntheticEvent,\n useMemo,\n} from \"react\";\n\nimport {\n type ChangeHandler,\n type StringToItem,\n TokenizedInput,\n} from \"../../tokenized-input\";\nimport type { QueryInputItem } from \"../queryInputTypes\";\nimport type { BooleanOperator } from \"../useQueryInput\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputBody\");\n\nexport interface QueryInputBodyProps {\n inputRef: Ref<HTMLInputElement>;\n disabled?: boolean;\n showCategory?: boolean;\n selectedItems: QueryInputItem[];\n onBlur: FocusEventHandler<HTMLInputElement>;\n onFocus: FocusEventHandler<HTMLInputElement>;\n onInputFocus: FocusEventHandler<HTMLInputElement>;\n onInputBlur: FocusEventHandler<HTMLInputElement>;\n onInputClick: (event: SyntheticEvent) => void;\n onInputClear: () => void;\n inputValue?: string;\n onInputChange: ChangeEventHandler<HTMLInputElement>;\n isFocused?: boolean;\n onSelectedItemsChange: ChangeHandler<QueryInputItem>;\n onKeyDown: KeyboardEventHandler<HTMLInputElement | HTMLButtonElement>;\n booleanOperator: BooleanOperator;\n onBooleanOperatorChange: (newBooleanOperator: BooleanOperator) => void;\n}\n\nexport const QueryInputBody = forwardRef<HTMLDivElement, QueryInputBodyProps>(\n function QueryInputBody(props, ref) {\n const {\n inputRef,\n disabled,\n selectedItems,\n onInputFocus,\n onInputBlur,\n showCategory,\n inputValue,\n onInputChange,\n isFocused,\n onInputClear,\n onSelectedItemsChange,\n onKeyDown,\n onInputClick,\n booleanOperator,\n onBooleanOperatorChange,\n } = props;\n\n const itemToString = useMemo(() => {\n if (showCategory) {\n return (item: QueryInputItem) => [item.category, item.value].join(\": \");\n }\n return (item: QueryInputItem) => item.value;\n }, [showCategory]);\n\n const stringToItem: StringToItem<QueryInputItem> = (\n selectedItems,\n value,\n ) => {\n return {\n category: null,\n value,\n };\n };\n\n const onChange = (event: SyntheticEvent<HTMLButtonElement>) => {\n const newBooleanOperator = event.currentTarget.value as BooleanOperator;\n onBooleanOperatorChange(newBooleanOperator);\n };\n\n return (\n <div ref={ref} className={withBaseName()}>\n <FilterIcon />\n <TokenizedInput\n inputRef={inputRef}\n disabled={disabled}\n className={withBaseName(\"input\")}\n selectedItems={selectedItems}\n // @ts-ignore\n itemToString={itemToString}\n // @ts-ignore\n stringToItem={stringToItem}\n onInputFocus={onInputFocus}\n onInputBlur={onInputBlur}\n value={inputValue}\n onClick={onInputClick}\n onInputChange={onInputChange}\n expanded={isFocused}\n onClear={onInputClear}\n // @ts-ignore\n onChange={onSelectedItemsChange}\n onKeyDown={onKeyDown}\n />\n <div className={withBaseName(\"separator\")} />\n <ToggleButtonGroup\n className={withBaseName(\"buttonGroup\")}\n data-testid=\"boolean-selector\"\n value={booleanOperator}\n onChange={onChange}\n >\n <ToggleButton value=\"and\">And</ToggleButton>\n <ToggleButton value=\"or\">Or</ToggleButton>\n </ToggleButtonGroup>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","QueryInputBody","useMemo","selectedItems","jsxs","jsx","FilterIcon","TokenizedInput","ToggleButtonGroup","ToggleButton"],"mappings":";;;;;;;;;;;AAoBA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAsB/C,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eAAe,CAAA,KAAA,EAAO,GAAK,EAAA;AAClC,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACE,GAAA,KAAA;AAEJ,IAAM,MAAA,YAAA,GAAeC,cAAQ,MAAM;AACjC,MAAA,IAAI,YAAc,EAAA;AAChB,QAAO,OAAA,CAAC,SAAyB,CAAC,IAAA,CAAK,UAAU,IAAK,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA;AAExE,MAAO,OAAA,CAAC,SAAyB,IAAK,CAAA,KAAA;AAAA,KACxC,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,IAAM,MAAA,YAAA,GAA6C,CACjDC,cAAAA,EACA,KACG,KAAA;AACH,MAAO,OAAA;AAAA,QACL,QAAU,EAAA,IAAA;AAAA,QACV;AAAA,OACF;AAAA,KACF;AAEA,IAAM,MAAA,QAAA,GAAW,CAAC,KAA6C,KAAA;AAC7D,MAAM,MAAA,kBAAA,GAAqB,MAAM,aAAc,CAAA,KAAA;AAC/C,MAAA,uBAAA,CAAwB,kBAAkB,CAAA;AAAA,KAC5C;AAEA,IAAA,uBACGC,eAAA,CAAA,KAAA,EAAA,EAAI,GAAU,EAAA,SAAA,EAAW,cACxB,EAAA,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,gBAAW,EAAA,EAAA,CAAA;AAAA,sBACZD,cAAA;AAAA,QAACE,6BAAA;AAAA,QAAA;AAAA,UACC,QAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,aAAA;AAAA,UAEA,YAAA;AAAA,UAEA,YAAA;AAAA,UACA,YAAA;AAAA,UACA,WAAA;AAAA,UACA,KAAO,EAAA,UAAA;AAAA,UACP,OAAS,EAAA,YAAA;AAAA,UACT,aAAA;AAAA,UACA,QAAU,EAAA,SAAA;AAAA,UACV,OAAS,EAAA,YAAA;AAAA,UAET,QAAU,EAAA,qBAAA;AAAA,UACV;AAAA;AAAA,OACF;AAAA,sBACCF,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,YAAA,CAAa,WAAW,CAAG,EAAA,CAAA;AAAA,sBAC3CD,eAAA;AAAA,QAACI,sBAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,UACrC,aAAY,EAAA,kBAAA;AAAA,UACZ,KAAO,EAAA,eAAA;AAAA,UACP,QAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAACH,cAAA,CAAAI,iBAAA,EAAA,EAAa,KAAM,EAAA,KAAA,EAAM,QAAG,EAAA,KAAA,EAAA,CAAA;AAAA,4BAC5BJ,cAAA,CAAAI,iBAAA,EAAA,EAAa,KAAM,EAAA,IAAA,EAAK,QAAE,EAAA,IAAA,EAAA;AAAA;AAAA;AAAA;AAC7B,KACF,EAAA,CAAA;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"QueryInputBody.js","sources":["../src/query-input/internal/QueryInputBody.tsx"],"sourcesContent":["import { makePrefixer, ToggleButton, ToggleButtonGroup } from \"@salt-ds/core\";\nimport { FilterIcon } from \"@salt-ds/icons\";\nimport {\n type ChangeEventHandler,\n type FocusEventHandler,\n forwardRef,\n type KeyboardEventHandler,\n type Ref,\n type SyntheticEvent,\n useMemo,\n} from \"react\";\n\nimport {\n type ChangeHandler,\n type StringToItem,\n TokenizedInput,\n} from \"../../tokenized-input\";\nimport type { QueryInputItem } from \"../queryInputTypes\";\nimport type { BooleanOperator } from \"../useQueryInput\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputBody\");\n\nexport interface QueryInputBodyProps {\n inputRef: Ref<HTMLInputElement>;\n disabled?: boolean;\n showCategory?: boolean;\n selectedItems: QueryInputItem[];\n onBlur: FocusEventHandler<HTMLInputElement>;\n onFocus: FocusEventHandler<HTMLInputElement>;\n onInputFocus: FocusEventHandler<HTMLInputElement>;\n onInputBlur: FocusEventHandler<HTMLInputElement>;\n onInputClick: (event: SyntheticEvent) => void;\n onInputClear: () => void;\n inputValue?: string;\n onInputChange: ChangeEventHandler<HTMLInputElement>;\n isFocused?: boolean;\n onSelectedItemsChange: ChangeHandler<QueryInputItem>;\n onKeyDown: KeyboardEventHandler<HTMLInputElement | HTMLButtonElement>;\n booleanOperator: BooleanOperator;\n onBooleanOperatorChange: (newBooleanOperator: BooleanOperator) => void;\n}\n\nexport const QueryInputBody = forwardRef<HTMLDivElement, QueryInputBodyProps>(\n function QueryInputBody(props, ref) {\n const {\n inputRef,\n disabled,\n selectedItems,\n onInputFocus,\n onInputBlur,\n showCategory,\n inputValue,\n onInputChange,\n isFocused,\n onInputClear,\n onSelectedItemsChange,\n onKeyDown,\n onInputClick,\n booleanOperator,\n onBooleanOperatorChange,\n } = props;\n\n const itemToString = useMemo(() => {\n if (showCategory) {\n return (item: QueryInputItem) => [item.category, item.value].join(\": \");\n }\n return (item: QueryInputItem) => item.value;\n }, [showCategory]);\n\n const stringToItem: StringToItem<QueryInputItem> = (\n _selectedItems,\n value,\n ) => {\n return {\n category: null,\n value,\n };\n };\n\n const onChange = (event: SyntheticEvent<HTMLButtonElement>) => {\n const newBooleanOperator = event.currentTarget.value as BooleanOperator;\n onBooleanOperatorChange(newBooleanOperator);\n };\n\n return (\n <div ref={ref} className={withBaseName()}>\n <FilterIcon />\n <TokenizedInput\n inputRef={inputRef}\n disabled={disabled}\n className={withBaseName(\"input\")}\n selectedItems={selectedItems}\n // @ts-expect-error\n itemToString={itemToString}\n // @ts-expect-error\n stringToItem={stringToItem}\n onInputFocus={onInputFocus}\n onInputBlur={onInputBlur}\n value={inputValue}\n onClick={onInputClick}\n onInputChange={onInputChange}\n expanded={isFocused}\n onClear={onInputClear}\n // @ts-expect-error\n onChange={onSelectedItemsChange}\n onKeyDown={onKeyDown}\n />\n <div className={withBaseName(\"separator\")} />\n <ToggleButtonGroup\n className={withBaseName(\"buttonGroup\")}\n data-testid=\"boolean-selector\"\n value={booleanOperator}\n onChange={onChange}\n >\n <ToggleButton value=\"and\">And</ToggleButton>\n <ToggleButton value=\"or\">Or</ToggleButton>\n </ToggleButtonGroup>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","QueryInputBody","useMemo","jsxs","jsx","FilterIcon","TokenizedInput","ToggleButtonGroup","ToggleButton"],"mappings":";;;;;;;;;;;AAoBA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAsB/C,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eAAe,CAAA,KAAA,EAAO,GAAK,EAAA;AAClC,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACE,GAAA,KAAA;AAEJ,IAAM,MAAA,YAAA,GAAeC,cAAQ,MAAM;AACjC,MAAA,IAAI,YAAc,EAAA;AAChB,QAAO,OAAA,CAAC,SAAyB,CAAC,IAAA,CAAK,UAAU,IAAK,CAAA,KAAK,CAAE,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA;AAExE,MAAO,OAAA,CAAC,SAAyB,IAAK,CAAA,KAAA;AAAA,KACxC,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,IAAM,MAAA,YAAA,GAA6C,CACjD,cAAA,EACA,KACG,KAAA;AACH,MAAO,OAAA;AAAA,QACL,QAAU,EAAA,IAAA;AAAA,QACV;AAAA,OACF;AAAA,KACF;AAEA,IAAM,MAAA,QAAA,GAAW,CAAC,KAA6C,KAAA;AAC7D,MAAM,MAAA,kBAAA,GAAqB,MAAM,aAAc,CAAA,KAAA;AAC/C,MAAA,uBAAA,CAAwB,kBAAkB,CAAA;AAAA,KAC5C;AAEA,IAAA,uBACGC,eAAA,CAAA,KAAA,EAAA,EAAI,GAAU,EAAA,SAAA,EAAW,cACxB,EAAA,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,gBAAW,EAAA,EAAA,CAAA;AAAA,sBACZD,cAAA;AAAA,QAACE,6BAAA;AAAA,QAAA;AAAA,UACC,QAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,aAAA;AAAA,UAEA,YAAA;AAAA,UAEA,YAAA;AAAA,UACA,YAAA;AAAA,UACA,WAAA;AAAA,UACA,KAAO,EAAA,UAAA;AAAA,UACP,OAAS,EAAA,YAAA;AAAA,UACT,aAAA;AAAA,UACA,QAAU,EAAA,SAAA;AAAA,UACV,OAAS,EAAA,YAAA;AAAA,UAET,QAAU,EAAA,qBAAA;AAAA,UACV;AAAA;AAAA,OACF;AAAA,sBACCF,cAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,YAAA,CAAa,WAAW,CAAG,EAAA,CAAA;AAAA,sBAC3CD,eAAA;AAAA,QAACI,sBAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,UACrC,aAAY,EAAA,kBAAA;AAAA,UACZ,KAAO,EAAA,eAAA;AAAA,UACP,QAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAACH,cAAA,CAAAI,iBAAA,EAAA,EAAa,KAAM,EAAA,KAAA,EAAM,QAAG,EAAA,KAAA,EAAA,CAAA;AAAA,4BAC5BJ,cAAA,CAAAI,iBAAA,EAAA,EAAa,KAAM,EAAA,IAAA,EAAK,QAAE,EAAA,IAAA,EAAA;AAAA;AAAA;AAAA;AAC7B,KACF,EAAA,CAAA;AAAA;AAGN;;;;"}
@@ -36,7 +36,7 @@ function SearchList(props) {
36
36
  window: targetWindow
37
37
  });
38
38
  const onChange = react.useCallback(
39
- (event, items) => {
39
+ (_event, items) => {
40
40
  onChangeProp(items || []);
41
41
  },
42
42
  [onChangeProp]
@@ -1 +1 @@
1
- {"version":3,"file":"SearchList.js","sources":["../src/query-input/internal/SearchList.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { type Dispatch, type SetStateAction, useCallback } from \"react\";\nimport type { SelectionChangeHandler } from \"../../common-hooks\";\nimport { List, ListItem, ListItemGroup } from \"../../list\";\nimport queryInputCss from \"../QueryInput.css\";\nimport type { QueryInputCategory, QueryInputItem } from \"../queryInputTypes\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputSearchList\");\n\nexport interface SearchListProps {\n inputValue?: string;\n selectedItems?: QueryInputItem[];\n onChange: (items: QueryInputItem[]) => void;\n rootWidth: number;\n highlightedIndex?: number;\n visibleCategories: QueryInputCategory[];\n setHighlightedIndex: Dispatch<SetStateAction<number>>;\n}\n\nfunction itemToString(item: QueryInputItem) {\n return [item.category, item.value].join(\": \");\n}\n\nexport function SearchList(props: SearchListProps) {\n const {\n inputValue,\n selectedItems,\n onChange: onChangeProp,\n rootWidth,\n highlightedIndex,\n setHighlightedIndex,\n visibleCategories,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-query-input\",\n css: queryInputCss,\n window: targetWindow,\n });\n\n const onChange: SelectionChangeHandler<QueryInputItem, \"multiple\"> =\n useCallback(\n (event, items) => {\n onChangeProp(items || []);\n },\n [onChangeProp],\n );\n\n return (\n <List\n checkable={false}\n data-testid=\"search-list\"\n highlightedIndex={highlightedIndex}\n itemTextHighlightPattern={inputValue}\n itemToString={itemToString}\n onHighlight={setHighlightedIndex}\n onSelectionChange={onChange}\n selectionStrategy=\"multiple\"\n selected={selectedItems}\n width={rootWidth}\n >\n {visibleCategories.map((inputCategory: QueryInputCategory) => {\n return (\n <ListItemGroup key={inputCategory.name} label={inputCategory.name}>\n {inputCategory.values.map((label) => (\n <ListItem key={label} label={label} />\n ))}\n </ListItemGroup>\n );\n })}\n <ListItem className={withBaseName(\"addKeyword\")}>\n {`Add keyword: \"${inputValue}\"`}\n </ListItem>\n </List>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","queryInputCss","useCallback","jsxs","List","ListItemGroup","ListItem","jsx"],"mappings":";;;;;;;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA;AAY5D,SAAS,aAAa,IAAsB,EAAA;AAC1C,EAAA,OAAO,CAAC,IAAK,CAAA,QAAA,EAAU,KAAK,KAAK,CAAA,CAAE,KAAK,IAAI,CAAA;AAC9C;AAEO,SAAS,WAAW,KAAwB,EAAA;AACjD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAAC,UAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,QACJ,GAAAC,iBAAA;AAAA,IACE,CAAC,OAAO,KAAU,KAAA;AAChB,MAAa,YAAA,CAAA,KAAA,IAAS,EAAE,CAAA;AAAA,KAC1B;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEF,EACE,uBAAAC,eAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,KAAA;AAAA,MACX,aAAY,EAAA,aAAA;AAAA,MACZ,gBAAA;AAAA,MACA,wBAA0B,EAAA,UAAA;AAAA,MAC1B,YAAA;AAAA,MACA,WAAa,EAAA,mBAAA;AAAA,MACb,iBAAmB,EAAA,QAAA;AAAA,MACnB,iBAAkB,EAAA,UAAA;AAAA,MAClB,QAAU,EAAA,aAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MAEN,QAAA,EAAA;AAAA,QAAkB,iBAAA,CAAA,GAAA,CAAI,CAAC,aAAsC,KAAA;AAC5D,UAAA,sCACGC,2BAAuC,EAAA,EAAA,KAAA,EAAO,aAAc,CAAA,IAAA,EAC1D,wBAAc,MAAO,CAAA,GAAA,CAAI,CAAC,KAAA,oCACxBC,iBAAqB,EAAA,EAAA,KAAA,EAAA,EAAP,KAAqB,CACrC,CAAA,EAAA,EAHiB,cAAc,IAIlC,CAAA;AAAA,SAEH,CAAA;AAAA,wBACDC,cAAA,CAACD,qBAAS,SAAW,EAAA,YAAA,CAAa,YAAY,CAC3C,EAAA,QAAA,EAAA,CAAA,cAAA,EAAiB,UAAU,CAC9B,CAAA,CAAA,EAAA;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"SearchList.js","sources":["../src/query-input/internal/SearchList.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { type Dispatch, type SetStateAction, useCallback } from \"react\";\nimport type { SelectionChangeHandler } from \"../../common-hooks\";\nimport { List, ListItem, ListItemGroup } from \"../../list\";\nimport queryInputCss from \"../QueryInput.css\";\nimport type { QueryInputCategory, QueryInputItem } from \"../queryInputTypes\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputSearchList\");\n\nexport interface SearchListProps {\n inputValue?: string;\n selectedItems?: QueryInputItem[];\n onChange: (items: QueryInputItem[]) => void;\n rootWidth: number;\n highlightedIndex?: number;\n visibleCategories: QueryInputCategory[];\n setHighlightedIndex: Dispatch<SetStateAction<number>>;\n}\n\nfunction itemToString(item: QueryInputItem) {\n return [item.category, item.value].join(\": \");\n}\n\nexport function SearchList(props: SearchListProps) {\n const {\n inputValue,\n selectedItems,\n onChange: onChangeProp,\n rootWidth,\n highlightedIndex,\n setHighlightedIndex,\n visibleCategories,\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-query-input\",\n css: queryInputCss,\n window: targetWindow,\n });\n\n const onChange: SelectionChangeHandler<QueryInputItem, \"multiple\"> =\n useCallback(\n (_event, items) => {\n onChangeProp(items || []);\n },\n [onChangeProp],\n );\n\n return (\n <List\n checkable={false}\n data-testid=\"search-list\"\n highlightedIndex={highlightedIndex}\n itemTextHighlightPattern={inputValue}\n itemToString={itemToString}\n onHighlight={setHighlightedIndex}\n onSelectionChange={onChange}\n selectionStrategy=\"multiple\"\n selected={selectedItems}\n width={rootWidth}\n >\n {visibleCategories.map((inputCategory: QueryInputCategory) => {\n return (\n <ListItemGroup key={inputCategory.name} label={inputCategory.name}>\n {inputCategory.values.map((label) => (\n <ListItem key={label} label={label} />\n ))}\n </ListItemGroup>\n );\n })}\n <ListItem className={withBaseName(\"addKeyword\")}>\n {`Add keyword: \"${inputValue}\"`}\n </ListItem>\n </List>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","queryInputCss","useCallback","jsxs","List","ListItemGroup","ListItem","jsx"],"mappings":";;;;;;;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA;AAY5D,SAAS,aAAa,IAAsB,EAAA;AAC1C,EAAA,OAAO,CAAC,IAAK,CAAA,QAAA,EAAU,KAAK,KAAK,CAAA,CAAE,KAAK,IAAI,CAAA;AAC9C;AAEO,SAAS,WAAW,KAAwB,EAAA;AACjD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAAC,UAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,QACJ,GAAAC,iBAAA;AAAA,IACE,CAAC,QAAQ,KAAU,KAAA;AACjB,MAAa,YAAA,CAAA,KAAA,IAAS,EAAE,CAAA;AAAA,KAC1B;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEF,EACE,uBAAAC,eAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,KAAA;AAAA,MACX,aAAY,EAAA,aAAA;AAAA,MACZ,gBAAA;AAAA,MACA,wBAA0B,EAAA,UAAA;AAAA,MAC1B,YAAA;AAAA,MACA,WAAa,EAAA,mBAAA;AAAA,MACb,iBAAmB,EAAA,QAAA;AAAA,MACnB,iBAAkB,EAAA,UAAA;AAAA,MAClB,QAAU,EAAA,aAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MAEN,QAAA,EAAA;AAAA,QAAkB,iBAAA,CAAA,GAAA,CAAI,CAAC,aAAsC,KAAA;AAC5D,UAAA,sCACGC,2BAAuC,EAAA,EAAA,KAAA,EAAO,aAAc,CAAA,IAAA,EAC1D,wBAAc,MAAO,CAAA,GAAA,CAAI,CAAC,KAAA,oCACxBC,iBAAqB,EAAA,EAAA,KAAA,EAAA,EAAP,KAAqB,CACrC,CAAA,EAAA,EAHiB,cAAc,IAIlC,CAAA;AAAA,SAEH,CAAA;AAAA,wBACDC,cAAA,CAACD,qBAAS,SAAW,EAAA,YAAA,CAAa,YAAY,CAC3C,EAAA,QAAA,EAAA,CAAA,cAAA,EAAiB,UAAU,CAC9B,CAAA,CAAA,EAAA;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -16,10 +16,10 @@ function usePopperStatus(props) {
16
16
  setIsOpen(false);
17
17
  }
18
18
  };
19
- const onFocus = (event) => {
19
+ const onFocus = () => {
20
20
  setIsOpen(true);
21
21
  };
22
- const onBlur = (event) => {
22
+ const onBlur = () => {
23
23
  setIsOpen(false);
24
24
  };
25
25
  const onChange = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"usePopperStatus.js","sources":["../src/query-input/internal/usePopperStatus.ts"],"sourcesContent":["import { type FocusEvent, type KeyboardEvent, useState } from \"react\";\n\nexport interface UsePopperStatusProps {\n initialOpen?: boolean;\n autoClose?: boolean;\n}\n\nexport function usePopperStatus(props: UsePopperStatusProps) {\n const { initialOpen, autoClose } = props;\n const [isOpen, setIsOpen] = useState<boolean>(!!initialOpen);\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.altKey && [\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n setIsOpen((x) => !x);\n } else if (\n !isOpen &&\n [\"Alt\", \"Tab\", \"Escape\", \"Control\", \"Shift\", \"Meta\"].includes(event.key)\n ) {\n setIsOpen(true);\n } else if (isOpen && event.key === \"Escape\") {\n setIsOpen(false);\n } else if (isOpen && autoClose && event.key === \"Enter\") {\n setIsOpen(false);\n }\n };\n\n const onFocus = (event: FocusEvent) => {\n setIsOpen(true);\n };\n\n const onBlur = (event: FocusEvent) => {\n setIsOpen(false);\n };\n\n const onChange = () => {\n if (autoClose) {\n setIsOpen(false);\n }\n };\n\n const onClick = () => {\n if (!isOpen) {\n setIsOpen(true);\n }\n };\n\n return {\n isOpen,\n onKeyDown,\n onFocus,\n onBlur,\n onChange,\n onClick,\n };\n}\n"],"names":["useState"],"mappings":";;;;AAOO,SAAS,gBAAgB,KAA6B,EAAA;AAC3D,EAAM,MAAA,EAAe,SAAA,EAAc,GAAA,KAAA;AACnC,EAAA,MAAM,CAAC,MAAQ,EAAA,SAAS,IAAIA,cAAkB,CAAA,KAAa,CAAA;AAE3D,EAAM,MAAA,SAAA,GAAY,CAAC,KAAyB,KAAA;AAC1C,IAAI,IAAA,KAAA,CAAM,UAAU,CAAC,SAAA,EAAW,WAAW,CAAE,CAAA,QAAA,CAAS,KAAM,CAAA,GAAG,CAAG,EAAA;AAChE,MAAU,SAAA,CAAA,CAAC,CAAM,KAAA,CAAC,CAAC,CAAA;AAAA,KAEnB,MAAA,IAAA,CAAC,MACD,IAAA,CAAC,OAAO,KAAO,EAAA,QAAA,EAAU,SAAW,EAAA,OAAA,EAAS,MAAM,CAAA,CAAE,QAAS,CAAA,KAAA,CAAM,GAAG,CACvE,EAAA;AACA,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA,KACL,MAAA,IAAA,MAAA,IAAU,KAAM,CAAA,GAAA,KAAQ,QAAU,EAAA;AAC3C,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA,KACN,MAAA,IAAA,MAAA,IAAU,SAAa,IAAA,KAAA,CAAM,QAAQ,OAAS,EAAA;AACvD,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,GACF;AAEA,EAAM,MAAA,OAAA,GAAU,CAAC,KAAsB,KAAA;AACrC,IAAA,SAAA,CAAU,IAAI,CAAA;AAAA,GAChB;AAEA,EAAM,MAAA,MAAA,GAAS,CAAC,KAAsB,KAAA;AACpC,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,GACjB;AAEA,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,GACF;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA;AAChB,GACF;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"usePopperStatus.js","sources":["../src/query-input/internal/usePopperStatus.ts"],"sourcesContent":["import { type KeyboardEvent, useState } from \"react\";\n\nexport interface UsePopperStatusProps {\n initialOpen?: boolean;\n autoClose?: boolean;\n}\n\nexport function usePopperStatus(props: UsePopperStatusProps) {\n const { initialOpen, autoClose } = props;\n const [isOpen, setIsOpen] = useState<boolean>(!!initialOpen);\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.altKey && [\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n setIsOpen((x) => !x);\n } else if (\n !isOpen &&\n [\"Alt\", \"Tab\", \"Escape\", \"Control\", \"Shift\", \"Meta\"].includes(event.key)\n ) {\n setIsOpen(true);\n } else if (isOpen && event.key === \"Escape\") {\n setIsOpen(false);\n } else if (isOpen && autoClose && event.key === \"Enter\") {\n setIsOpen(false);\n }\n };\n\n const onFocus = () => {\n setIsOpen(true);\n };\n\n const onBlur = () => {\n setIsOpen(false);\n };\n\n const onChange = () => {\n if (autoClose) {\n setIsOpen(false);\n }\n };\n\n const onClick = () => {\n if (!isOpen) {\n setIsOpen(true);\n }\n };\n\n return {\n isOpen,\n onKeyDown,\n onFocus,\n onBlur,\n onChange,\n onClick,\n };\n}\n"],"names":["useState"],"mappings":";;;;AAOO,SAAS,gBAAgB,KAA6B,EAAA;AAC3D,EAAM,MAAA,EAAe,SAAA,EAAc,GAAA,KAAA;AACnC,EAAA,MAAM,CAAC,MAAQ,EAAA,SAAS,IAAIA,cAAkB,CAAA,KAAa,CAAA;AAE3D,EAAM,MAAA,SAAA,GAAY,CAAC,KAAyB,KAAA;AAC1C,IAAI,IAAA,KAAA,CAAM,UAAU,CAAC,SAAA,EAAW,WAAW,CAAE,CAAA,QAAA,CAAS,KAAM,CAAA,GAAG,CAAG,EAAA;AAChE,MAAU,SAAA,CAAA,CAAC,CAAM,KAAA,CAAC,CAAC,CAAA;AAAA,KAEnB,MAAA,IAAA,CAAC,MACD,IAAA,CAAC,OAAO,KAAO,EAAA,QAAA,EAAU,SAAW,EAAA,OAAA,EAAS,MAAM,CAAA,CAAE,QAAS,CAAA,KAAA,CAAM,GAAG,CACvE,EAAA;AACA,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA,KACL,MAAA,IAAA,MAAA,IAAU,KAAM,CAAA,GAAA,KAAQ,QAAU,EAAA;AAC3C,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA,KACN,MAAA,IAAA,MAAA,IAAU,SAAa,IAAA,KAAA,CAAM,QAAQ,OAAS,EAAA;AACvD,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,GACF;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,SAAA,CAAU,IAAI,CAAA;AAAA,GAChB;AAEA,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,SAAA,CAAU,KAAK,CAAA;AAAA,GACjB;AAEA,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AACjB,GACF;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA;AAChB,GACF;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -43,8 +43,8 @@ function useQueryInput(props, forwardedRef) {
43
43
  const searchListIndexPositions = react.useRef(
44
44
  []
45
45
  );
46
- const onInputFocus = (event) => {
47
- popperStatus.onFocus(event);
46
+ const onInputFocus = () => {
47
+ popperStatus.onFocus();
48
48
  setIsFocused(true);
49
49
  };
50
50
  const onInputBlur = (event) => {
@@ -68,11 +68,11 @@ function useQueryInput(props, forwardedRef) {
68
68
  return;
69
69
  }
70
70
  setIsFocused(false);
71
- popperStatus.onBlur(event);
71
+ popperStatus.onBlur();
72
72
  };
73
- const onFocus = (event) => {
73
+ const onFocus = () => {
74
74
  setIsFocused(true);
75
- popperStatus.onFocus(event);
75
+ popperStatus.onFocus();
76
76
  };
77
77
  const onBlur = (event) => {
78
78
  var _a, _b;
@@ -90,7 +90,7 @@ function useQueryInput(props, forwardedRef) {
90
90
  return;
91
91
  }
92
92
  setIsFocused(false);
93
- popperStatus.onBlur(event);
93
+ popperStatus.onBlur();
94
94
  };
95
95
  const onSelectedItemsChange = (newItems) => {
96
96
  const newItem = newItems == null ? void 0 : newItems.find(