@salt-ds/lab 1.0.0-alpha.25 → 1.0.0-alpha.27

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 (348) hide show
  1. package/css/salt-lab.css +452 -522
  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 -170
  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 +12 -10
  14. package/dist-cjs/index.js.map +1 -1
  15. package/dist-cjs/layer-layout/LayerLayout.js +0 -1
  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/navigation-item/ConditionalWrapper.js +2 -4
  22. package/dist-cjs/navigation-item/ConditionalWrapper.js.map +1 -1
  23. package/dist-cjs/navigation-item/ExpansionIcon.js +2 -4
  24. package/dist-cjs/navigation-item/ExpansionIcon.js.map +1 -1
  25. package/dist-cjs/navigation-item/NavigationItem.css.js +1 -1
  26. package/dist-cjs/navigation-item/NavigationItem.js +4 -7
  27. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
  28. package/dist-cjs/option/Option.css.js +6 -0
  29. package/dist-cjs/option/Option.css.js.map +1 -0
  30. package/dist-cjs/option/Option.js +113 -0
  31. package/dist-cjs/option/Option.js.map +1 -0
  32. package/dist-cjs/option/OptionGroup.css.js +6 -0
  33. package/dist-cjs/option/OptionGroup.css.js.map +1 -0
  34. package/dist-cjs/option/OptionGroup.js +44 -0
  35. package/dist-cjs/option/OptionGroup.js.map +1 -0
  36. package/dist-cjs/option/OptionList.css.js +6 -0
  37. package/dist-cjs/option/OptionList.css.js.map +1 -0
  38. package/dist-cjs/option/OptionList.js +40 -0
  39. package/dist-cjs/option/OptionList.js.map +1 -0
  40. package/dist-cjs/pagination/CompactInput.css.js +6 -0
  41. package/dist-cjs/pagination/CompactInput.css.js.map +1 -0
  42. package/dist-cjs/pagination/CompactInput.js +31 -35
  43. package/dist-cjs/pagination/CompactInput.js.map +1 -1
  44. package/dist-cjs/pagination/CompactPaginator.css.js +6 -0
  45. package/dist-cjs/pagination/CompactPaginator.css.js.map +1 -0
  46. package/dist-cjs/pagination/CompactPaginator.js +76 -0
  47. package/dist-cjs/pagination/CompactPaginator.js.map +1 -0
  48. package/dist-cjs/pagination/GoToInput.css.js +6 -0
  49. package/dist-cjs/pagination/GoToInput.css.js.map +1 -0
  50. package/dist-cjs/pagination/GoToInput.js +37 -59
  51. package/dist-cjs/pagination/GoToInput.js.map +1 -1
  52. package/dist-cjs/pagination/PageButton.css.js +6 -0
  53. package/dist-cjs/pagination/PageButton.css.js.map +1 -0
  54. package/dist-cjs/pagination/PageButton.js +34 -33
  55. package/dist-cjs/pagination/PageButton.js.map +1 -1
  56. package/dist-cjs/pagination/PageRanges.css.js +6 -0
  57. package/dist-cjs/pagination/PageRanges.css.js.map +1 -0
  58. package/dist-cjs/pagination/PageRanges.js +73 -0
  59. package/dist-cjs/pagination/PageRanges.js.map +1 -0
  60. package/dist-cjs/pagination/Pagination.css.js +1 -1
  61. package/dist-cjs/pagination/Pagination.js +21 -38
  62. package/dist-cjs/pagination/Pagination.js.map +1 -1
  63. package/dist-cjs/pagination/PaginationContext.js +1 -6
  64. package/dist-cjs/pagination/PaginationContext.js.map +1 -1
  65. package/dist-cjs/pagination/Paginator.css.js +6 -0
  66. package/dist-cjs/pagination/Paginator.css.js.map +1 -0
  67. package/dist-cjs/pagination/Paginator.js +33 -43
  68. package/dist-cjs/pagination/Paginator.js.map +1 -1
  69. package/dist-cjs/pagination/usePaginationContext.js +1 -1
  70. package/dist-cjs/pagination/usePaginationContext.js.map +1 -1
  71. package/dist-cjs/scrim/Scrim.css.js +1 -1
  72. package/dist-cjs/scrim/Scrim.js +10 -140
  73. package/dist-cjs/scrim/Scrim.js.map +1 -1
  74. package/dist-cjs/tokenized-input/internal/InputPill.js +13 -9
  75. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  76. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +6 -0
  77. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js.map +1 -0
  78. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +244 -0
  79. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -0
  80. package/dist-cjs/tokenized-input-next/internal/InputPill.css.js +6 -0
  81. package/dist-cjs/tokenized-input-next/internal/InputPill.css.js.map +1 -0
  82. package/dist-cjs/tokenized-input-next/internal/InputPill.js +83 -0
  83. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -0
  84. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js +22 -0
  85. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -0
  86. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js +37 -0
  87. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -0
  88. package/dist-cjs/tokenized-input-next/internal/useWidth.js +48 -0
  89. package/dist-cjs/tokenized-input-next/internal/useWidth.js.map +1 -0
  90. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js +479 -0
  91. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -0
  92. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +1 -1
  93. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  94. package/dist-cjs/tree/Tree.js +1 -2
  95. package/dist-cjs/tree/Tree.js.map +1 -1
  96. package/dist-es/combo-box-next/ComboBoxNext.js +306 -169
  97. package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -1
  98. package/dist-es/combo-box-next/useComboBoxNext.js +51 -0
  99. package/dist-es/combo-box-next/useComboBoxNext.js.map +1 -0
  100. package/dist-es/dropdown/DropdownBase.js +1 -1
  101. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  102. package/dist-es/dropdown-next/DropdownNext.css.js +1 -1
  103. package/dist-es/dropdown-next/DropdownNext.js +332 -169
  104. package/dist-es/dropdown-next/DropdownNext.js.map +1 -1
  105. package/dist-es/editable-label/EditableLabel.js +1 -1
  106. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  107. package/dist-es/index.js +6 -5
  108. package/dist-es/index.js.map +1 -1
  109. package/dist-es/layer-layout/LayerLayout.js +0 -1
  110. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  111. package/dist-es/list-control/ListControlContext.js +31 -0
  112. package/dist-es/list-control/ListControlContext.js.map +1 -0
  113. package/dist-es/list-control/ListControlState.js +189 -0
  114. package/dist-es/list-control/ListControlState.js.map +1 -0
  115. package/dist-es/navigation-item/ConditionalWrapper.js +2 -4
  116. package/dist-es/navigation-item/ConditionalWrapper.js.map +1 -1
  117. package/dist-es/navigation-item/ExpansionIcon.js +2 -4
  118. package/dist-es/navigation-item/ExpansionIcon.js.map +1 -1
  119. package/dist-es/navigation-item/NavigationItem.css.js +1 -1
  120. package/dist-es/navigation-item/NavigationItem.js +4 -7
  121. package/dist-es/navigation-item/NavigationItem.js.map +1 -1
  122. package/dist-es/option/Option.css.js +4 -0
  123. package/dist-es/option/Option.css.js.map +1 -0
  124. package/dist-es/option/Option.js +109 -0
  125. package/dist-es/option/Option.js.map +1 -0
  126. package/dist-es/option/OptionGroup.css.js +4 -0
  127. package/dist-es/option/OptionGroup.css.js.map +1 -0
  128. package/dist-es/option/OptionGroup.js +40 -0
  129. package/dist-es/option/OptionGroup.js.map +1 -0
  130. package/dist-es/option/OptionList.css.js +4 -0
  131. package/dist-es/option/OptionList.css.js.map +1 -0
  132. package/dist-es/option/OptionList.js +36 -0
  133. package/dist-es/option/OptionList.js.map +1 -0
  134. package/dist-es/pagination/CompactInput.css.js +4 -0
  135. package/dist-es/pagination/CompactInput.css.js.map +1 -0
  136. package/dist-es/pagination/CompactInput.js +32 -36
  137. package/dist-es/pagination/CompactInput.js.map +1 -1
  138. package/dist-es/pagination/CompactPaginator.css.js +4 -0
  139. package/dist-es/pagination/CompactPaginator.css.js.map +1 -0
  140. package/dist-es/pagination/CompactPaginator.js +72 -0
  141. package/dist-es/pagination/CompactPaginator.js.map +1 -0
  142. package/dist-es/pagination/GoToInput.css.js +4 -0
  143. package/dist-es/pagination/GoToInput.css.js.map +1 -0
  144. package/dist-es/pagination/GoToInput.js +40 -62
  145. package/dist-es/pagination/GoToInput.js.map +1 -1
  146. package/dist-es/pagination/PageButton.css.js +4 -0
  147. package/dist-es/pagination/PageButton.css.js.map +1 -0
  148. package/dist-es/pagination/PageButton.js +34 -33
  149. package/dist-es/pagination/PageButton.js.map +1 -1
  150. package/dist-es/pagination/PageRanges.css.js +4 -0
  151. package/dist-es/pagination/PageRanges.css.js.map +1 -0
  152. package/dist-es/pagination/PageRanges.js +69 -0
  153. package/dist-es/pagination/PageRanges.js.map +1 -0
  154. package/dist-es/pagination/Pagination.css.js +1 -1
  155. package/dist-es/pagination/Pagination.js +20 -37
  156. package/dist-es/pagination/Pagination.js.map +1 -1
  157. package/dist-es/pagination/PaginationContext.js +1 -6
  158. package/dist-es/pagination/PaginationContext.js.map +1 -1
  159. package/dist-es/pagination/Paginator.css.js +4 -0
  160. package/dist-es/pagination/Paginator.css.js.map +1 -0
  161. package/dist-es/pagination/Paginator.js +32 -42
  162. package/dist-es/pagination/Paginator.js.map +1 -1
  163. package/dist-es/pagination/usePaginationContext.js +1 -1
  164. package/dist-es/pagination/usePaginationContext.js.map +1 -1
  165. package/dist-es/scrim/Scrim.css.js +1 -1
  166. package/dist-es/scrim/Scrim.js +12 -138
  167. package/dist-es/scrim/Scrim.js.map +1 -1
  168. package/dist-es/tokenized-input/internal/InputPill.js +15 -11
  169. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  170. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +4 -0
  171. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js.map +1 -0
  172. package/dist-es/tokenized-input-next/TokenizedInputNext.js +240 -0
  173. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -0
  174. package/dist-es/tokenized-input-next/internal/InputPill.css.js +4 -0
  175. package/dist-es/tokenized-input-next/internal/InputPill.css.js.map +1 -0
  176. package/dist-es/tokenized-input-next/internal/InputPill.js +79 -0
  177. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -0
  178. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js +18 -0
  179. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -0
  180. package/dist-es/tokenized-input-next/internal/useResizeObserver.js +33 -0
  181. package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -0
  182. package/dist-es/tokenized-input-next/internal/useWidth.js +42 -0
  183. package/dist-es/tokenized-input-next/internal/useWidth.js.map +1 -0
  184. package/dist-es/tokenized-input-next/useTokenizedInputNext.js +471 -0
  185. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -0
  186. package/dist-es/toolbar/overflow-panel/OverflowPanel.js +1 -1
  187. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  188. package/dist-es/tree/Tree.js +1 -2
  189. package/dist-es/tree/Tree.js.map +1 -1
  190. package/dist-types/combo-box-next/ComboBoxNext.d.ts +7 -80
  191. package/dist-types/combo-box-next/useComboBoxNext.d.ts +31 -0
  192. package/dist-types/dialog/useDialog.d.ts +6 -7
  193. package/dist-types/drawer/useDrawer.d.ts +6 -7
  194. package/dist-types/dropdown-next/DropdownNext.d.ts +25 -27
  195. package/dist-types/index.d.ts +2 -2
  196. package/dist-types/list-control/ListControlContext.d.ts +20 -0
  197. package/dist-types/list-control/ListControlState.d.ts +68 -0
  198. package/dist-types/navigation-item/ConditionalWrapper.d.ts +1 -1
  199. package/dist-types/navigation-item/ExpansionIcon.d.ts +1 -1
  200. package/dist-types/option/Option.d.ts +20 -0
  201. package/dist-types/option/OptionGroup.d.ts +12 -0
  202. package/dist-types/option/OptionList.d.ts +5 -0
  203. package/dist-types/option/index.d.ts +2 -0
  204. package/dist-types/pagination/CompactInput.d.ts +2 -8
  205. package/dist-types/pagination/CompactPaginator.d.ts +1 -0
  206. package/dist-types/pagination/GoToInput.d.ts +13 -4
  207. package/dist-types/pagination/PageButton.d.ts +2 -3
  208. package/dist-types/pagination/PageRanges.d.ts +5 -0
  209. package/dist-types/pagination/Pagination.d.ts +15 -4
  210. package/dist-types/pagination/PaginationContext.d.ts +2 -4
  211. package/dist-types/pagination/Paginator.d.ts +6 -3
  212. package/dist-types/pagination/index.d.ts +2 -0
  213. package/dist-types/scrim/Scrim.d.ts +6 -61
  214. package/dist-types/scrim/index.d.ts +0 -1
  215. package/dist-types/tabs/drag-drop/drag-utils.d.ts +6 -6
  216. package/dist-types/tokenized-input/internal/InputPill.d.ts +7 -5
  217. package/dist-types/tokenized-input-next/TokenizedInputNext.d.ts +51 -0
  218. package/dist-types/tokenized-input-next/index.d.ts +2 -0
  219. package/dist-types/tokenized-input-next/internal/InputPill.d.ts +29 -0
  220. package/dist-types/tokenized-input-next/internal/calcFirstHiddenIndex.d.ts +4 -0
  221. package/dist-types/tokenized-input-next/internal/useResizeObserver.d.ts +6 -0
  222. package/dist-types/tokenized-input-next/internal/useWidth.d.ts +7 -0
  223. package/dist-types/tokenized-input-next/useTokenizedInputNext.d.ts +47 -0
  224. package/package.json +3 -3
  225. package/dist-cjs/combo-box-next/ComboBoxNext.css.js +0 -6
  226. package/dist-cjs/combo-box-next/ComboBoxNext.css.js.map +0 -1
  227. package/dist-cjs/combo-box-next/useComboBox.js +0 -147
  228. package/dist-cjs/combo-box-next/useComboBox.js.map +0 -1
  229. package/dist-cjs/combo-box-next/useComboboxPortal.js +0 -75
  230. package/dist-cjs/combo-box-next/useComboboxPortal.js.map +0 -1
  231. package/dist-cjs/combo-box-next/utils.js +0 -36
  232. package/dist-cjs/combo-box-next/utils.js.map +0 -1
  233. package/dist-cjs/dropdown-next/useDropdownNext.js +0 -188
  234. package/dist-cjs/dropdown-next/useDropdownNext.js.map +0 -1
  235. package/dist-cjs/focus-manager/FocusManager.js +0 -158
  236. package/dist-cjs/focus-manager/FocusManager.js.map +0 -1
  237. package/dist-cjs/focus-manager/internal/findAllTabbableElements.js +0 -45
  238. package/dist-cjs/focus-manager/internal/findAllTabbableElements.js.map +0 -1
  239. package/dist-cjs/focus-manager/internal/useReturnFocus.js +0 -59
  240. package/dist-cjs/focus-manager/internal/useReturnFocus.js.map +0 -1
  241. package/dist-cjs/pagination/ArrowButton.js +0 -64
  242. package/dist-cjs/pagination/ArrowButton.js.map +0 -1
  243. package/dist-cjs/pagination/CompactControls.js +0 -38
  244. package/dist-cjs/pagination/CompactControls.js.map +0 -1
  245. package/dist-cjs/pagination/RegularControls.js +0 -58
  246. package/dist-cjs/pagination/RegularControls.js.map +0 -1
  247. package/dist-cjs/pagination/utils.js +0 -10
  248. package/dist-cjs/pagination/utils.js.map +0 -1
  249. package/dist-cjs/pill/ClosablePill.js +0 -61
  250. package/dist-cjs/pill/ClosablePill.js.map +0 -1
  251. package/dist-cjs/pill/Pill.css.js +0 -6
  252. package/dist-cjs/pill/Pill.css.js.map +0 -1
  253. package/dist-cjs/pill/Pill.js +0 -49
  254. package/dist-cjs/pill/Pill.js.map +0 -1
  255. package/dist-cjs/pill/PillBase.js +0 -133
  256. package/dist-cjs/pill/PillBase.js.map +0 -1
  257. package/dist-cjs/pill/SelectablePill.js +0 -55
  258. package/dist-cjs/pill/SelectablePill.js.map +0 -1
  259. package/dist-cjs/pill/constants.js +0 -8
  260. package/dist-cjs/pill/constants.js.map +0 -1
  261. package/dist-cjs/pill/internal/DeleteButton.js +0 -37
  262. package/dist-cjs/pill/internal/DeleteButton.js.map +0 -1
  263. package/dist-cjs/pill/internal/DivButton.js +0 -68
  264. package/dist-cjs/pill/internal/DivButton.js.map +0 -1
  265. package/dist-cjs/pill/internal/PillCheckbox.css.js +0 -6
  266. package/dist-cjs/pill/internal/PillCheckbox.css.js.map +0 -1
  267. package/dist-cjs/pill/internal/PillCheckbox.js +0 -27
  268. package/dist-cjs/pill/internal/PillCheckbox.js.map +0 -1
  269. package/dist-cjs/pill-next/PillNext.css.js +0 -6
  270. package/dist-cjs/pill-next/PillNext.css.js.map +0 -1
  271. package/dist-cjs/pill-next/PillNext.js +0 -65
  272. package/dist-cjs/pill-next/PillNext.js.map +0 -1
  273. package/dist-cjs/scrim/ScrimContext.js +0 -13
  274. package/dist-cjs/scrim/ScrimContext.js.map +0 -1
  275. package/dist-cjs/scrim/internal/PreventFocus.js +0 -39
  276. package/dist-cjs/scrim/internal/PreventFocus.js.map +0 -1
  277. package/dist-es/combo-box-next/ComboBoxNext.css.js +0 -4
  278. package/dist-es/combo-box-next/ComboBoxNext.css.js.map +0 -1
  279. package/dist-es/combo-box-next/useComboBox.js +0 -143
  280. package/dist-es/combo-box-next/useComboBox.js.map +0 -1
  281. package/dist-es/combo-box-next/useComboboxPortal.js +0 -71
  282. package/dist-es/combo-box-next/useComboboxPortal.js.map +0 -1
  283. package/dist-es/combo-box-next/utils.js +0 -31
  284. package/dist-es/combo-box-next/utils.js.map +0 -1
  285. package/dist-es/dropdown-next/useDropdownNext.js +0 -184
  286. package/dist-es/dropdown-next/useDropdownNext.js.map +0 -1
  287. package/dist-es/focus-manager/FocusManager.js +0 -154
  288. package/dist-es/focus-manager/FocusManager.js.map +0 -1
  289. package/dist-es/focus-manager/internal/findAllTabbableElements.js +0 -41
  290. package/dist-es/focus-manager/internal/findAllTabbableElements.js.map +0 -1
  291. package/dist-es/focus-manager/internal/useReturnFocus.js +0 -55
  292. package/dist-es/focus-manager/internal/useReturnFocus.js.map +0 -1
  293. package/dist-es/pagination/ArrowButton.js +0 -60
  294. package/dist-es/pagination/ArrowButton.js.map +0 -1
  295. package/dist-es/pagination/CompactControls.js +0 -34
  296. package/dist-es/pagination/CompactControls.js.map +0 -1
  297. package/dist-es/pagination/RegularControls.js +0 -54
  298. package/dist-es/pagination/RegularControls.js.map +0 -1
  299. package/dist-es/pagination/utils.js +0 -6
  300. package/dist-es/pagination/utils.js.map +0 -1
  301. package/dist-es/pill/ClosablePill.js +0 -57
  302. package/dist-es/pill/ClosablePill.js.map +0 -1
  303. package/dist-es/pill/Pill.css.js +0 -4
  304. package/dist-es/pill/Pill.css.js.map +0 -1
  305. package/dist-es/pill/Pill.js +0 -45
  306. package/dist-es/pill/Pill.js.map +0 -1
  307. package/dist-es/pill/PillBase.js +0 -129
  308. package/dist-es/pill/PillBase.js.map +0 -1
  309. package/dist-es/pill/SelectablePill.js +0 -51
  310. package/dist-es/pill/SelectablePill.js.map +0 -1
  311. package/dist-es/pill/constants.js +0 -4
  312. package/dist-es/pill/constants.js.map +0 -1
  313. package/dist-es/pill/internal/DeleteButton.js +0 -33
  314. package/dist-es/pill/internal/DeleteButton.js.map +0 -1
  315. package/dist-es/pill/internal/DivButton.js +0 -64
  316. package/dist-es/pill/internal/DivButton.js.map +0 -1
  317. package/dist-es/pill/internal/PillCheckbox.css.js +0 -4
  318. package/dist-es/pill/internal/PillCheckbox.css.js.map +0 -1
  319. package/dist-es/pill/internal/PillCheckbox.js +0 -23
  320. package/dist-es/pill/internal/PillCheckbox.js.map +0 -1
  321. package/dist-es/pill-next/PillNext.css.js +0 -4
  322. package/dist-es/pill-next/PillNext.css.js.map +0 -1
  323. package/dist-es/pill-next/PillNext.js +0 -57
  324. package/dist-es/pill-next/PillNext.js.map +0 -1
  325. package/dist-es/scrim/ScrimContext.js +0 -9
  326. package/dist-es/scrim/ScrimContext.js.map +0 -1
  327. package/dist-es/scrim/internal/PreventFocus.js +0 -35
  328. package/dist-es/scrim/internal/PreventFocus.js.map +0 -1
  329. package/dist-types/combo-box-next/useComboBox.d.ts +0 -44
  330. package/dist-types/combo-box-next/useComboboxPortal.d.ts +0 -22
  331. package/dist-types/combo-box-next/utils.d.ts +0 -7
  332. package/dist-types/dropdown-next/useDropdownNext.d.ts +0 -42
  333. package/dist-types/pagination/ArrowButton.d.ts +0 -7
  334. package/dist-types/pagination/CompactControls.d.ts +0 -8
  335. package/dist-types/pagination/RegularControls.d.ts +0 -8
  336. package/dist-types/pagination/utils.d.ts +0 -1
  337. package/dist-types/pill/ClosablePill.d.ts +0 -8
  338. package/dist-types/pill/Pill.d.ts +0 -15
  339. package/dist-types/pill/PillBase.d.ts +0 -52
  340. package/dist-types/pill/SelectablePill.d.ts +0 -17
  341. package/dist-types/pill/constants.d.ts +0 -1
  342. package/dist-types/pill/index.d.ts +0 -3
  343. package/dist-types/pill/internal/DeleteButton.d.ts +0 -8
  344. package/dist-types/pill/internal/DivButton.d.ts +0 -12
  345. package/dist-types/pill/internal/PillCheckbox.d.ts +0 -3
  346. package/dist-types/pill-next/PillNext.d.ts +0 -7
  347. package/dist-types/pill-next/index.d.ts +0 -1
  348. package/dist-types/scrim/ScrimContext.d.ts +0 -1
