@salt-ds/lab 1.0.0-alpha.26 → 1.0.0-alpha.28

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 (341) hide show
  1. package/css/salt-lab.css +327 -561
  2. package/dist-cjs/combo-box-next/ComboBoxNext.js +303 -166
  3. package/dist-cjs/combo-box-next/ComboBoxNext.js.map +1 -1
  4. package/dist-cjs/combo-box-next/useComboBoxNext.js +55 -0
  5. package/dist-cjs/combo-box-next/useComboBoxNext.js.map +1 -0
  6. package/dist-cjs/dropdown/DropdownBase.js +1 -1
  7. package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
  8. package/dist-cjs/dropdown-next/DropdownNext.css.js +1 -1
  9. package/dist-cjs/dropdown-next/DropdownNext.js +333 -169
  10. package/dist-cjs/dropdown-next/DropdownNext.js.map +1 -1
  11. package/dist-cjs/editable-label/EditableLabel.js +1 -1
  12. package/dist-cjs/editable-label/EditableLabel.js.map +1 -1
  13. package/dist-cjs/index.js +8 -24
  14. package/dist-cjs/index.js.map +1 -1
  15. package/dist-cjs/layer-layout/LayerLayout.js +1 -3
  16. package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
  17. package/dist-cjs/list-control/ListControlContext.js +36 -0
  18. package/dist-cjs/list-control/ListControlContext.js.map +1 -0
  19. package/dist-cjs/list-control/ListControlState.js +193 -0
  20. package/dist-cjs/list-control/ListControlState.js.map +1 -0
  21. package/dist-cjs/option/Option.css.js +6 -0
  22. package/dist-cjs/option/Option.css.js.map +1 -0
  23. package/dist-cjs/option/Option.js +113 -0
  24. package/dist-cjs/option/Option.js.map +1 -0
  25. package/dist-cjs/option/OptionGroup.css.js +6 -0
  26. package/dist-cjs/option/OptionGroup.css.js.map +1 -0
  27. package/dist-cjs/option/OptionGroup.js +44 -0
  28. package/dist-cjs/option/OptionGroup.js.map +1 -0
  29. package/dist-cjs/option/OptionList.css.js +6 -0
  30. package/dist-cjs/option/OptionList.css.js.map +1 -0
  31. package/dist-cjs/option/OptionList.js +40 -0
  32. package/dist-cjs/option/OptionList.js.map +1 -0
  33. package/dist-cjs/tokenized-input/internal/InputPill.js +13 -9
  34. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  35. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +6 -0
  36. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js.map +1 -0
  37. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +244 -0
  38. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -0
  39. package/dist-cjs/tokenized-input-next/internal/InputPill.css.js +6 -0
  40. package/dist-cjs/tokenized-input-next/internal/InputPill.css.js.map +1 -0
  41. package/dist-cjs/tokenized-input-next/internal/InputPill.js +83 -0
  42. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -0
  43. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js +22 -0
  44. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -0
  45. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js +37 -0
  46. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -0
  47. package/dist-cjs/tokenized-input-next/internal/useWidth.js +48 -0
  48. package/dist-cjs/tokenized-input-next/internal/useWidth.js.map +1 -0
  49. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js +479 -0
  50. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -0
  51. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +1 -1
  52. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  53. package/dist-cjs/tree/Tree.js +1 -2
  54. package/dist-cjs/tree/Tree.js.map +1 -1
  55. package/dist-es/combo-box-next/ComboBoxNext.js +306 -169
  56. package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -1
  57. package/dist-es/combo-box-next/useComboBoxNext.js +51 -0
  58. package/dist-es/combo-box-next/useComboBoxNext.js.map +1 -0
  59. package/dist-es/dropdown/DropdownBase.js +1 -1
  60. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  61. package/dist-es/dropdown-next/DropdownNext.css.js +1 -1
  62. package/dist-es/dropdown-next/DropdownNext.js +332 -168
  63. package/dist-es/dropdown-next/DropdownNext.js.map +1 -1
  64. package/dist-es/editable-label/EditableLabel.js +1 -1
  65. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  66. package/dist-es/index.js +4 -12
  67. package/dist-es/index.js.map +1 -1
  68. package/dist-es/layer-layout/LayerLayout.js +1 -3
  69. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  70. package/dist-es/list-control/ListControlContext.js +31 -0
  71. package/dist-es/list-control/ListControlContext.js.map +1 -0
  72. package/dist-es/list-control/ListControlState.js +189 -0
  73. package/dist-es/list-control/ListControlState.js.map +1 -0
  74. package/dist-es/option/Option.css.js +4 -0
  75. package/dist-es/option/Option.css.js.map +1 -0
  76. package/dist-es/option/Option.js +109 -0
  77. package/dist-es/option/Option.js.map +1 -0
  78. package/dist-es/option/OptionGroup.css.js +4 -0
  79. package/dist-es/option/OptionGroup.css.js.map +1 -0
  80. package/dist-es/option/OptionGroup.js +40 -0
  81. package/dist-es/option/OptionGroup.js.map +1 -0
  82. package/dist-es/option/OptionList.css.js +4 -0
  83. package/dist-es/option/OptionList.css.js.map +1 -0
  84. package/dist-es/option/OptionList.js +36 -0
  85. package/dist-es/option/OptionList.js.map +1 -0
  86. package/dist-es/tokenized-input/internal/InputPill.js +15 -11
  87. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  88. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +4 -0
  89. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js.map +1 -0
  90. package/dist-es/tokenized-input-next/TokenizedInputNext.js +240 -0
  91. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -0
  92. package/dist-es/tokenized-input-next/internal/InputPill.css.js +4 -0
  93. package/dist-es/tokenized-input-next/internal/InputPill.css.js.map +1 -0
  94. package/dist-es/tokenized-input-next/internal/InputPill.js +79 -0
  95. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -0
  96. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js +18 -0
  97. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -0
  98. package/dist-es/tokenized-input-next/internal/useResizeObserver.js +33 -0
  99. package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -0
  100. package/dist-es/tokenized-input-next/internal/useWidth.js +42 -0
  101. package/dist-es/tokenized-input-next/internal/useWidth.js.map +1 -0
  102. package/dist-es/tokenized-input-next/useTokenizedInputNext.js +471 -0
  103. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -0
  104. package/dist-es/toolbar/overflow-panel/OverflowPanel.js +1 -1
  105. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  106. package/dist-es/tree/Tree.js +1 -2
  107. package/dist-es/tree/Tree.js.map +1 -1
  108. package/dist-types/combo-box-next/ComboBoxNext.d.ts +7 -80
  109. package/dist-types/combo-box-next/useComboBoxNext.d.ts +31 -0
  110. package/dist-types/dropdown-next/DropdownNext.d.ts +25 -27
  111. package/dist-types/index.d.ts +2 -5
  112. package/dist-types/layer-layout/LayerLayout.d.ts +1 -1
  113. package/dist-types/list-control/ListControlContext.d.ts +20 -0
  114. package/dist-types/list-control/ListControlState.d.ts +68 -0
  115. package/dist-types/option/Option.d.ts +20 -0
  116. package/dist-types/option/OptionGroup.d.ts +12 -0
  117. package/dist-types/option/OptionList.d.ts +5 -0
  118. package/dist-types/option/index.d.ts +2 -0
  119. package/dist-types/tokenized-input/internal/InputPill.d.ts +7 -5
  120. package/dist-types/tokenized-input-next/TokenizedInputNext.d.ts +51 -0
  121. package/dist-types/tokenized-input-next/index.d.ts +2 -0
  122. package/dist-types/tokenized-input-next/internal/InputPill.d.ts +29 -0
  123. package/dist-types/tokenized-input-next/internal/calcFirstHiddenIndex.d.ts +4 -0
  124. package/dist-types/tokenized-input-next/internal/useResizeObserver.d.ts +6 -0
  125. package/dist-types/tokenized-input-next/internal/useWidth.d.ts +7 -0
  126. package/dist-types/tokenized-input-next/useTokenizedInputNext.d.ts +47 -0
  127. package/package.json +2 -2
  128. package/dist-cjs/combo-box-next/ComboBoxNext.css.js +0 -6
  129. package/dist-cjs/combo-box-next/ComboBoxNext.css.js.map +0 -1
  130. package/dist-cjs/combo-box-next/useComboBox.js +0 -147
  131. package/dist-cjs/combo-box-next/useComboBox.js.map +0 -1
  132. package/dist-cjs/combo-box-next/useComboboxPortal.js +0 -75
  133. package/dist-cjs/combo-box-next/useComboboxPortal.js.map +0 -1
  134. package/dist-cjs/combo-box-next/utils.js +0 -36
  135. package/dist-cjs/combo-box-next/utils.js.map +0 -1
  136. package/dist-cjs/dropdown-next/useDropdownNext.js +0 -188
  137. package/dist-cjs/dropdown-next/useDropdownNext.js.map +0 -1
  138. package/dist-cjs/focus-manager/FocusManager.js +0 -158
  139. package/dist-cjs/focus-manager/FocusManager.js.map +0 -1
  140. package/dist-cjs/focus-manager/internal/findAllTabbableElements.js +0 -45
  141. package/dist-cjs/focus-manager/internal/findAllTabbableElements.js.map +0 -1
  142. package/dist-cjs/focus-manager/internal/useReturnFocus.js +0 -59
  143. package/dist-cjs/focus-manager/internal/useReturnFocus.js.map +0 -1
  144. package/dist-cjs/navigation-item/ConditionalWrapper.js +0 -37
  145. package/dist-cjs/navigation-item/ConditionalWrapper.js.map +0 -1
  146. package/dist-cjs/navigation-item/ExpansionIcon.js +0 -31
  147. package/dist-cjs/navigation-item/ExpansionIcon.js.map +0 -1
  148. package/dist-cjs/navigation-item/NavigationItem.css.js +0 -6
  149. package/dist-cjs/navigation-item/NavigationItem.css.js.map +0 -1
  150. package/dist-cjs/navigation-item/NavigationItem.js +0 -81
  151. package/dist-cjs/navigation-item/NavigationItem.js.map +0 -1
  152. package/dist-cjs/pagination/CompactInput.css.js +0 -6
  153. package/dist-cjs/pagination/CompactInput.css.js.map +0 -1
  154. package/dist-cjs/pagination/CompactInput.js +0 -62
  155. package/dist-cjs/pagination/CompactInput.js.map +0 -1
  156. package/dist-cjs/pagination/CompactPaginator.css.js +0 -6
  157. package/dist-cjs/pagination/CompactPaginator.css.js.map +0 -1
  158. package/dist-cjs/pagination/CompactPaginator.js +0 -76
  159. package/dist-cjs/pagination/CompactPaginator.js.map +0 -1
  160. package/dist-cjs/pagination/GoToInput.css.js +0 -6
  161. package/dist-cjs/pagination/GoToInput.css.js.map +0 -1
  162. package/dist-cjs/pagination/GoToInput.js +0 -77
  163. package/dist-cjs/pagination/GoToInput.js.map +0 -1
  164. package/dist-cjs/pagination/PageButton.css.js +0 -6
  165. package/dist-cjs/pagination/PageButton.css.js.map +0 -1
  166. package/dist-cjs/pagination/PageButton.js +0 -44
  167. package/dist-cjs/pagination/PageButton.js.map +0 -1
  168. package/dist-cjs/pagination/PageRanges.css.js +0 -6
  169. package/dist-cjs/pagination/PageRanges.css.js.map +0 -1
  170. package/dist-cjs/pagination/PageRanges.js +0 -73
  171. package/dist-cjs/pagination/PageRanges.js.map +0 -1
  172. package/dist-cjs/pagination/Pagination.css.js +0 -6
  173. package/dist-cjs/pagination/Pagination.css.js.map +0 -1
  174. package/dist-cjs/pagination/Pagination.js +0 -78
  175. package/dist-cjs/pagination/Pagination.js.map +0 -1
  176. package/dist-cjs/pagination/PaginationContext.js +0 -17
  177. package/dist-cjs/pagination/PaginationContext.js.map +0 -1
  178. package/dist-cjs/pagination/Paginator.css.js +0 -6
  179. package/dist-cjs/pagination/Paginator.css.js.map +0 -1
  180. package/dist-cjs/pagination/Paginator.js +0 -69
  181. package/dist-cjs/pagination/Paginator.js.map +0 -1
  182. package/dist-cjs/pagination/usePagination.js +0 -27
  183. package/dist-cjs/pagination/usePagination.js.map +0 -1
  184. package/dist-cjs/pagination/usePaginationContext.js +0 -19
  185. package/dist-cjs/pagination/usePaginationContext.js.map +0 -1
  186. package/dist-cjs/pill/ClosablePill.js +0 -61
  187. package/dist-cjs/pill/ClosablePill.js.map +0 -1
  188. package/dist-cjs/pill/Pill.css.js +0 -6
  189. package/dist-cjs/pill/Pill.css.js.map +0 -1
  190. package/dist-cjs/pill/Pill.js +0 -49
  191. package/dist-cjs/pill/Pill.js.map +0 -1
  192. package/dist-cjs/pill/PillBase.js +0 -133
  193. package/dist-cjs/pill/PillBase.js.map +0 -1
  194. package/dist-cjs/pill/SelectablePill.js +0 -55
  195. package/dist-cjs/pill/SelectablePill.js.map +0 -1
  196. package/dist-cjs/pill/constants.js +0 -8
  197. package/dist-cjs/pill/constants.js.map +0 -1
  198. package/dist-cjs/pill/internal/DeleteButton.js +0 -37
  199. package/dist-cjs/pill/internal/DeleteButton.js.map +0 -1
  200. package/dist-cjs/pill/internal/DivButton.js +0 -68
  201. package/dist-cjs/pill/internal/DivButton.js.map +0 -1
  202. package/dist-cjs/pill/internal/PillCheckbox.css.js +0 -6
  203. package/dist-cjs/pill/internal/PillCheckbox.css.js.map +0 -1
  204. package/dist-cjs/pill/internal/PillCheckbox.js +0 -27
  205. package/dist-cjs/pill/internal/PillCheckbox.js.map +0 -1
  206. package/dist-cjs/pill-next/PillNext.css.js +0 -6
  207. package/dist-cjs/pill-next/PillNext.css.js.map +0 -1
  208. package/dist-cjs/pill-next/PillNext.js +0 -60
  209. package/dist-cjs/pill-next/PillNext.js.map +0 -1
  210. package/dist-cjs/scrim/Scrim.css.js +0 -6
  211. package/dist-cjs/scrim/Scrim.css.js.map +0 -1
  212. package/dist-cjs/scrim/Scrim.js +0 -170
  213. package/dist-cjs/scrim/Scrim.js.map +0 -1
  214. package/dist-cjs/scrim/ScrimContext.js +0 -13
  215. package/dist-cjs/scrim/ScrimContext.js.map +0 -1
  216. package/dist-cjs/scrim/internal/PreventFocus.js +0 -39
  217. package/dist-cjs/scrim/internal/PreventFocus.js.map +0 -1
  218. package/dist-es/combo-box-next/ComboBoxNext.css.js +0 -4
  219. package/dist-es/combo-box-next/ComboBoxNext.css.js.map +0 -1
  220. package/dist-es/combo-box-next/useComboBox.js +0 -143
  221. package/dist-es/combo-box-next/useComboBox.js.map +0 -1
  222. package/dist-es/combo-box-next/useComboboxPortal.js +0 -71
  223. package/dist-es/combo-box-next/useComboboxPortal.js.map +0 -1
  224. package/dist-es/combo-box-next/utils.js +0 -31
  225. package/dist-es/combo-box-next/utils.js.map +0 -1
  226. package/dist-es/dropdown-next/useDropdownNext.js +0 -184
  227. package/dist-es/dropdown-next/useDropdownNext.js.map +0 -1
  228. package/dist-es/focus-manager/FocusManager.js +0 -154
  229. package/dist-es/focus-manager/FocusManager.js.map +0 -1
  230. package/dist-es/focus-manager/internal/findAllTabbableElements.js +0 -41
  231. package/dist-es/focus-manager/internal/findAllTabbableElements.js.map +0 -1
  232. package/dist-es/focus-manager/internal/useReturnFocus.js +0 -55
  233. package/dist-es/focus-manager/internal/useReturnFocus.js.map +0 -1
  234. package/dist-es/navigation-item/ConditionalWrapper.js +0 -33
  235. package/dist-es/navigation-item/ConditionalWrapper.js.map +0 -1
  236. package/dist-es/navigation-item/ExpansionIcon.js +0 -27
  237. package/dist-es/navigation-item/ExpansionIcon.js.map +0 -1
  238. package/dist-es/navigation-item/NavigationItem.css.js +0 -4
  239. package/dist-es/navigation-item/NavigationItem.css.js.map +0 -1
  240. package/dist-es/navigation-item/NavigationItem.js +0 -77
  241. package/dist-es/navigation-item/NavigationItem.js.map +0 -1
  242. package/dist-es/pagination/CompactInput.css.js +0 -4
  243. package/dist-es/pagination/CompactInput.css.js.map +0 -1
  244. package/dist-es/pagination/CompactInput.js +0 -58
  245. package/dist-es/pagination/CompactInput.js.map +0 -1
  246. package/dist-es/pagination/CompactPaginator.css.js +0 -4
  247. package/dist-es/pagination/CompactPaginator.css.js.map +0 -1
  248. package/dist-es/pagination/CompactPaginator.js +0 -72
  249. package/dist-es/pagination/CompactPaginator.js.map +0 -1
  250. package/dist-es/pagination/GoToInput.css.js +0 -4
  251. package/dist-es/pagination/GoToInput.css.js.map +0 -1
  252. package/dist-es/pagination/GoToInput.js +0 -73
  253. package/dist-es/pagination/GoToInput.js.map +0 -1
  254. package/dist-es/pagination/PageButton.css.js +0 -4
  255. package/dist-es/pagination/PageButton.css.js.map +0 -1
  256. package/dist-es/pagination/PageButton.js +0 -40
  257. package/dist-es/pagination/PageButton.js.map +0 -1
  258. package/dist-es/pagination/PageRanges.css.js +0 -4
  259. package/dist-es/pagination/PageRanges.css.js.map +0 -1
  260. package/dist-es/pagination/PageRanges.js +0 -69
  261. package/dist-es/pagination/PageRanges.js.map +0 -1
  262. package/dist-es/pagination/Pagination.css.js +0 -4
  263. package/dist-es/pagination/Pagination.css.js.map +0 -1
  264. package/dist-es/pagination/Pagination.js +0 -74
  265. package/dist-es/pagination/Pagination.js.map +0 -1
  266. package/dist-es/pagination/PaginationContext.js +0 -13
  267. package/dist-es/pagination/PaginationContext.js.map +0 -1
  268. package/dist-es/pagination/Paginator.css.js +0 -4
  269. package/dist-es/pagination/Paginator.css.js.map +0 -1
  270. package/dist-es/pagination/Paginator.js +0 -65
  271. package/dist-es/pagination/Paginator.js.map +0 -1
  272. package/dist-es/pagination/usePagination.js +0 -23
  273. package/dist-es/pagination/usePagination.js.map +0 -1
  274. package/dist-es/pagination/usePaginationContext.js +0 -15
  275. package/dist-es/pagination/usePaginationContext.js.map +0 -1
  276. package/dist-es/pill/ClosablePill.js +0 -57
  277. package/dist-es/pill/ClosablePill.js.map +0 -1
  278. package/dist-es/pill/Pill.css.js +0 -4
  279. package/dist-es/pill/Pill.css.js.map +0 -1
  280. package/dist-es/pill/Pill.js +0 -45
  281. package/dist-es/pill/Pill.js.map +0 -1
  282. package/dist-es/pill/PillBase.js +0 -129
  283. package/dist-es/pill/PillBase.js.map +0 -1
  284. package/dist-es/pill/SelectablePill.js +0 -51
  285. package/dist-es/pill/SelectablePill.js.map +0 -1
  286. package/dist-es/pill/constants.js +0 -4
  287. package/dist-es/pill/constants.js.map +0 -1
  288. package/dist-es/pill/internal/DeleteButton.js +0 -33
  289. package/dist-es/pill/internal/DeleteButton.js.map +0 -1
  290. package/dist-es/pill/internal/DivButton.js +0 -64
  291. package/dist-es/pill/internal/DivButton.js.map +0 -1
  292. package/dist-es/pill/internal/PillCheckbox.css.js +0 -4
  293. package/dist-es/pill/internal/PillCheckbox.css.js.map +0 -1
  294. package/dist-es/pill/internal/PillCheckbox.js +0 -23
  295. package/dist-es/pill/internal/PillCheckbox.js.map +0 -1
  296. package/dist-es/pill-next/PillNext.css.js +0 -4
  297. package/dist-es/pill-next/PillNext.css.js.map +0 -1
  298. package/dist-es/pill-next/PillNext.js +0 -52
  299. package/dist-es/pill-next/PillNext.js.map +0 -1
  300. package/dist-es/scrim/Scrim.css.js +0 -4
  301. package/dist-es/scrim/Scrim.css.js.map +0 -1
  302. package/dist-es/scrim/Scrim.js +0 -162
  303. package/dist-es/scrim/Scrim.js.map +0 -1
  304. package/dist-es/scrim/ScrimContext.js +0 -9
  305. package/dist-es/scrim/ScrimContext.js.map +0 -1
  306. package/dist-es/scrim/internal/PreventFocus.js +0 -35
  307. package/dist-es/scrim/internal/PreventFocus.js.map +0 -1
  308. package/dist-types/combo-box-next/useComboBox.d.ts +0 -44
  309. package/dist-types/combo-box-next/useComboboxPortal.d.ts +0 -22
  310. package/dist-types/combo-box-next/utils.d.ts +0 -7
  311. package/dist-types/dropdown-next/useDropdownNext.d.ts +0 -50
  312. package/dist-types/navigation-item/ConditionalWrapper.d.ts +0 -8
  313. package/dist-types/navigation-item/ExpansionIcon.d.ts +0 -2
  314. package/dist-types/navigation-item/NavigationItem.d.ts +0 -36
  315. package/dist-types/navigation-item/index.d.ts +0 -1
  316. package/dist-types/pagination/CompactInput.d.ts +0 -2
  317. package/dist-types/pagination/CompactPaginator.d.ts +0 -1
  318. package/dist-types/pagination/GoToInput.d.ts +0 -16
  319. package/dist-types/pagination/PageButton.d.ts +0 -6
  320. package/dist-types/pagination/PageRanges.d.ts +0 -5
  321. package/dist-types/pagination/Pagination.d.ts +0 -20
  322. package/dist-types/pagination/PaginationContext.d.ts +0 -7
  323. package/dist-types/pagination/Paginator.d.ts +0 -12
  324. package/dist-types/pagination/index.d.ts +0 -5
  325. package/dist-types/pagination/usePagination.d.ts +0 -2
  326. package/dist-types/pagination/usePaginationContext.d.ts +0 -1
  327. package/dist-types/pill/ClosablePill.d.ts +0 -8
  328. package/dist-types/pill/Pill.d.ts +0 -15
  329. package/dist-types/pill/PillBase.d.ts +0 -52
  330. package/dist-types/pill/SelectablePill.d.ts +0 -17
  331. package/dist-types/pill/constants.d.ts +0 -1
  332. package/dist-types/pill/index.d.ts +0 -3
  333. package/dist-types/pill/internal/DeleteButton.d.ts +0 -8
  334. package/dist-types/pill/internal/DivButton.d.ts +0 -12
  335. package/dist-types/pill/internal/PillCheckbox.d.ts +0 -3
  336. package/dist-types/pill-next/PillNext.d.ts +0 -4
  337. package/dist-types/pill-next/index.d.ts +0 -1
  338. package/dist-types/scrim/Scrim.d.ts +0 -68
  339. package/dist-types/scrim/ScrimContext.d.ts +0 -1
  340. package/dist-types/scrim/index.d.ts +0 -2
  341. package/dist-types/scrim/internal/PreventFocus.d.ts +0 -1
