@salt-ds/lab 1.0.0-alpha.12 → 1.0.0-alpha.14

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 (389) hide show
  1. package/dist-cjs/app-header/AppHeader.js +0 -1
  2. package/dist-cjs/app-header/AppHeader.js.map +1 -1
  3. package/dist-cjs/calendar/internal/CalendarNavigation.js +0 -1
  4. package/dist-cjs/calendar/internal/CalendarNavigation.js.map +1 -1
  5. package/dist-cjs/calendar/useSelection.js +0 -1
  6. package/dist-cjs/calendar/useSelection.js.map +1 -1
  7. package/dist-cjs/carousel/Carousel.js +0 -1
  8. package/dist-cjs/carousel/Carousel.js.map +1 -1
  9. package/dist-cjs/cascading-menu/CascadingMenu.js +0 -1
  10. package/dist-cjs/cascading-menu/CascadingMenu.js.map +1 -1
  11. package/dist-cjs/cascading-menu/CascadingMenuItem.js +0 -1
  12. package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
  13. package/dist-cjs/cascading-menu/CascadingMenuList.js +0 -1
  14. package/dist-cjs/cascading-menu/CascadingMenuList.js.map +1 -1
  15. package/dist-cjs/cascading-menu/internal/useClickAway.js +0 -1
  16. package/dist-cjs/cascading-menu/internal/useClickAway.js.map +1 -1
  17. package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js +0 -1
  18. package/dist-cjs/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  19. package/dist-cjs/combo-box/ComboBox.js +0 -1
  20. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  21. package/dist-cjs/combo-box/useCombobox.js +0 -1
  22. package/dist-cjs/combo-box/useCombobox.js.map +1 -1
  23. package/dist-cjs/combo-box-deprecated/filterHelpers.js +0 -1
  24. package/dist-cjs/combo-box-deprecated/filterHelpers.js.map +1 -1
  25. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js +0 -1
  26. package/dist-cjs/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  27. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js +0 -1
  28. package/dist-cjs/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  29. package/dist-cjs/combo-box-deprecated/internal/useComboBox.js +0 -1
  30. package/dist-cjs/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  31. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js +0 -1
  32. package/dist-cjs/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  33. package/dist-cjs/common-hooks/useViewportTracking.js +0 -1
  34. package/dist-cjs/common-hooks/useViewportTracking.js.map +1 -1
  35. package/dist-cjs/common-hooks/utils/filter-utils.js +0 -1
  36. package/dist-cjs/common-hooks/utils/filter-utils.js.map +1 -1
  37. package/dist-cjs/contact-details/MailLinkComponent.js +0 -1
  38. package/dist-cjs/contact-details/MailLinkComponent.js.map +1 -1
  39. package/dist-cjs/content-status/internal/StatusIndicator.js +0 -1
  40. package/dist-cjs/content-status/internal/StatusIndicator.js.map +1 -1
  41. package/dist-cjs/deck-layout/DeckLayout.js +0 -1
  42. package/dist-cjs/deck-layout/DeckLayout.js.map +1 -1
  43. package/dist-cjs/drawer/Drawer.css.js +6 -0
  44. package/dist-cjs/drawer/Drawer.css.js.map +1 -0
  45. package/dist-cjs/drawer/Drawer.js +83 -0
  46. package/dist-cjs/drawer/Drawer.js.map +1 -0
  47. package/dist-cjs/dropdown/Dropdown.js +0 -1
  48. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  49. package/dist-cjs/dropdown/DropdownBase.js +0 -1
  50. package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
  51. package/dist-cjs/dropdown/useDropdown.js +0 -1
  52. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  53. package/dist-cjs/dropdown/useDropdownBase.js +0 -1
  54. package/dist-cjs/dropdown/useDropdownBase.js.map +1 -1
  55. package/dist-cjs/index.js +13 -18
  56. package/dist-cjs/index.js.map +1 -1
  57. package/dist-cjs/layer-layout/LayerLayout.js +0 -1
  58. package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
  59. package/dist-cjs/list/Highlighter.js +0 -1
  60. package/dist-cjs/list/Highlighter.js.map +1 -1
  61. package/dist-cjs/list/List.js +0 -1
  62. package/dist-cjs/list/List.js.map +1 -1
  63. package/dist-cjs/list/VirtualizedList.js +0 -1
  64. package/dist-cjs/list/VirtualizedList.js.map +1 -1
  65. package/dist-cjs/list/useList.js +0 -1
  66. package/dist-cjs/list/useList.js.map +1 -1
  67. package/dist-cjs/list/useListHeight.js +0 -1
  68. package/dist-cjs/list/useListHeight.js.map +1 -1
  69. package/dist-cjs/list-deprecated/ListItemBase.js +0 -1
  70. package/dist-cjs/list-deprecated/ListItemBase.js.map +1 -1
  71. package/dist-cjs/list-deprecated/internal/Highlighter.js +0 -1
  72. package/dist-cjs/list-deprecated/internal/Highlighter.js.map +1 -1
  73. package/dist-cjs/list-deprecated/useTypeSelect.js +0 -1
  74. package/dist-cjs/list-deprecated/useTypeSelect.js.map +1 -1
  75. package/dist-cjs/list-next/ListItemNext.css.js +1 -1
  76. package/dist-cjs/multiline-input/MultilineInput.css.js +1 -1
  77. package/dist-cjs/multiline-input/MultilineInput.js +25 -13
  78. package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
  79. package/dist-cjs/parent-child-layout/ParentChildLayout.js +0 -1
  80. package/dist-cjs/parent-child-layout/ParentChildLayout.js.map +1 -1
  81. package/dist-cjs/pill-next/PillNext.css.js +6 -0
  82. package/dist-cjs/pill-next/PillNext.css.js.map +1 -0
  83. package/dist-cjs/pill-next/PillNext.js +58 -0
  84. package/dist-cjs/pill-next/PillNext.js.map +1 -0
  85. package/dist-cjs/progress/CircularProgress/CircularProgress.css.js +1 -1
  86. package/dist-cjs/progress/CircularProgress/CircularProgress.js +36 -75
  87. package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
  88. package/dist-cjs/progress/LinearProgress/LinearProgress.css.js +1 -1
  89. package/dist-cjs/progress/LinearProgress/LinearProgress.js +16 -24
  90. package/dist-cjs/progress/LinearProgress/LinearProgress.js.map +1 -1
  91. package/dist-cjs/query-input/internal/CategoryList.js +0 -1
  92. package/dist-cjs/query-input/internal/CategoryList.js.map +1 -1
  93. package/dist-cjs/query-input/internal/CategoryListItem.js +0 -1
  94. package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
  95. package/dist-cjs/query-input/internal/QueryInputBody.js +3 -7
  96. package/dist-cjs/query-input/internal/QueryInputBody.js.map +1 -1
  97. package/dist-cjs/query-input/internal/SearchList.js +0 -1
  98. package/dist-cjs/query-input/internal/SearchList.js.map +1 -1
  99. package/dist-cjs/query-input/internal/ValueList.js +0 -1
  100. package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
  101. package/dist-cjs/query-input/useQueryInput.js +0 -1
  102. package/dist-cjs/query-input/useQueryInput.js.map +1 -1
  103. package/dist-cjs/responsive/useOverflow.js +0 -1
  104. package/dist-cjs/responsive/useOverflow.js.map +1 -1
  105. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.css.js +6 -0
  106. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.css.js.map +1 -0
  107. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js +42 -0
  108. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js.map +1 -0
  109. package/dist-cjs/stepped-tracker/SteppedTracker.css.js +6 -0
  110. package/dist-cjs/stepped-tracker/SteppedTracker.css.js.map +1 -0
  111. package/dist-cjs/stepped-tracker/SteppedTracker.js +64 -0
  112. package/dist-cjs/stepped-tracker/SteppedTracker.js.map +1 -0
  113. package/dist-cjs/stepped-tracker/SteppedTrackerContext.js +57 -0
  114. package/dist-cjs/stepped-tracker/SteppedTrackerContext.js.map +1 -0
  115. package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.css.js +6 -0
  116. package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.css.js.map +1 -0
  117. package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.js +26 -0
  118. package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.js.map +1 -0
  119. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.css.js +6 -0
  120. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.css.js.map +1 -0
  121. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +111 -0
  122. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -0
  123. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js +21 -0
  124. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js.map +1 -0
  125. package/dist-cjs/stepped-tracker/useDetectTruncatedText.js +71 -0
  126. package/dist-cjs/stepped-tracker/useDetectTruncatedText.js.map +1 -0
  127. package/dist-cjs/tabs/Tabstrip.js +0 -1
  128. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  129. package/dist-cjs/tabs/useActivationIndicator.js +0 -1
  130. package/dist-cjs/tabs/useActivationIndicator.js.map +1 -1
  131. package/dist-cjs/tabs/useKeyboardNavigation.js +0 -1
  132. package/dist-cjs/tabs/useKeyboardNavigation.js.map +1 -1
  133. package/dist-cjs/tabs-next/OverflowMenu.js +0 -1
  134. package/dist-cjs/tabs-next/OverflowMenu.js.map +1 -1
  135. package/dist-cjs/tokenized-input/useTokenizedInput.js +0 -1
  136. package/dist-cjs/tokenized-input/useTokenizedInput.js.map +1 -1
  137. package/dist-cjs/toolbar/Toolbar.js +0 -1
  138. package/dist-cjs/toolbar/Toolbar.js.map +1 -1
  139. package/dist-cjs/toolbar/internal/renderToolbarItems.js +0 -1
  140. package/dist-cjs/toolbar/internal/renderToolbarItems.js.map +1 -1
  141. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +0 -1
  142. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  143. package/dist-cjs/tree/Tree.js +0 -1
  144. package/dist-cjs/tree/Tree.js.map +1 -1
  145. package/dist-cjs/tree/useTree.js +0 -1
  146. package/dist-cjs/tree/useTree.js.map +1 -1
  147. package/dist-es/app-header/AppHeader.js +0 -1
  148. package/dist-es/app-header/AppHeader.js.map +1 -1
  149. package/dist-es/calendar/internal/CalendarNavigation.js +0 -1
  150. package/dist-es/calendar/internal/CalendarNavigation.js.map +1 -1
  151. package/dist-es/calendar/useSelection.js +0 -1
  152. package/dist-es/calendar/useSelection.js.map +1 -1
  153. package/dist-es/carousel/Carousel.js +0 -1
  154. package/dist-es/carousel/Carousel.js.map +1 -1
  155. package/dist-es/cascading-menu/CascadingMenu.js +0 -1
  156. package/dist-es/cascading-menu/CascadingMenu.js.map +1 -1
  157. package/dist-es/cascading-menu/CascadingMenuItem.js +0 -1
  158. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  159. package/dist-es/cascading-menu/CascadingMenuList.js +0 -1
  160. package/dist-es/cascading-menu/CascadingMenuList.js.map +1 -1
  161. package/dist-es/cascading-menu/internal/useClickAway.js +0 -1
  162. package/dist-es/cascading-menu/internal/useClickAway.js.map +1 -1
  163. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js +0 -1
  164. package/dist-es/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  165. package/dist-es/combo-box/ComboBox.js +0 -1
  166. package/dist-es/combo-box/ComboBox.js.map +1 -1
  167. package/dist-es/combo-box/useCombobox.js +0 -1
  168. package/dist-es/combo-box/useCombobox.js.map +1 -1
  169. package/dist-es/combo-box-deprecated/filterHelpers.js +0 -1
  170. package/dist-es/combo-box-deprecated/filterHelpers.js.map +1 -1
  171. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js +0 -1
  172. package/dist-es/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  173. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js +0 -1
  174. package/dist-es/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  175. package/dist-es/combo-box-deprecated/internal/useComboBox.js +0 -1
  176. package/dist-es/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  177. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js +0 -1
  178. package/dist-es/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  179. package/dist-es/common-hooks/useViewportTracking.js +0 -1
  180. package/dist-es/common-hooks/useViewportTracking.js.map +1 -1
  181. package/dist-es/common-hooks/utils/filter-utils.js +0 -1
  182. package/dist-es/common-hooks/utils/filter-utils.js.map +1 -1
  183. package/dist-es/contact-details/MailLinkComponent.js +0 -1
  184. package/dist-es/contact-details/MailLinkComponent.js.map +1 -1
  185. package/dist-es/content-status/internal/StatusIndicator.js +0 -1
  186. package/dist-es/content-status/internal/StatusIndicator.js.map +1 -1
  187. package/dist-es/deck-layout/DeckLayout.js +0 -1
  188. package/dist-es/deck-layout/DeckLayout.js.map +1 -1
  189. package/dist-es/drawer/Drawer.css.js +4 -0
  190. package/dist-es/drawer/Drawer.css.js.map +1 -0
  191. package/dist-es/drawer/Drawer.js +78 -0
  192. package/dist-es/drawer/Drawer.js.map +1 -0
  193. package/dist-es/dropdown/Dropdown.js +0 -1
  194. package/dist-es/dropdown/Dropdown.js.map +1 -1
  195. package/dist-es/dropdown/DropdownBase.js +0 -1
  196. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  197. package/dist-es/dropdown/useDropdown.js +0 -1
  198. package/dist-es/dropdown/useDropdown.js.map +1 -1
  199. package/dist-es/dropdown/useDropdownBase.js +0 -1
  200. package/dist-es/dropdown/useDropdownBase.js.map +1 -1
  201. package/dist-es/index.js +7 -9
  202. package/dist-es/index.js.map +1 -1
  203. package/dist-es/layer-layout/LayerLayout.js +0 -1
  204. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  205. package/dist-es/list/Highlighter.js +0 -1
  206. package/dist-es/list/Highlighter.js.map +1 -1
  207. package/dist-es/list/List.js +0 -1
  208. package/dist-es/list/List.js.map +1 -1
  209. package/dist-es/list/VirtualizedList.js +0 -1
  210. package/dist-es/list/VirtualizedList.js.map +1 -1
  211. package/dist-es/list/useList.js +0 -1
  212. package/dist-es/list/useList.js.map +1 -1
  213. package/dist-es/list/useListHeight.js +0 -1
  214. package/dist-es/list/useListHeight.js.map +1 -1
  215. package/dist-es/list-deprecated/ListItemBase.js +0 -1
  216. package/dist-es/list-deprecated/ListItemBase.js.map +1 -1
  217. package/dist-es/list-deprecated/internal/Highlighter.js +0 -1
  218. package/dist-es/list-deprecated/internal/Highlighter.js.map +1 -1
  219. package/dist-es/list-deprecated/useTypeSelect.js +0 -1
  220. package/dist-es/list-deprecated/useTypeSelect.js.map +1 -1
  221. package/dist-es/list-next/ListItemNext.css.js +1 -1
  222. package/dist-es/multiline-input/MultilineInput.css.js +1 -1
  223. package/dist-es/multiline-input/MultilineInput.js +25 -13
  224. package/dist-es/multiline-input/MultilineInput.js.map +1 -1
  225. package/dist-es/parent-child-layout/ParentChildLayout.js +0 -1
  226. package/dist-es/parent-child-layout/ParentChildLayout.js.map +1 -1
  227. package/dist-es/pill-next/PillNext.css.js +4 -0
  228. package/dist-es/pill-next/PillNext.css.js.map +1 -0
  229. package/dist-es/pill-next/PillNext.js +50 -0
  230. package/dist-es/pill-next/PillNext.js.map +1 -0
  231. package/dist-es/progress/CircularProgress/CircularProgress.css.js +1 -1
  232. package/dist-es/progress/CircularProgress/CircularProgress.js +37 -75
  233. package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
  234. package/dist-es/progress/LinearProgress/LinearProgress.css.js +1 -1
  235. package/dist-es/progress/LinearProgress/LinearProgress.js +16 -24
  236. package/dist-es/progress/LinearProgress/LinearProgress.js.map +1 -1
  237. package/dist-es/query-input/internal/CategoryList.js +0 -1
  238. package/dist-es/query-input/internal/CategoryList.js.map +1 -1
  239. package/dist-es/query-input/internal/CategoryListItem.js +0 -1
  240. package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
  241. package/dist-es/query-input/internal/QueryInputBody.js +1 -5
  242. package/dist-es/query-input/internal/QueryInputBody.js.map +1 -1
  243. package/dist-es/query-input/internal/SearchList.js +0 -1
  244. package/dist-es/query-input/internal/SearchList.js.map +1 -1
  245. package/dist-es/query-input/internal/ValueList.js +0 -1
  246. package/dist-es/query-input/internal/ValueList.js.map +1 -1
  247. package/dist-es/query-input/useQueryInput.js +0 -1
  248. package/dist-es/query-input/useQueryInput.js.map +1 -1
  249. package/dist-es/responsive/useOverflow.js +0 -1
  250. package/dist-es/responsive/useOverflow.js.map +1 -1
  251. package/dist-es/stepped-tracker/StepLabel/StepLabel.css.js +4 -0
  252. package/dist-es/stepped-tracker/StepLabel/StepLabel.css.js.map +1 -0
  253. package/dist-es/stepped-tracker/StepLabel/StepLabel.js +38 -0
  254. package/dist-es/stepped-tracker/StepLabel/StepLabel.js.map +1 -0
  255. package/dist-es/stepped-tracker/SteppedTracker.css.js +4 -0
  256. package/dist-es/stepped-tracker/SteppedTracker.css.js.map +1 -0
  257. package/dist-es/stepped-tracker/SteppedTracker.js +60 -0
  258. package/dist-es/stepped-tracker/SteppedTracker.js.map +1 -0
  259. package/dist-es/stepped-tracker/SteppedTrackerContext.js +50 -0
  260. package/dist-es/stepped-tracker/SteppedTrackerContext.js.map +1 -0
  261. package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.css.js +4 -0
  262. package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.css.js.map +1 -0
  263. package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.js +22 -0
  264. package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.js.map +1 -0
  265. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.css.js +4 -0
  266. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.css.js.map +1 -0
  267. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +107 -0
  268. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -0
  269. package/dist-es/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js +16 -0
  270. package/dist-es/stepped-tracker/TrackerStep/TrackerStepTooltipContext.js.map +1 -0
  271. package/dist-es/stepped-tracker/useDetectTruncatedText.js +69 -0
  272. package/dist-es/stepped-tracker/useDetectTruncatedText.js.map +1 -0
  273. package/dist-es/tabs/Tabstrip.js +0 -1
  274. package/dist-es/tabs/Tabstrip.js.map +1 -1
  275. package/dist-es/tabs/useActivationIndicator.js +0 -1
  276. package/dist-es/tabs/useActivationIndicator.js.map +1 -1
  277. package/dist-es/tabs/useKeyboardNavigation.js +0 -1
  278. package/dist-es/tabs/useKeyboardNavigation.js.map +1 -1
  279. package/dist-es/tabs-next/OverflowMenu.js +0 -1
  280. package/dist-es/tabs-next/OverflowMenu.js.map +1 -1
  281. package/dist-es/tokenized-input/useTokenizedInput.js +0 -1
  282. package/dist-es/tokenized-input/useTokenizedInput.js.map +1 -1
  283. package/dist-es/toolbar/Toolbar.js +0 -1
  284. package/dist-es/toolbar/Toolbar.js.map +1 -1
  285. package/dist-es/toolbar/internal/renderToolbarItems.js +0 -1
  286. package/dist-es/toolbar/internal/renderToolbarItems.js.map +1 -1
  287. package/dist-es/toolbar/overflow-panel/OverflowPanel.js +0 -1
  288. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  289. package/dist-es/tree/Tree.js +0 -1
  290. package/dist-es/tree/Tree.js.map +1 -1
  291. package/dist-es/tree/useTree.js +0 -1
  292. package/dist-es/tree/useTree.js.map +1 -1
  293. package/dist-types/combo-box-deprecated/internal/useComboBox.d.ts +2 -2
  294. package/dist-types/combo-box-deprecated/internal/useMultiSelectComboBox.d.ts +7 -7
  295. package/dist-types/drawer/Drawer.d.ts +31 -0
  296. package/dist-types/drawer/index.d.ts +1 -0
  297. package/dist-types/index.d.ts +3 -3
  298. package/dist-types/multiline-input/MultilineInput.d.ts +14 -14
  299. package/dist-types/pill-next/PillNext.d.ts +7 -0
  300. package/dist-types/pill-next/index.d.ts +1 -0
  301. package/dist-types/progress/CircularProgress/CircularProgress.d.ts +7 -24
  302. package/dist-types/progress/LinearProgress/LinearProgress.d.ts +7 -11
  303. package/dist-types/stepped-tracker/StepLabel/StepLabel.d.ts +5 -0
  304. package/dist-types/stepped-tracker/StepLabel/index.d.ts +1 -0
  305. package/dist-types/stepped-tracker/SteppedTracker.d.ts +12 -0
  306. package/dist-types/stepped-tracker/SteppedTrackerContext.d.ts +21 -0
  307. package/dist-types/stepped-tracker/TrackerConnector/TrackerConnector.d.ts +10 -0
  308. package/dist-types/stepped-tracker/TrackerConnector/index.d.ts +1 -0
  309. package/dist-types/stepped-tracker/TrackerStep/TrackerStep.d.ts +10 -0
  310. package/dist-types/stepped-tracker/TrackerStep/TrackerStepTooltipContext.d.ts +7 -0
  311. package/dist-types/stepped-tracker/TrackerStep/index.d.ts +3 -0
  312. package/dist-types/stepped-tracker/index.d.ts +3 -0
  313. package/dist-types/stepped-tracker/useDetectTruncatedText.d.ts +11 -0
  314. package/dist-types/stepper-input/useStepperInput.d.ts +2 -2
  315. package/dist-types/utils/index.d.ts +0 -1
  316. package/package.json +9 -9
  317. package/dist-cjs/accordion/Accordion.css.js +0 -6
  318. package/dist-cjs/accordion/Accordion.css.js.map +0 -1
  319. package/dist-cjs/accordion/Accordion.js +0 -62
  320. package/dist-cjs/accordion/Accordion.js.map +0 -1
  321. package/dist-cjs/accordion/AccordionContext.js +0 -25
  322. package/dist-cjs/accordion/AccordionContext.js.map +0 -1
  323. package/dist-cjs/accordion/AccordionGroup.js +0 -23
  324. package/dist-cjs/accordion/AccordionGroup.js.map +0 -1
  325. package/dist-cjs/accordion/AccordionHeader.css.js +0 -6
  326. package/dist-cjs/accordion/AccordionHeader.css.js.map +0 -1
  327. package/dist-cjs/accordion/AccordionHeader.js +0 -50
  328. package/dist-cjs/accordion/AccordionHeader.js.map +0 -1
  329. package/dist-cjs/accordion/AccordionPanel.css.js +0 -6
  330. package/dist-cjs/accordion/AccordionPanel.css.js.map +0 -1
  331. package/dist-cjs/accordion/AccordionPanel.js +0 -45
  332. package/dist-cjs/accordion/AccordionPanel.js.map +0 -1
  333. package/dist-cjs/progress/CircularProgress/CircularProgressParts.js +0 -72
  334. package/dist-cjs/progress/CircularProgress/CircularProgressParts.js.map +0 -1
  335. package/dist-cjs/toggle-button/ToggleButton.css.js +0 -6
  336. package/dist-cjs/toggle-button/ToggleButton.css.js.map +0 -1
  337. package/dist-cjs/toggle-button/ToggleButton.js +0 -75
  338. package/dist-cjs/toggle-button/ToggleButton.js.map +0 -1
  339. package/dist-cjs/toggle-button-group/ToggleButtonGroup.css.js +0 -6
  340. package/dist-cjs/toggle-button-group/ToggleButtonGroup.css.js.map +0 -1
  341. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +0 -111
  342. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +0 -1
  343. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js +0 -15
  344. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js.map +0 -1
  345. package/dist-cjs/utils/useFloatingUI.js +0 -38
  346. package/dist-cjs/utils/useFloatingUI.js.map +0 -1
  347. package/dist-es/accordion/Accordion.css.js +0 -4
  348. package/dist-es/accordion/Accordion.css.js.map +0 -1
  349. package/dist-es/accordion/Accordion.js +0 -58
  350. package/dist-es/accordion/Accordion.js.map +0 -1
  351. package/dist-es/accordion/AccordionContext.js +0 -20
  352. package/dist-es/accordion/AccordionContext.js.map +0 -1
  353. package/dist-es/accordion/AccordionGroup.js +0 -19
  354. package/dist-es/accordion/AccordionGroup.js.map +0 -1
  355. package/dist-es/accordion/AccordionHeader.css.js +0 -4
  356. package/dist-es/accordion/AccordionHeader.css.js.map +0 -1
  357. package/dist-es/accordion/AccordionHeader.js +0 -46
  358. package/dist-es/accordion/AccordionHeader.js.map +0 -1
  359. package/dist-es/accordion/AccordionPanel.css.js +0 -4
  360. package/dist-es/accordion/AccordionPanel.css.js.map +0 -1
  361. package/dist-es/accordion/AccordionPanel.js +0 -41
  362. package/dist-es/accordion/AccordionPanel.js.map +0 -1
  363. package/dist-es/progress/CircularProgress/CircularProgressParts.js +0 -64
  364. package/dist-es/progress/CircularProgress/CircularProgressParts.js.map +0 -1
  365. package/dist-es/toggle-button/ToggleButton.css.js +0 -4
  366. package/dist-es/toggle-button/ToggleButton.css.js.map +0 -1
  367. package/dist-es/toggle-button/ToggleButton.js +0 -71
  368. package/dist-es/toggle-button/ToggleButton.js.map +0 -1
  369. package/dist-es/toggle-button-group/ToggleButtonGroup.css.js +0 -4
  370. package/dist-es/toggle-button-group/ToggleButtonGroup.css.js.map +0 -1
  371. package/dist-es/toggle-button-group/ToggleButtonGroup.js +0 -107
  372. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +0 -1
  373. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js +0 -10
  374. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js.map +0 -1
  375. package/dist-es/utils/useFloatingUI.js +0 -33
  376. package/dist-es/utils/useFloatingUI.js.map +0 -1
  377. package/dist-types/accordion/Accordion.d.ts +0 -25
  378. package/dist-types/accordion/AccordionContext.d.ts +0 -10
  379. package/dist-types/accordion/AccordionGroup.d.ts +0 -4
  380. package/dist-types/accordion/AccordionHeader.d.ts +0 -4
  381. package/dist-types/accordion/AccordionPanel.d.ts +0 -4
  382. package/dist-types/accordion/index.d.ts +0 -4
  383. package/dist-types/progress/CircularProgress/CircularProgressParts.d.ts +0 -13
  384. package/dist-types/toggle-button/ToggleButton.d.ts +0 -7
  385. package/dist-types/toggle-button/index.d.ts +0 -1
  386. package/dist-types/toggle-button-group/ToggleButtonGroup.d.ts +0 -25
  387. package/dist-types/toggle-button-group/ToggleButtonGroupContext.d.ts +0 -10
  388. package/dist-types/toggle-button-group/index.d.ts +0 -2
  389. package/dist-types/utils/useFloatingUI.d.ts +0 -34