@@ -1,160 +1,34 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { hideOthers } from 'aria-hidden';
3
2
  import { clsx } from 'clsx';
4
- import noScroll from 'no-scroll';
5
- import { forwardRef, useRef, useEffect } from 'react';
6
- import { makePrefixer, useForkRef, useId, ownerDocument } from '@salt-ds/core';
7
- import { FocusManager } from '../focus-manager/FocusManager.js';
8
- import { preventFocusOthers } from './internal/PreventFocus.js';
9
- import { ScrimContext } from './ScrimContext.js';
3
+ import { forwardRef } from 'react';
4
+ import { makePrefixer } from '@salt-ds/core';
10
5
  import { useWindow } from '@salt-ds/window';
11
6
  import { useComponentCssInjection } from '@salt-ds/styles';
12
7
  import css_248z from './Scrim.css.js';
13
8
 
14
- const scrims = /* @__PURE__ */ new Set();
15
- const getDefaultParent = () => typeof document !== "undefined" ? document.body : null;
16
- const noop = () => {
17
- };
18
9
  const withBaseName = makePrefixer("saltScrim");
19
- function preventSelection(parent = getDefaultParent()) {
20
- if (parent) {
21
- const previous = parent.style.userSelect;
22
- parent.style.userSelect = "none";
23
- return () => {
24
- parent.style.userSelect = previous;
25
- };
26
- }
27
- return noop;
28
- }
29
- const defaultSelector = `
30
- [tabindex="0"],
31
- a:not([tabindex="-1"]),
32
- area:not([tabindex="-1"]),
33
- details:not([tabindex="-1"]),
34
- iframe:not([tabindex="-1"]),
35
- select:not([tabindex="-1"]),
36
- textarea:not([tabindex="-1"]),
37
- button:not([tabindex="-1"]),
38
- input:not([tabindex="-1"])
39
- `;
40
- const Scrim = forwardRef(function Scrim2({
41
- autoFocusRef,
42
- closeWithEscape = false,
43
- className,
44
- children,
45
- disableAutoFocus,
46
- disableFocusTrap,
47
- disableReturnFocus,
48
- fallbackFocusRef,
49
- onBackDropClick,
50
- onClose,
51
- open,
52
- containerRef,
53
- enableContainerMode = false,
54
- returnFocusOptions,
55
- tabEnabledSelectors = defaultSelector,
56
- zIndex,
57
- ...rest
58
- }, ref) {
10
+ const Scrim = forwardRef(function Scrim2({ className, children, fixed = false, open = true, ...rest }, ref) {
59
11
  const targetWindow = useWindow();
60
12
  useComponentCssInjection({
61
13
  testId: "salt-scrim",
62
14
  css: css_248z,
63
15
  window: targetWindow
64
16
  });
65
- const scrimRef = useRef(null);
66
- const setWrapperRef = useForkRef(ref, scrimRef);
67
- const undoAria = useRef(noop);
68
- const undoSelection = useRef(noop);
69
- const undoTabIndex = useRef(noop);
70
- const scrimId = useId();
71
- useEffect(() => {
72
- if (open && !(containerRef == null ? void 0 : containerRef.current)) {
73
- scrims.add(scrimId);
74
- noScroll.on();
75
- }
76
- return () => {
77
- if (open) {
78
- scrims.delete(scrimId);
79
- if (scrims.size === 0) {
80
- noScroll.off();
81
- }
82
- }
83
- };
84
- }, [open, containerRef, scrimId]);
85
- useEffect(() => {
86
- if (open) {
87
- const parent = (containerRef == null ? void 0 : containerRef.current) || void 0;
88
- if (scrimRef.current) {
89
- undoAria.current = hideOthers(scrimRef.current, parent);
90
- }
91
- }
92
- return () => {
93
- var _a;
94
- (_a = undoAria.current) == null ? void 0 : _a.call(undoAria);
95
- };
96
- }, [open, containerRef]);
97
- useEffect(() => {
98
- if (open) {
99
- const parent = containerRef == null ? void 0 : containerRef.current;
100
- if (parent) {
101
- undoSelection.current = preventSelection(parent);
102
- undoTabIndex.current = preventFocusOthers(
103
- scrimRef.current,
104
- tabEnabledSelectors,
105
- parent
106
- );
107
- }
108
- }
109
- return () => {
110
- var _a, _b;
111
- (_a = undoSelection.current) == null ? void 0 : _a.call(undoSelection);
112
- (_b = undoTabIndex.current) == null ? void 0 : _b.call(undoTabIndex);
113
- };
114
- }, [open, containerRef, tabEnabledSelectors]);
115
- useEffect(() => {
116
- if (closeWithEscape && open && scrimRef.current) {
117
- const escapeHandler = (event) => {
118
- if (event.key === "Escape") {
119
- onClose == null ? void 0 : onClose();
120
- }
121
- };
122
- const doc = ownerDocument(scrimRef.current);
123
- doc.addEventListener("keydown", escapeHandler);
124
- return () => {
125
- doc.removeEventListener("keydown", escapeHandler);
126
- };
127
- }
128
- }, [closeWithEscape, onClose, open]);
129
17
  if (!open) {
130
18
  return null;
131
19
  }
132
20
  return /* @__PURE__ */ jsx("div", {
133
- "aria-modal": !enableContainerMode,
134
- className: clsx(className, withBaseName(), {
135
- [withBaseName("containerFix")]: enableContainerMode
136
- }),
21
+ className: clsx(
22
+ withBaseName(),
23
+ {
24
+ [withBaseName("fixed")]: fixed
25
+ },
26
+ className
27
+ ),
137
28
  "data-testid": "scrim",
138
- onClick: onBackDropClick,
139
- ref: setWrapperRef,
140
- role: "dialog",
141
- style: {
142
- zIndex
143
- },
29
+ ref,
144
30
  ...rest,
145
- children: /* @__PURE__ */ jsx(FocusManager, {
146
- active: open,
147
- autoFocusRef,
148
- disableAutoFocus,
149
- disableFocusTrap: disableFocusTrap || !!enableContainerMode,
150
- disableReturnFocus,
151
- returnFocusOptions,
152
- tabEnabledSelectors,
153
- children: /* @__PURE__ */ jsx(ScrimContext.Provider, {
154
- value: onClose,
155
- children
156
- })
157
- })
31
+ children
158
32
  });
159
33
  });
160
34
 
@@ -1 +1 @@
1
- {"version":3,"file":"Scrim.js","sources":["../src/scrim/Scrim.tsx"],"sourcesContent":["import { hideOthers } from \"aria-hidden\";\nimport { clsx } from \"clsx\";\nimport noScroll from \"no-scroll\";\nimport {\n forwardRef,\n HTMLAttributes,\n RefObject,\n SyntheticEvent,\n useEffect,\n useRef,\n} from \"react\";\nimport { makePrefixer, ownerDocument, useForkRef, useId } from \"@salt-ds/core\";\nimport { FocusManager, FocusManagerProps } from \"../focus-manager\";\nimport { preventFocusOthers } from \"./internal/PreventFocus\";\nimport { ScrimContext } from \"./ScrimContext\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport scrimCss from \"./Scrim.css\";\n\nconst scrims = new Set();\n\nconst getDefaultParent = () =>\n typeof document !== \"undefined\" ? document.body : null;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\n\nconst withBaseName = makePrefixer(\"saltScrim\");\n\nfunction preventSelection(parent = getDefaultParent()): () => void {\n if (parent) {\n const previous = parent.style.userSelect;\n parent.style.userSelect = \"none\";\n\n return () => {\n parent.style.userSelect = previous;\n };\n }\n return noop;\n}\n\nconst defaultSelector = `\n[tabindex=\"0\"],\na:not([tabindex=\"-1\"]),\narea:not([tabindex=\"-1\"]),\ndetails:not([tabindex=\"-1\"]),\niframe:not([tabindex=\"-1\"]),\nselect:not([tabindex=\"-1\"]),\ntextarea:not([tabindex=\"-1\"]),\nbutton:not([tabindex=\"-1\"]),\ninput:not([tabindex=\"-1\"])\n`;\n\nexport interface ScrimProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Ref of the element that automatically receives focus when the Scrim is opened.\n */\n autoFocusRef?: FocusManagerProps[\"autoFocusRef\"];\n /**\n * Prop to enable escape key to close scrim.\n * The default value of this props is false\n */\n closeWithEscape?: boolean;\n /**\n * If `true`, the trap focus will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n */\n disableAutoFocus?: boolean;\n /**\n * If `true`, the trap focus will not prevent focus from leaving the trap focus while open.\n */\n disableFocusTrap?: boolean;\n /**\n * If `true`, the trap focus will not restore focus to previously focused element once\n * trap focus is hidden.\n */\n disableReturnFocus?: boolean;\n /**\n * By default, an error will be thrown if the focus trap contains no elements in its tab order.\n * With this option you can specify a fallback element to programmatically receive focus if no other tabbable elements are found.\n * For example, you may want a popover's `<div>` to receive focus if the popover's content includes no tabbable elements.\n */\n fallbackFocusRef?: FocusManagerProps[\"fallbackFocusRef\"];\n /**\n * The handler for backdrop click on Scrim.\n */\n onBackDropClick?: (e: SyntheticEvent) => void;\n /**\n * The handler for onClose of Scrim.\n */\n onClose?: () => void;\n /**\n * To maintain open and close of the scrim.\n */\n open?: boolean;\n /**\n * Set to true to enable the container use case. If true the Scrim will be bound to a container ref you pass via the `parentRef` prop.\n * Default value is false, and the default behavior is for Scrim to be bound to the document viewport.\n */\n enableContainerMode?: boolean;\n /**\n * Prop necessary to enable container use case. Pass the parent element ref that you want Scrim to be bound to.\n * Default value is undefined, and the default behavior is for Scrim to be bound to the document viewport.\n */\n containerRef?: RefObject<HTMLElement>;\n /**\n * Options object to pass to the `focus()` method that is called on the previously focused element when Scrim is closed.\n */\n returnFocusOptions?: FocusManagerProps[\"returnFocusOptions\"];\n /**\n * comma separated string of query selectors which may need to be overridden for edge cases.\n */\n tabEnabledSelectors?: string;\n /**\n * Prop to pass z-index for Scrim.\n */\n zIndex?: number;\n}\n\nexport const Scrim = forwardRef<HTMLDivElement, ScrimProps>(function Scrim(\n {\n autoFocusRef,\n closeWithEscape = false,\n className,\n children,\n disableAutoFocus,\n disableFocusTrap,\n disableReturnFocus,\n fallbackFocusRef,\n onBackDropClick,\n onClose,\n open,\n containerRef,\n enableContainerMode = false,\n returnFocusOptions,\n tabEnabledSelectors = defaultSelector,\n zIndex,\n ...rest\n },\n ref\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-scrim\",\n css: scrimCss,\n window: targetWindow,\n });\n\n const scrimRef = useRef<HTMLDivElement>(null);\n const setWrapperRef = useForkRef(ref, scrimRef);\n const undoAria = useRef(noop);\n const undoSelection = useRef(noop);\n const undoTabIndex = useRef(noop);\n const scrimId = useId();\n\n useEffect(() => {\n if (open && !containerRef?.current) {\n scrims.add(scrimId);\n noScroll.on();\n }\n\n return () => {\n if (open) {\n scrims.delete(scrimId);\n if (scrims.size === 0) {\n noScroll.off();\n }\n }\n };\n }, [open, containerRef, scrimId]);\n\n useEffect(() => {\n if (open) {\n const parent = containerRef?.current || undefined;\n\n if (scrimRef.current) {\n undoAria.current = hideOthers(scrimRef.current, parent);\n }\n }\n\n return () => {\n undoAria.current?.();\n };\n }, [open, containerRef]);\n\n useEffect(() => {\n if (open) {\n const parent = containerRef?.current;\n\n if (parent) {\n undoSelection.current = preventSelection(parent);\n undoTabIndex.current = preventFocusOthers(\n scrimRef.current,\n tabEnabledSelectors,\n parent\n );\n }\n }\n\n return () => {\n undoSelection.current?.();\n undoTabIndex.current?.();\n };\n }, [open, containerRef, tabEnabledSelectors]);\n\n useEffect(() => {\n if (closeWithEscape && open && scrimRef.current) {\n const escapeHandler = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose?.();\n }\n };\n\n const doc = ownerDocument(scrimRef.current);\n doc.addEventListener(\"keydown\", escapeHandler);\n\n return () => {\n doc.removeEventListener(\"keydown\", escapeHandler);\n };\n }\n }, [closeWithEscape, onClose, open]);\n\n if (!open) {\n return null;\n }\n\n return (\n <div\n aria-modal={!enableContainerMode}\n className={clsx(className, withBaseName(), {\n [withBaseName(\"containerFix\")]: enableContainerMode,\n })}\n data-testid=\"scrim\"\n onClick={onBackDropClick}\n ref={setWrapperRef}\n role=\"dialog\"\n style={{\n zIndex,\n }}\n {...rest}\n >\n <FocusManager\n active={open}\n autoFocusRef={autoFocusRef}\n disableAutoFocus={disableAutoFocus}\n disableFocusTrap={disableFocusTrap || !!enableContainerMode}\n disableReturnFocus={disableReturnFocus}\n returnFocusOptions={returnFocusOptions}\n tabEnabledSelectors={tabEnabledSelectors}\n >\n <ScrimContext.Provider value={onClose}>\n {children}\n </ScrimContext.Provider>\n </FocusManager>\n </div>\n );\n});\n"],"names":["Scrim","scrimCss"],"mappings":";;;;;;;;;;;;;AAqBA,MAAM,MAAA,uBAAa,GAAI,EAAA,CAAA;AAEvB,MAAM,mBAAmB,MACvB,OAAO,QAAa,KAAA,WAAA,GAAc,SAAS,IAAO,GAAA,IAAA,CAAA;AAGpD,MAAM,OAAO,MAAM;AAAC,CAAA,CAAA;AAEpB,MAAM,YAAA,GAAe,aAAa,WAAW,CAAA,CAAA;AAE7C,SAAS,gBAAA,CAAiB,MAAS,GAAA,gBAAA,EAAgC,EAAA;AACjE,EAAA,IAAI,MAAQ,EAAA;AACV,IAAM,MAAA,QAAA,GAAW,OAAO,KAAM,CAAA,UAAA,CAAA;AAC9B,IAAA,MAAA,CAAO,MAAM,UAAa,GAAA,MAAA,CAAA;AAE1B,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,MAAM,UAAa,GAAA,QAAA,CAAA;AAAA,KAC5B,CAAA;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEA,MAAM,eAAkB,GAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AA8EX,MAAA,KAAA,GAAQ,UAAuC,CAAA,SAASA,MACnE,CAAA;AAAA,EACE,YAAA;AAAA,EACA,eAAkB,GAAA,KAAA;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,mBAAsB,GAAA,KAAA;AAAA,EACtB,kBAAA;AAAA,EACA,mBAAsB,GAAA,eAAA;AAAA,EACtB,MAAA;AAAA,EACG,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,YAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA,QAAA,GAAW,OAAuB,IAAI,CAAA,CAAA;AAC5C,EAAM,MAAA,aAAA,GAAgB,UAAW,CAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAC9C,EAAM,MAAA,QAAA,GAAW,OAAO,IAAI,CAAA,CAAA;AAC5B,EAAM,MAAA,aAAA,GAAgB,OAAO,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,YAAA,GAAe,OAAO,IAAI,CAAA,CAAA;AAChC,EAAA,MAAM,UAAU,KAAM,EAAA,CAAA;AAEtB,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,IAAA,IAAQ,EAAC,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAc,OAAS,CAAA,EAAA;AAClC,MAAA,MAAA,CAAO,IAAI,OAAO,CAAA,CAAA;AAClB,MAAA,QAAA,CAAS,EAAG,EAAA,CAAA;AAAA,KACd;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,IAAM,EAAA;AACR,QAAA,MAAA,CAAO,OAAO,OAAO,CAAA,CAAA;AACrB,QAAI,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACrB,UAAA,QAAA,CAAS,GAAI,EAAA,CAAA;AAAA,SACf;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,YAAA,EAAc,OAAO,CAAC,CAAA,CAAA;AAEhC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAM,EAAA;AACR,MAAM,MAAA,MAAA,GAAA,CAAS,6CAAc,OAAW,KAAA,KAAA,CAAA,CAAA;AAExC,MAAA,IAAI,SAAS,OAAS,EAAA;AACpB,QAAA,QAAA,CAAS,OAAU,GAAA,UAAA,CAAW,QAAS,CAAA,OAAA,EAAS,MAAM,CAAA,CAAA;AAAA,OACxD;AAAA,KACF;AAEA,IAAA,OAAO,MAAM;AAtLjB,MAAA,IAAA,EAAA,CAAA;AAuLM,MAAA,CAAA,EAAA,GAAA,QAAA,CAAS,OAAT,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA;AAAA,KACF,CAAA;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,YAAY,CAAC,CAAA,CAAA;AAEvB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,MAAM,SAAS,YAAc,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,OAAA,CAAA;AAE7B,MAAA,IAAI,MAAQ,EAAA;AACV,QAAc,aAAA,CAAA,OAAA,GAAU,iBAAiB,MAAM,CAAA,CAAA;AAC/C,QAAA,YAAA,CAAa,OAAU,GAAA,kBAAA;AAAA,UACrB,QAAS,CAAA,OAAA;AAAA,UACT,mBAAA;AAAA,UACA,MAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAEA,IAAA,OAAO,MAAM;AAzMjB,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA0MM,MAAA,CAAA,EAAA,GAAA,aAAA,CAAc,OAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,aAAA,CAAA,CAAA;AACA,MAAA,CAAA,EAAA,GAAA,YAAA,CAAa,OAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,YAAA,CAAA,CAAA;AAAA,KACF,CAAA;AAAA,GACC,EAAA,CAAC,IAAM,EAAA,YAAA,EAAc,mBAAmB,CAAC,CAAA,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,eAAA,IAAmB,IAAQ,IAAA,QAAA,CAAS,OAAS,EAAA;AAC/C,MAAM,MAAA,aAAA,GAAgB,CAAC,KAAyB,KAAA;AAC9C,QAAI,IAAA,KAAA,CAAM,QAAQ,QAAU,EAAA;AAC1B,UAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA;AAAA,SACF;AAAA,OACF,CAAA;AAEA,MAAM,MAAA,GAAA,GAAM,aAAc,CAAA,QAAA,CAAS,OAAO,CAAA,CAAA;AAC1C,MAAI,GAAA,CAAA,gBAAA,CAAiB,WAAW,aAAa,CAAA,CAAA;AAE7C,MAAA,OAAO,MAAM;AACX,QAAI,GAAA,CAAA,mBAAA,CAAoB,WAAW,aAAa,CAAA,CAAA;AAAA,OAClD,CAAA;AAAA,KACF;AAAA,GACC,EAAA,CAAC,eAAiB,EAAA,OAAA,EAAS,IAAI,CAAC,CAAA,CAAA;AAEnC,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,cAAY,CAAC,mBAAA;AAAA,IACb,SAAW,EAAA,IAAA,CAAK,SAAW,EAAA,YAAA,EAAgB,EAAA;AAAA,MACzC,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,mBAAA;AAAA,KACjC,CAAA;AAAA,IACD,aAAY,EAAA,OAAA;AAAA,IACZ,OAAS,EAAA,eAAA;AAAA,IACT,GAAK,EAAA,aAAA;AAAA,IACL,IAAK,EAAA,QAAA;AAAA,IACL,KAAO,EAAA;AAAA,MACL,MAAA;AAAA,KACF;AAAA,IACC,GAAG,IAAA;AAAA,IAEJ,QAAC,kBAAA,GAAA,CAAA,YAAA,EAAA;AAAA,MACC,MAAQ,EAAA,IAAA;AAAA,MACR,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,gBAAA,EAAkB,gBAAoB,IAAA,CAAC,CAAC,mBAAA;AAAA,MACxC,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,mBAAA;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,aAAa,QAAb,EAAA;AAAA,QAAsB,KAAO,EAAA,OAAA;AAAA,QAC3B,QAAA;AAAA,OACH,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"Scrim.js","sources":["../src/scrim/Scrim.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport scrimCss from \"./Scrim.css\";\n\nconst withBaseName = makePrefixer(\"saltScrim\");\n\nexport interface ScrimProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * If `true` the scrim is bound to the document viewport.\n * The default value of this prop is false, and the default behavior is for Scrim to be bound to its parent container (nearest positioned ancestor).\n */\n fixed?: boolean;\n /**\n * If `true` the scrim is shown.\n */\n open?: boolean;\n}\n\nexport const Scrim = forwardRef<HTMLDivElement, ScrimProps>(function Scrim(\n { className, children, fixed = false, open = true, ...rest },\n ref\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-scrim\",\n css: scrimCss,\n window: targetWindow,\n });\n\n if (!open) {\n return null;\n }\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"fixed\")]: fixed,\n },\n className\n )}\n data-testid=\"scrim\"\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n});\n"],"names":["Scrim","scrimCss"],"mappings":";;;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,WAAW,CAAA,CAAA;AActC,MAAM,KAAQ,GAAA,UAAA,CAAuC,SAASA,MAAAA,CACnE,EAAE,SAAA,EAAW,QAAU,EAAA,KAAA,GAAQ,KAAO,EAAA,IAAA,GAAO,IAAS,EAAA,GAAA,IAAA,IACtD,GACA,EAAA;AACA,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,YAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QACE,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,OAC3B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,aAAY,EAAA,OAAA;AAAA,IACZ,GAAA;AAAA,IACC,GAAG,IAAA;AAAA,IAEH,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,11 +1,9 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { clsx } from 'clsx';
3
3
  import { memo, useRef } from 'react';
4
- import { makePrefixer, useIsomorphicLayoutEffect } from '@salt-ds/core';
4
+ import { makePrefixer, useIsomorphicLayoutEffect, Pill } from '@salt-ds/core';
5
5
  import { getWidth } from './useWidth.js';
6
- import { Pill } from '../../pill/Pill.js';
7
- import '../../pill/ClosablePill.js';
8
- import '../../pill/SelectablePill.js';
6
+ import { CloseIcon } from '@salt-ds/icons';
9
7
 
10
8
  const withBaseName = makePrefixer("saltInputPill");
11
9
  const InputPill = memo(function InputPill2(props) {
@@ -16,10 +14,10 @@ const InputPill = memo(function InputPill2(props) {
16
14
  hidden,
17
15
  highlighted,
18
16
  index,
17
+ label,
19
18
  lastVisible,
20
19
  onDelete,
21
20
  pillsRef,
22
- tabIndex: tabIndexProp,
23
21
  ...restProps
24
22
  } = props;
25
23
  const ref = useRef(null);
@@ -38,7 +36,7 @@ const InputPill = memo(function InputPill2(props) {
38
36
  const handleDelete = () => {
39
37
  onDelete == null ? void 0 : onDelete(index);
40
38
  };
41
- return /* @__PURE__ */ jsx(Pill, {
39
+ return /* @__PURE__ */ jsxs(Pill, {
42
40
  className: clsx(
43
41
  withBaseName(),
44
42
  {
@@ -49,12 +47,18 @@ const InputPill = memo(function InputPill2(props) {
49
47
  className
50
48
  ),
51
49
  disabled,
52
- onDelete: isRemovable ? handleDelete : void 0,
50
+ tabIndex: -1,
51
+ onClick: isRemovable ? handleDelete : void 0,
53
52
  ref,
54
53
  role: "option",
55
- tabIndex: void 0,
56
- variant: isRemovable ? "closable" : "basic",
57
- ...restProps
54
+ ...restProps,
55
+ children: [
56
+ /* @__PURE__ */ jsx("span", {
57
+ className: withBaseName("label"),
58
+ children: label
59
+ }),
60
+ isRemovable && /* @__PURE__ */ jsx(CloseIcon, {})
61
+ ]
58
62
  });
59
63
  });
60
64
 
@@ -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":["InputPill"],"mappings":";;;;;;;;;AAMA,MAAM,YAAA,GAAe,aAAa,eAAe,CAAA,CAAA;AAgC1C,MAAM,SAAY,GAAA,IAAA,CAAK,SAASA,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,GAAM,OAA8B,IAAI,CAAA,CAAA;AAC9C,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA,CAAA;AAIpC,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAI,IAAA,CAAC,WAAe,IAAA,QAAA,CAAS,OAAS,EAAA;AACpC,MAAA,QAAA,CAAS,OAAQ,CAAA,KAAA,CAAA,GAAS,QAAS,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,KAChD;AAAA,KACC,CAAC,QAAA,EAAU,KAAO,EAAA,WAAA,EAAa,WAAW,CAAC,CAAA,CAAA;AAE9C,EAAA,yBAAA;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,uBACG,GAAA,CAAA,IAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA;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":["InputPill"],"mappings":";;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,eAAe,CAAA,CAAA;AAiC1C,MAAM,SAAY,GAAA,IAAA,CAAK,SAASA,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,GAAM,OAAiC,IAAI,CAAA,CAAA;AACjD,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA,CAAA;AAIpC,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAI,IAAA,CAAC,WAAe,IAAA,QAAA,CAAS,OAAS,EAAA;AACpC,MAAA,QAAA,CAAS,OAAQ,CAAA,KAAA,CAAA,GAAS,QAAS,CAAA,GAAA,CAAI,OAAO,CAAA,CAAA;AAAA,KAChD;AAAA,KACC,CAAC,QAAA,EAAU,KAAO,EAAA,WAAA,EAAa,WAAW,CAAC,CAAA,CAAA;AAE9C,EAAA,yBAAA;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,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA;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,sBAAC,GAAA,CAAA,MAAA,EAAA;AAAA,QAAK,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,QAAI,QAAA,EAAA,KAAA;AAAA,OAAM,CAAA;AAAA,MAC9C,WAAA,wBAAgB,SAAU,EAAA,EAAA,CAAA;AAAA,KAAA;AAAA,GAC7B,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ 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";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=TokenizedInputNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenizedInputNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,240 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer, useId, useForkRef, StatusAdornment, Button } from '@salt-ds/core';
3
+ import { forwardRef, useRef } from 'react';
4
+ import { useTokenizedInputNext } from './useTokenizedInputNext.js';
5
+ import { clsx } from 'clsx';
6
+ import { InputPill } from './internal/InputPill.js';
7
+ import { CloseIcon, OverflowMenuIcon } from '@salt-ds/icons';
8
+ import { useWindow } from '@salt-ds/window';
9
+ import { useComponentCssInjection } from '@salt-ds/styles';
10
+ import css_248z from './TokenizedInputNext.css.js';
11
+
12
+ const withBaseName = makePrefixer("saltTokenizedInputNext");
13
+ const getItemsAriaLabel = (itemCount) => itemCount === 0 ? "no item selected" : `${itemCount} ${itemCount > 1 ? "items" : "item"}`;
14
+ const TokenizedInputNext = forwardRef(function TokenizedInputNext2({
15
+ textAreaRef: textAreaRefProp,
16
+ textAreaProps = {},
17
+ variant = "primary",
18
+ ...rest
19
+ }, ref) {
20
+ const targetWindow = useWindow();
21
+ useComponentCssInjection({
22
+ testId: "salt-tokenized-input-next",
23
+ css: css_248z,
24
+ window: targetWindow
25
+ });
26
+ const {
27
+ "aria-describedby": textAreaDescribedBy,
28
+ "aria-labelledby": textAreaLabelledBy,
29
+ required: textAreaRequired,
30
+ ...restTextAreaProps
31
+ } = textAreaProps;
32
+ const { refs, helpers, inputProps, firstHiddenIndex } = useTokenizedInputNext(rest);
33
+ const {
34
+ textAreaRef: textAreaHookRef,
35
+ pillsRef,
36
+ clearButtonRef,
37
+ expandButtonRef,
38
+ statusAdornmentRef,
39
+ containerRef: containerHookRef
40
+ } = refs;
41
+ const {
42
+ ExpandButtonProps = {
43
+ "aria-label": "expand edit"
44
+ },
45
+ className,
46
+ activeIndices = [],
47
+ selectedItems = [],
48
+ highlightedIndex,
49
+ value,
50
+ expanded,
51
+ disabled,
52
+ onBlur,
53
+ onKeyDown,
54
+ onRemoveItem,
55
+ onInputChange,
56
+ focused,
57
+ validationStatus,
58
+ readOnly,
59
+ onInputFocus,
60
+ onInputBlur,
61
+ onClear,
62
+ onClick,
63
+ onKeyUp,
64
+ id: idProp,
65
+ "aria-label": ariaLabel,
66
+ "aria-labelledby": ariaLabelledBy,
67
+ "aria-describedby": ariaDescribedBy,
68
+ ...restProps
69
+ } = inputProps;
70
+ const id = useId(idProp);
71
+ const inputId = `${id}-input`;
72
+ const expandButtonId = `${id}-expand-button`;
73
+ const clearButtonId = `${id}-clear-button`;
74
+ const keydownExpandButton = useRef(false);
75
+ const containerRef = useForkRef(ref, containerHookRef);
76
+ const textAreaRef = useForkRef(textAreaHookRef, textAreaRefProp);
77
+ const showExpandButton = !expanded && firstHiddenIndex != null;
78
+ const hasHelpers = (helpers2) => {
79
+ if (process.env.NODE_ENV !== "production") {
80
+ if (helpers2 == null) {
81
+ console.warn(
82
+ 'TokenizedInputNext is used without helpers. You should pass in "helpers" from "useTokenizedInputNext".'
83
+ );
84
+ }
85
+ }
86
+ return helpers2 != null;
87
+ };
88
+ const handleExpandButtonKeyDown = (event) => {
89
+ const singleChar = event.key.length === 1;
90
+ const triggerExpand = [
91
+ "CONTROL",
92
+ "META",
93
+ "ENTER",
94
+ "BACKSPACE",
95
+ "ARROWDOWN",
96
+ "ARROWLEFT",
97
+ "ARROWRIGHT"
98
+ ].indexOf(event.key.toUpperCase()) !== -1;
99
+ if ((singleChar || triggerExpand) && hasHelpers(helpers)) {
100
+ if (event.key === "Enter" || event.key === " ") {
101
+ event.preventDefault();
102
+ event.stopPropagation();
103
+ }
104
+ helpers.updateExpanded(event, true);
105
+ keydownExpandButton.current = true;
106
+ }
107
+ };
108
+ const handleInputKeyUp = (event) => {
109
+ if (keydownExpandButton.current && "Enter" !== event.key) {
110
+ keydownExpandButton.current = false;
111
+ onKeyDown == null ? void 0 : onKeyDown(event);
112
+ }
113
+ onKeyUp == null ? void 0 : onKeyUp(event);
114
+ };
115
+ const handleExpand = (event) => {
116
+ event.stopPropagation();
117
+ if (hasHelpers(helpers)) {
118
+ helpers.updateExpanded(event, true);
119
+ }
120
+ };
121
+ const handleClearButtonFocus = (event) => {
122
+ event.stopPropagation();
123
+ };
124
+ const selectedItemIds = selectedItems.map(
125
+ (_, index) => `${id}-pill-${index}`
126
+ );
127
+ const inputAriaLabelledBy = disabled ? [ariaLabelledBy, inputId, ...selectedItemIds] : [ariaLabelledBy, inputId];
128
+ const expandedWithItems = expanded && !showExpandButton && selectedItems.length > 0;
129
+ const { "aria-label": expandButtonAccessibleText, ...restExpandButtonProps } = ExpandButtonProps;
130
+ return /* @__PURE__ */ jsxs("div", {
131
+ className: withBaseName("container"),
132
+ children: [
133
+ /* @__PURE__ */ jsx("span", {
134
+ "aria-owns": selectedItemIds.join(" "),
135
+ className: withBaseName("hidden"),
136
+ role: "listbox"
137
+ }),
138
+ /* @__PURE__ */ jsxs("div", {
139
+ className: clsx(
140
+ withBaseName(),
141
+ withBaseName(variant),
142
+ {
143
+ [withBaseName("expanded")]: expanded,
144
+ [withBaseName("focused")]: !disabled && focused,
145
+ [withBaseName("disabled")]: disabled,
146
+ [withBaseName("readOnly")]: readOnly,
147
+ [withBaseName(validationStatus)]: validationStatus
148
+ },
149
+ className
150
+ ),
151
+ ref: containerRef,
152
+ onClick,
153
+ tabIndex: -1,
154
+ ...restProps,
155
+ children: [
156
+ selectedItems.length > 0 && selectedItems.map((item, index) => {
157
+ const label = String(item);
158
+ return /* @__PURE__ */ jsx(InputPill, {
159
+ disabled,
160
+ hidden: showExpandButton && index >= firstHiddenIndex,
161
+ highlighted: index === highlightedIndex || activeIndices.indexOf(index) !== -1,
162
+ id: `${id}-pill-${index}`,
163
+ index,
164
+ label,
165
+ onClose: expanded && !readOnly ? (event) => onRemoveItem == null ? void 0 : onRemoveItem(event, index) : void 0,
166
+ pillsRef
167
+ }, `${index}-${label}`);
168
+ }),
169
+ /* @__PURE__ */ jsx("textarea", {
170
+ "aria-labelledby": clsx(inputAriaLabelledBy, textAreaLabelledBy),
171
+ "aria-describedby": clsx(ariaDescribedBy, textAreaDescribedBy),
172
+ "aria-label": clsx(ariaLabel, getItemsAriaLabel(selectedItems.length)),
173
+ "aria-activedescendant": highlightedIndex && highlightedIndex >= 0 ? `${id}-pill-${highlightedIndex}` : void 0,
174
+ disabled,
175
+ id: inputId,
176
+ readOnly,
177
+ ref: textAreaRef,
178
+ required: textAreaRequired,
179
+ rows: 1,
180
+ tabIndex: disabled ? -1 : 0,
181
+ value,
182
+ className: clsx(withBaseName("textarea"), textAreaProps == null ? void 0 : textAreaProps.className),
183
+ onChange: onInputChange,
184
+ onBlur: onInputBlur,
185
+ onFocus: !disabled ? onInputFocus : void 0,
186
+ onKeyDown,
187
+ ...restTextAreaProps
188
+ }),
189
+ /* @__PURE__ */ jsxs("div", {
190
+ className: withBaseName("endAdornmentContainer"),
191
+ children: [
192
+ !disabled && !readOnly && validationStatus && /* @__PURE__ */ jsx(StatusAdornment, {
193
+ className: withBaseName("statusAdornment"),
194
+ ref: statusAdornmentRef,
195
+ status: validationStatus
196
+ }),
197
+ expandedWithItems && !readOnly && /* @__PURE__ */ jsx(Button, {
198
+ className: withBaseName("endAdornment"),
199
+ disabled,
200
+ id: clearButtonId,
201
+ onBlur,
202
+ onClick: onClear,
203
+ onFocus: handleClearButtonFocus,
204
+ ref: clearButtonRef,
205
+ variant: "secondary",
206
+ "data-testid": "clear-button",
207
+ "aria-label": "clear input",
208
+ children: /* @__PURE__ */ jsx(CloseIcon, {
209
+ "aria-hidden": true
210
+ })
211
+ }),
212
+ showExpandButton && /* @__PURE__ */ jsx(Button, {
213
+ className: withBaseName("endAdornment"),
214
+ "aria-label": expandButtonAccessibleText,
215
+ "aria-labelledby": clsx(ariaLabelledBy, inputId, expandButtonId),
216
+ disabled,
217
+ id: expandButtonId,
218
+ onBlur,
219
+ onClick: handleExpand,
220
+ onKeyDown: handleExpandButtonKeyDown,
221
+ onKeyUp: handleInputKeyUp,
222
+ ref: expandButtonRef,
223
+ variant: "secondary",
224
+ "data-testid": "expand-button",
225
+ ...restExpandButtonProps,
226
+ children: /* @__PURE__ */ jsx(OverflowMenuIcon, {})
227
+ })
228
+ ]
229
+ }),
230
+ /* @__PURE__ */ jsx("div", {
231
+ className: withBaseName("activationIndicator")
232
+ })
233
+ ]
234
+ })
235
+ ]
236
+ });
237
+ });
238
+
239
+ export { TokenizedInputNext };
240
+ //# sourceMappingURL=TokenizedInputNext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenizedInputNext.js","sources":["../src/tokenized-input-next/TokenizedInputNext.tsx"],"sourcesContent":["import {\n AdornmentValidationStatus,\n Button,\n ButtonProps,\n makePrefixer,\n NecessityType,\n StatusAdornment,\n useForkRef,\n useId,\n ValidationStatus,\n} from \"@salt-ds/core\";\nimport {\n ChangeEventHandler,\n FocusEvent,\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n ReactEventHandler,\n Ref,\n SyntheticEvent,\n TextareaHTMLAttributes,\n useRef,\n} from \"react\";\nimport {\n TokenizedInputNextHelpers,\n TokenizedInputNextState,\n useTokenizedInputNext,\n} from \"./useTokenizedInputNext\";\nimport { clsx } from \"clsx\";\nimport { InputPill } from \"./internal/InputPill\";\nimport { CloseIcon, OverflowMenuIcon } from \"@salt-ds/icons\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport tokenizedInputCss from \"./TokenizedInputNext.css\";\n\ntype ChangeHandler<Item> = (\n event: SyntheticEvent,\n selectedItems: Item[] | undefined\n) => void;\n\ntype ExpandButtonProps = Pick<\n ButtonProps,\n \"role\" | \"aria-roledescription\" | \"aria-describedby\"\n> & { \"aria-label\"?: string };\n\nexport interface TokenizedInputNextProps<Item>\n extends Partial<TokenizedInputNextState<Item>>,\n Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onFocus\" | \"onBlur\" | \"onChange\" | \"onKeyUp\" | \"onKeyDown\"\n > {\n ExpandButtonProps?: ExpandButtonProps;\n disabled?: boolean;\n focused?: boolean;\n expandButtonRef?: Ref<HTMLButtonElement>;\n onBlur?: FocusEventHandler<HTMLTextAreaElement | HTMLButtonElement>;\n onKeyUp?: KeyboardEventHandler<HTMLTextAreaElement | HTMLButtonElement>;\n // Can key down on either input or expand button\n onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement | HTMLButtonElement>;\n onRemoveItem?: (event: SyntheticEvent, index: number) => void;\n onInputBlur?: FocusEventHandler<HTMLTextAreaElement>;\n onInputFocus?: FocusEventHandler<HTMLTextAreaElement>;\n onInputChange?: ChangeEventHandler<HTMLTextAreaElement>;\n onClick?: ReactEventHandler;\n onClear?: ReactEventHandler;\n delimiters?: string[];\n disableAddOnBlur?: boolean;\n defaultSelected?: Item[];\n onChange?: ChangeHandler<Item>;\n onCollapse?: ReactEventHandler;\n onExpand?: ReactEventHandler;\n\n /// from input\n /**\n * Validation status.\n */\n validationStatus?: Omit<ValidationStatus, \"info\">;\n /**\n * If `true`, the component is read only.\n */\n readOnly?: boolean;\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#Attributes) applied to the `textarea` element.\n */\n textAreaProps?: TextareaHTMLAttributes<HTMLTextAreaElement>;\n /**\n * Optional ref for the textarea component\n */\n textAreaRef?: Ref<HTMLTextAreaElement>;\n necessity?: NecessityType;\n /**\n * Styling variant. Defaults to \"primary\".\n */\n variant?: \"primary\" | \"secondary\";\n}\n\nconst withBaseName = makePrefixer(\"saltTokenizedInputNext\");\n\nconst getItemsAriaLabel = (itemCount: number) =>\n itemCount === 0\n ? \"no item selected\"\n : `${itemCount} ${itemCount > 1 ? \"items\" : \"item\"}`;\n\nexport const TokenizedInputNext = forwardRef(function TokenizedInputNext<Item>(\n {\n textAreaRef: textAreaRefProp,\n textAreaProps = {},\n variant = \"primary\",\n ...rest\n }: TokenizedInputNextProps<Item>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tokenized-input-next\",\n css: tokenizedInputCss,\n window: targetWindow,\n });\n const {\n \"aria-describedby\": textAreaDescribedBy,\n \"aria-labelledby\": textAreaLabelledBy,\n required: textAreaRequired,\n ...restTextAreaProps\n } = textAreaProps;\n\n const { refs, helpers, inputProps, firstHiddenIndex } =\n useTokenizedInputNext(rest);\n\n const {\n textAreaRef: textAreaHookRef,\n pillsRef,\n clearButtonRef,\n expandButtonRef,\n statusAdornmentRef,\n containerRef: containerHookRef,\n } = refs;\n\n const {\n ExpandButtonProps = {\n \"aria-label\": \"expand edit\",\n },\n className,\n activeIndices = [],\n selectedItems = [],\n highlightedIndex,\n value,\n expanded,\n disabled,\n onBlur,\n onKeyDown,\n onRemoveItem,\n onInputChange,\n focused,\n validationStatus,\n readOnly,\n onInputFocus,\n onInputBlur,\n onClear,\n onClick,\n onKeyUp,\n id: idProp,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...restProps\n } = inputProps;\n\n const id = useId(idProp);\n const inputId = `${id}-input`;\n const expandButtonId = `${id}-expand-button`;\n const clearButtonId = `${id}-clear-button`;\n\n const keydownExpandButton = useRef(false);\n const containerRef = useForkRef(ref, containerHookRef);\n const textAreaRef = useForkRef(textAreaHookRef, textAreaRefProp);\n const showExpandButton = !expanded && firstHiddenIndex != null;\n\n const hasHelpers = (helpers: TokenizedInputNextHelpers<Item>) => {\n if (process.env.NODE_ENV !== \"production\") {\n if (helpers == null) {\n console.warn(\n 'TokenizedInputNext is used without helpers. You should pass in \"helpers\" from \"useTokenizedInputNext\".'\n );\n }\n }\n return helpers != null;\n };\n\n const handleExpandButtonKeyDown = (\n event: KeyboardEvent<HTMLButtonElement>\n ) => {\n const singleChar = event.key.length === 1;\n const triggerExpand =\n [\n \"CONTROL\",\n \"META\",\n \"ENTER\",\n \"BACKSPACE\",\n \"ARROWDOWN\",\n \"ARROWLEFT\",\n \"ARROWRIGHT\",\n ].indexOf(event.key.toUpperCase()) !== -1;\n\n if ((singleChar || triggerExpand) && hasHelpers(helpers)) {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n event.stopPropagation();\n }\n helpers.updateExpanded(event, true);\n keydownExpandButton.current = true;\n }\n };\n\n const handleInputKeyUp = (\n event: KeyboardEvent<HTMLButtonElement | HTMLTextAreaElement>\n ) => {\n // Call keydown again if the initial event has been used to expand the input\n if (keydownExpandButton.current && \"Enter\" !== event.key) {\n keydownExpandButton.current = false;\n onKeyDown?.(event);\n }\n onKeyUp?.(event);\n };\n\n const handleExpand = (event: SyntheticEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n\n if (hasHelpers(helpers)) {\n helpers.updateExpanded(event, true);\n }\n };\n\n const handleClearButtonFocus = (event: FocusEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n };\n\n const selectedItemIds = selectedItems.map(\n (_, index) => `${id}-pill-${index}`\n );\n\n const inputAriaLabelledBy = disabled\n ? [ariaLabelledBy, inputId, ...selectedItemIds]\n : [ariaLabelledBy, inputId];\n\n const expandedWithItems =\n expanded && !showExpandButton && selectedItems.length > 0;\n const { \"aria-label\": expandButtonAccessibleText, ...restExpandButtonProps } =\n ExpandButtonProps;\n\n return (\n <div className={withBaseName(\"container\")}>\n <span\n aria-owns={selectedItemIds.join(\" \")}\n className={withBaseName(\"hidden\")}\n role=\"listbox\"\n />\n <div\n className={clsx(\n withBaseName(),\n withBaseName(variant),\n {\n [withBaseName(\"expanded\")]: expanded,\n [withBaseName(\"focused\")]: !disabled && focused,\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n [withBaseName(validationStatus as string)]: validationStatus,\n },\n className\n )}\n ref={containerRef}\n onClick={onClick}\n // Tab index allows the div to be found as related target and prevents it closing when a click in happens\n tabIndex={-1}\n {...restProps}\n >\n {selectedItems.length > 0 &&\n selectedItems.map((item, index) => {\n const label = String(item);\n return (\n <InputPill\n disabled={disabled}\n hidden={showExpandButton && index >= firstHiddenIndex}\n highlighted={\n index === highlightedIndex ||\n activeIndices.indexOf(index) !== -1\n }\n id={`${id}-pill-${index}`}\n index={index}\n key={`${index}-${label}`}\n label={label}\n onClose={\n expanded && !readOnly\n ? (event) => onRemoveItem?.(event, index)\n : undefined\n }\n pillsRef={pillsRef}\n />\n );\n })}\n <textarea\n aria-labelledby={clsx(inputAriaLabelledBy, textAreaLabelledBy)}\n aria-describedby={clsx(ariaDescribedBy, textAreaDescribedBy)}\n aria-label={clsx(ariaLabel, getItemsAriaLabel(selectedItems.length))}\n aria-activedescendant={\n highlightedIndex && highlightedIndex >= 0\n ? `${id}-pill-${highlightedIndex}`\n : undefined\n }\n disabled={disabled}\n id={inputId}\n readOnly={readOnly}\n ref={textAreaRef}\n required={textAreaRequired}\n rows={1}\n tabIndex={disabled ? -1 : 0}\n value={value}\n className={clsx(withBaseName(\"textarea\"), textAreaProps?.className)}\n onChange={onInputChange}\n onBlur={onInputBlur}\n onFocus={!disabled ? onInputFocus : undefined}\n onKeyDown={onKeyDown}\n {...restTextAreaProps}\n />\n <div className={withBaseName(\"endAdornmentContainer\")}>\n {!disabled && !readOnly && validationStatus && (\n <StatusAdornment\n className={withBaseName(\"statusAdornment\")}\n ref={statusAdornmentRef}\n status={validationStatus as AdornmentValidationStatus}\n />\n )}\n {expandedWithItems && !readOnly && (\n <Button\n className={withBaseName(\"endAdornment\")}\n disabled={disabled}\n id={clearButtonId}\n onBlur={onBlur}\n onClick={onClear}\n onFocus={handleClearButtonFocus}\n ref={clearButtonRef}\n variant=\"secondary\"\n data-testid=\"clear-button\"\n aria-label=\"clear input\"\n >\n <CloseIcon aria-hidden />\n </Button>\n )}\n {showExpandButton && (\n <Button\n className={withBaseName(\"endAdornment\")}\n aria-label={expandButtonAccessibleText}\n aria-labelledby={clsx(ariaLabelledBy, inputId, expandButtonId)}\n disabled={disabled}\n id={expandButtonId}\n onBlur={onBlur}\n onClick={handleExpand}\n onKeyDown={handleExpandButtonKeyDown}\n onKeyUp={handleInputKeyUp}\n ref={expandButtonRef}\n variant=\"secondary\"\n data-testid=\"expand-button\"\n {...restExpandButtonProps}\n >\n <OverflowMenuIcon />\n </Button>\n )}\n </div>\n\n <div className={withBaseName(\"activationIndicator\")} />\n </div>\n </div>\n );\n});\n"],"names":["TokenizedInputNext","tokenizedInputCss","helpers"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltInputPill {\n max-width: 100%;\n margin: var(--salt-spacing-25) var(--salt-spacing-50);\n margin-left: 0;\n}\n.saltInputPill-expanded {\n max-width: calc(100% - (var(--salt-size-base) - var(--salt-spacing-100)));\n}\n.saltInputPill-label {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.saltInputPill.saltInputPill-hidden {\n display: none;\n}\n\n.saltInputPill.saltInputPill:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltInputPill.saltInputPill-pillHighlighted {\n --saltPill-background: var(--salt-selectable-background-hover);\n}\n\n.saltInputPill.saltInputPill:active {\n background: var(--salt-actionable-primary-background-active);\n --saltPill-color: var(--salt-actionable-primary-foreground-active);\n --saltIcon-color: var(--salt-actionable-primary-foreground-active);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=InputPill.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputPill.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}