@@ -0,0 +1,113 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var core = require('@salt-ds/core');
8
+ var clsx = require('clsx');
9
+ var ListControlContext = require('../list-control/ListControlContext.js');
10
+ var window = require('@salt-ds/window');
11
+ var styles = require('@salt-ds/styles');
12
+ var Option$1 = require('./Option.css.js');
13
+
14
+ const withBaseName = core.makePrefixer("saltOption");
15
+ function getOptionText(textValue, children) {
16
+ if (textValue) {
17
+ return textValue;
18
+ }
19
+ let textString = "";
20
+ React.Children.forEach(children, (child) => {
21
+ if (typeof child === "string") {
22
+ textString += child;
23
+ }
24
+ });
25
+ return textString;
26
+ }
27
+ const Option = React.forwardRef(function Option2(props, ref) {
28
+ const {
29
+ className,
30
+ children,
31
+ disabled,
32
+ onClick,
33
+ id: idProp,
34
+ value,
35
+ textValue,
36
+ ...rest
37
+ } = props;
38
+ const targetWindow = window.useWindow();
39
+ styles.useComponentCssInjection({
40
+ testId: "salt-option",
41
+ css: Option$1,
42
+ window: targetWindow
43
+ });
44
+ const optionRef = React.useRef(null);
45
+ const id = core.useId(idProp);
46
+ const optionText = getOptionText(textValue, children);
47
+ const {
48
+ setActive,
49
+ activeState,
50
+ multiselect,
51
+ setOpen,
52
+ select,
53
+ register,
54
+ selectedState,
55
+ focusVisibleState
56
+ } = ListControlContext.useListControlContext();
57
+ const selected = selectedState.includes(value);
58
+ const active = (activeState == null ? void 0 : activeState.id) === id;
59
+ const optionValue = React.useMemo(
60
+ () => ({
61
+ id: String(id),
62
+ disabled: Boolean(disabled),
63
+ value,
64
+ text: optionText
65
+ }),
66
+ [id, disabled, value, optionText]
67
+ );
68
+ const handleClick = (event) => {
69
+ if (disabled || id == void 0) {
70
+ return;
71
+ }
72
+ setActive(optionValue);
73
+ select(event, optionValue);
74
+ if (!multiselect) {
75
+ setOpen(event, false);
76
+ }
77
+ onClick == null ? void 0 : onClick(event);
78
+ };
79
+ React.useEffect(() => {
80
+ if (id && optionRef.current) {
81
+ return register(optionValue, optionRef.current);
82
+ }
83
+ }, [optionValue, id, register]);
84
+ const handleRef = core.useForkRef(optionRef, ref);
85
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
86
+ "aria-disabled": disabled ? "true" : void 0,
87
+ "aria-selected": selected,
88
+ className: clsx.clsx(
89
+ withBaseName(),
90
+ {
91
+ [withBaseName("active")]: active,
92
+ [withBaseName("focusVisible")]: focusVisibleState && active
93
+ },
94
+ className
95
+ ),
96
+ ref: handleRef,
97
+ role: "option",
98
+ id,
99
+ onClick: handleClick,
100
+ ...rest,
101
+ children: [
102
+ multiselect && /* @__PURE__ */ jsxRuntime.jsx(core.Checkbox, {
103
+ checked: selected,
104
+ "aria-hidden": "true",
105
+ tabIndex: -1
106
+ }),
107
+ children
108
+ ]
109
+ });
110
+ });
111
+
112
+ exports.Option = Option;
113
+ //# sourceMappingURL=Option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Option.js","sources":["../src/option/Option.tsx"],"sourcesContent":["import {\n ComponentPropsWithoutRef,\n forwardRef,\n ReactNode,\n MouseEvent,\n useRef,\n useEffect,\n useMemo,\n Children,\n} from \"react\";\nimport { Checkbox, makePrefixer, useForkRef, useId } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n OptionValue,\n useListControlContext,\n} from \"../list-control/ListControlContext\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport optionCss from \"./Option.css\";\n\nexport interface OptionProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * If `true`, the option will be disabled.\n */\n disabled?: boolean;\n /**\n * The value of the option.\n */\n value: string;\n /**\n * The text value of the option. If not provided, the text value will be inferred from the children.\n */\n textValue?: string;\n /**\n * The content of the option.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltOption\");\n\nfunction getOptionText(textValue: string | undefined, children: ReactNode) {\n if (textValue) {\n return textValue;\n }\n\n let textString = \"\";\n Children.forEach(children, (child) => {\n if (typeof child === \"string\") {\n textString += child;\n }\n });\n\n return textString;\n}\n\nexport const Option = forwardRef<HTMLDivElement, OptionProps>(function Option(\n props,\n ref\n) {\n const {\n className,\n children,\n disabled,\n onClick,\n id: idProp,\n value,\n textValue,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-option\",\n css: optionCss,\n window: targetWindow,\n });\n\n const optionRef = useRef(null);\n const id = useId(idProp);\n const optionText = getOptionText(textValue, children);\n\n const {\n setActive,\n activeState,\n multiselect,\n setOpen,\n select,\n register,\n selectedState,\n focusVisibleState,\n } = useListControlContext();\n\n const selected = selectedState.includes(value);\n const active = activeState?.id === id;\n\n const optionValue: OptionValue = useMemo(\n () => ({\n id: String(id),\n disabled: Boolean(disabled),\n value,\n text: optionText,\n }),\n [id, disabled, value, optionText]\n );\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (disabled || id == undefined) {\n return;\n }\n\n // set active descendent\n setActive(optionValue);\n\n // handle selection\n select(event, optionValue);\n\n // handle close if multi-select\n if (!multiselect) {\n setOpen(event, false);\n }\n\n onClick?.(event);\n };\n\n useEffect(() => {\n if (id && optionRef.current) {\n return register(optionValue, optionRef.current);\n }\n }, [optionValue, id, register]);\n\n const handleRef = useForkRef(optionRef, ref);\n\n return (\n <div\n aria-disabled={disabled ? \"true\" : undefined}\n aria-selected={selected}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"active\")]: active,\n [withBaseName(\"focusVisible\")]: focusVisibleState && active,\n },\n className\n )}\n ref={handleRef}\n role=\"option\"\n id={id}\n onClick={handleClick}\n {...rest}\n >\n {multiselect && (\n <Checkbox checked={selected} aria-hidden=\"true\" tabIndex={-1} />\n )}\n {children}\n </div>\n );\n});\n"],"names":["makePrefixer","Children","forwardRef","Option","useWindow","useComponentCssInjection","optionCss","useRef","useId","useListControlContext","useMemo","useEffect","useForkRef","jsxs","clsx","jsx","Checkbox"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltOptionGroup-label {\n background: var(--salt-container-primary-background);\n color: var(--salt-text-secondary-foreground);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-label-fontWeight-strong);\n height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n display: flex;\n align-items: center;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=OptionGroup.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionGroup.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var core = require('@salt-ds/core');
8
+ var clsx = require('clsx');
9
+ var window = require('@salt-ds/window');
10
+ var styles = require('@salt-ds/styles');
11
+ var OptionGroup$1 = require('./OptionGroup.css.js');
12
+
13
+ const withBaseName = core.makePrefixer("saltOptionGroup");
14
+ const OptionGroup = React.forwardRef(
15
+ function OptionGroup2(props, ref) {
16
+ const { className, children, label, ...rest } = props;
17
+ const targetWindow = window.useWindow();
18
+ styles.useComponentCssInjection({
19
+ testId: "salt-option-group",
20
+ css: OptionGroup$1,
21
+ window: targetWindow
22
+ });
23
+ const labelId = core.useId();
24
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
25
+ "aria-labelledby": labelId,
26
+ className: clsx.clsx(withBaseName(), className),
27
+ role: "group",
28
+ ref,
29
+ ...rest,
30
+ children: [
31
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
32
+ "aria-hidden": true,
33
+ className: withBaseName("label"),
34
+ id: labelId,
35
+ children: label
36
+ }),
37
+ children
38
+ ]
39
+ });
40
+ }
41
+ );
42
+
43
+ exports.OptionGroup = OptionGroup;
44
+ //# sourceMappingURL=OptionGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionGroup.js","sources":["../src/option/OptionGroup.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\nimport { makePrefixer, useId } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport optionGroupCss from \"./OptionGroup.css\";\n\nexport interface OptionGroupProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The label of the option group.\n */\n label?: string;\n /**\n * Options to be rendered inside the option group.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltOptionGroup\");\nexport const OptionGroup = forwardRef<HTMLDivElement, OptionGroupProps>(\n function OptionGroup(props, ref) {\n const { className, children, label, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-option-group\",\n css: optionGroupCss,\n window: targetWindow,\n });\n\n const labelId = useId();\n\n return (\n <div\n aria-labelledby={labelId}\n className={clsx(withBaseName(), className)}\n role=\"group\"\n ref={ref}\n {...rest}\n >\n <div aria-hidden className={withBaseName(\"label\")} id={labelId}>\n {label}\n </div>\n {children}\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","OptionGroup","useWindow","useComponentCssInjection","optionGroupCss","useId","jsxs","clsx","jsx"],"mappings":";;;;;;;;;;;;AAkBA,MAAM,YAAA,GAAeA,kBAAa,iBAAiB,CAAA,CAAA;AAC5C,MAAM,WAAc,GAAAC,gBAAA;AAAA,EACzB,SAASC,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAA,MAAM,EAAE,SAAA,EAAW,QAAU,EAAA,KAAA,EAAA,GAAU,MAAS,GAAA,KAAA,CAAA;AAEhD,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,mBAAA;AAAA,MACR,GAAK,EAAAC,aAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,UAAUC,UAAM,EAAA,CAAA;AAEtB,IAAA,uBACGC,eAAA,CAAA,KAAA,EAAA;AAAA,MACC,iBAAiB,EAAA,OAAA;AAAA,MACjB,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,IAAK,EAAA,OAAA;AAAA,MACL,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAACC,cAAA,CAAA,KAAA,EAAA;AAAA,UAAI,aAAW,EAAA,IAAA;AAAA,UAAC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAAG,EAAI,EAAA,OAAA;AAAA,UACpD,QAAA,EAAA,KAAA;AAAA,SACH,CAAA;AAAA,QACC,QAAA;AAAA,OAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltOptionList {\n background: var(--salt-container-primary-background);\n border: var(--salt-size-border) var(--salt-selectable-borderStyle-selected) var(--salt-selectable-borderColor-selected);\n overflow: hidden;\n overflow-y: auto;\n position: relative;\n z-index: var(--salt-zIndex-popout);\n box-shadow: var(--salt-overlayable-shadow-popout);\n max-height: inherit;\n min-height: inherit;\n}\n\n.saltOptionList-collapsed {\n display: none;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=OptionList.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionList.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var clsx = require('clsx');
8
+ var core = require('@salt-ds/core');
9
+ var window = require('@salt-ds/window');
10
+ var styles = require('@salt-ds/styles');
11
+ var OptionList$1 = require('./OptionList.css.js');
12
+
13
+ const withBaseName = core.makePrefixer("saltOptionList");
14
+ const OptionList = React.forwardRef(
15
+ function OptionList2(props, ref) {
16
+ const { children, className, collapsed, ...rest } = props;
17
+ const targetWindow = window.useWindow();
18
+ styles.useComponentCssInjection({
19
+ testId: "salt-option-list",
20
+ css: OptionList$1,
21
+ window: targetWindow
22
+ });
23
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
24
+ role: "listbox",
25
+ className: clsx.clsx(
26
+ withBaseName(),
27
+ {
28
+ [withBaseName("collapsed")]: collapsed
29
+ },
30
+ className
31
+ ),
32
+ ref,
33
+ ...rest,
34
+ children
35
+ });
36
+ }
37
+ );
38
+
39
+ exports.OptionList = OptionList;
40
+ //# sourceMappingURL=OptionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionList.js","sources":["../src/option/OptionList.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport optionListCss from \"./OptionList.css\";\n\nexport interface OptionListProps extends ComponentPropsWithoutRef<\"div\"> {\n collapsed?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltOptionList\");\n\nexport const OptionList = forwardRef<HTMLDivElement, OptionListProps>(\n function OptionList(props, ref) {\n const { children, className, collapsed, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-option-list\",\n css: optionListCss,\n window: targetWindow,\n });\n\n return (\n <div\n role=\"listbox\"\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"collapsed\")]: collapsed,\n },\n className\n )}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","OptionList","useWindow","useComponentCssInjection","optionListCss","jsx","clsx"],"mappings":";;;;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,gBAAgB,CAAA,CAAA;AAE3C,MAAM,UAAa,GAAAC,gBAAA;AAAA,EACxB,SAASC,WAAW,CAAA,KAAA,EAAO,GAAK,EAAA;AAC9B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,SAAA,EAAA,GAAc,MAAS,GAAA,KAAA,CAAA;AAEpD,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,YAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MACC,IAAK,EAAA,SAAA;AAAA,MACL,SAAW,EAAAC,SAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,WAAW,CAAI,GAAA,SAAA;AAAA,SAC/B;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -7,9 +7,7 @@ var clsx = require('clsx');
7
7
  var React = require('react');