@@ -1 +1 @@
1
- {"version":3,"file":"useComboBox.js","sources":["../src/combo-box-deprecated/internal/useComboBox.ts"],"sourcesContent":["import {\n useControlled,\n useForkRef,\n useId,\n useIsFocusVisible,\n} from \"@salt-ds/core\";\nimport {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useList } from \"../../list-deprecated\";\nimport { defaultItemToString } from \"../../tokenized-input/internal/defaultItemToString\";\nimport { getDefaultFilter, getDefaultFilterRegex } from \"../filterHelpers\";\nimport { DefaultComboBoxProps } from \"./DefaultComboBox\";\nimport { isToggleList, usePopperStatus } from \"./usePopperStatus\";\nimport { InputLegacyProps as InputProps } from \"../../input-legacy\";\n\nexport type UseComboBoxProps<Item> = Omit<\n DefaultComboBoxProps<Item>,\n | \"ListItem\"\n | \"Tooltip\"\n | \"tooltipEnterDelay\"\n | \"tooltipLeaveDelay\"\n | \"tooltipPlacement\"\n | \"rootRef\"\n | \"listRef\"\n | \"inputRef\"\n | \"rootWidth\"\n | \"listWidth\"\n>;\n\nexport const useComboBox = <Item>(props: UseComboBoxProps<Item>) => {\n // Deconstruct valid props for List, everything else will be passed to input using `restProps`\n const {\n initialOpen,\n initialSelectedItem,\n allowFreeText,\n displayedItemCount,\n virtualized,\n disabled,\n onBlur,\n onFocus,\n onChange,\n onSelect,\n onInputChange,\n onInputFocus,\n onInputBlur,\n onInputSelect,\n id: idProp,\n source: sourceProp = [],\n selectedItem: selectedItemProp,\n inputValue: inputValueProp,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n getFilterRegex = getDefaultFilterRegex,\n itemToString = defaultItemToString,\n stringToItem: stringToItemProp = (value) => (value ? value.trim() : value),\n InputProps: inputProps = {\n onBlur: onBlur || onInputBlur,\n onFocus: onFocus || onInputFocus,\n onChange: onInputChange,\n onSelect: onInputSelect,\n },\n ListProps = {},\n ...restProps\n } = props;\n\n const id = useId(idProp);\n const inputId = `${id}-input`;\n const listId = `${id}-list`;\n\n const [inputValue, setInputValue] = useControlled({\n controlled: inputValueProp,\n default: \"\",\n name: \"ComboBox\",\n state: \"inputValue\",\n });\n\n const [selectionChanged, setSelectionChanged] = useState(false);\n const inputRef = useRef<HTMLElement>(null);\n\n const [allowAnnouncement, setAllowAnnouncement] = useState(false);\n\n const labels = useMemo(\n () => sourceProp.map(itemToString),\n [sourceProp, itemToString]\n );\n\n const source = useMemo(() => {\n if (inputValue && inputValue.trim().length) {\n const itemFilter = getDefaultFilter(inputValue, getFilterRegex);\n return sourceProp.filter((item) => itemFilter(itemToString(item)));\n }\n return sourceProp;\n }, [inputValue, sourceProp, getFilterRegex, itemToString]);\n\n const itemTextHighlightPattern = useMemo(\n () =>\n inputValue && inputValue.trim().length\n ? getFilterRegex(inputValue)\n : undefined,\n [inputValue, getFilterRegex]\n );\n\n const { focusedRef, state, helpers, listProps } = useList({\n ...ListProps,\n source,\n disabled,\n virtualized,\n itemToString,\n initialSelectedItem,\n selectedItem: selectedItemProp,\n displayedItemCount,\n onChange,\n onSelect,\n id: listId,\n tabToSelect: true,\n disableFocus: true,\n disableMouseDown: true,\n \"aria-labelledby\": ariaLabelledBy,\n });\n\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef,\n } = useIsFocusVisible();\n\n const handleFocusVisibleRef = useForkRef(focusVisibleRef, focusedRef);\n const handleInputRef = useForkRef(inputRef, handleFocusVisibleRef);\n\n const { \"aria-activedescendant\": ariaActiveDescendant, ...restListProps } =\n listProps;\n\n const { selectedItem, highlightedIndex } = state;\n const [quickSelection, setQuickSelection] = useState(false);\n const { setFocusVisible, setSelectedItem, setHighlightedIndex } = helpers;\n\n const reconcileInput = useCallback(() => {\n setInputValue(selectedItem == null ? \"\" : itemToString(selectedItem));\n }, [selectedItem, itemToString, setInputValue]);\n\n const selectInputValue = (event: ChangeEvent) => {\n const nextIndex = inputValue ? labels.indexOf(inputValue.trim()) : -1;\n\n // Select the item if we can match its label; otherwise create a new one\n const nextItem = (\n nextIndex >= 0 ? sourceProp[nextIndex] : stringToItemProp(inputValue)\n ) as Item;\n\n if (onSelect) {\n onSelect(event, nextItem);\n }\n\n if (nextItem !== selectedItem) {\n setSelectedItem(nextItem);\n onChange && onChange(event, nextItem);\n }\n };\n\n const { isOpen: isListOpen, notifyPopper } = usePopperStatus({\n initialOpen,\n });\n\n // Reconcile input when the function is updated - most likely to be a selectItem change\n useEffect(reconcileInput, [reconcileInput]);\n\n // Reset highlight when list closes\n useEffect(() => {\n if (!isListOpen) {\n setHighlightedIndex(undefined);\n setQuickSelection(false);\n }\n }, [isListOpen, setHighlightedIndex, quickSelection]);\n\n const initHighlightedIndex = () => {\n setHighlightedIndex(selectedItem ? source.indexOf(selectedItem) : -1);\n };\n\n const handleInputFocus = (event: FocusEvent<HTMLInputElement>) => {\n handleFocusVisible(event);\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n if (highlightedIndex == null) {\n initHighlightedIndex();\n }\n\n if (inputProps.onFocus) {\n inputProps.onFocus(event);\n }\n\n notifyPopper(event);\n };\n\n const handleInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n console.log(\"BLUR\");\n handleBlurVisible();\n setAllowAnnouncement(false);\n\n if (allowFreeText) {\n selectInputValue(event as ChangeEvent);\n } else {\n reconcileInput();\n }\n\n if (restListProps.onBlur) {\n restListProps.onBlur(event as FocusEvent<HTMLDivElement>);\n }\n\n if (inputProps.onBlur) {\n inputProps.onBlur(event);\n }\n\n notifyPopper(event);\n };\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n\n setHighlightedIndex(undefined);\n setQuickSelection(newValue.length > 0 && !allowFreeText);\n\n // Clear the selection when input is cleared\n if (newValue.length === 0) {\n setSelectedItem(undefined);\n onChange && onChange(event, null);\n }\n\n if (inputProps.onChange) {\n inputProps.onChange(event, \"\");\n }\n };\n\n const handleInputSelect = (event: SyntheticEvent<HTMLDivElement>) => {\n console.log(`handleInputSelect setSelectionChanged = true`);\n setSelectionChanged(true);\n if (inputProps.onSelect) {\n inputProps.onSelect(event);\n }\n };\n\n const handleInputKeyDown = (event: KeyboardEvent) => {\n if (\"Escape\" === event.key) {\n setHighlightedIndex(undefined);\n\n if (allowFreeText) {\n setInputValue(\"\");\n } else {\n reconcileInput();\n }\n }\n\n if (inputProps.onKeyDown) {\n inputProps.onKeyDown(event as KeyboardEvent<HTMLInputElement>);\n }\n };\n\n const handleFirstItemSelection = (event: KeyboardEvent | ChangeEvent) => {\n if (\n !allowFreeText &&\n (event as KeyboardEvent).key === \"Enter\" &&\n quickSelection\n ) {\n setSelectedItem(source[0]);\n onSelect && onSelect(event, source[0]);\n onChange && onChange(event as ChangeEvent, source[0]);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n // Don't handle Alt modification key - pass it to popper as it should just toggle the open/close\n if (isToggleList(event)) {\n notifyPopper(event);\n return;\n }\n\n if (\n [\"ArrowUp\", \"ArrowDown\"].indexOf(event.key) !== -1 &&\n highlightedIndex == null\n ) {\n initHighlightedIndex();\n }\n\n handleFirstItemSelection(event);\n\n // Space, Home and End keydown should stay on input - don't pass it to list\n if ([\" \", \"Home\", \"End\"].indexOf(event.key) === -1) {\n if (restListProps.onKeyDown) {\n restListProps.onKeyDown(event as KeyboardEvent<HTMLDivElement>);\n }\n console.log(`handleKeyDown ${event.key} setSelectionCHanged = false`);\n setSelectionChanged(false);\n }\n\n // Don't announce for deleting values\n setAllowAnnouncement(\"Backspace\" !== event.key);\n handleInputKeyDown(event);\n notifyPopper(event);\n };\n\n const handleListClick = (event: MouseEvent) => {\n console.log(\"handle list click\");\n const inputEl = inputRef.current;\n if (inputEl != null) {\n inputEl.focus();\n }\n\n if (restListProps.onClick) {\n restListProps.onClick(event as MouseEvent<HTMLDivElement>);\n }\n\n notifyPopper(event);\n };\n\n const mergedInputProps = {\n ...inputProps.inputProps,\n role: \"combobox\",\n \"aria-owns\": listId,\n \"aria-label\": ariaLabel,\n \"aria-expanded\": isListOpen,\n \"aria-activedescendant\":\n isListOpen && selectionChanged ? null : ariaActiveDescendant,\n };\n\n return {\n inputRef: handleInputRef,\n listContext: {\n state,\n helpers,\n },\n inputProps: {\n ...restProps,\n ...inputProps,\n disabled,\n allowAnnouncement,\n id: inputId,\n value: inputValue,\n onFocus: handleInputFocus,\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n onSelect: handleInputSelect,\n inputProps: mergedInputProps,\n } as Partial<InputProps> & { allowAnnouncement: boolean },\n listProps: {\n ...restListProps,\n source,\n itemToString,\n itemTextHighlightPattern,\n onClick: handleListClick,\n isListOpen: isListOpen && Boolean(source.length),\n },\n };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useComboBox.js","sources":["../src/combo-box-deprecated/internal/useComboBox.ts"],"sourcesContent":["import {\n useControlled,\n useForkRef,\n useId,\n useIsFocusVisible,\n} from \"@salt-ds/core\";\nimport {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useList } from \"../../list-deprecated\";\nimport { defaultItemToString } from \"../../tokenized-input/internal/defaultItemToString\";\nimport { getDefaultFilter, getDefaultFilterRegex } from \"../filterHelpers\";\nimport { DefaultComboBoxProps } from \"./DefaultComboBox\";\nimport { isToggleList, usePopperStatus } from \"./usePopperStatus\";\nimport { InputLegacyProps as InputProps } from \"../../input-legacy\";\n\nexport type UseComboBoxProps<Item> = Omit<\n DefaultComboBoxProps<Item>,\n | \"ListItem\"\n | \"Tooltip\"\n | \"tooltipEnterDelay\"\n | \"tooltipLeaveDelay\"\n | \"tooltipPlacement\"\n | \"rootRef\"\n | \"listRef\"\n | \"inputRef\"\n | \"rootWidth\"\n | \"listWidth\"\n>;\n\nexport const useComboBox = <Item>(props: UseComboBoxProps<Item>) => {\n // Deconstruct valid props for List, everything else will be passed to input using `restProps`\n const {\n initialOpen,\n initialSelectedItem,\n allowFreeText,\n displayedItemCount,\n virtualized,\n disabled,\n onBlur,\n onFocus,\n onChange,\n onSelect,\n onInputChange,\n onInputFocus,\n onInputBlur,\n onInputSelect,\n id: idProp,\n source: sourceProp = [],\n selectedItem: selectedItemProp,\n inputValue: inputValueProp,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n getFilterRegex = getDefaultFilterRegex,\n itemToString = defaultItemToString,\n stringToItem: stringToItemProp = (value) => (value ? value.trim() : value),\n InputProps: inputProps = {\n onBlur: onBlur || onInputBlur,\n onFocus: onFocus || onInputFocus,\n onChange: onInputChange,\n onSelect: onInputSelect,\n },\n ListProps = {},\n ...restProps\n } = props;\n\n const id = useId(idProp);\n const inputId = `${id}-input`;\n const listId = `${id}-list`;\n\n const [inputValue, setInputValue] = useControlled({\n controlled: inputValueProp,\n default: \"\",\n name: \"ComboBox\",\n state: \"inputValue\",\n });\n\n const [selectionChanged, setSelectionChanged] = useState(false);\n const inputRef = useRef<HTMLElement>(null);\n\n const [allowAnnouncement, setAllowAnnouncement] = useState(false);\n\n const labels = useMemo(\n () => sourceProp.map(itemToString),\n [sourceProp, itemToString]\n );\n\n const source = useMemo(() => {\n if (inputValue && inputValue.trim().length) {\n const itemFilter = getDefaultFilter(inputValue, getFilterRegex);\n return sourceProp.filter((item) => itemFilter(itemToString(item)));\n }\n return sourceProp;\n }, [inputValue, sourceProp, getFilterRegex, itemToString]);\n\n const itemTextHighlightPattern = useMemo(\n () =>\n inputValue && inputValue.trim().length\n ? getFilterRegex(inputValue)\n : undefined,\n [inputValue, getFilterRegex]\n );\n\n const { focusedRef, state, helpers, listProps } = useList({\n ...ListProps,\n source,\n disabled,\n virtualized,\n itemToString,\n initialSelectedItem,\n selectedItem: selectedItemProp,\n displayedItemCount,\n onChange,\n onSelect,\n id: listId,\n tabToSelect: true,\n disableFocus: true,\n disableMouseDown: true,\n \"aria-labelledby\": ariaLabelledBy,\n });\n\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef,\n } = useIsFocusVisible();\n\n const handleFocusVisibleRef = useForkRef(focusVisibleRef, focusedRef);\n const handleInputRef = useForkRef(inputRef, handleFocusVisibleRef);\n\n const { \"aria-activedescendant\": ariaActiveDescendant, ...restListProps } =\n listProps;\n\n const { selectedItem, highlightedIndex } = state;\n const [quickSelection, setQuickSelection] = useState(false);\n const { setFocusVisible, setSelectedItem, setHighlightedIndex } = helpers;\n\n const reconcileInput = useCallback(() => {\n setInputValue(selectedItem == null ? \"\" : itemToString(selectedItem));\n }, [selectedItem, itemToString, setInputValue]);\n\n const selectInputValue = (event: ChangeEvent) => {\n const nextIndex = inputValue ? labels.indexOf(inputValue.trim()) : -1;\n\n // Select the item if we can match its label; otherwise create a new one\n const nextItem = (\n nextIndex >= 0 ? sourceProp[nextIndex] : stringToItemProp(inputValue)\n ) as Item;\n\n if (onSelect) {\n onSelect(event, nextItem);\n }\n\n if (nextItem !== selectedItem) {\n setSelectedItem(nextItem);\n onChange && onChange(event, nextItem);\n }\n };\n\n const { isOpen: isListOpen, notifyPopper } = usePopperStatus({\n initialOpen,\n });\n\n // Reconcile input when the function is updated - most likely to be a selectItem change\n useEffect(reconcileInput, [reconcileInput]);\n\n // Reset highlight when list closes\n useEffect(() => {\n if (!isListOpen) {\n setHighlightedIndex(undefined);\n setQuickSelection(false);\n }\n }, [isListOpen, setHighlightedIndex, quickSelection]);\n\n const initHighlightedIndex = () => {\n setHighlightedIndex(selectedItem ? source.indexOf(selectedItem) : -1);\n };\n\n const handleInputFocus = (event: FocusEvent<HTMLInputElement>) => {\n handleFocusVisible(event);\n if (isFocusVisibleRef.current) {\n setFocusVisible(true);\n }\n\n if (highlightedIndex == null) {\n initHighlightedIndex();\n }\n\n if (inputProps.onFocus) {\n inputProps.onFocus(event);\n }\n\n notifyPopper(event);\n };\n\n const handleInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n console.log(\"BLUR\");\n handleBlurVisible();\n setAllowAnnouncement(false);\n\n if (allowFreeText) {\n selectInputValue(event as ChangeEvent);\n } else {\n reconcileInput();\n }\n\n if (restListProps.onBlur) {\n restListProps.onBlur(event as FocusEvent<HTMLDivElement>);\n }\n\n if (inputProps.onBlur) {\n inputProps.onBlur(event);\n }\n\n notifyPopper(event);\n };\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n\n setHighlightedIndex(undefined);\n setQuickSelection(newValue.length > 0 && !allowFreeText);\n\n // Clear the selection when input is cleared\n if (newValue.length === 0) {\n setSelectedItem(undefined);\n onChange && onChange(event, null);\n }\n\n if (inputProps.onChange) {\n inputProps.onChange(event, \"\");\n }\n };\n\n const handleInputSelect = (event: SyntheticEvent<HTMLDivElement>) => {\n console.log(`handleInputSelect setSelectionChanged = true`);\n setSelectionChanged(true);\n if (inputProps.onSelect) {\n inputProps.onSelect(event);\n }\n };\n\n const handleInputKeyDown = (event: KeyboardEvent) => {\n if (\"Escape\" === event.key) {\n setHighlightedIndex(undefined);\n\n if (allowFreeText) {\n setInputValue(\"\");\n } else {\n reconcileInput();\n }\n }\n\n if (inputProps.onKeyDown) {\n inputProps.onKeyDown(event as KeyboardEvent<HTMLInputElement>);\n }\n };\n\n const handleFirstItemSelection = (event: KeyboardEvent | ChangeEvent) => {\n if (\n !allowFreeText &&\n (event as KeyboardEvent).key === \"Enter\" &&\n quickSelection\n ) {\n setSelectedItem(source[0]);\n onSelect && onSelect(event, source[0]);\n onChange && onChange(event as ChangeEvent, source[0]);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n // Don't handle Alt modification key - pass it to popper as it should just toggle the open/close\n if (isToggleList(event)) {\n notifyPopper(event);\n return;\n }\n\n if (\n [\"ArrowUp\", \"ArrowDown\"].indexOf(event.key) !== -1 &&\n highlightedIndex == null\n ) {\n initHighlightedIndex();\n }\n\n handleFirstItemSelection(event);\n\n // Space, Home and End keydown should stay on input - don't pass it to list\n if ([\" \", \"Home\", \"End\"].indexOf(event.key) === -1) {\n if (restListProps.onKeyDown) {\n restListProps.onKeyDown(event as KeyboardEvent<HTMLDivElement>);\n }\n console.log(`handleKeyDown ${event.key} setSelectionCHanged = false`);\n setSelectionChanged(false);\n }\n\n // Don't announce for deleting values\n setAllowAnnouncement(\"Backspace\" !== event.key);\n handleInputKeyDown(event);\n notifyPopper(event);\n };\n\n const handleListClick = (event: MouseEvent) => {\n console.log(\"handle list click\");\n const inputEl = inputRef.current;\n if (inputEl != null) {\n inputEl.focus();\n }\n\n if (restListProps.onClick) {\n restListProps.onClick(event as MouseEvent<HTMLDivElement>);\n }\n\n notifyPopper(event);\n };\n\n const mergedInputProps = {\n ...inputProps.inputProps,\n role: \"combobox\",\n \"aria-owns\": listId,\n \"aria-label\": ariaLabel,\n \"aria-expanded\": isListOpen,\n \"aria-activedescendant\":\n isListOpen && selectionChanged ? null : ariaActiveDescendant,\n };\n\n return {\n inputRef: handleInputRef,\n listContext: {\n state,\n helpers,\n },\n inputProps: {\n ...restProps,\n ...inputProps,\n disabled,\n allowAnnouncement,\n id: inputId,\n value: inputValue,\n onFocus: handleInputFocus,\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n onSelect: handleInputSelect,\n inputProps: mergedInputProps,\n } as Partial<InputProps> & { allowAnnouncement: boolean },\n listProps: {\n ...restListProps,\n source,\n itemToString,\n itemTextHighlightPattern,\n onClick: handleListClick,\n isListOpen: isListOpen && Boolean(source.length),\n },\n };\n};\n"],"names":[],"mappings":"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"}
@@ -7,7 +7,6 @@ import '../../list-deprecated/ListItem.js';
7
7
  import '../../list-deprecated/ListItemContext.js';
8
8
  import '../../list-deprecated/ListStateContext.js';
9
9
  import { useList } from '../../list-deprecated/useList.js';
10
- import '../../utils/useFloatingUI.js';
11
10
  import '../../tokenized-input/TokenizedInput.js';
12
11
  import '../../tokenized-input/TokenizedInputBase.js';
13
12
  import { useTokenizedInput } from '../../tokenized-input/useTokenizedInput.js';
@@ -1 +1 @@
1
- {"version":3,"file":"useMultiSelectComboBox.js","sources":["../src/combo-box-deprecated/internal/useMultiSelectComboBox.ts"],"sourcesContent":["import {\n useControlled,\n useForkRef,\n useId,\n useIsFocusVisible,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEvent,\n RefObject,\n SyntheticEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useList } from \"../../list-deprecated\";\nimport { ExpandButtonProps, useTokenizedInput } from \"../../tokenized-input\";\nimport { defaultItemToString } from \"../../tokenized-input/internal/defaultItemToString\";\nimport { usePrevious } from \"@salt-ds/core\";\nimport { getDefaultFilter, getDefaultFilterRegex } from \"../filterHelpers\";\nimport { MultiSelectComboBoxProps } from \"./MultiSelectComboBox\";\nimport { isToggleList, usePopperStatus } from \"./usePopperStatus\";\n\nconst REQUIRE_PREV_HIGHLIGHT = [\"ArrowUp\", \"ArrowDown\", \"PageUp\", \"PageDown\"];\n\nexport type UseMultiSelectComboBoxProps<Item> = Omit<\n MultiSelectComboBoxProps<Item>,\n \"inputRef\" | \"listContext\" | \"inputHelpers\" | \"inputProps\" | \"listProps\"\n> & { expandButtonRef: RefObject<HTMLElement> };\n\nexport const useMultiSelectComboBox = <Item>(\n props: Omit<UseMultiSelectComboBoxProps<Item>, \"rootRef\" | \"classes\">\n) => {\n // Deconstruct valid props for List, everything else will be passed to `useTokenizedInput` using `restProps`\n const {\n allowFreeText,\n displayedItemCount,\n virtualized,\n disabled,\n expandButtonRef,\n onBlur,\n onFocus,\n onChange,\n onSelect,\n onInputChange,\n onInputFocus,\n onInputBlur,\n onInputSelect,\n id: idProp,\n source: sourceProp,\n selectedItem: selectedItemProp,\n inputValue: inputValueProp,\n initialOpen,\n initialSelectedItem: initialSelectedItems,\n \"aria-labelledby\": ariaLabelledBy,\n getFilterRegex = getDefaultFilterRegex,\n itemToString = defaultItemToString,\n stringToItem: stringToItemProp = (_: any, value: string) => value.trim(),\n InputProps = {\n onBlur,\n onFocus,\n onInputBlur,\n onInputFocus,\n onInputChange,\n onInputSelect,\n },\n ListProps = {},\n ...restProps\n } = props;\n\n const id = useId(idProp);\n const inputId = `${id}-input`;\n const listId = `${id}-list`;\n\n const [inputValue, setInputValue] = useControlled({\n controlled: inputValueProp,\n default: \"\",\n name: \"MultiSelectComboBox\",\n state: \"inputValue\",\n });\n\n const { isOpen: isListOpen, notifyPopper } = usePopperStatus({\n initialOpen,\n isMultiSelect: true,\n });\n\n const [selectionChanged, setSelectionChanged] = useState(false);\n const inputBlurTimeout = useRef<number>(null);\n\n const [allowAnnouncement, setAllowAnnouncement] = useState(false);\n\n const labels = useMemo(\n () => sourceProp.map(itemToString),\n [sourceProp, itemToString]\n );\n\n const source = useMemo(() => {\n if (inputValue && inputValue.trim().length) {\n const itemFilter = getDefaultFilter(inputValue, getFilterRegex);\n return sourceProp.filter((item: Item) => itemFilter(itemToString(item)));\n }\n return sourceProp;\n }, [inputValue, sourceProp, getFilterRegex, itemToString]);\n\n const itemTextHighlightPattern = useMemo(\n () =>\n inputValue && inputValue.trim().length\n ? getFilterRegex(inputValue)\n : undefined,\n [inputValue, getFilterRegex]\n );\n\n const {\n focusedRef,\n listProps,\n state: listState,\n helpers: listHelpers,\n } = useList<Item, \"multiple\">({\n ...ListProps,\n source,\n disabled,\n virtualized,\n itemToString,\n displayedItemCount,\n onChange,\n onSelect,\n id: listId,\n disableFocus: true,\n disableMouseDown: true,\n selectionVariant: \"multiple\",\n initialSelectedItem: initialSelectedItems,\n selectedItem: selectedItemProp,\n \"aria-labelledby\": ariaLabelledBy,\n });\n\n const { \"aria-activedescendant\": ariaActiveDescendant, ...restListProps } =\n listProps;\n const { selectedItem } = listState;\n const [quickSelection, setQuickSelection] = useState(false);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef,\n } = useIsFocusVisible();\n const selectedItems = selectedItem as Item[];\n const {\n setSelectedItem: setSelectedItems,\n setHighlightedIndex: setHighlightedListIndex,\n } = listHelpers;\n\n const handleInputFocus = (event: FocusEvent<HTMLInputElement>) => {\n handleFocusVisible(event);\n if (isFocusVisibleRef.current) {\n listHelpers.setFocusVisible(true);\n }\n\n if (InputProps.onInputFocus) {\n InputProps.onInputFocus(event);\n }\n\n notifyPopper(event);\n };\n\n const handleInputBlur = (\n event: FocusEvent<HTMLDivElement | HTMLInputElement>\n ) => {\n handleBlurVisible();\n setAllowAnnouncement(false);\n setInputValue(\"\");\n\n if (restListProps.onBlur) {\n restListProps.onBlur(event);\n }\n\n if (InputProps.onInputBlur) {\n InputProps.onInputBlur(event as FocusEvent<HTMLInputElement>);\n }\n\n notifyPopper(event);\n };\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n\n setQuickSelection(event.target.value.length > 0 && !allowFreeText);\n\n if (InputProps.onInputChange) {\n InputProps.onInputChange(event);\n }\n };\n\n const handleItemsChange = (newItems: Item[] | undefined) => {\n const uniqueItems = Array.from(new Set(newItems));\n setSelectedItems(uniqueItems);\n onChange && onChange(null as unknown as ChangeEvent, uniqueItems);\n };\n\n const handleInputSelect = (event: SyntheticEvent<HTMLInputElement>) => {\n event.persist();\n setSelectionChanged(true);\n\n if (InputProps.onInputSelect) {\n InputProps.onInputSelect(event);\n }\n };\n\n const handleClear = () => {\n setSelectedItems([]);\n };\n\n const stringToItem = (selected: Item[], value: string): Item | null => {\n const trimmed = value.trim();\n const item = stringToItemProp(selected, trimmed);\n const isSelected = selected.map(itemToString).indexOf(trimmed) !== -1;\n\n // Either allow free text item OR the item has to be in the source list\n return !isSelected && (allowFreeText || labels.indexOf(trimmed) !== -1)\n ? (item as Item)\n : null;\n };\n\n // Reuse selectItem from list state for a controlled version of tokenized input\n const {\n inputRef,\n inputProps,\n state: inputState,\n helpers: inputHelpers,\n } = useTokenizedInput({\n ...restProps,\n ...InputProps,\n disabled,\n itemToString,\n stringToItem,\n selectedItems,\n initialSelectedItems,\n onInputFocus: handleInputFocus,\n onInputBlur: handleInputBlur,\n onInputChange: handleInputChange,\n onInputSelect: handleInputSelect,\n onChange: handleItemsChange,\n onClear: handleClear,\n onKeyDown: InputProps.onKeyDown as KeyboardEventHandler<\n HTMLInputElement | HTMLButtonElement\n >,\n });\n\n const handleFocusVisibleRef = useForkRef(focusVisibleRef, focusedRef);\n const handleInputRef = useForkRef(inputRef, handleFocusVisibleRef);\n\n const { setHighlightedIndex: setHighlightedPillIndex } = inputHelpers;\n\n // Reset highlight when list closes\n useEffect(() => {\n if (!isListOpen) {\n setHighlightedListIndex(undefined);\n setQuickSelection(false);\n }\n }, [isListOpen, setHighlightedListIndex, setQuickSelection]);\n\n const previousSelectedItems = usePrevious(selectedItems);\n\n // Reset list highlight when selectItems change\n useIsomorphicLayoutEffect(() => {\n if (\n selectedItems.some(\n (item) => !(previousSelectedItems || []).includes(item)\n )\n ) {\n setInputValue(\"\");\n }\n\n if (!selectedItems.length) {\n setHighlightedListIndex(undefined);\n }\n }, [\n selectedItems,\n previousSelectedItems,\n setInputValue,\n setHighlightedListIndex,\n ]);\n\n // Remove highlight from list if a pill is highlighted\n useEffect(() => {\n if (\n inputState.highlightedIndex != null &&\n inputState.highlightedIndex >= 0\n ) {\n setHighlightedListIndex(undefined);\n setQuickSelection(false);\n }\n }, [inputState.highlightedIndex, setHighlightedListIndex, setQuickSelection]);\n\n const highlightedIndex = listState && listState.highlightedIndex;\n\n // Remove highlight from pills if a list item is highlighted\n useEffect(() => {\n if (highlightedIndex != null && highlightedIndex >= 0) {\n setHighlightedPillIndex(undefined);\n }\n }, [highlightedIndex, setHighlightedPillIndex]);\n\n // Keep highlighted index in sync with the filtered source\n useEffect(() => {\n setHighlightedListIndex(undefined);\n }, [source, setHighlightedListIndex]);\n\n const handleFirstItemSelection = (event: KeyboardEvent | ChangeEvent) => {\n if (\n !allowFreeText &&\n (event as KeyboardEvent).key === \"Enter\" &&\n quickSelection\n ) {\n const newItem = source[0];\n const newSelectedItems =\n selectedItems.indexOf(newItem) === -1\n ? selectedItems.concat(source.slice(0, 1))\n : selectedItems.filter((item) => item !== newItem);\n setSelectedItems(newSelectedItems);\n onSelect && onSelect(event, newItem);\n onChange && onChange(event as ChangeEvent, newSelectedItems);\n }\n };\n\n const handleListOpenKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (\"Escape\" === event.key && inputProps.expanded) {\n setTimeout(() => {\n if (expandButtonRef.current) {\n expandButtonRef.current.focus();\n }\n }, 250);\n }\n\n handleFirstItemSelection(event);\n\n if (\n \"Home\" !== event.key &&\n \"End\" !== event.key &&\n !(\" \" === event.key && !event.ctrlKey)\n ) {\n if (restListProps.onKeyDown) {\n restListProps.onKeyDown(event);\n }\n setSelectionChanged(false);\n }\n };\n\n const handleInputKeyDown = (\n event: KeyboardEvent<HTMLInputElement | HTMLButtonElement | HTMLDivElement>\n ) => {\n if (\"Escape\" === event.key) {\n setInputValue(\"\");\n setHighlightedListIndex(undefined);\n }\n\n // Space key clashes with the remove action of TokenizedInput\n // For combo box, pressing a space key should just add a space\n if (\" \" === event.key && !event.ctrlKey) {\n setHighlightedPillIndex(undefined);\n } else {\n if (inputProps.onKeyDown) {\n inputProps.onKeyDown(\n event as KeyboardEvent<HTMLInputElement | HTMLButtonElement>\n );\n }\n }\n\n if (\n !isToggleList(event) &&\n listState.highlightedIndex == null &&\n REQUIRE_PREV_HIGHLIGHT.indexOf(event.key) !== -1\n ) {\n event.preventDefault();\n // Initialize list highlight if there's no previous value\n setHighlightedListIndex(\n Math.min(quickSelection ? 1 : 0, source.length - 1)\n );\n setQuickSelection(false);\n setSelectionChanged(false);\n } else if (isListOpen) {\n handleListOpenKeyDown(event as KeyboardEvent<HTMLDivElement>);\n }\n\n // Don't announce for deleting values\n setAllowAnnouncement(\"Backspace\" !== event.key);\n notifyPopper(event);\n };\n\n const handleListClick = (event: MouseEvent<HTMLDivElement>) => {\n clearTimeout(\n inputBlurTimeout.current == null ? undefined : inputBlurTimeout.current\n );\n const inputEl = inputRef && (inputRef as RefObject<HTMLElement>).current;\n if (inputEl) {\n inputEl.focus();\n }\n\n if (restListProps.onClick) {\n restListProps.onClick(event);\n }\n };\n\n const mergedInputProps = {\n ...inputProps.InputProps,\n inputProps: {\n ...(inputProps.InputProps || {}).inputProps,\n role: \"textbox\",\n \"aria-roledescription\": \"MultiSelect Combobox\",\n },\n };\n\n if (ariaActiveDescendant && !selectionChanged) {\n // either null or undefined will prevent tokenized-input from\n // setting active-descendant based on pill selection.\n mergedInputProps.inputProps[\"aria-activedescendant\"] = ariaActiveDescendant;\n }\n\n const expandButtonProps = {\n accessibleText: undefined,\n role: \"button\",\n \"aria-roledescription\": \"Expand combobox button\",\n \"aria-labelledby\": [ariaLabelledBy, `${inputId}-input`]\n .filter(Boolean)\n .join(\" \"),\n } as ExpandButtonProps;\n\n return {\n inputHelpers,\n inputRef: handleInputRef,\n listContext: {\n state: listState,\n helpers: listHelpers,\n },\n inputProps: {\n ...inputProps,\n selectedItems,\n allowAnnouncement,\n id: inputId,\n value: inputValue,\n ExpandButtonProps: expandButtonProps,\n InputProps: mergedInputProps,\n onKeyDown: handleInputKeyDown,\n },\n listProps: {\n ...restListProps,\n source,\n itemToString,\n itemTextHighlightPattern,\n onClick: handleListClick,\n isListOpen: isListOpen && Boolean(source.length),\n },\n };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMultiSelectComboBox.js","sources":["../src/combo-box-deprecated/internal/useMultiSelectComboBox.ts"],"sourcesContent":["import {\n useControlled,\n useForkRef,\n useId,\n useIsFocusVisible,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEvent,\n RefObject,\n SyntheticEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useList } from \"../../list-deprecated\";\nimport { ExpandButtonProps, useTokenizedInput } from \"../../tokenized-input\";\nimport { defaultItemToString } from \"../../tokenized-input/internal/defaultItemToString\";\nimport { usePrevious } from \"@salt-ds/core\";\nimport { getDefaultFilter, getDefaultFilterRegex } from \"../filterHelpers\";\nimport { MultiSelectComboBoxProps } from \"./MultiSelectComboBox\";\nimport { isToggleList, usePopperStatus } from \"./usePopperStatus\";\n\nconst REQUIRE_PREV_HIGHLIGHT = [\"ArrowUp\", \"ArrowDown\", \"PageUp\", \"PageDown\"];\n\nexport type UseMultiSelectComboBoxProps<Item> = Omit<\n MultiSelectComboBoxProps<Item>,\n \"inputRef\" | \"listContext\" | \"inputHelpers\" | \"inputProps\" | \"listProps\"\n> & { expandButtonRef: RefObject<HTMLElement> };\n\nexport const useMultiSelectComboBox = <Item>(\n props: Omit<UseMultiSelectComboBoxProps<Item>, \"rootRef\" | \"classes\">\n) => {\n // Deconstruct valid props for List, everything else will be passed to `useTokenizedInput` using `restProps`\n const {\n allowFreeText,\n displayedItemCount,\n virtualized,\n disabled,\n expandButtonRef,\n onBlur,\n onFocus,\n onChange,\n onSelect,\n onInputChange,\n onInputFocus,\n onInputBlur,\n onInputSelect,\n id: idProp,\n source: sourceProp,\n selectedItem: selectedItemProp,\n inputValue: inputValueProp,\n initialOpen,\n initialSelectedItem: initialSelectedItems,\n \"aria-labelledby\": ariaLabelledBy,\n getFilterRegex = getDefaultFilterRegex,\n itemToString = defaultItemToString,\n stringToItem: stringToItemProp = (_: any, value: string) => value.trim(),\n InputProps = {\n onBlur,\n onFocus,\n onInputBlur,\n onInputFocus,\n onInputChange,\n onInputSelect,\n },\n ListProps = {},\n ...restProps\n } = props;\n\n const id = useId(idProp);\n const inputId = `${id}-input`;\n const listId = `${id}-list`;\n\n const [inputValue, setInputValue] = useControlled({\n controlled: inputValueProp,\n default: \"\",\n name: \"MultiSelectComboBox\",\n state: \"inputValue\",\n });\n\n const { isOpen: isListOpen, notifyPopper } = usePopperStatus({\n initialOpen,\n isMultiSelect: true,\n });\n\n const [selectionChanged, setSelectionChanged] = useState(false);\n const inputBlurTimeout = useRef<number>(null);\n\n const [allowAnnouncement, setAllowAnnouncement] = useState(false);\n\n const labels = useMemo(\n () => sourceProp.map(itemToString),\n [sourceProp, itemToString]\n );\n\n const source = useMemo(() => {\n if (inputValue && inputValue.trim().length) {\n const itemFilter = getDefaultFilter(inputValue, getFilterRegex);\n return sourceProp.filter((item: Item) => itemFilter(itemToString(item)));\n }\n return sourceProp;\n }, [inputValue, sourceProp, getFilterRegex, itemToString]);\n\n const itemTextHighlightPattern = useMemo(\n () =>\n inputValue && inputValue.trim().length\n ? getFilterRegex(inputValue)\n : undefined,\n [inputValue, getFilterRegex]\n );\n\n const {\n focusedRef,\n listProps,\n state: listState,\n helpers: listHelpers,\n } = useList<Item, \"multiple\">({\n ...ListProps,\n source,\n disabled,\n virtualized,\n itemToString,\n displayedItemCount,\n onChange,\n onSelect,\n id: listId,\n disableFocus: true,\n disableMouseDown: true,\n selectionVariant: \"multiple\",\n initialSelectedItem: initialSelectedItems,\n selectedItem: selectedItemProp,\n \"aria-labelledby\": ariaLabelledBy,\n });\n\n const { \"aria-activedescendant\": ariaActiveDescendant, ...restListProps } =\n listProps;\n const { selectedItem } = listState;\n const [quickSelection, setQuickSelection] = useState(false);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef,\n } = useIsFocusVisible();\n const selectedItems = selectedItem as Item[];\n const {\n setSelectedItem: setSelectedItems,\n setHighlightedIndex: setHighlightedListIndex,\n } = listHelpers;\n\n const handleInputFocus = (event: FocusEvent<HTMLInputElement>) => {\n handleFocusVisible(event);\n if (isFocusVisibleRef.current) {\n listHelpers.setFocusVisible(true);\n }\n\n if (InputProps.onInputFocus) {\n InputProps.onInputFocus(event);\n }\n\n notifyPopper(event);\n };\n\n const handleInputBlur = (\n event: FocusEvent<HTMLDivElement | HTMLInputElement>\n ) => {\n handleBlurVisible();\n setAllowAnnouncement(false);\n setInputValue(\"\");\n\n if (restListProps.onBlur) {\n restListProps.onBlur(event);\n }\n\n if (InputProps.onInputBlur) {\n InputProps.onInputBlur(event as FocusEvent<HTMLInputElement>);\n }\n\n notifyPopper(event);\n };\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n\n setQuickSelection(event.target.value.length > 0 && !allowFreeText);\n\n if (InputProps.onInputChange) {\n InputProps.onInputChange(event);\n }\n };\n\n const handleItemsChange = (newItems: Item[] | undefined) => {\n const uniqueItems = Array.from(new Set(newItems));\n setSelectedItems(uniqueItems);\n onChange && onChange(null as unknown as ChangeEvent, uniqueItems);\n };\n\n const handleInputSelect = (event: SyntheticEvent<HTMLInputElement>) => {\n event.persist();\n setSelectionChanged(true);\n\n if (InputProps.onInputSelect) {\n InputProps.onInputSelect(event);\n }\n };\n\n const handleClear = () => {\n setSelectedItems([]);\n };\n\n const stringToItem = (selected: Item[], value: string): Item | null => {\n const trimmed = value.trim();\n const item = stringToItemProp(selected, trimmed);\n const isSelected = selected.map(itemToString).indexOf(trimmed) !== -1;\n\n // Either allow free text item OR the item has to be in the source list\n return !isSelected && (allowFreeText || labels.indexOf(trimmed) !== -1)\n ? (item as Item)\n : null;\n };\n\n // Reuse selectItem from list state for a controlled version of tokenized input\n const {\n inputRef,\n inputProps,\n state: inputState,\n helpers: inputHelpers,\n } = useTokenizedInput({\n ...restProps,\n ...InputProps,\n disabled,\n itemToString,\n stringToItem,\n selectedItems,\n initialSelectedItems,\n onInputFocus: handleInputFocus,\n onInputBlur: handleInputBlur,\n onInputChange: handleInputChange,\n onInputSelect: handleInputSelect,\n onChange: handleItemsChange,\n onClear: handleClear,\n onKeyDown: InputProps.onKeyDown as KeyboardEventHandler<\n HTMLInputElement | HTMLButtonElement\n >,\n });\n\n const handleFocusVisibleRef = useForkRef(focusVisibleRef, focusedRef);\n const handleInputRef = useForkRef(inputRef, handleFocusVisibleRef);\n\n const { setHighlightedIndex: setHighlightedPillIndex } = inputHelpers;\n\n // Reset highlight when list closes\n useEffect(() => {\n if (!isListOpen) {\n setHighlightedListIndex(undefined);\n setQuickSelection(false);\n }\n }, [isListOpen, setHighlightedListIndex, setQuickSelection]);\n\n const previousSelectedItems = usePrevious(selectedItems);\n\n // Reset list highlight when selectItems change\n useIsomorphicLayoutEffect(() => {\n if (\n selectedItems.some(\n (item) => !(previousSelectedItems || []).includes(item)\n )\n ) {\n setInputValue(\"\");\n }\n\n if (!selectedItems.length) {\n setHighlightedListIndex(undefined);\n }\n }, [\n selectedItems,\n previousSelectedItems,\n setInputValue,\n setHighlightedListIndex,\n ]);\n\n // Remove highlight from list if a pill is highlighted\n useEffect(() => {\n if (\n inputState.highlightedIndex != null &&\n inputState.highlightedIndex >= 0\n ) {\n setHighlightedListIndex(undefined);\n setQuickSelection(false);\n }\n }, [inputState.highlightedIndex, setHighlightedListIndex, setQuickSelection]);\n\n const highlightedIndex = listState && listState.highlightedIndex;\n\n // Remove highlight from pills if a list item is highlighted\n useEffect(() => {\n if (highlightedIndex != null && highlightedIndex >= 0) {\n setHighlightedPillIndex(undefined);\n }\n }, [highlightedIndex, setHighlightedPillIndex]);\n\n // Keep highlighted index in sync with the filtered source\n useEffect(() => {\n setHighlightedListIndex(undefined);\n }, [source, setHighlightedListIndex]);\n\n const handleFirstItemSelection = (event: KeyboardEvent | ChangeEvent) => {\n if (\n !allowFreeText &&\n (event as KeyboardEvent).key === \"Enter\" &&\n quickSelection\n ) {\n const newItem = source[0];\n const newSelectedItems =\n selectedItems.indexOf(newItem) === -1\n ? selectedItems.concat(source.slice(0, 1))\n : selectedItems.filter((item) => item !== newItem);\n setSelectedItems(newSelectedItems);\n onSelect && onSelect(event, newItem);\n onChange && onChange(event as ChangeEvent, newSelectedItems);\n }\n };\n\n const handleListOpenKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (\"Escape\" === event.key && inputProps.expanded) {\n setTimeout(() => {\n if (expandButtonRef.current) {\n expandButtonRef.current.focus();\n }\n }, 250);\n }\n\n handleFirstItemSelection(event);\n\n if (\n \"Home\" !== event.key &&\n \"End\" !== event.key &&\n !(\" \" === event.key && !event.ctrlKey)\n ) {\n if (restListProps.onKeyDown) {\n restListProps.onKeyDown(event);\n }\n setSelectionChanged(false);\n }\n };\n\n const handleInputKeyDown = (\n event: KeyboardEvent<HTMLInputElement | HTMLButtonElement | HTMLDivElement>\n ) => {\n if (\"Escape\" === event.key) {\n setInputValue(\"\");\n setHighlightedListIndex(undefined);\n }\n\n // Space key clashes with the remove action of TokenizedInput\n // For combo box, pressing a space key should just add a space\n if (\" \" === event.key && !event.ctrlKey) {\n setHighlightedPillIndex(undefined);\n } else {\n if (inputProps.onKeyDown) {\n inputProps.onKeyDown(\n event as KeyboardEvent<HTMLInputElement | HTMLButtonElement>\n );\n }\n }\n\n if (\n !isToggleList(event) &&\n listState.highlightedIndex == null &&\n REQUIRE_PREV_HIGHLIGHT.indexOf(event.key) !== -1\n ) {\n event.preventDefault();\n // Initialize list highlight if there's no previous value\n setHighlightedListIndex(\n Math.min(quickSelection ? 1 : 0, source.length - 1)\n );\n setQuickSelection(false);\n setSelectionChanged(false);\n } else if (isListOpen) {\n handleListOpenKeyDown(event as KeyboardEvent<HTMLDivElement>);\n }\n\n // Don't announce for deleting values\n setAllowAnnouncement(\"Backspace\" !== event.key);\n notifyPopper(event);\n };\n\n const handleListClick = (event: MouseEvent<HTMLDivElement>) => {\n clearTimeout(\n inputBlurTimeout.current == null ? undefined : inputBlurTimeout.current\n );\n const inputEl = inputRef && (inputRef as RefObject<HTMLElement>).current;\n if (inputEl) {\n inputEl.focus();\n }\n\n if (restListProps.onClick) {\n restListProps.onClick(event);\n }\n };\n\n const mergedInputProps = {\n ...inputProps.InputProps,\n inputProps: {\n ...(inputProps.InputProps || {}).inputProps,\n role: \"textbox\",\n \"aria-roledescription\": \"MultiSelect Combobox\",\n },\n };\n\n if (ariaActiveDescendant && !selectionChanged) {\n // either null or undefined will prevent tokenized-input from\n // setting active-descendant based on pill selection.\n mergedInputProps.inputProps[\"aria-activedescendant\"] = ariaActiveDescendant;\n }\n\n const expandButtonProps = {\n accessibleText: undefined,\n role: \"button\",\n \"aria-roledescription\": \"Expand combobox button\",\n \"aria-labelledby\": [ariaLabelledBy, `${inputId}-input`]\n .filter(Boolean)\n .join(\" \"),\n } as ExpandButtonProps;\n\n return {\n inputHelpers,\n inputRef: handleInputRef,\n listContext: {\n state: listState,\n helpers: listHelpers,\n },\n inputProps: {\n ...inputProps,\n selectedItems,\n allowAnnouncement,\n id: inputId,\n value: inputValue,\n ExpandButtonProps: expandButtonProps,\n InputProps: mergedInputProps,\n onKeyDown: handleInputKeyDown,\n },\n listProps: {\n ...restListProps,\n source,\n itemToString,\n itemTextHighlightPattern,\n onClick: handleListClick,\n isListOpen: isListOpen && Boolean(source.length),\n },\n };\n};\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import { useRef, useCallback } from 'react';
2
2
  import { useIsomorphicLayoutEffect } from '@salt-ds/core';
3
3
  import 'react/jsx-runtime';
4
4
  import { useResizeObserver } from '../responsive/useResizeObserver.js';
5
- import '../utils/useFloatingUI.js';
6
5
 
7
6
  const HeightOnly = ["height"];
8
7
  const HeightWithScroll = ["height", "scrollHeight"];
@@ -1 +1 @@
1
- {"version":3,"file":"useViewportTracking.js","sources":["../src/common-hooks/useViewportTracking.ts"],"sourcesContent":["import { MutableRefObject, RefObject, useCallback, useRef } from \"react\";\nimport { CollectionItem } from \"./collectionTypes\";\nimport { ResizeHandler, useResizeObserver } from \"../responsive\";\nimport { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\n\nconst HeightOnly = [\"height\"];\nconst HeightWithScroll = [\"height\", \"scrollHeight\"];\nconst EMPTY_ARRAY: any[] = [];\n\nconst ObservedDimensions = {\n containerOnly: [HeightWithScroll, EMPTY_ARRAY],\n withContent: [HeightOnly, HeightOnly],\n};\nconst getObservedDimensions = (containerOnly: boolean) =>\n containerOnly\n ? ObservedDimensions.containerOnly\n : ObservedDimensions.withContent;\n\nconst NULL_REF = { current: null };\n\nconst getItemTop = (\n element: HTMLElement,\n offsetContainer: HTMLElement | null\n) => {\n const { transform = \"none\" } = getComputedStyle(element);\n if (transform.startsWith(\"matrix\")) {\n const pos = transform.lastIndexOf(\",\");\n return parseInt(transform.slice(pos + 1));\n } else {\n let offsetParent = element.offsetParent as HTMLElement;\n if (offsetParent === offsetContainer || offsetContainer === null) {\n return element.offsetTop;\n } else {\n let top = element.offsetTop;\n while (offsetParent !== null && offsetParent !== offsetContainer) {\n top += offsetParent.offsetTop;\n offsetParent = offsetParent.offsetParent as HTMLElement;\n }\n return top;\n }\n }\n};\n\nexport interface ViewportTrackingProps<Item> {\n containerRef: RefObject<HTMLElement>;\n contentRef?: RefObject<HTMLElement>;\n highlightedIdx?: number;\n indexPositions: CollectionItem<Item>[];\n stickyHeaders?: boolean;\n}\n\nexport interface ViewportTrackingResult<Item> {\n isScrolling: MutableRefObject<boolean>;\n scrollIntoView: (item: CollectionItem<Item>) => void;\n}\n\nexport const useViewportTracking = <Item>({\n containerRef,\n contentRef = NULL_REF,\n highlightedIdx = -1,\n indexPositions,\n stickyHeaders = false,\n}: ViewportTrackingProps<Item>): ViewportTrackingResult<Item> => {\n const scrolling = useRef<boolean>(false);\n const viewport = useRef({\n height: 0,\n contentHeight: 0,\n });\n\n const scrollTo = useCallback((scrollPos: number) => {\n scrolling.current = true;\n if (containerRef.current) {\n containerRef.current.scrollTop = scrollPos;\n }\n setTimeout(() => {\n scrolling.current = false;\n });\n }, []);\n\n const scrollToStart = useCallback(() => scrollTo(0), [scrollTo]);\n\n const scrollToEnd = useCallback(() => {\n scrollTo(viewport.current.contentHeight - viewport.current.height);\n }, [scrollTo]);\n\n const scrollIntoViewIfNeeded = useCallback(\n (item: CollectionItem<Item>) => {\n const offsetContainer = contentRef.current || containerRef.current;\n if (item.id) {\n const el = document.getElementById(item.id);\n if (el && containerRef.current) {\n const { height: viewportHeight } = viewport.current;\n const targetEl =\n el.ariaExpanded && el.firstChild\n ? (el.firstChild as HTMLElement)\n : el;\n const headerHeight = stickyHeaders ? 36 : 0;\n const itemTop = getItemTop(targetEl, offsetContainer);\n const itemHeight = targetEl.offsetHeight;\n const { scrollTop } = containerRef.current;\n const viewportStart = scrollTop + headerHeight;\n const viewportEnd = viewportStart + viewportHeight - headerHeight;\n\n if (itemTop + itemHeight > viewportEnd || itemTop < viewportStart) {\n const newScrollTop =\n itemTop + itemHeight > viewportEnd\n ? scrollTop + (itemTop + itemHeight) - viewportEnd\n : itemTop - headerHeight;\n\n scrollTo(newScrollTop);\n }\n }\n }\n },\n [containerRef, contentRef, scrollTo, stickyHeaders]\n );\n\n useIsomorphicLayoutEffect(() => {\n const { height, contentHeight } = viewport.current;\n const item = indexPositions[highlightedIdx];\n if (contentHeight > height && item) {\n const [firstItem] = indexPositions;\n const [lastItem] = indexPositions.slice(-1);\n if (item === firstItem) {\n scrollToStart();\n } else if (item === lastItem) {\n scrollToEnd();\n } else {\n scrollIntoViewIfNeeded(indexPositions[highlightedIdx]);\n }\n }\n }, [\n highlightedIdx,\n indexPositions,\n scrollIntoViewIfNeeded,\n scrollToEnd,\n scrollToStart,\n ]);\n\n const onContainerResize: ResizeHandler = useCallback(\n ({ height, scrollHeight }) => {\n if (typeof height === \"number\") {\n viewport.current.height = height;\n }\n if (typeof scrollHeight === \"number\") {\n viewport.current.contentHeight = scrollHeight;\n }\n },\n []\n );\n\n const onContentResize: ResizeHandler = useCallback(({ height }) => {\n if (typeof height === \"number\") {\n viewport.current.contentHeight = height;\n }\n }, []);\n\n // If we only have a container, then we will observe its height and scrollHeight,\n // contentRef will be null, so second call to observer will observe nothing.\n // If we have both container and content, then we observe the height of each.\n const [containerDimensions, contentDimensions] = getObservedDimensions(\n contentRef === NULL_REF\n );\n useResizeObserver(containerRef, containerDimensions, onContainerResize, true);\n useResizeObserver(contentRef, contentDimensions, onContentResize, true);\n\n return {\n isScrolling: scrolling,\n scrollIntoView: scrollIntoViewIfNeeded,\n };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useViewportTracking.js","sources":["../src/common-hooks/useViewportTracking.ts"],"sourcesContent":["import { MutableRefObject, RefObject, useCallback, useRef } from \"react\";\nimport { CollectionItem } from \"./collectionTypes\";\nimport { ResizeHandler, useResizeObserver } from \"../responsive\";\nimport { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\n\nconst HeightOnly = [\"height\"];\nconst HeightWithScroll = [\"height\", \"scrollHeight\"];\nconst EMPTY_ARRAY: any[] = [];\n\nconst ObservedDimensions = {\n containerOnly: [HeightWithScroll, EMPTY_ARRAY],\n withContent: [HeightOnly, HeightOnly],\n};\nconst getObservedDimensions = (containerOnly: boolean) =>\n containerOnly\n ? ObservedDimensions.containerOnly\n : ObservedDimensions.withContent;\n\nconst NULL_REF = { current: null };\n\nconst getItemTop = (\n element: HTMLElement,\n offsetContainer: HTMLElement | null\n) => {\n const { transform = \"none\" } = getComputedStyle(element);\n if (transform.startsWith(\"matrix\")) {\n const pos = transform.lastIndexOf(\",\");\n return parseInt(transform.slice(pos + 1));\n } else {\n let offsetParent = element.offsetParent as HTMLElement;\n if (offsetParent === offsetContainer || offsetContainer === null) {\n return element.offsetTop;\n } else {\n let top = element.offsetTop;\n while (offsetParent !== null && offsetParent !== offsetContainer) {\n top += offsetParent.offsetTop;\n offsetParent = offsetParent.offsetParent as HTMLElement;\n }\n return top;\n }\n }\n};\n\nexport interface ViewportTrackingProps<Item> {\n containerRef: RefObject<HTMLElement>;\n contentRef?: RefObject<HTMLElement>;\n highlightedIdx?: number;\n indexPositions: CollectionItem<Item>[];\n stickyHeaders?: boolean;\n}\n\nexport interface ViewportTrackingResult<Item> {\n isScrolling: MutableRefObject<boolean>;\n scrollIntoView: (item: CollectionItem<Item>) => void;\n}\n\nexport const useViewportTracking = <Item>({\n containerRef,\n contentRef = NULL_REF,\n highlightedIdx = -1,\n indexPositions,\n stickyHeaders = false,\n}: ViewportTrackingProps<Item>): ViewportTrackingResult<Item> => {\n const scrolling = useRef<boolean>(false);\n const viewport = useRef({\n height: 0,\n contentHeight: 0,\n });\n\n const scrollTo = useCallback((scrollPos: number) => {\n scrolling.current = true;\n if (containerRef.current) {\n containerRef.current.scrollTop = scrollPos;\n }\n setTimeout(() => {\n scrolling.current = false;\n });\n }, []);\n\n const scrollToStart = useCallback(() => scrollTo(0), [scrollTo]);\n\n const scrollToEnd = useCallback(() => {\n scrollTo(viewport.current.contentHeight - viewport.current.height);\n }, [scrollTo]);\n\n const scrollIntoViewIfNeeded = useCallback(\n (item: CollectionItem<Item>) => {\n const offsetContainer = contentRef.current || containerRef.current;\n if (item.id) {\n const el = document.getElementById(item.id);\n if (el && containerRef.current) {\n const { height: viewportHeight } = viewport.current;\n const targetEl =\n el.ariaExpanded && el.firstChild\n ? (el.firstChild as HTMLElement)\n : el;\n const headerHeight = stickyHeaders ? 36 : 0;\n const itemTop = getItemTop(targetEl, offsetContainer);\n const itemHeight = targetEl.offsetHeight;\n const { scrollTop } = containerRef.current;\n const viewportStart = scrollTop + headerHeight;\n const viewportEnd = viewportStart + viewportHeight - headerHeight;\n\n if (itemTop + itemHeight > viewportEnd || itemTop < viewportStart) {\n const newScrollTop =\n itemTop + itemHeight > viewportEnd\n ? scrollTop + (itemTop + itemHeight) - viewportEnd\n : itemTop - headerHeight;\n\n scrollTo(newScrollTop);\n }\n }\n }\n },\n [containerRef, contentRef, scrollTo, stickyHeaders]\n );\n\n useIsomorphicLayoutEffect(() => {\n const { height, contentHeight } = viewport.current;\n const item = indexPositions[highlightedIdx];\n if (contentHeight > height && item) {\n const [firstItem] = indexPositions;\n const [lastItem] = indexPositions.slice(-1);\n if (item === firstItem) {\n scrollToStart();\n } else if (item === lastItem) {\n scrollToEnd();\n } else {\n scrollIntoViewIfNeeded(indexPositions[highlightedIdx]);\n }\n }\n }, [\n highlightedIdx,\n indexPositions,\n scrollIntoViewIfNeeded,\n scrollToEnd,\n scrollToStart,\n ]);\n\n const onContainerResize: ResizeHandler = useCallback(\n ({ height, scrollHeight }) => {\n if (typeof height === \"number\") {\n viewport.current.height = height;\n }\n if (typeof scrollHeight === \"number\") {\n viewport.current.contentHeight = scrollHeight;\n }\n },\n []\n );\n\n const onContentResize: ResizeHandler = useCallback(({ height }) => {\n if (typeof height === \"number\") {\n viewport.current.contentHeight = height;\n }\n }, []);\n\n // If we only have a container, then we will observe its height and scrollHeight,\n // contentRef will be null, so second call to observer will observe nothing.\n // If we have both container and content, then we observe the height of each.\n const [containerDimensions, contentDimensions] = getObservedDimensions(\n contentRef === NULL_REF\n );\n useResizeObserver(containerRef, containerDimensions, onContainerResize, true);\n useResizeObserver(contentRef, contentDimensions, onContentResize, true);\n\n return {\n isScrolling: scrolling,\n scrollIntoView: scrollIntoViewIfNeeded,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { escapeRegExp } from '../../utils/escapeRegExp.js';
2
2
  import 'react';
3
3
  import '@salt-ds/core';
4
- import '../../utils/useFloatingUI.js';
5
4
 
6
5
  const leftTrim = (value) => value ? value.replace(/^\s+/g, "") : value;
7
6
  const getDefaultFilterRegex = (value) => new RegExp(`(${escapeRegExp(leftTrim(value))})`, "gi");
@@ -1 +1 @@
1
- {"version":3,"file":"filter-utils.js","sources":["../src/common-hooks/utils/filter-utils.ts"],"sourcesContent":["import { escapeRegExp } from \"../../utils\";\n\nexport type GetFilterRegex = (inputValue: string) => RegExp;\n\nexport type FilterPredicate = (item: string) => boolean;\n\nconst leftTrim = (value: string) =>\n value ? value.replace(/^\\s+/g, \"\") : value;\n\nexport const getDefaultFilterRegex: GetFilterRegex = (value) =>\n new RegExp(`(${escapeRegExp(leftTrim(value))})`, \"gi\");\n\nexport const getDefaultFilter =\n (inputValue = \"\", getFilterRegex: GetFilterRegex = getDefaultFilterRegex) =>\n (itemValue = \"\"): boolean =>\n Boolean(itemValue.length) &&\n Boolean(inputValue.length) &&\n itemValue.match(getFilterRegex(inputValue)) !== null;\n"],"names":[],"mappings":";;;;;AAMA,MAAM,QAAA,GAAW,CAAC,KAChB,KAAA,KAAA,GAAQ,MAAM,OAAQ,CAAA,OAAA,EAAS,EAAE,CAAI,GAAA,KAAA,CAAA;AAE1B,MAAA,qBAAA,GAAwC,CAAC,KAAA,KACpD,IAAI,MAAA,CAAO,CAAI,CAAA,EAAA,YAAA,CAAa,QAAS,CAAA,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,EAAM,IAAI,EAAA;AAE1C,MAAA,gBAAA,GACX,CAAC,UAAa,GAAA,EAAA,EAAI,iBAAiC,qBACnD,KAAA,CAAC,SAAY,GAAA,EAAA,KACX,OAAQ,CAAA,SAAA,CAAU,MAAM,CACxB,IAAA,OAAA,CAAQ,WAAW,MAAM,CAAA,IACzB,UAAU,KAAM,CAAA,cAAA,CAAe,UAAU,CAAC,CAAM,KAAA;;;;"}
1
+ {"version":3,"file":"filter-utils.js","sources":["../src/common-hooks/utils/filter-utils.ts"],"sourcesContent":["import { escapeRegExp } from \"../../utils\";\n\nexport type GetFilterRegex = (inputValue: string) => RegExp;\n\nexport type FilterPredicate = (item: string) => boolean;\n\nconst leftTrim = (value: string) =>\n value ? value.replace(/^\\s+/g, \"\") : value;\n\nexport const getDefaultFilterRegex: GetFilterRegex = (value) =>\n new RegExp(`(${escapeRegExp(leftTrim(value))})`, \"gi\");\n\nexport const getDefaultFilter =\n (inputValue = \"\", getFilterRegex: GetFilterRegex = getDefaultFilterRegex) =>\n (itemValue = \"\"): boolean =>\n Boolean(itemValue.length) &&\n Boolean(inputValue.length) &&\n itemValue.match(getFilterRegex(inputValue)) !== null;\n"],"names":[],"mappings":";;;;AAMA,MAAM,QAAA,GAAW,CAAC,KAChB,KAAA,KAAA,GAAQ,MAAM,OAAQ,CAAA,OAAA,EAAS,EAAE,CAAI,GAAA,KAAA,CAAA;AAE1B,MAAA,qBAAA,GAAwC,CAAC,KAAA,KACpD,IAAI,MAAA,CAAO,CAAI,CAAA,EAAA,YAAA,CAAa,QAAS,CAAA,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,EAAM,IAAI,EAAA;AAE1C,MAAA,gBAAA,GACX,CAAC,UAAa,GAAA,EAAA,EAAI,iBAAiC,qBACnD,KAAA,CAAC,SAAY,GAAA,EAAA,KACX,OAAQ,CAAA,SAAA,CAAU,MAAM,CACxB,IAAA,OAAA,CAAQ,WAAW,MAAM,CAAA,IACzB,UAAU,KAAM,CAAA,cAAA,CAAe,UAAU,CAAC,CAAM,KAAA;;;;"}
@@ -2,7 +2,6 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { Link, Text } from '@salt-ds/core';
3
3
  import { isEmail } from '../utils/isEmail.js';
4
4
  import 'react';
5
- import '../utils/useFloatingUI.js';
6
5
 
7
6
  const MailLinkComponent = (props) => {
8
7
  const { value, ...restProps } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"MailLinkComponent.js","sources":["../src/contact-details/MailLinkComponent.tsx"],"sourcesContent":["import { Link, Text } from \"@salt-ds/core\";\n\nimport { isEmail } from \"../utils\";\nimport { ValueComponentProps } from \"./types\";\n\nexport const MailLinkComponent = (props: ValueComponentProps) => {\n const { value, ...restProps } = props;\n\n return isEmail(value) ? (\n <Link href={`mailto:${value}`} tabIndex={0} maxRows={1} {...restProps}>\n {value}\n </Link>\n ) : (\n <Text maxRows={1}>{value}</Text>\n );\n};\n"],"names":[],"mappings":";;;;;;AAKa,MAAA,iBAAA,GAAoB,CAAC,KAA+B,KAAA;AAC/D,EAAM,MAAA,EAAE,KAAU,EAAA,GAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAEhC,EAAO,OAAA,OAAA,CAAQ,KAAK,CAAA,mBACjB,GAAA,CAAA,IAAA,EAAA;AAAA,IAAK,MAAM,CAAU,OAAA,EAAA,KAAA,CAAA,CAAA;AAAA,IAAS,QAAU,EAAA,CAAA;AAAA,IAAG,OAAS,EAAA,CAAA;AAAA,IAAI,GAAG,SAAA;AAAA,IACzD,QAAA,EAAA,KAAA;AAAA,GACH,oBAEC,GAAA,CAAA,IAAA,EAAA;AAAA,IAAK,OAAS,EAAA,CAAA;AAAA,IAAI,QAAA,EAAA,KAAA;AAAA,GAAM,CAAA,CAAA;AAE7B;;;;"}
1
+ {"version":3,"file":"MailLinkComponent.js","sources":["../src/contact-details/MailLinkComponent.tsx"],"sourcesContent":["import { Link, Text } from \"@salt-ds/core\";\n\nimport { isEmail } from \"../utils\";\nimport { ValueComponentProps } from \"./types\";\n\nexport const MailLinkComponent = (props: ValueComponentProps) => {\n const { value, ...restProps } = props;\n\n return isEmail(value) ? (\n <Link href={`mailto:${value}`} tabIndex={0} maxRows={1} {...restProps}>\n {value}\n </Link>\n ) : (\n <Text maxRows={1}>{value}</Text>\n );\n};\n"],"names":[],"mappings":";;;;;AAKa,MAAA,iBAAA,GAAoB,CAAC,KAA+B,KAAA;AAC/D,EAAM,MAAA,EAAE,KAAU,EAAA,GAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAEhC,EAAO,OAAA,OAAA,CAAQ,KAAK,CAAA,mBACjB,GAAA,CAAA,IAAA,EAAA;AAAA,IAAK,MAAM,CAAU,OAAA,EAAA,KAAA,CAAA,CAAA;AAAA,IAAS,QAAU,EAAA,CAAA;AAAA,IAAG,OAAS,EAAA,CAAA;AAAA,IAAI,GAAG,SAAA;AAAA,IACzD,QAAA,EAAA,KAAA;AAAA,GACH,oBAEC,GAAA,CAAA,IAAA,EAAA;AAAA,IAAK,OAAS,EAAA,CAAA;AAAA,IAAI,QAAA,EAAA,KAAA;AAAA,GAAM,CAAA,CAAA;AAE7B;;;;"}
@@ -27,7 +27,6 @@ function StatusIndicator({
27
27
  withBaseName("determinateLoading"),
28
28
  circularProgressClassName
29
29
  ),
30
- size: "small",
31
30
  unit,
32
31
  value,
33
32
  ...restCircularProgressProps
@@ -1 +1 @@
1
- {"version":3,"file":"StatusIndicator.js","sources":["../src/content-status/internal/StatusIndicator.tsx"],"sourcesContent":["import {\n makePrefixer,\n StatusIndicator as BaseStatusIndicator,\n StatusIndicatorProps as BaseStatusIndicatorProps,\n Spinner,\n SpinnerProps,\n} from \"@salt-ds/core\";\nimport { ReactElement } from \"react\";\nimport { clsx } from \"clsx\";\n\nimport { CircularProgress, CircularProgressProps } from \"../../progress\";\n\nexport interface StatusIndicatorProps\n extends Pick<SpinnerProps, \"disableAnnouncer\">,\n Pick<CircularProgressProps, \"unit\" | \"value\"> {\n title?: string;\n message?: string;\n CircularProgressProps?: Partial<CircularProgressProps>;\n SpinnerProps?: Partial<SpinnerProps>;\n id?: string;\n status?: BaseStatusIndicatorProps[\"status\"] | \"loading\";\n}\n\nconst withBaseName = makePrefixer(\"saltContentStatus\");\n\nexport function StatusIndicator({\n status = \"info\",\n disableAnnouncer,\n unit,\n value,\n title,\n message,\n CircularProgressProps: {\n className: circularProgressClassName,\n ...restCircularProgressProps\n } = {},\n SpinnerProps: { className: spinnerClassName, ...restSpinnerProps } = {},\n id,\n}: StatusIndicatorProps): ReactElement {\n if (status === \"loading\") {\n if (value !== undefined) {\n return (\n <CircularProgress\n aria-label={title || message}\n className={clsx(\n withBaseName(\"determinateLoading\"),\n circularProgressClassName\n )}\n size=\"small\"\n unit={unit}\n value={value}\n {...restCircularProgressProps}\n />\n );\n }\n return (\n <Spinner\n className={clsx(withBaseName(\"indeterminateLoading\"), spinnerClassName)}\n // Announcement of the content status is more useful than completion announcement from spinner\n completionAnnouncement={null}\n data-testid={`spinner-${id!}`}\n disableAnnouncer={disableAnnouncer}\n {...restSpinnerProps}\n />\n );\n }\n\n return (\n <BaseStatusIndicator\n status={status}\n data-jpmui-test={`icon-${status}-${id!}`}\n size={2}\n />\n );\n}\n"],"names":["BaseStatusIndicator"],"mappings":";;;;;;AAuBA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA,CAAA;AAE9C,SAAS,eAAgB,CAAA;AAAA,EAC9B,MAAS,GAAA,MAAA;AAAA,EACT,gBAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,qBAAuB,EAAA;AAAA,IACrB,SAAW,EAAA,yBAAA;AAAA,IACR,GAAA,yBAAA;AAAA,MACD,EAAC;AAAA,EACL,cAAc,EAAE,SAAA,EAAW,gBAAqB,EAAA,GAAA,gBAAA,KAAqB,EAAC;AAAA,EACtE,EAAA;AACF,CAAuC,EAAA;AACrC,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,MAAA,uBACG,GAAA,CAAA,gBAAA,EAAA;AAAA,QACC,cAAY,KAAS,IAAA,OAAA;AAAA,QACrB,SAAW,EAAA,IAAA;AAAA,UACT,aAAa,oBAAoB,CAAA;AAAA,UACjC,yBAAA;AAAA,SACF;AAAA,QACA,IAAK,EAAA,OAAA;AAAA,QACL,IAAA;AAAA,QACA,KAAA;AAAA,QACC,GAAG,yBAAA;AAAA,OACN,CAAA,CAAA;AAAA,KAEJ;AACA,IAAA,uBACG,GAAA,CAAA,OAAA,EAAA;AAAA,MACC,SAAW,EAAA,IAAA,CAAK,YAAa,CAAA,sBAAsB,GAAG,gBAAgB,CAAA;AAAA,MAEtE,sBAAwB,EAAA,IAAA;AAAA,MACxB,eAAa,CAAW,QAAA,EAAA,EAAA,CAAA,CAAA;AAAA,MACxB,gBAAA;AAAA,MACC,GAAG,gBAAA;AAAA,KACN,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAA,uBACG,GAAA,CAAAA,iBAAA,EAAA;AAAA,IACC,MAAA;AAAA,IACA,iBAAA,EAAiB,QAAQ,MAAU,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAAA,IACnC,IAAM,EAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"StatusIndicator.js","sources":["../src/content-status/internal/StatusIndicator.tsx"],"sourcesContent":["import {\n makePrefixer,\n StatusIndicator as BaseStatusIndicator,\n StatusIndicatorProps as BaseStatusIndicatorProps,\n Spinner,\n SpinnerProps,\n} from \"@salt-ds/core\";\nimport { ReactElement } from \"react\";\nimport { clsx } from \"clsx\";\n\nimport { CircularProgress, CircularProgressProps } from \"../../progress\";\n\nexport interface StatusIndicatorProps\n extends Pick<SpinnerProps, \"disableAnnouncer\">,\n Pick<CircularProgressProps, \"unit\" | \"value\"> {\n title?: string;\n message?: string;\n CircularProgressProps?: Partial<CircularProgressProps>;\n SpinnerProps?: Partial<SpinnerProps>;\n id?: string;\n status?: BaseStatusIndicatorProps[\"status\"] | \"loading\";\n}\n\nconst withBaseName = makePrefixer(\"saltContentStatus\");\n\nexport function StatusIndicator({\n status = \"info\",\n disableAnnouncer,\n unit,\n value,\n title,\n message,\n CircularProgressProps: {\n className: circularProgressClassName,\n ...restCircularProgressProps\n } = {},\n SpinnerProps: { className: spinnerClassName, ...restSpinnerProps } = {},\n id,\n}: StatusIndicatorProps): ReactElement {\n if (status === \"loading\") {\n if (value !== undefined) {\n return (\n <CircularProgress\n aria-label={title || message}\n className={clsx(\n withBaseName(\"determinateLoading\"),\n circularProgressClassName\n )}\n unit={unit}\n value={value}\n {...restCircularProgressProps}\n />\n );\n }\n return (\n <Spinner\n className={clsx(withBaseName(\"indeterminateLoading\"), spinnerClassName)}\n // Announcement of the content status is more useful than completion announcement from spinner\n completionAnnouncement={null}\n data-testid={`spinner-${id!}`}\n disableAnnouncer={disableAnnouncer}\n {...restSpinnerProps}\n />\n );\n }\n\n return (\n <BaseStatusIndicator\n status={status}\n data-jpmui-test={`icon-${status}-${id!}`}\n size={2}\n />\n );\n}\n"],"names":["BaseStatusIndicator"],"mappings":";;;;;;AAuBA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA,CAAA;AAE9C,SAAS,eAAgB,CAAA;AAAA,EAC9B,MAAS,GAAA,MAAA;AAAA,EACT,gBAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,qBAAuB,EAAA;AAAA,IACrB,SAAW,EAAA,yBAAA;AAAA,IACR,GAAA,yBAAA;AAAA,MACD,EAAC;AAAA,EACL,cAAc,EAAE,SAAA,EAAW,gBAAqB,EAAA,GAAA,gBAAA,KAAqB,EAAC;AAAA,EACtE,EAAA;AACF,CAAuC,EAAA;AACrC,EAAA,IAAI,WAAW,SAAW,EAAA;AACxB,IAAA,IAAI,UAAU,KAAW,CAAA,EAAA;AACvB,MAAA,uBACG,GAAA,CAAA,gBAAA,EAAA;AAAA,QACC,cAAY,KAAS,IAAA,OAAA;AAAA,QACrB,SAAW,EAAA,IAAA;AAAA,UACT,aAAa,oBAAoB,CAAA;AAAA,UACjC,yBAAA;AAAA,SACF;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACC,GAAG,yBAAA;AAAA,OACN,CAAA,CAAA;AAAA,KAEJ;AACA,IAAA,uBACG,GAAA,CAAA,OAAA,EAAA;AAAA,MACC,SAAW,EAAA,IAAA,CAAK,YAAa,CAAA,sBAAsB,GAAG,gBAAgB,CAAA;AAAA,MAEtE,sBAAwB,EAAA,IAAA;AAAA,MACxB,eAAa,CAAW,QAAA,EAAA,EAAA,CAAA,CAAA;AAAA,MACxB,gBAAA;AAAA,MACC,GAAG,gBAAA;AAAA,KACN,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAA,uBACG,GAAA,CAAAA,iBAAA,EAAA;AAAA,IACC,MAAA;AAAA,IACA,iBAAA,EAAiB,QAAQ,MAAU,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAAA,IACnC,IAAM,EAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAEJ;;;;"}
@@ -3,7 +3,6 @@ import { forwardRef, useState, useCallback, Children } from 'react';
3
3
  import { makePrefixer, useIsomorphicLayoutEffect } from '@salt-ds/core';
4
4
  import { DeckItem } from '../deck-item/DeckItem.js';
5
5
  import '../responsive/useResizeObserver.js';
6
- import '../utils/useFloatingUI.js';
7
6
  import { useWidth } from '../responsive/useWidth.js';
8
7
  import { clsx } from 'clsx';
9
8
  import { useWindow } from '@salt-ds/window';
@@ -1 +1 @@
1
- {"version":3,"file":"DeckLayout.js","sources":["../src/deck-layout/DeckLayout.tsx"],"sourcesContent":["import {\n Children,\n CSSProperties,\n forwardRef,\n HTMLAttributes,\n useCallback,\n useState,\n} from \"react\";\nimport { makePrefixer, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { DeckItem, DeckItemProps } from \"../deck-item\";\nimport { useWidth } from \"../responsive\";\n\nimport { clsx } from \"clsx\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport deckLayoutCss from \"./DeckLayout.css\";\n\nexport type LayoutAnimation = \"slide\" | \"fade\";\nexport type LayoutAnimationDirection = \"horizontal\" | \"vertical\";\nexport type LayoutAnimationTransition = \"increase\" | \"decrease\";\n\nexport interface DeckLayoutProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The initial item to render.\n **/\n activeIndex?: number;\n /**\n * The animation when the slides are shown.\n **/\n animation?: LayoutAnimation;\n /**\n * The direction in which items will transition.\n **/\n direction?: LayoutAnimationDirection;\n /**\n * Props to be passed to the DeckItem component.\n */\n deckItemProps?: Partial<DeckItemProps>;\n}\n\nconst withBaseName = makePrefixer(\"saltDeckLayout\");\n\nexport const DeckLayout = forwardRef<HTMLDivElement, DeckLayoutProps>(\n function DeckLayout(\n {\n activeIndex = 0,\n animation,\n className,\n children,\n direction = \"horizontal\",\n style,\n deckItemProps,\n ...rest\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-deck-layout\",\n css: deckLayoutCss,\n window: targetWindow,\n });\n\n const [deckItemRef, deckItemWidth] = useWidth<HTMLDivElement>(true);\n\n const [deckItemHeight, setDeckItemHeight] = useState<number>(0);\n\n const handleResize = useCallback(function handleResize(\n contentRect: DOMRect\n ) {\n setDeckItemHeight(contentRect.height);\n },\n []);\n\n useIsomorphicLayoutEffect(() => {\n if (!deckItemRef.current) {\n return undefined;\n }\n\n handleResize(deckItemRef.current.getBoundingClientRect());\n\n const observer = new ResizeObserver(\n ([{ contentRect }]: ResizeObserverEntry[]) => {\n handleResize(contentRect);\n }\n );\n observer.observe(deckItemRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [deckItemRef, handleResize]);\n\n const deckLayoutStyles = {\n ...style,\n \"--deckLayout-width\": `${deckItemWidth}px`,\n \"--deckLayout-height\": `${deckItemHeight}px`,\n };\n\n const innerStyles = {\n \"--deckLayout-transform-value\": `-${activeIndex * 100}%`,\n } as CSSProperties;\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n style={deckLayoutStyles}\n ref={ref}\n {...rest}\n >\n <div\n className={clsx(\n {\n [withBaseName(\"animate\")]: animation,\n },\n {\n [withBaseName(`${animation || \"slide\"}-${direction}`)]: animation,\n }\n )}\n style={innerStyles}\n >\n {Children.map(children, (child, index) => {\n return (\n <DeckItem\n ref={deckItemRef}\n index={index}\n activeIndex={activeIndex}\n animation={animation}\n {...deckItemProps}\n >\n {child}\n </DeckItem>\n );\n })}\n </div>\n </div>\n );\n }\n);\n"],"names":["DeckLayout","deckLayoutCss","handleResize"],"mappings":"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"}
1
+ {"version":3,"file":"DeckLayout.js","sources":["../src/deck-layout/DeckLayout.tsx"],"sourcesContent":["import {\n Children,\n CSSProperties,\n forwardRef,\n HTMLAttributes,\n useCallback,\n useState,\n} from \"react\";\nimport { makePrefixer, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { DeckItem, DeckItemProps } from \"../deck-item\";\nimport { useWidth } from \"../responsive\";\n\nimport { clsx } from \"clsx\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport deckLayoutCss from \"./DeckLayout.css\";\n\nexport type LayoutAnimation = \"slide\" | \"fade\";\nexport type LayoutAnimationDirection = \"horizontal\" | \"vertical\";\nexport type LayoutAnimationTransition = \"increase\" | \"decrease\";\n\nexport interface DeckLayoutProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The initial item to render.\n **/\n activeIndex?: number;\n /**\n * The animation when the slides are shown.\n **/\n animation?: LayoutAnimation;\n /**\n * The direction in which items will transition.\n **/\n direction?: LayoutAnimationDirection;\n /**\n * Props to be passed to the DeckItem component.\n */\n deckItemProps?: Partial<DeckItemProps>;\n}\n\nconst withBaseName = makePrefixer(\"saltDeckLayout\");\n\nexport const DeckLayout = forwardRef<HTMLDivElement, DeckLayoutProps>(\n function DeckLayout(\n {\n activeIndex = 0,\n animation,\n className,\n children,\n direction = \"horizontal\",\n style,\n deckItemProps,\n ...rest\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-deck-layout\",\n css: deckLayoutCss,\n window: targetWindow,\n });\n\n const [deckItemRef, deckItemWidth] = useWidth<HTMLDivElement>(true);\n\n const [deckItemHeight, setDeckItemHeight] = useState<number>(0);\n\n const handleResize = useCallback(function handleResize(\n contentRect: DOMRect\n ) {\n setDeckItemHeight(contentRect.height);\n },\n []);\n\n useIsomorphicLayoutEffect(() => {\n if (!deckItemRef.current) {\n return undefined;\n }\n\n handleResize(deckItemRef.current.getBoundingClientRect());\n\n const observer = new ResizeObserver(\n ([{ contentRect }]: ResizeObserverEntry[]) => {\n handleResize(contentRect);\n }\n );\n observer.observe(deckItemRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [deckItemRef, handleResize]);\n\n const deckLayoutStyles = {\n ...style,\n \"--deckLayout-width\": `${deckItemWidth}px`,\n \"--deckLayout-height\": `${deckItemHeight}px`,\n };\n\n const innerStyles = {\n \"--deckLayout-transform-value\": `-${activeIndex * 100}%`,\n } as CSSProperties;\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n style={deckLayoutStyles}\n ref={ref}\n {...rest}\n >\n <div\n className={clsx(\n {\n [withBaseName(\"animate\")]: animation,\n },\n {\n [withBaseName(`${animation || \"slide\"}-${direction}`)]: animation,\n }\n )}\n style={innerStyles}\n >\n {Children.map(children, (child, index) => {\n return (\n <DeckItem\n ref={deckItemRef}\n index={index}\n activeIndex={activeIndex}\n animation={animation}\n {...deckItemProps}\n >\n {child}\n </DeckItem>\n );\n })}\n </div>\n </div>\n );\n }\n);\n"],"names":["DeckLayout","deckLayoutCss","handleResize"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var css_248z = "/* Styles applied to Drawer component (root component if Scrim is disabled) */\n.saltDrawer {\n background: var(--drawer-background);\n display: flex;\n flex-direction: column;\n max-height: 100%;\n max-width: 100%;\n overflow: auto;\n padding: var(--salt-spacing-300);\n box-shadow: var(--salt-overlayable-shadow-modal);\n z-index: calc(var(--salt-zIndex-appHeader) - 1);\n position: fixed;\n top: 0;\n}\n\n/* Styles applied when variant = \"primary\" */\n.saltDrawer-primary {\n --drawer-background: var(--salt-container-primary-background);\n}\n\n/* Styles applied when variant = \"secondary\" */\n.saltDrawer-secondary {\n --drawer-background: var(--salt-container-secondary-background);\n}\n\n/* Animation styles applied when the Scrim mounts */\n.saltScrim.saltDrawer-enterAnimation {\n animation: var(--salt-animation-fade-in-center);\n}\n\n/* Animation styles applied when the Scrim unmounts */\n.saltScrim.saltDrawer-exitAnimation {\n animation: var(--salt-animation-fade-out-back);\n}\n\n/* Styles applied when position = \"top\" */\n.saltDrawer-top {\n left: 0;\n right: 0;\n bottom: auto;\n}\n\n/* Styles applied when position = \"top\" and the component mounts */\n.saltDrawer-top.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-bottom);\n}\n\n/* Styles applied when position = \"top\" and the component unmounts */\n.saltDrawer-top.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-bottom);\n}\n\n/* Styles applied when position = \"right\" or position = \"left\" */\n.saltDrawer-right,\n.saltDrawer-left {\n width: calc(10 * var(--salt-size-base));\n}\n\n/* Styles applied when position = \"right\" */\n.saltDrawer-right {\n left: auto;\n right: 0;\n height: 100%;\n}\n\n/* Styles applied when position = \"right\" and the component mounts */\n.saltDrawer-right.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-right);\n}\n\n/* Styles applied when position = \"right\" and the component unmounts */\n.saltDrawer-right.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-right);\n}\n\n/* Styles applied when position = \"left\" */\n.saltDrawer-left {\n left: 0;\n right: auto;\n height: 100%;\n}\n\n/* Styles applied when position = \"left\" and the component mounts */\n.saltDrawer-left.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-left);\n}\n\n/* Styles applied when position = \"left\" and the component unmounts */\n.saltDrawer-left.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-left);\n}\n\n/* Styles applied when position = \"bottom\" */\n.saltDrawer-bottom {\n left: 0;\n right: 0;\n bottom: 0;\n top: auto;\n}\n\n/* Styles applied when position = \"bottom\" and the component mounts */\n.saltDrawer-bottom.saltDrawer-enterAnimation {\n animation: var(--salt-animation-slide-in-top);\n}\n\n/* Styles applied when position = \"bottom\" and the component unmounts */\n.saltDrawer-bottom.saltDrawer-exitAnimation {\n animation: var(--salt-animation-slide-out-top);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=Drawer.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,78 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, useState, useEffect } from 'react';
3
+ import { clsx } from 'clsx';
4
+ import { Scrim } from '../scrim/Scrim.js';
5
+ import '../scrim/ScrimContext.js';
6
+ import { makePrefixer } from '@salt-ds/core';
7
+ import { useWindow } from '@salt-ds/window';
8
+ import { useComponentCssInjection } from '@salt-ds/styles';
9
+ import css_248z from './Drawer.css.js';
10
+
11
+ const DRAWER_POSITIONS = ["left", "top", "right", "bottom"];
12
+ const withBaseName = makePrefixer("saltDrawer");
13
+ const ariaAttributes = { role: "dialog", "aria-modal": true };
14
+ const Drawer = forwardRef(function Drawer2(props, ref) {
15
+ const {
16
+ children,
17
+ className,
18
+ disableScrim = false,
19
+ position = "left",
20
+ disableAnimations = false,
21
+ scrimProps,
22
+ isOpen = true,
23
+ variant = "primary",
24
+ ...rest
25
+ } = props;
26
+ const targetWindow = useWindow();
27
+ useComponentCssInjection({
28
+ testId: "salt-drawer",
29
+ css: css_248z,
30
+ window: targetWindow
31
+ });
32
+ const [showComponent, setShowComponent] = useState(false);
33
+ const [isAnimating, setIsAnimating] = useState(false);
34
+ useEffect(() => {
35
+ if (!isOpen && disableAnimations || !isOpen && !isAnimating) {
36
+ setShowComponent(false);
37
+ }
38
+ if (isOpen && !showComponent) {
39
+ setShowComponent(true);
40
+ }
41
+ }, [isOpen, showComponent, disableAnimations, isAnimating]);
42
+ const enterAnimation = !disableAnimations && isOpen;
43
+ const exitAnimation = !disableAnimations && !isOpen;
44
+ const drawer = showComponent ? /* @__PURE__ */ jsx("div", {
45
+ ref,
46
+ className: clsx(
47
+ withBaseName(),
48
+ withBaseName(position),
49
+ {
50
+ [withBaseName("enterAnimation")]: enterAnimation,
51
+ [withBaseName("exitAnimation")]: exitAnimation,
52
+ [withBaseName(variant)]: variant
53
+ },
54
+ className
55
+ ),
56
+ onAnimationStart: () => setIsAnimating(true),
57
+ onAnimationEnd: () => {
58
+ if (!isOpen && showComponent) {
59
+ setShowComponent(false);
60
+ }
61
+ },
62
+ ...disableScrim && ariaAttributes,
63
+ ...rest,
64
+ children
65
+ }) : null;
66
+ return disableScrim ? drawer : /* @__PURE__ */ jsx(Scrim, {
67
+ open: showComponent,
68
+ className: clsx({
69
+ [withBaseName("enterAnimation")]: enterAnimation,
70
+ [withBaseName("exitAnimation")]: exitAnimation
71
+ }),
72
+ ...scrimProps,
73
+ children: drawer
74
+ });
75
+ });
76
+
77
+ export { DRAWER_POSITIONS, Drawer };
78
+ //# sourceMappingURL=Drawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.js","sources":["../src/drawer/Drawer.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes, useEffect, useState } from \"react\";\nimport { clsx } from \"clsx\";\n\nimport { Scrim, ScrimProps } from \"../scrim\";\n\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport drawerCss from \"./Drawer.css\";\n\nexport const DRAWER_POSITIONS = [\"left\", \"top\", \"right\", \"bottom\"] as const;\n\nexport type DrawerPositions = typeof DRAWER_POSITIONS[number];\n\nexport interface DrawerProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Disable the scrim.\n */\n disableScrim?: boolean;\n /**\n * Defines the drawer position within the screen.\n */\n position?: DrawerPositions;\n /**\n * Disable all animations.\n */\n disableAnimations?: boolean;\n /**\n * Display or hide the component.\n */\n isOpen?: boolean;\n /**\n * Props to be passed to the Scrim component.\n */\n scrimProps?: Partial<ScrimProps>;\n /**\n * Change background color palette\n */\n variant?: \"primary\" | \"secondary\";\n}\n\nconst withBaseName = makePrefixer(\"saltDrawer\");\n\nconst ariaAttributes = { role: \"dialog\", \"aria-modal\": true };\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>(function Drawer(\n props,\n ref\n) {\n const {\n children,\n className,\n disableScrim = false,\n position = \"left\",\n disableAnimations = false,\n scrimProps,\n isOpen = true,\n variant = \"primary\",\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-drawer\",\n css: drawerCss,\n window: targetWindow,\n });\n\n const [showComponent, setShowComponent] = useState(false);\n\n const [isAnimating, setIsAnimating] = useState(false);\n\n useEffect(() => {\n if ((!isOpen && disableAnimations) || (!isOpen && !isAnimating)) {\n setShowComponent(false);\n }\n\n if (isOpen && !showComponent) {\n setShowComponent(true);\n }\n }, [isOpen, showComponent, disableAnimations, isAnimating]);\n\n const enterAnimation = !disableAnimations && isOpen;\n\n const exitAnimation = !disableAnimations && !isOpen;\n\n const drawer = showComponent ? (\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n withBaseName(position),\n {\n [withBaseName(\"enterAnimation\")]: enterAnimation,\n [withBaseName(\"exitAnimation\")]: exitAnimation,\n [withBaseName(variant)]: variant,\n },\n className\n )}\n onAnimationStart={() => setIsAnimating(true)}\n onAnimationEnd={() => {\n if (!isOpen && showComponent) {\n setShowComponent(false);\n }\n }}\n {...(disableScrim && ariaAttributes)}\n {...rest}\n >\n {children}\n </div>\n ) : null;\n\n return disableScrim ? (\n drawer\n ) : (\n <Scrim\n open={showComponent}\n className={clsx({\n [withBaseName(\"enterAnimation\")]: enterAnimation,\n [withBaseName(\"exitAnimation\")]: exitAnimation,\n })}\n {...scrimProps}\n >\n {drawer}\n </Scrim>\n );\n});\n"],"names":["Drawer","drawerCss"],"mappings":"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"}
@@ -7,7 +7,6 @@ import '../common-hooks/keyUtils.js';
7
7
  import { useCollectionItems } from '../common-hooks/useCollectionItems.js';
8
8
  import '../responsive/useResizeObserver.js';
9
9
  import { forwardCallbackProps } from '../utils/forwardCallbackProps.js';
10
- import '../utils/useFloatingUI.js';
11
10
  import { List } from '../list/List.js';
12
11
  import { DropdownBase } from './DropdownBase.js';
13
12
  import { DropdownButton } from './DropdownButton.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.js","sources":["../src/dropdown/Dropdown.tsx"],"sourcesContent":["import { useForkRef, useIdMemo as useId } from \"@salt-ds/core\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\n\nimport {\n CollectionItem,\n CollectionProvider,\n itemToString as defaultItemToString,\n SelectionProps,\n SelectionStrategy,\n SingleSelectionStrategy,\n useCollectionItems,\n} from \"../common-hooks\";\nimport { List } from \"../list/List\";\nimport { ListProps } from \"../list/listTypes\";\nimport { DropdownBase, MaybeChildProps } from \"./DropdownBase\";\nimport { DropdownButton } from \"./DropdownButton\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdown } from \"./useDropdown\";\nimport { forwardCallbackProps } from \"../utils\";\n\nexport interface DropdownProps<\n Item = string,\n Selection extends SelectionStrategy = \"default\"\n> extends DropdownBaseProps,\n Pick<\n ListProps<Item, Selection>,\n \"ListItem\" | \"itemToString\" | \"source\" | \"width\"\n >,\n SelectionProps<Item, Selection> {\n ListProps?: Omit<\n ListProps<Item, Selection>,\n \"ListItem\" | \"itemToString\" | \"source\"\n >;\n}\n\nexport const Dropdown = forwardRef(function Dropdown<\n Item = string,\n Selection extends SelectionStrategy = \"default\"\n>(\n {\n \"aria-label\": ariaLabel,\n children,\n defaultIsOpen,\n defaultSelected,\n id: idProp,\n isOpen: isOpenProp,\n itemToString = defaultItemToString,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected: selectedProp,\n selectionStrategy,\n source,\n triggerComponent,\n ListItem,\n ListProps,\n width = 180,\n ...props\n }: DropdownProps<Item, Selection>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const forkedRef = useForkRef<HTMLDivElement>(rootRef, forwardedRef);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n source,\n children,\n options: {\n itemToString,\n },\n });\n\n const {\n highlightedIndex,\n triggerLabel,\n listHandlers,\n listControlProps,\n selected,\n ...dropdownListHook\n } = useDropdown<Item, Selection>({\n collectionHook,\n defaultHighlightedIndex: ListProps?.defaultHighlightedIndex,\n defaultIsOpen,\n defaultSelected: collectionHook.itemToCollectionItem<\n Selection,\n typeof defaultSelected\n >(defaultSelected),\n highlightedIndex: ListProps?.highlightedIndex,\n isOpen: isOpenProp,\n itemToString,\n label: \"Dropdown\",\n onHighlight: ListProps?.onHighlight,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected: collectionHook.itemToCollectionItem<\n Selection,\n typeof selectedProp\n >(selectedProp),\n selectionStrategy,\n });\n\n const collectionItemsToItem = useCallback(\n (\n itemOrItems?: CollectionItem<Item> | null | CollectionItem<Item>[]\n ):\n | undefined\n | (Selection extends SingleSelectionStrategy ? Item | null : Item[]) => {\n type returnType = Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[];\n if (Array.isArray(itemOrItems)) {\n return itemOrItems.map((i) => i.value) as returnType;\n } else if (itemOrItems) {\n return itemOrItems.value as returnType;\n }\n },\n []\n );\n\n const getTriggerComponent = () => {\n const ariaProps = {\n \"aria-activedescendant\": dropdownListHook.isOpen\n ? listControlProps?.[\"aria-activedescendant\"]\n : undefined,\n \"aria-label\": ariaLabel,\n };\n if (triggerComponent) {\n const ownProps = triggerComponent.props as MaybeChildProps;\n return cloneElement(\n triggerComponent,\n forwardCallbackProps(ownProps, {\n ...(dropdownListHook.isOpen ? listControlProps : {}),\n ...ariaProps,\n })\n );\n } else {\n return (\n <DropdownButton\n label={triggerLabel}\n {...(dropdownListHook.isOpen ? listControlProps : {})}\n {...ariaProps}\n />\n );\n }\n };\n\n return (\n <CollectionProvider<Item> collectionHook={collectionHook}>\n <DropdownBase\n {...props}\n id={id}\n isOpen={dropdownListHook.isOpen}\n onOpenChange={dropdownListHook.onOpenChange}\n ref={forkedRef}\n width={width}\n >\n {getTriggerComponent()}\n <List<Item, Selection>\n ListItem={ListItem}\n itemToString={itemToString}\n {...ListProps}\n highlightedIndex={highlightedIndex}\n listHandlers={listHandlers}\n onSelectionChange={onSelectionChange}\n onSelect={onSelect}\n selected={collectionItemsToItem(selected)}\n selectionStrategy={selectionStrategy}\n data-testid=\"dropdown-list\"\n />\n </DropdownBase>\n </CollectionProvider>\n );\n}) as <Item, Selection extends SelectionStrategy = \"default\">(\n props: DropdownProps<Item, Selection> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<DropdownProps<Item, Selection>>;\n"],"names":["Dropdown","itemToString","defaultItemToString","ListProps","useId"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown.js","sources":["../src/dropdown/Dropdown.tsx"],"sourcesContent":["import { useForkRef, useIdMemo as useId } from \"@salt-ds/core\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\n\nimport {\n CollectionItem,\n CollectionProvider,\n itemToString as defaultItemToString,\n SelectionProps,\n SelectionStrategy,\n SingleSelectionStrategy,\n useCollectionItems,\n} from \"../common-hooks\";\nimport { List } from \"../list/List\";\nimport { ListProps } from \"../list/listTypes\";\nimport { DropdownBase, MaybeChildProps } from \"./DropdownBase\";\nimport { DropdownButton } from \"./DropdownButton\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdown } from \"./useDropdown\";\nimport { forwardCallbackProps } from \"../utils\";\n\nexport interface DropdownProps<\n Item = string,\n Selection extends SelectionStrategy = \"default\"\n> extends DropdownBaseProps,\n Pick<\n ListProps<Item, Selection>,\n \"ListItem\" | \"itemToString\" | \"source\" | \"width\"\n >,\n SelectionProps<Item, Selection> {\n ListProps?: Omit<\n ListProps<Item, Selection>,\n \"ListItem\" | \"itemToString\" | \"source\"\n >;\n}\n\nexport const Dropdown = forwardRef(function Dropdown<\n Item = string,\n Selection extends SelectionStrategy = \"default\"\n>(\n {\n \"aria-label\": ariaLabel,\n children,\n defaultIsOpen,\n defaultSelected,\n id: idProp,\n isOpen: isOpenProp,\n itemToString = defaultItemToString,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected: selectedProp,\n selectionStrategy,\n source,\n triggerComponent,\n ListItem,\n ListProps,\n width = 180,\n ...props\n }: DropdownProps<Item, Selection>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const forkedRef = useForkRef<HTMLDivElement>(rootRef, forwardedRef);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n source,\n children,\n options: {\n itemToString,\n },\n });\n\n const {\n highlightedIndex,\n triggerLabel,\n listHandlers,\n listControlProps,\n selected,\n ...dropdownListHook\n } = useDropdown<Item, Selection>({\n collectionHook,\n defaultHighlightedIndex: ListProps?.defaultHighlightedIndex,\n defaultIsOpen,\n defaultSelected: collectionHook.itemToCollectionItem<\n Selection,\n typeof defaultSelected\n >(defaultSelected),\n highlightedIndex: ListProps?.highlightedIndex,\n isOpen: isOpenProp,\n itemToString,\n label: \"Dropdown\",\n onHighlight: ListProps?.onHighlight,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected: collectionHook.itemToCollectionItem<\n Selection,\n typeof selectedProp\n >(selectedProp),\n selectionStrategy,\n });\n\n const collectionItemsToItem = useCallback(\n (\n itemOrItems?: CollectionItem<Item> | null | CollectionItem<Item>[]\n ):\n | undefined\n | (Selection extends SingleSelectionStrategy ? Item | null : Item[]) => {\n type returnType = Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[];\n if (Array.isArray(itemOrItems)) {\n return itemOrItems.map((i) => i.value) as returnType;\n } else if (itemOrItems) {\n return itemOrItems.value as returnType;\n }\n },\n []\n );\n\n const getTriggerComponent = () => {\n const ariaProps = {\n \"aria-activedescendant\": dropdownListHook.isOpen\n ? listControlProps?.[\"aria-activedescendant\"]\n : undefined,\n \"aria-label\": ariaLabel,\n };\n if (triggerComponent) {\n const ownProps = triggerComponent.props as MaybeChildProps;\n return cloneElement(\n triggerComponent,\n forwardCallbackProps(ownProps, {\n ...(dropdownListHook.isOpen ? listControlProps : {}),\n ...ariaProps,\n })\n );\n } else {\n return (\n <DropdownButton\n label={triggerLabel}\n {...(dropdownListHook.isOpen ? listControlProps : {})}\n {...ariaProps}\n />\n );\n }\n };\n\n return (\n <CollectionProvider<Item> collectionHook={collectionHook}>\n <DropdownBase\n {...props}\n id={id}\n isOpen={dropdownListHook.isOpen}\n onOpenChange={dropdownListHook.onOpenChange}\n ref={forkedRef}\n width={width}\n >\n {getTriggerComponent()}\n <List<Item, Selection>\n ListItem={ListItem}\n itemToString={itemToString}\n {...ListProps}\n highlightedIndex={highlightedIndex}\n listHandlers={listHandlers}\n onSelectionChange={onSelectionChange}\n onSelect={onSelect}\n selected={collectionItemsToItem(selected)}\n selectionStrategy={selectionStrategy}\n data-testid=\"dropdown-list\"\n />\n </DropdownBase>\n </CollectionProvider>\n );\n}) as <Item, Selection extends SelectionStrategy = \"default\">(\n props: DropdownProps<Item, Selection> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<DropdownProps<Item, Selection>>;\n"],"names":["Dropdown","itemToString","defaultItemToString","ListProps","useId"],"mappings":"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"}
@@ -4,7 +4,6 @@ import { makePrefixer, useIdMemo, useFloatingUI, useForkRef } from '@salt-ds/cor
4
4
  import { clsx } from 'clsx';
5
5
  import { forwardRef, useRef, Children, useState, cloneElement } from 'react';
6
6
  import { forwardCallbackProps } from '../utils/forwardCallbackProps.js';
7
- import '../utils/useFloatingUI.js';
8
7
  import { useDropdownBase } from './useDropdownBase.js';
9
8
  import { Portal } from '../portal/Portal.js';
10
9
  import { useWindow as useWindow$1, isDesktop } from '../window/WindowContext.js';