8
8
  var core = require('@salt-ds/core');
9
9
  var useWidth = require('./useWidth.js');
10
- var Pill = require('../../pill/Pill.js');
11
- require('../../pill/ClosablePill.js');
12
- require('../../pill/SelectablePill.js');
10
+ var icons = require('@salt-ds/icons');
13
11
 
14
12
  const withBaseName = core.makePrefixer("saltInputPill");
15
13
  const InputPill = React.memo(function InputPill2(props) {
@@ -20,10 +18,10 @@ const InputPill = React.memo(function InputPill2(props) {
20
18
  hidden,
21
19
  highlighted,
22
20
  index,
21
+ label,
23
22
  lastVisible,
24
23
  onDelete,
25
24
  pillsRef,
26
- tabIndex: tabIndexProp,
27
25
  ...restProps
28
26
  } = props;
29
27
  const ref = React.useRef(null);
@@ -42,7 +40,7 @@ const InputPill = React.memo(function InputPill2(props) {
42
40
  const handleDelete = () => {
43
41
  onDelete == null ? void 0 : onDelete(index);
44
42
  };
45
- return /* @__PURE__ */ jsxRuntime.jsx(Pill.Pill, {
43
+ return /* @__PURE__ */ jsxRuntime.jsxs(core.Pill, {
46
44
  className: clsx.clsx(
47
45
  withBaseName(),
48
46
  {
@@ -53,12 +51,18 @@ const InputPill = React.memo(function InputPill2(props) {
53
51
  className
54
52
  ),
55
53
  disabled,
56
- onDelete: isRemovable ? handleDelete : void 0,
54
+ tabIndex: -1,
55
+ onClick: isRemovable ? handleDelete : void 0,
57
56
  ref,
58
57
  role: "option",
59
- tabIndex: void 0,
60
- variant: isRemovable ? "closable" : "basic",
61
- ...restProps
58
+ ...restProps,
59
+ children: [
60
+ /* @__PURE__ */ jsxRuntime.jsx("span", {
61
+ className: withBaseName("label"),
62
+ children: label
63
+ }),
64
+ isRemovable && /* @__PURE__ */ jsxRuntime.jsx(icons.CloseIcon, {})
65
+ ]
62
66
  });
63
67
  });
64
68
 
@@ -1 +1 @@
1
- {"version":3,"file":"InputPill.js","sources":["../src/tokenized-input/internal/InputPill.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { memo, MutableRefObject, useRef } from \"react\";\nimport { makePrefixer, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { getWidth } from \"./useWidth\";\nimport { Pill, PillProps } from \"../../pill\";\n\nconst withBaseName = makePrefixer(\"saltInputPill\");\n\nexport type InputPillProps = Omit<\n PillProps<\"basic\" | \"closable\">,\n \"variant\" | \"onDelete\" | \"clickable\"\n> & {\n /**\n * An ref object holds pills index map to width.\n */\n pillsRef: MutableRefObject<{ [index: number]: number | undefined }>;\n /**\n * Index of the pill within Input.\n */\n index: number;\n /**\n * Whether the pill is the last visible one within Input.\n */\n lastVisible?: boolean;\n /**\n * Whether the pill is highlighted.\n */\n highlighted?: boolean;\n /**\n * Whether the pill is active.\n */\n active?: boolean;\n /**\n * Callback when pill is deleted.\n */\n onDelete?: (index: number) => void;\n};\n\nexport const InputPill = memo(function InputPill(props: InputPillProps) {\n const {\n active,\n className,\n disabled,\n hidden,\n highlighted,\n index,\n lastVisible,\n onDelete,\n pillsRef,\n tabIndex: tabIndexProp,\n ...restProps\n } = props;\n\n const ref = useRef<HTMLDivElement | null>(null);\n const isRemovable = Boolean(onDelete);\n\n // useLayoutEffect to match the calcFirstHiddenIndex in TokenizedInputBase\n // We need to collect widths before the calculation\n useIsomorphicLayoutEffect(() => {\n if (!isRemovable && pillsRef.current) {\n pillsRef.current[index] = getWidth(ref.current);\n }\n }, [pillsRef, index, isRemovable, lastVisible]);\n\n useIsomorphicLayoutEffect(\n () => () => {\n pillsRef.current[index] = undefined;\n },\n [pillsRef, index]\n );\n\n const handleDelete = () => {\n onDelete?.(index);\n };\n\n return (\n <Pill\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"pillActive\")]: active || highlighted,\n [withBaseName(\"pillLastVisible\")]: lastVisible,\n [withBaseName(\"hidden\")]: hidden,\n },\n className\n )}\n disabled={disabled}\n onDelete={isRemovable ? handleDelete : undefined}\n ref={ref}\n role=\"option\"\n // style={useMemo(() => ({ maxWidth }), [maxWidth])}\n tabIndex={undefined}\n variant={isRemovable ? \"closable\" : \"basic\"}\n {...restProps}\n />\n );\n});\n"],"names":["makePrefixer","memo","InputPill","useRef","useIsomorphicLayoutEffect","getWidth","jsx","Pill","clsx"],"mappings":";;;;;;;;;;;;;AAMA,MAAM,YAAA,GAAeA,kBAAa,eAAe,CAAA,CAAA;AAgC1C,MAAM,SAAY,GAAAC,UAAA,CAAK,SAASC,UAAAA,CAAU,KAAuB,EAAA;AACtE,EAAM,MAAA;AAAA,IACJ,MAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACP,GAAA,SAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,GAAA,GAAMC,aAA8B,IAAI,CAAA,CAAA;AAC9C,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA,CAAA;AAIpC,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAI,IAAA,CAAC,WAAe,IAAA,QAAA,CAAS,OAAS,EAAA;AACpC,MAAA,QAAA,CAAS,OAAQ,CAAA,KAAA,CAAA,GAASC,iBAAS,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,KAChD;AAAA,KACC,CAAC,QAAA,EAAU,KAAO,EAAA,WAAA,EAAa,WAAW,CAAC,CAAA,CAAA;AAE9C,EAAAD,8BAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,QAAA,CAAS,QAAQ,KAAS,CAAA,GAAA,KAAA,CAAA,CAAA;AAAA,KAC5B;AAAA,IACA,CAAC,UAAU,KAAK,CAAA;AAAA,GAClB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACb,CAAA;AAEA,EAAA,uBACGE,cAAA,CAAAC,SAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAA,CAAa,YAAY,CAAA,GAAI,MAAU,IAAA,WAAA;AAAA,QACxC,CAAC,YAAa,CAAA,iBAAiB,CAAI,GAAA,WAAA;AAAA,QACnC,CAAC,YAAa,CAAA,QAAQ,CAAI,GAAA,MAAA;AAAA,OAC5B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,QAAA;AAAA,IACA,QAAA,EAAU,cAAc,YAAe,GAAA,KAAA,CAAA;AAAA,IACvC,GAAA;AAAA,IACA,IAAK,EAAA,QAAA;AAAA,IAEL,QAAU,EAAA,KAAA,CAAA;AAAA,IACV,OAAA,EAAS,cAAc,UAAa,GAAA,OAAA;AAAA,IACnC,GAAG,SAAA;AAAA,GACN,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"InputPill.js","sources":["../src/tokenized-input/internal/InputPill.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { memo, MutableRefObject, useRef } from \"react\";\nimport {\n makePrefixer,\n useIsomorphicLayoutEffect,\n Pill,\n PillProps,\n} from \"@salt-ds/core\";\nimport { getWidth } from \"./useWidth\";\nimport { CloseIcon } from \"@salt-ds/icons\";\n\nconst withBaseName = makePrefixer(\"saltInputPill\");\n\nexport type InputPillProps = PillProps & {\n /**\n * An ref object holds pills index map to width.\n */\n pillsRef: MutableRefObject<Record<number, number | undefined>>;\n /**\n * Index of the pill within Input.\n */\n index: number;\n /**\n * Pill label.\n */\n label?: string;\n /**\n * Whether the pill is the last visible one within Input.\n */\n lastVisible?: boolean;\n /**\n * Whether the pill is highlighted.\n */\n highlighted?: boolean;\n /**\n * Whether the pill is active.\n */\n active?: boolean;\n /**\n * Callback when pill is deleted.\n */\n onDelete?: (index: number) => void;\n};\n\nexport const InputPill = memo(function InputPill(props: InputPillProps) {\n const {\n active,\n className,\n disabled,\n hidden,\n highlighted,\n index,\n label,\n lastVisible,\n onDelete,\n pillsRef,\n ...restProps\n } = props;\n\n const ref = useRef<HTMLButtonElement | null>(null);\n const isRemovable = Boolean(onDelete);\n\n // useLayoutEffect to match the calcFirstHiddenIndex in TokenizedInputBase\n // We need to collect widths before the calculation\n useIsomorphicLayoutEffect(() => {\n if (!isRemovable && pillsRef.current) {\n pillsRef.current[index] = getWidth(ref.current);\n }\n }, [pillsRef, index, isRemovable, lastVisible]);\n\n useIsomorphicLayoutEffect(\n () => () => {\n pillsRef.current[index] = undefined;\n },\n [pillsRef, index]\n );\n\n const handleDelete = () => {\n onDelete?.(index);\n };\n\n return (\n <Pill\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"pillActive\")]: active || highlighted,\n [withBaseName(\"pillLastVisible\")]: lastVisible,\n [withBaseName(\"hidden\")]: hidden,\n },\n className\n )}\n disabled={disabled}\n tabIndex={-1}\n onClick={isRemovable ? handleDelete : undefined}\n ref={ref}\n role=\"option\"\n // style={useMemo(() => ({ maxWidth }), [maxWidth])}\n {...restProps}\n >\n <span className={withBaseName(\"label\")}>{label}</span>\n {isRemovable && <CloseIcon />}\n </Pill>\n );\n});\n"],"names":["makePrefixer","memo","InputPill","useRef","useIsomorphicLayoutEffect","getWidth","jsxs","Pill","clsx","jsx","CloseIcon"],"mappings":";;;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,eAAe,CAAA,CAAA;AAiC1C,MAAM,SAAY,GAAAC,UAAA,CAAK,SAASC,UAAAA,CAAU,KAAuB,EAAA;AACtE,EAAM,MAAA;AAAA,IACJ,MAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACG,GAAA,SAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,GAAA,GAAMC,aAAiC,IAAI,CAAA,CAAA;AACjD,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA,CAAA;AAIpC,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAI,IAAA,CAAC,WAAe,IAAA,QAAA,CAAS,OAAS,EAAA;AACpC,MAAA,QAAA,CAAS,OAAQ,CAAA,KAAA,CAAA,GAASC,iBAAS,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,KAChD;AAAA,KACC,CAAC,QAAA,EAAU,KAAO,EAAA,WAAA,EAAa,WAAW,CAAC,CAAA,CAAA;AAE9C,EAAAD,8BAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,QAAA,CAAS,QAAQ,KAAS,CAAA,GAAA,KAAA,CAAA,CAAA;AAAA,KAC5B;AAAA,IACA,CAAC,UAAU,KAAK,CAAA;AAAA,GAClB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACb,CAAA;AAEA,EAAA,uBACGE,eAAA,CAAAC,SAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAA,CAAa,YAAY,CAAA,GAAI,MAAU,IAAA,WAAA;AAAA,QACxC,CAAC,YAAa,CAAA,iBAAiB,CAAI,GAAA,WAAA;AAAA,QACnC,CAAC,YAAa,CAAA,QAAQ,CAAI,GAAA,MAAA;AAAA,OAC5B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,QAAA;AAAA,IACA,QAAU,EAAA,CAAA,CAAA;AAAA,IACV,OAAA,EAAS,cAAc,YAAe,GAAA,KAAA,CAAA;AAAA,IACtC,GAAA;AAAA,IACA,IAAK,EAAA,QAAA;AAAA,IAEJ,GAAG,SAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAACC,cAAA,CAAA,MAAA,EAAA;AAAA,QAAK,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,QAAI,QAAA,EAAA,KAAA;AAAA,OAAM,CAAA;AAAA,MAC9C,WAAA,mCAAgBC,eAAU,EAAA,EAAA,CAAA;AAAA,KAAA;AAAA,GAC7B,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = "/* Style applied to the root element */\n.saltTokenizedInputNext-container {\n width: 100%;\n}\n.saltTokenizedInputNext {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle);\n --tokenizedInput-outlineColor: var(--salt-focused-outlineColor);\n --tokenizedInput-border: none;\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n align-items: center;\n background: var(--tokenizedInput-background);\n border: var(--tokenizedInput-border);\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n flex-wrap: wrap;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n height: 100%;\n line-height: var(--salt-text-lineHeight);\n min-height: var(--salt-size-base);\n padding: 0 var(--salt-spacing-100);\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n/* Style applied on hover */\n.saltTokenizedInputNext:hover {\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-hover);\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-hover);\n\n background: var(--tokenizedInput-background-hover);\n cursor: var(--salt-editable-cursor-hover);\n}\n\n/* Style applied when active */\n.saltTokenizedInputNext:active {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-active);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-active);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n\n background: var(--tokenizedInput-background-active);\n cursor: var(--salt-editable-cursor-active);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltTokenizedInputNext-primary {\n --tokenizedInput-background: var(--salt-editable-primary-background);\n --tokenizedInput-background-active: var(--salt-editable-primary-background-active);\n --tokenizedInput-background-hover: var(--salt-editable-primary-background-hover);\n --tokenizedInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --tokenizedInput-background-readonly: var(--salt-editable-primary-background-readonly);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltTokenizedInputNext-secondary {\n --tokenizedInput-background: var(--salt-editable-secondary-background);\n --tokenizedInput-background-active: var(--salt-editable-secondary-background-active);\n --tokenizedInput-background-hover: var(--salt-editable-secondary-background-active);\n --tokenizedInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --tokenizedInput-background-readonly: var(--salt-editable-secondary-background-readonly);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltTokenizedInputNext-error,\n.saltTokenizedInputNext-error:hover {\n --tokenizedInput-background: var(--salt-status-error-background);\n --tokenizedInput-background-active: var(--salt-status-error-background);\n --tokenizedInput-background-hover: var(--salt-status-error-background);\n --tokenizedInput-borderColor: var(--salt-status-error-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-error-borderColor);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltTokenizedInputNext-warning,\n.saltTokenizedInputNext-warning:hover {\n --tokenizedInput-background: var(--salt-status-warning-background);\n --tokenizedInput-background-active: var(--salt-status-warning-background);\n --tokenizedInput-background-hover: var(--salt-status-warning-background);\n --tokenizedInput-borderColor: var(--salt-status-warning-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltTokenizedInputNext-success,\n.saltTokenizedInputNext-success:hover {\n --tokenizedInput-background: var(--salt-status-success-background);\n --tokenizedInput-background-active: var(--salt-status-success-background);\n --tokenizedInput-background-hover: var(--salt-status-success-background);\n --tokenizedInput-borderColor: var(--salt-status-success-borderColor);\n --tokenizedInput-outlineColor: var(--salt-status-success-borderColor);\n}\n\n/* Style applied to inner textarea element */\n.saltTokenizedInputNext-textarea {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: inherit;\n display: inline-flex;\n flex-basis: 0;\n height: var(--salt-text-lineHeight);\n font: inherit;\n letter-spacing: 0;\n overflow: hidden;\n resize: none;\n padding: 0;\n min-width: 1px; /* requires a min width to be visible */\n}\n.saltTokenizedInputNext-expanded .saltTokenizedInputNext-textarea {\n flex-grow: 1;\n min-width: 4em; /* on expanded, use the same min-width as input*/\n}\n\n/* Style applied to placeholder */\n.saltTokenizedInputNext-textarea::placeholder {\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Reset in the class */\n.saltTokenizedInputNext-textarea:focus {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltTokenizedInputNext-textarea::selection {\n background: var(--salt-content-foreground-highlight);\n}\n\n/* Styling when focused */\n.saltTokenizedInputNext-focused {\n --tokenizedInput-borderColor: var(--tokenizedInput-outlineColor);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n\n outline: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--tokenizedInput-outlineColor);\n}\n\n/* Style applied if `readOnly={true}` */\n.saltTokenizedInputNext-readOnly,\n.saltTokenizedInputNext-readOnly:active,\n.saltTokenizedInputNext-readOnly:hover {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-readonly);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-readonly);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n background: var(--tokenizedInput-background-readonly);\n cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Style applied to selected text if `disabled={true}` */\n.saltTokenizedInputNext-disabled .saltTokenizedInputNext-textarea::selection {\n background: none;\n}\n\n/* Style applied when `disabled={true}` */\n.saltTokenizedInputNext-disabled,\n.saltTokenizedInputNext-disabled:hover,\n.saltTokenizedInputNext-disabled:active {\n --tokenizedInput-borderColor: var(--salt-editable-borderColor-disabled);\n --tokenizedInput-borderStyle: var(--salt-editable-borderStyle-disabled);\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-size-border);\n\n background: var(--tokenizedInput-background-disabled);\n cursor: var(--salt-editable-cursor-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n/* Style for activation indicator */\n.saltTokenizedInputNext-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--tokenizedInput-activationIndicator-borderWidth) var(--tokenizedInput-borderStyle) var(--tokenizedInput-borderColor);\n}\n\n/* Style applied if `bordered={true}` */\n.saltTokenizedInputNext.saltTokenizedInputNext-bordered {\n --tokenizedInput-border: var(--salt-size-border) var(--salt-container-borderStyle) var(--tokenizedInput-borderColor);\n --tokenizedInput-activationIndicator-borderWidth: 0;\n}\n\n/* Style applied if active or focused when `bordered={true}` */\n.saltTokenizedInputNext-bordered:active,\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-focused {\n --tokenizedInput-activationIndicator-borderWidth: var(--salt-editable-borderWidth-active);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-readOnly:hover,\n.saltTokenizedInputNext-bordered.saltTokenizedInputNext-disabled:hover {\n --tokenizedInput-activationIndicator-borderWidth: 0;\n}\n\n.saltTokenizedInputNext-statusAdornment {\n margin-left: auto;\n margin-right: var(--salt-spacing-100);\n}\n\n.saltTokenizedInputNext-endAdornmentContainer {\n margin-left: auto;\n align-self: self-end;\n display: inline-flex;\n min-height: var(--salt-size-base);\n}\n\n.saltTokenizedInputNext-statusAdornment ~ .saltTokenizedInputNext-endAdornmentContainer {\n margin-left: 0;\n}\n\n.saltTokenizedInputNext .saltButton {\n --saltButton-padding: 0;\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-width: calc(var(--salt-size-base) - var(--salt-spacing-100));\n}\n\n.saltTokenizedInputNext .saltButton.saltTokenizedInputNext-endAdornment {\n --saltButton-margin: auto calc(var(--salt-spacing-50) * -1) auto auto;\n}\n.saltTokenizedInputNext-hidden {\n display: none;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=TokenizedInputNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenizedInputNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,244 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var core = require('@salt-ds/core');
7
+ var React = require('react');
8
+ var useTokenizedInputNext = require('./useTokenizedInputNext.js');
9
+ var clsx = require('clsx');
10
+ var InputPill = require('./internal/InputPill.js');
11
+ var icons = require('@salt-ds/icons');
12
+ var window = require('@salt-ds/window');
13
+ var styles = require('@salt-ds/styles');
14
+ var TokenizedInputNext$1 = require('./TokenizedInputNext.css.js');
15
+
16
+ const withBaseName = core.makePrefixer("saltTokenizedInputNext");
17
+ const getItemsAriaLabel = (itemCount) => itemCount === 0 ? "no item selected" : `${itemCount} ${itemCount > 1 ? "items" : "item"}`;
18
+ const TokenizedInputNext = React.forwardRef(function TokenizedInputNext2({
19
+ textAreaRef: textAreaRefProp,
20
+ textAreaProps = {},
21
+ variant = "primary",
22
+ ...rest
23
+ }, ref) {
24
+ const targetWindow = window.useWindow();
25
+ styles.useComponentCssInjection({
26
+ testId: "salt-tokenized-input-next",
27
+ css: TokenizedInputNext$1,
28
+ window: targetWindow
29
+ });
30
+ const {
31
+ "aria-describedby": textAreaDescribedBy,
32
+ "aria-labelledby": textAreaLabelledBy,
33
+ required: textAreaRequired,
34
+ ...restTextAreaProps
35
+ } = textAreaProps;
36
+ const { refs, helpers, inputProps, firstHiddenIndex } = useTokenizedInputNext.useTokenizedInputNext(rest);
37
+ const {
38
+ textAreaRef: textAreaHookRef,
39
+ pillsRef,
40
+ clearButtonRef,
41
+ expandButtonRef,
42
+ statusAdornmentRef,
43
+ containerRef: containerHookRef
44
+ } = refs;
45
+ const {
46
+ ExpandButtonProps = {
47
+ "aria-label": "expand edit"
48
+ },
49
+ className,
50
+ activeIndices = [],
51
+ selectedItems = [],
52
+ highlightedIndex,
53
+ value,
54
+ expanded,
55
+ disabled,
56
+ onBlur,
57
+ onKeyDown,
58
+ onRemoveItem,
59
+ onInputChange,
60
+ focused,
61
+ validationStatus,
62
+ readOnly,
63
+ onInputFocus,
64
+ onInputBlur,
65
+ onClear,
66
+ onClick,
67
+ onKeyUp,
68
+ id: idProp,
69
+ "aria-label": ariaLabel,
70
+ "aria-labelledby": ariaLabelledBy,
71
+ "aria-describedby": ariaDescribedBy,
72
+ ...restProps
73
+ } = inputProps;
74
+ const id = core.useId(idProp);
75
+ const inputId = `${id}-input`;
76
+ const expandButtonId = `${id}-expand-button`;
77
+ const clearButtonId = `${id}-clear-button`;
78
+ const keydownExpandButton = React.useRef(false);
79
+ const containerRef = core.useForkRef(ref, containerHookRef);
80
+ const textAreaRef = core.useForkRef(textAreaHookRef, textAreaRefProp);
81
+ const showExpandButton = !expanded && firstHiddenIndex != null;
82
+ const hasHelpers = (helpers2) => {
83
+ if (process.env.NODE_ENV !== "production") {
84
+ if (helpers2 == null) {
85
+ console.warn(
86
+ 'TokenizedInputNext is used without helpers. You should pass in "helpers" from "useTokenizedInputNext".'
87
+ );
88
+ }
89
+ }
90
+ return helpers2 != null;
91
+ };
92
+ const handleExpandButtonKeyDown = (event) => {
93
+ const singleChar = event.key.length === 1;
94
+ const triggerExpand = [
95
+ "CONTROL",
96
+ "META",
97
+ "ENTER",
98
+ "BACKSPACE",
99
+ "ARROWDOWN",
100
+ "ARROWLEFT",
101
+ "ARROWRIGHT"
102
+ ].indexOf(event.key.toUpperCase()) !== -1;
103
+ if ((singleChar || triggerExpand) && hasHelpers(helpers)) {
104
+ if (event.key === "Enter" || event.key === " ") {
105
+ event.preventDefault();
106
+ event.stopPropagation();
107
+ }
108
+ helpers.updateExpanded(event, true);
109
+ keydownExpandButton.current = true;
110
+ }
111
+ };
112
+ const handleInputKeyUp = (event) => {
113
+ if (keydownExpandButton.current && "Enter" !== event.key) {
114
+ keydownExpandButton.current = false;
115
+ onKeyDown == null ? void 0 : onKeyDown(event);
116
+ }
117
+ onKeyUp == null ? void 0 : onKeyUp(event);
118
+ };
119
+ const handleExpand = (event) => {
120
+ event.stopPropagation();
121
+ if (hasHelpers(helpers)) {
122
+ helpers.updateExpanded(event, true);
123
+ }
124
+ };
125
+ const handleClearButtonFocus = (event) => {
126
+ event.stopPropagation();
127
+ };
128
+ const selectedItemIds = selectedItems.map(
129
+ (_, index) => `${id}-pill-${index}`
130
+ );
131
+ const inputAriaLabelledBy = disabled ? [ariaLabelledBy, inputId, ...selectedItemIds] : [ariaLabelledBy, inputId];
132
+ const expandedWithItems = expanded && !showExpandButton && selectedItems.length > 0;
133
+ const { "aria-label": expandButtonAccessibleText, ...restExpandButtonProps } = ExpandButtonProps;
134
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
135
+ className: withBaseName("container"),
136
+ children: [
137
+ /* @__PURE__ */ jsxRuntime.jsx("span", {
138
+ "aria-owns": selectedItemIds.join(" "),
139
+ className: withBaseName("hidden"),
140
+ role: "listbox"
141
+ }),
142
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
143
+ className: clsx.clsx(
144
+ withBaseName(),
145
+ withBaseName(variant),
146
+ {
147
+ [withBaseName("expanded")]: expanded,
148
+ [withBaseName("focused")]: !disabled && focused,
149
+ [withBaseName("disabled")]: disabled,
150
+ [withBaseName("readOnly")]: readOnly,
151
+ [withBaseName(validationStatus)]: validationStatus
152
+ },
153
+ className
154
+ ),
155
+ ref: containerRef,
156
+ onClick,
157
+ tabIndex: -1,
158
+ ...restProps,
159
+ children: [
160
+ selectedItems.length > 0 && selectedItems.map((item, index) => {
161
+ const label = String(item);
162
+ return /* @__PURE__ */ jsxRuntime.jsx(InputPill.InputPill, {
163
+ disabled,
164
+ hidden: showExpandButton && index >= firstHiddenIndex,
165
+ highlighted: index === highlightedIndex || activeIndices.indexOf(index) !== -1,
166
+ id: `${id}-pill-${index}`,
167
+ index,
168
+ label,
169
+ onClose: expanded && !readOnly ? (event) => onRemoveItem == null ? void 0 : onRemoveItem(event, index) : void 0,
170
+ pillsRef
171
+ }, `${index}-${label}`);
172
+ }),
173
+ /* @__PURE__ */ jsxRuntime.jsx("textarea", {
174
+ "aria-labelledby": clsx.clsx(inputAriaLabelledBy, textAreaLabelledBy),
175
+ "aria-describedby": clsx.clsx(ariaDescribedBy, textAreaDescribedBy),
176
+ "aria-label": clsx.clsx(ariaLabel, getItemsAriaLabel(selectedItems.length)),
177
+ "aria-activedescendant": highlightedIndex && highlightedIndex >= 0 ? `${id}-pill-${highlightedIndex}` : void 0,
178
+ disabled,
179
+ id: inputId,
180
+ readOnly,
181
+ ref: textAreaRef,
182
+ required: textAreaRequired,
183
+ rows: 1,
184
+ tabIndex: disabled ? -1 : 0,
185
+ value,
186
+ className: clsx.clsx(withBaseName("textarea"), textAreaProps == null ? void 0 : textAreaProps.className),
187
+ onChange: onInputChange,
188
+ onBlur: onInputBlur,
189
+ onFocus: !disabled ? onInputFocus : void 0,
190
+ onKeyDown,
191
+ ...restTextAreaProps
192
+ }),
193
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
194
+ className: withBaseName("endAdornmentContainer"),
195
+ children: [
196
+ !disabled && !readOnly && validationStatus && /* @__PURE__ */ jsxRuntime.jsx(core.StatusAdornment, {
197
+ className: withBaseName("statusAdornment"),
198
+ ref: statusAdornmentRef,
199
+ status: validationStatus
200
+ }),
201
+ expandedWithItems && !readOnly && /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
202
+ className: withBaseName("endAdornment"),
203
+ disabled,
204
+ id: clearButtonId,
205
+ onBlur,
206
+ onClick: onClear,
207
+ onFocus: handleClearButtonFocus,
208
+ ref: clearButtonRef,
209
+ variant: "secondary",
210
+ "data-testid": "clear-button",
211
+ "aria-label": "clear input",
212
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.CloseIcon, {
213
+ "aria-hidden": true
214
+ })
215
+ }),
216
+ showExpandButton && /* @__PURE__ */ jsxRuntime.jsx(core.Button, {
217
+ className: withBaseName("endAdornment"),
218
+ "aria-label": expandButtonAccessibleText,
219
+ "aria-labelledby": clsx.clsx(ariaLabelledBy, inputId, expandButtonId),
220
+ disabled,
221
+ id: expandButtonId,
222
+ onBlur,
223
+ onClick: handleExpand,
224
+ onKeyDown: handleExpandButtonKeyDown,
225
+ onKeyUp: handleInputKeyUp,
226
+ ref: expandButtonRef,
227
+ variant: "secondary",
228
+ "data-testid": "expand-button",
229
+ ...restExpandButtonProps,
230
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.OverflowMenuIcon, {})
231
+ })
232
+ ]
233
+ }),
234
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
235
+ className: withBaseName("activationIndicator")
236
+ })
237
+ ]
238
+ })
239
+ ]
240
+ });
241
+ });
242
+
243
+ exports.TokenizedInputNext = TokenizedInputNext;
244
+ //# sourceMappingURL=TokenizedInputNext.js.map