@purpur/library 10.1.1 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/CHANGELOG.json +45 -0
  2. package/CHANGELOG.md +19 -1
  3. package/dist/LICENSE.txt +14 -7
  4. package/dist/{RichText-B865Qkzj.js → RichText-CeYecUFV.js} +2 -2
  5. package/dist/{RichText-B865Qkzj.js.map → RichText-CeYecUFV.js.map} +1 -1
  6. package/dist/{RichText-CPkBwXNI.mjs → RichText-CwQfDo_S.mjs} +2 -2
  7. package/dist/{RichText-CPkBwXNI.mjs.map → RichText-CwQfDo_S.mjs.map} +1 -1
  8. package/dist/{ThemeProvider-BJGm3zai.js → ThemeProvider-BGep6X_i.js} +2 -2
  9. package/dist/{ThemeProvider-BJGm3zai.js.map → ThemeProvider-BGep6X_i.js.map} +1 -1
  10. package/dist/{ThemeProvider-BJ25_asg.mjs → ThemeProvider-BrAZhasG.mjs} +13 -13
  11. package/dist/{ThemeProvider-BJ25_asg.mjs.map → ThemeProvider-BrAZhasG.mjs.map} +1 -1
  12. package/dist/components/avatar/src/avatar.d.ts +1 -1
  13. package/dist/components/card/src/card-content-container.d.ts +2 -2
  14. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts +1 -1
  15. package/dist/components/container/src/container.visual.fixtures.d.ts +14 -0
  16. package/dist/components/container/src/container.visual.fixtures.d.ts.map +1 -0
  17. package/dist/components/content-block/src/content-block-group.d.ts +2 -2
  18. package/dist/components/content-block/src/content-block.d.ts +2 -2
  19. package/dist/components/countdown/src/countdown.d.ts +1 -1
  20. package/dist/components/countdown/src/countdown.d.ts.map +1 -1
  21. package/dist/components/countdown/src/countdown.types.d.ts +19 -3
  22. package/dist/components/countdown/src/countdown.types.d.ts.map +1 -1
  23. package/dist/components/date-field/src/date-field.d.ts +14 -6
  24. package/dist/components/date-field/src/date-field.d.ts.map +1 -1
  25. package/dist/components/date-field/src/utils.d.ts +40 -2
  26. package/dist/components/date-field/src/utils.d.ts.map +1 -1
  27. package/dist/components/date-picker/src/date-picker.d.ts +4 -4
  28. package/dist/components/date-range-field/src/date-range-field.d.ts +3 -1
  29. package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
  30. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts +2 -2
  31. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +2 -2
  32. package/dist/components/drawer/src/drawer-container.d.ts +2 -2
  33. package/dist/components/drawer/src/drawer-content.d.ts +2 -2
  34. package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
  35. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  36. package/dist/components/dropdown/src/dropdown-shared.d.ts +3 -1
  37. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  38. package/dist/components/dropdown/src/dropdown.types.d.ts +3 -0
  39. package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
  40. package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
  41. package/dist/components/field-error-text/src/field-error-text.d.ts +1 -1
  42. package/dist/components/file-upload/src/file-upload-types.d.ts +1 -1
  43. package/dist/components/footer/src/footer-navigation.d.ts +2 -2
  44. package/dist/components/footer/src/footer-social-link.d.ts +2 -2
  45. package/dist/components/footer/src/footer.d.ts +3 -3
  46. package/dist/components/hero-banner/src/hero-banner-actions.d.ts +2 -2
  47. package/dist/components/hero-banner/src/hero-banner-media.d.ts +2 -2
  48. package/dist/components/hero-banner/src/hero-banner-types.d.ts +3 -3
  49. package/dist/components/link/src/link.d.ts +1 -1
  50. package/dist/components/listbox/src/listbox-item.d.ts +2 -2
  51. package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
  52. package/dist/components/modal/src/modal-content.d.ts +2 -2
  53. package/dist/components/modal/src/modal-trigger.d.ts +2 -2
  54. package/dist/components/pagination/src/pagination-page-selector.d.ts +2 -2
  55. package/dist/components/pagination/src/pagination-page-trigger.d.ts +2 -2
  56. package/dist/components/pagination/src/pagination-step-trigger.d.ts +1 -1
  57. package/dist/components/pagination/src/types.d.ts +2 -2
  58. package/dist/components/pagination/src/use-page-options.hook.d.ts +2 -2
  59. package/dist/components/pagination/src/use-page-size-options.hook.d.ts +2 -2
  60. package/dist/components/password-field/src/password-field.d.ts +1 -1
  61. package/dist/components/password-field/src/password-strength-indicator.d.ts +2 -2
  62. package/dist/components/password-field/src/password-strength.d.ts +2 -2
  63. package/dist/components/popover/src/popover-button.d.ts +2 -2
  64. package/dist/components/product-card/src/product-card.d.ts +3 -3
  65. package/dist/components/promotion-card/src/promotion-card.d.ts +3 -3
  66. package/dist/components/quantity-selector/src/quantity-selector.d.ts +1 -1
  67. package/dist/components/radio-button-group/src/radio-button-group-root.d.ts +3 -3
  68. package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
  69. package/dist/components/rich-text/src/types.d.ts +1 -1
  70. package/dist/components/search-field/src/search-field-autocomplete.d.ts +7 -4
  71. package/dist/components/search-field/src/search-field-autocomplete.d.ts.map +1 -1
  72. package/dist/components/search-field/src/search-field-base.d.ts +4 -2
  73. package/dist/components/search-field/src/search-field-base.d.ts.map +1 -1
  74. package/dist/components/search-field/src/search-field.d.ts +12 -6
  75. package/dist/components/search-field/src/search-field.d.ts.map +1 -1
  76. package/dist/components/spinner/src/spinner.d.ts +1 -1
  77. package/dist/components/stepper/src/stepper-container.d.ts +2 -2
  78. package/dist/components/stepper/src/stepper-content.d.ts +2 -2
  79. package/dist/components/stepper/src/stepper-link.d.ts +1 -1
  80. package/dist/components/stepper/src/stepper.d.ts +1 -1
  81. package/dist/components/table/src/cell-types/button-group-cell.d.ts +3 -3
  82. package/dist/components/table/src/table-content.d.ts +2 -2
  83. package/dist/components/table/src/table.d.ts +2 -2
  84. package/dist/components/table/src/types.d.ts +4 -4
  85. package/dist/components/tabs/src/tab-content.d.ts +2 -2
  86. package/dist/components/text-field/src/text-field.d.ts +1 -1
  87. package/dist/components/text-spacing/src/text-spacing.d.ts +1 -1
  88. package/dist/components/toggle/src/toggle.d.ts +1 -1
  89. package/dist/components/tooltip/src/tooltip.d.ts +3 -3
  90. package/dist/components-metadata.js +1 -0
  91. package/dist/countdown-CdGFNLZq.js +2 -0
  92. package/dist/countdown-CdGFNLZq.js.map +1 -0
  93. package/dist/countdown-G7eg3CZj.mjs +188 -0
  94. package/dist/countdown-G7eg3CZj.mjs.map +1 -0
  95. package/dist/countdown.cjs.js +1 -1
  96. package/dist/countdown.es.js +1 -1
  97. package/dist/date-field-D8yGH1mw.js +2 -0
  98. package/dist/{date-field-CtpWDaSh.js.map → date-field-D8yGH1mw.js.map} +1 -1
  99. package/dist/{date-field-_rCuf15v.mjs → date-field-DVMPYoLT.mjs} +361 -311
  100. package/dist/{date-field-_rCuf15v.mjs.map → date-field-DVMPYoLT.mjs.map} +1 -1
  101. package/dist/date-field.cjs.js +1 -1
  102. package/dist/date-field.es.js +1 -1
  103. package/dist/{date-picker-sqcNAplg.mjs → date-picker-Ban9DLsx.mjs} +6 -6
  104. package/dist/{date-picker-sqcNAplg.mjs.map → date-picker-Ban9DLsx.mjs.map} +1 -1
  105. package/dist/{date-picker-BYlszX1W.js → date-picker-re3cPV_Z.js} +2 -2
  106. package/dist/{date-picker-BYlszX1W.js.map → date-picker-re3cPV_Z.js.map} +1 -1
  107. package/dist/date-picker.cjs.js +1 -1
  108. package/dist/date-picker.es.js +1 -1
  109. package/dist/date-range-field-8JmPw-Ei.js +2 -0
  110. package/dist/date-range-field-8JmPw-Ei.js.map +1 -0
  111. package/dist/{date-range-field-BmjQeiOv.mjs → date-range-field-dmJO66U_.mjs} +64 -61
  112. package/dist/date-range-field-dmJO66U_.mjs.map +1 -0
  113. package/dist/date-range-field.cjs.js +1 -1
  114. package/dist/date-range-field.es.js +1 -1
  115. package/dist/dismissable-chip-group-CVo3CS8K.js +2 -0
  116. package/dist/dismissable-chip-group-CVo3CS8K.js.map +1 -0
  117. package/dist/dismissable-chip-group-Dov2-9Fe.mjs +95 -0
  118. package/dist/dismissable-chip-group-Dov2-9Fe.mjs.map +1 -0
  119. package/dist/dismissable-chip-group.cjs.js +1 -1
  120. package/dist/dismissable-chip-group.es.js +1 -1
  121. package/dist/{drawer-oFJcxW58.js → drawer-CSagTJjN.js} +2 -2
  122. package/dist/{drawer-oFJcxW58.js.map → drawer-CSagTJjN.js.map} +1 -1
  123. package/dist/{drawer-Chx3H8EU.mjs → drawer-Cw-Y9XH9.mjs} +3 -3
  124. package/dist/{drawer-Chx3H8EU.mjs.map → drawer-Cw-Y9XH9.mjs.map} +1 -1
  125. package/dist/drawer.cjs.js +1 -1
  126. package/dist/drawer.es.js +1 -1
  127. package/dist/dropdown-BAM4nQhd.mjs +955 -0
  128. package/dist/dropdown-BAM4nQhd.mjs.map +1 -0
  129. package/dist/dropdown-Cr8DVw2T.js +2 -0
  130. package/dist/dropdown-Cr8DVw2T.js.map +1 -0
  131. package/dist/dropdown.cjs.js +1 -1
  132. package/dist/dropdown.es.js +1 -1
  133. package/dist/{file-upload-MvNuX4ks.js → file-upload-CdlYkCg8.js} +2 -2
  134. package/dist/{file-upload-MvNuX4ks.js.map → file-upload-CdlYkCg8.js.map} +1 -1
  135. package/dist/{file-upload-Ctw6LCTU.mjs → file-upload-ih5NqF67.mjs} +2 -2
  136. package/dist/{file-upload-Ctw6LCTU.mjs.map → file-upload-ih5NqF67.mjs.map} +1 -1
  137. package/dist/file-upload.cjs.js +1 -1
  138. package/dist/file-upload.es.js +1 -1
  139. package/dist/{footer-DkVmTd-f.mjs → footer-CVVt8hUE.mjs} +3 -3
  140. package/dist/{footer-DkVmTd-f.mjs.map → footer-CVVt8hUE.mjs.map} +1 -1
  141. package/dist/{footer-Bbemct3Z.js → footer-Cat9-v7l.js} +2 -2
  142. package/dist/{footer-Bbemct3Z.js.map → footer-Cat9-v7l.js.map} +1 -1
  143. package/dist/footer.cjs.js +1 -1
  144. package/dist/footer.es.js +1 -1
  145. package/dist/{hero-banner-Mag1OwL4.js → hero-banner-BNw3eNTs.js} +2 -2
  146. package/dist/{hero-banner-Mag1OwL4.js.map → hero-banner-BNw3eNTs.js.map} +1 -1
  147. package/dist/{hero-banner-ChDoFRhq.mjs → hero-banner-MnKuFSku.mjs} +2 -2
  148. package/dist/{hero-banner-ChDoFRhq.mjs.map → hero-banner-MnKuFSku.mjs.map} +1 -1
  149. package/dist/hero-banner.cjs.js +1 -1
  150. package/dist/hero-banner.es.js +1 -1
  151. package/dist/libraries/library/src/quantity-selector.d.ts +2 -2
  152. package/dist/libraries/library/src/toggle.d.ts +2 -2
  153. package/dist/libraries/theme/src/theme-props.d.ts +1 -0
  154. package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
  155. package/dist/libraries/tokens/dist/color/variables.d.ts +1 -0
  156. package/dist/libraries/tokens/dist/color/variables.dark.d.ts +1 -0
  157. package/dist/library.cjs.js +1 -1
  158. package/dist/library.es.js +293 -292
  159. package/dist/{modal-CXOYUsJm.js → modal-BSN-wIcN.js} +2 -2
  160. package/dist/{modal-CXOYUsJm.js.map → modal-BSN-wIcN.js.map} +1 -1
  161. package/dist/{modal-Pwvhrzn-.mjs → modal-CnzUgU97.mjs} +3 -3
  162. package/dist/{modal-Pwvhrzn-.mjs.map → modal-CnzUgU97.mjs.map} +1 -1
  163. package/dist/modal.cjs.js +1 -1
  164. package/dist/modal.es.js +1 -1
  165. package/dist/{popover-B6ntmuEK.mjs → popover-B-oWzP-0.mjs} +3 -3
  166. package/dist/{popover-B6ntmuEK.mjs.map → popover-B-oWzP-0.mjs.map} +1 -1
  167. package/dist/{popover-DJHMEFXP.js → popover-BzoAQW0i.js} +2 -2
  168. package/dist/{popover-DJHMEFXP.js.map → popover-BzoAQW0i.js.map} +1 -1
  169. package/dist/popover.cjs.js +1 -1
  170. package/dist/popover.es.js +1 -1
  171. package/dist/{promotion-card-B3mz__m7.js → promotion-card-B8bnNVZ-.js} +2 -2
  172. package/dist/{promotion-card-B3mz__m7.js.map → promotion-card-B8bnNVZ-.js.map} +1 -1
  173. package/dist/{promotion-card-Co6qAkTZ.mjs → promotion-card-DwNbzSK3.mjs} +2 -2
  174. package/dist/{promotion-card-Co6qAkTZ.mjs.map → promotion-card-DwNbzSK3.mjs.map} +1 -1
  175. package/dist/promotion-card.cjs.js +1 -1
  176. package/dist/promotion-card.es.js +1 -1
  177. package/dist/purpur.css +1 -1
  178. package/dist/rich-text.cjs.js +1 -1
  179. package/dist/rich-text.es.js +1 -1
  180. package/dist/search-field-BR4gETPP.js +2 -0
  181. package/dist/search-field-BR4gETPP.js.map +1 -0
  182. package/dist/search-field-DyBcoB9g.mjs +186 -0
  183. package/dist/search-field-DyBcoB9g.mjs.map +1 -0
  184. package/dist/search-field.cjs.js +1 -1
  185. package/dist/search-field.es.js +1 -1
  186. package/dist/{stepper-D59T-Y2_.mjs → stepper-CGBjyjVw.mjs} +2 -2
  187. package/dist/{stepper-D59T-Y2_.mjs.map → stepper-CGBjyjVw.mjs.map} +1 -1
  188. package/dist/{stepper-Dao4XaDV.js → stepper-CbcFVE3v.js} +2 -2
  189. package/dist/{stepper-Dao4XaDV.js.map → stepper-CbcFVE3v.js.map} +1 -1
  190. package/dist/stepper.cjs.js +1 -1
  191. package/dist/stepper.es.js +1 -1
  192. package/dist/{table-CllIkAkM.js → table-CFBK5Gv4.js} +3 -3
  193. package/dist/{table-CllIkAkM.js.map → table-CFBK5Gv4.js.map} +1 -1
  194. package/dist/{table-7-6k_wGH.mjs → table-PdfWMFks.mjs} +8 -8
  195. package/dist/{table-7-6k_wGH.mjs.map → table-PdfWMFks.mjs.map} +1 -1
  196. package/dist/table.cjs.js +1 -1
  197. package/dist/table.es.js +1 -1
  198. package/dist/{text-area-9RUldq6W.js → text-area-AHqUSmEE.js} +2 -2
  199. package/dist/{text-area-9RUldq6W.js.map → text-area-AHqUSmEE.js.map} +1 -1
  200. package/dist/{text-area-C58aZEPa.mjs → text-area-DabB5eo_.mjs} +3 -3
  201. package/dist/{text-area-C58aZEPa.mjs.map → text-area-DabB5eo_.mjs.map} +1 -1
  202. package/dist/text-area.cjs.js +1 -1
  203. package/dist/text-area.es.js +1 -1
  204. package/dist/{text-spacing-BU0mkEf9.mjs → text-spacing-Bmkv_rmc.mjs} +3 -3
  205. package/dist/{text-spacing-BU0mkEf9.mjs.map → text-spacing-Bmkv_rmc.mjs.map} +1 -1
  206. package/dist/{text-spacing-CiGPZHuB.js → text-spacing-CdnbUO6z.js} +2 -2
  207. package/dist/{text-spacing-CiGPZHuB.js.map → text-spacing-CdnbUO6z.js.map} +1 -1
  208. package/dist/text-spacing.cjs.js +1 -1
  209. package/dist/text-spacing.es.js +1 -1
  210. package/dist/theme.cjs.js +1 -1
  211. package/dist/theme.es.js +3 -3
  212. package/dist/tokens/color/variables.css +1 -0
  213. package/dist/tokens/color/variables.d.ts +1 -0
  214. package/dist/tokens/color/variables.dark.css +1 -0
  215. package/dist/tokens/color/variables.dark.d.ts +1 -0
  216. package/dist/tokens/color/variables.dark.js +1 -0
  217. package/dist/tokens/color/variables.dark.json +1 -0
  218. package/dist/tokens/color/variables.dark.scss +1 -0
  219. package/dist/tokens/color/variables.js +1 -0
  220. package/dist/tokens/color/variables.json +1 -0
  221. package/dist/tokens/color/variables.scss +1 -0
  222. package/dist/tokens.cjs.js +1 -1
  223. package/dist/tokens.es.js +167 -166
  224. package/dist/{tooltip-DeP1UsPW.js → tooltip-DRW4N9Z-.js} +2 -2
  225. package/dist/{tooltip-DeP1UsPW.js.map → tooltip-DRW4N9Z-.js.map} +1 -1
  226. package/dist/{tooltip-bqdd2lJL.mjs → tooltip-DzY9olpb.mjs} +3 -3
  227. package/dist/{tooltip-bqdd2lJL.mjs.map → tooltip-DzY9olpb.mjs.map} +1 -1
  228. package/dist/tooltip.cjs.js +1 -1
  229. package/dist/tooltip.es.js +1 -1
  230. package/dist/use-autocomplete.es-CoAeiJiu.mjs +155 -0
  231. package/dist/use-autocomplete.es-CoAeiJiu.mjs.map +1 -0
  232. package/dist/use-autocomplete.es-Djt1u2i8.js +2 -0
  233. package/dist/use-autocomplete.es-Djt1u2i8.js.map +1 -0
  234. package/dist/useColorScheme-BtOgJUTy.js +2 -0
  235. package/dist/{useColorScheme-BHhPgv9q.js.map → useColorScheme-BtOgJUTy.js.map} +1 -1
  236. package/dist/{useColorScheme-B7lGBSe4.mjs → useColorScheme-DXAxJPXW.mjs} +2 -2
  237. package/dist/{useColorScheme-B7lGBSe4.mjs.map → useColorScheme-DXAxJPXW.mjs.map} +1 -1
  238. package/dist/useThemePortalContainer-Cs1c-2AI.js +2 -0
  239. package/dist/{useThemePortalContainer-CUcqV327.js.map → useThemePortalContainer-Cs1c-2AI.js.map} +1 -1
  240. package/dist/useThemePortalContainer-DeKoE-E_.mjs +9 -0
  241. package/dist/{useThemePortalContainer-D13Xx24N.mjs.map → useThemePortalContainer-DeKoE-E_.mjs.map} +1 -1
  242. package/dist/variables-CTBx79yI.js +2 -0
  243. package/dist/{variables-D1vNo1lO.js.map → variables-CTBx79yI.js.map} +1 -1
  244. package/dist/variables-Do6SfyT0.mjs +258 -0
  245. package/dist/{variables-BrsAsWIF.mjs.map → variables-Do6SfyT0.mjs.map} +1 -1
  246. package/package.json +18 -18
  247. package/src/library.ts +72 -2
  248. package/tokens/color/variables.css +1 -0
  249. package/tokens/color/variables.d.ts +1 -0
  250. package/tokens/color/variables.dark.css +1 -0
  251. package/tokens/color/variables.dark.d.ts +1 -0
  252. package/tokens/color/variables.dark.js +1 -0
  253. package/tokens/color/variables.dark.json +1 -0
  254. package/tokens/color/variables.dark.scss +1 -0
  255. package/tokens/color/variables.js +1 -0
  256. package/tokens/color/variables.json +1 -0
  257. package/tokens/color/variables.scss +1 -0
  258. package/dist/countdown-5Ni6OlVY.mjs +0 -189
  259. package/dist/countdown-5Ni6OlVY.mjs.map +0 -1
  260. package/dist/countdown-CGXJyzB2.js +0 -2
  261. package/dist/countdown-CGXJyzB2.js.map +0 -1
  262. package/dist/date-field-CtpWDaSh.js +0 -2
  263. package/dist/date-range-field-B33XeBW8.js +0 -2
  264. package/dist/date-range-field-B33XeBW8.js.map +0 -1
  265. package/dist/date-range-field-BmjQeiOv.mjs.map +0 -1
  266. package/dist/dismissable-chip-group-5ALErhD2.js +0 -2
  267. package/dist/dismissable-chip-group-5ALErhD2.js.map +0 -1
  268. package/dist/dismissable-chip-group-DMNU7g5e.mjs +0 -94
  269. package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +0 -1
  270. package/dist/dropdown-B7W5fErJ.js +0 -2
  271. package/dist/dropdown-B7W5fErJ.js.map +0 -1
  272. package/dist/dropdown-CxEElxNf.mjs +0 -952
  273. package/dist/dropdown-CxEElxNf.mjs.map +0 -1
  274. package/dist/search-field-BTJtRyw5.mjs +0 -184
  275. package/dist/search-field-BTJtRyw5.mjs.map +0 -1
  276. package/dist/search-field-nzVXak1a.js +0 -2
  277. package/dist/search-field-nzVXak1a.js.map +0 -1
  278. package/dist/use-autocomplete.es-BwAzMcau.js +0 -2
  279. package/dist/use-autocomplete.es-BwAzMcau.js.map +0 -1
  280. package/dist/use-autocomplete.es-CKb0RHKG.mjs +0 -144
  281. package/dist/use-autocomplete.es-CKb0RHKG.mjs.map +0 -1
  282. package/dist/useColorScheme-BHhPgv9q.js +0 -2
  283. package/dist/useThemePortalContainer-CUcqV327.js +0 -2
  284. package/dist/useThemePortalContainer-D13Xx24N.mjs +0 -9
  285. package/dist/variables-BrsAsWIF.mjs +0 -257
  286. package/dist/variables-D1vNo1lO.js +0 -2
@@ -1,952 +0,0 @@
1
- import { jsxs as ee, jsx as d, Fragment as ke } from "react/jsx-runtime";
2
- import { useState as xe, forwardRef as $e, useId as ye, useRef as fe, useCallback as Oe, useEffect as Ve } from "react";
3
- import { L as ue } from "./listbox-CtV-Vcmy.mjs";
4
- import { t as He } from "./use-autocomplete.es-CKb0RHKG.mjs";
5
- import { C as Se } from "./checkbox-DaRtZXrE.mjs";
6
- import { a as Ie } from "./dismissable-chip-group-DMNU7g5e.mjs";
7
- import { F as Me } from "./field-error-text-CBSX8dGx.mjs";
8
- import { F as Ue } from "./field-helper-text-C5ee4SFV.mjs";
9
- import { r as Ye } from "./check-circle-filled.es-umBwOv5_.mjs";
10
- import { l as qe } from "./chevron-down.es-PCIIj6oG.mjs";
11
- import { L as ze } from "./label-7sJe5-pX.mjs";
12
- import { a as je } from "./spinner-DRQN6YdK.mjs";
13
- import { c as Ge } from "./bind-CU-R61T-.mjs";
14
- const re = (e) => typeof e.label == "string" ? e.label : e.value ?? "", We = {
15
- "purpur-dropdown": "_purpur-dropdown_p8b57_1",
16
- "purpur-dropdown--negative": "_purpur-dropdown--negative_p8b57_14",
17
- "purpur-dropdown__label": "_purpur-dropdown__label_p8b57_17",
18
- "purpur-dropdown__field-row": "_purpur-dropdown__field-row_p8b57_22",
19
- "purpur-dropdown__frame": "_purpur-dropdown__frame_p8b57_26",
20
- "purpur-dropdown__frame--negative": "_purpur-dropdown__frame--negative_p8b57_33",
21
- "purpur-dropdown__trigger-container": "_purpur-dropdown__trigger-container_p8b57_36",
22
- "purpur-dropdown__chip-group": "_purpur-dropdown__chip-group_p8b57_48",
23
- "purpur-dropdown__trigger-container--has-tags": "_purpur-dropdown__trigger-container--has-tags_p8b57_52",
24
- "purpur-dropdown__trigger-container--disabled": "_purpur-dropdown__trigger-container--disabled_p8b57_55",
25
- "purpur-dropdown__trigger-container--readonly": "_purpur-dropdown__trigger-container--readonly_p8b57_55",
26
- "purpur-dropdown__trigger-container--negative": "_purpur-dropdown__trigger-container--negative_p8b57_62",
27
- "purpur-dropdown__trigger-container--error": "_purpur-dropdown__trigger-container--error_p8b57_65",
28
- "purpur-dropdown__trigger-container--is-valid": "_purpur-dropdown__trigger-container--is-valid_p8b57_68",
29
- "purpur-dropdown__input": "_purpur-dropdown__input_p8b57_71",
30
- "purpur-dropdown__trigger": "_purpur-dropdown__trigger_p8b57_36",
31
- "purpur-dropdown__trigger--placeholder": "_purpur-dropdown__trigger--placeholder_p8b57_119",
32
- "purpur-dropdown__trigger--is-valid": "_purpur-dropdown__trigger--is-valid_p8b57_122",
33
- "purpur-dropdown__trigger--disabled": "_purpur-dropdown__trigger--disabled_p8b57_125",
34
- "purpur-dropdown__trigger--readonly": "_purpur-dropdown__trigger--readonly_p8b57_129",
35
- "purpur-dropdown__trigger--negative": "_purpur-dropdown__trigger--negative_p8b57_133",
36
- "purpur-dropdown__trigger-text": "_purpur-dropdown__trigger-text_p8b57_146",
37
- "purpur-dropdown__combobox-container": "_purpur-dropdown__combobox-container_p8b57_152",
38
- "purpur-dropdown__combobox-container--disabled": "_purpur-dropdown__combobox-container--disabled_p8b57_162",
39
- "purpur-dropdown__combobox-container--readonly": "_purpur-dropdown__combobox-container--readonly_p8b57_169",
40
- "purpur-dropdown__combobox-container--error": "_purpur-dropdown__combobox-container--error_p8b57_176",
41
- "purpur-dropdown__combobox-container--is-valid": "_purpur-dropdown__combobox-container--is-valid_p8b57_179",
42
- "purpur-dropdown__combobox-container--negative": "_purpur-dropdown__combobox-container--negative_p8b57_182",
43
- "purpur-dropdown__input--negative": "_purpur-dropdown__input--negative_p8b57_221",
44
- "purpur-dropdown__chip-group--select": "_purpur-dropdown__chip-group--select_p8b57_244",
45
- "purpur-dropdown__chip-group-more": "_purpur-dropdown__chip-group-more_p8b57_250",
46
- "purpur-dropdown__end-adornments": "_purpur-dropdown__end-adornments_p8b57_261",
47
- "purpur-dropdown__chevron-icon": "_purpur-dropdown__chevron-icon_p8b57_272",
48
- "purpur-dropdown__chevron-icon--open": "_purpur-dropdown__chevron-icon--open_p8b57_277",
49
- "purpur-dropdown__chevron-icon--disabled": "_purpur-dropdown__chevron-icon--disabled_p8b57_280",
50
- "purpur-dropdown__chevron-icon--readonly": "_purpur-dropdown__chevron-icon--readonly_p8b57_283",
51
- "purpur-dropdown__chevron-icon--negative": "_purpur-dropdown__chevron-icon--negative_p8b57_286",
52
- "purpur-dropdown__valid-icon": "_purpur-dropdown__valid-icon_p8b57_289",
53
- "purpur-dropdown__listbox": "_purpur-dropdown__listbox_p8b57_292",
54
- "purpur-dropdown__checkbox-item-multiple": "_purpur-dropdown__checkbox-item-multiple_p8b57_301",
55
- "purpur-dropdown__checkbox-container": "_purpur-dropdown__checkbox-container_p8b57_304",
56
- "purpur-dropdown__checkbox-container--disabled": "_purpur-dropdown__checkbox-container--disabled_p8b57_311",
57
- "purpur-dropdown__select-all-child": "_purpur-dropdown__select-all-child_p8b57_314"
58
- }, m = Ge.bind(We), r = "purpur-dropdown", De = ({
59
- fieldId: e,
60
- htmlForSuffix: o,
61
- label: i,
62
- getTestId: l,
63
- disabled: n,
64
- negative: u,
65
- required: b
66
- }) => i ? /* @__PURE__ */ ee(
67
- ze,
68
- {
69
- htmlFor: o ? `${e}-${o}` : e,
70
- className: m(`${r}__label`),
71
- "data-testid": l("label"),
72
- disabled: n,
73
- negative: u,
74
- children: [
75
- b && /* @__PURE__ */ d("span", { "aria-hidden": !0, children: "*" }),
76
- i
77
- ]
78
- }
79
- ) : null, Ne = ({
80
- getTestId: e,
81
- loading: o,
82
- disabled: i,
83
- negative: l,
84
- isValid: n,
85
- isOpen: u,
86
- readOnly: b,
87
- showChevronOpen: w
88
- }) => /* @__PURE__ */ d("span", { className: m(`${r}__end-adornments`), children: o ? /* @__PURE__ */ d(
89
- je,
90
- {
91
- disabled: i,
92
- size: "xxs",
93
- negative: l,
94
- "data-testid": e("spinner")
95
- }
96
- ) : /* @__PURE__ */ ee(ke, { children: [
97
- n && /* @__PURE__ */ d(
98
- Ye,
99
- {
100
- "data-testid": e("valid-icon"),
101
- className: m(`${r}__valid-icon`)
102
- }
103
- ),
104
- /* @__PURE__ */ d(
105
- qe,
106
- {
107
- className: m(`${r}__chevron-icon`, {
108
- [`${r}__chevron-icon--open`]: w && u,
109
- [`${r}__chevron-icon--disabled`]: i,
110
- [`${r}__chevron-icon--readonly`]: b && !i,
111
- [`${r}__chevron-icon--is-valid`]: n,
112
- [`${r}__chevron-icon--negative`]: l
113
- }),
114
- "data-testid": e("dropdown-icon"),
115
- size: "sm"
116
- }
117
- )
118
- ] }) }), Ce = 6, Le = ({
119
- selectedItems: e,
120
- getTestId: o,
121
- disabled: i,
122
- negative: l,
123
- onRemove: n,
124
- isSelect: u,
125
- moreOptionsText: b,
126
- removeOptionAriaLabel: w
127
- }) => {
128
- if (!e.length) return null;
129
- const p = b !== void 0 && e.length > Ce ? e.slice(-Ce) : e, h = e.length - p.length;
130
- return /* @__PURE__ */ ee(
131
- Ie,
132
- {
133
- className: m(`${r}__chip-group`, {
134
- [`${r}__chip-group--select`]: u
135
- }),
136
- negative: l,
137
- "data-testid": o("tags"),
138
- size: "sm",
139
- children: [
140
- p.map((a) => /* @__PURE__ */ d(
141
- Ie.Item,
142
- {
143
- id: a.id,
144
- "data-testid": o(`tag-${a.id}`),
145
- "aria-label": w ? `${w} ${re(a)}` : re(a),
146
- onDismiss: () => {
147
- n(a);
148
- },
149
- disabled: i || a.disabled,
150
- children: a.label
151
- },
152
- a.id
153
- )),
154
- h > 0 && /* @__PURE__ */ d(
155
- "li",
156
- {
157
- className: m(`${r}__chip-group-more`),
158
- "data-testid": o("tags-more"),
159
- children: `+${h} ${b}`
160
- }
161
- )
162
- ]
163
- }
164
- );
165
- }, Ee = ({
166
- errorText: e,
167
- helperText: o,
168
- helperTextId: i,
169
- negative: l
170
- }) => /* @__PURE__ */ ee(ke, { children: [
171
- e && /* @__PURE__ */ d(Me, { negative: l, children: e }),
172
- o && !e && /* @__PURE__ */ d(Ue, { id: i, negative: l, children: o })
173
- ] }), de = "__purpur-dropdown-select-all__", Ae = ({
174
- selectAllLabel: e,
175
- multiple: o,
176
- options: i,
177
- selectedItems: l
178
- }) => !e || !o || i.filter((w) => !w.disabled).length === 0 ? !1 : !i.filter((w) => w.disabled).some(
179
- (w) => !l.some((k) => k.id === w.id)
180
- ), Re = ({
181
- optionsToShow: e,
182
- getListboxItemProps: o,
183
- multiple: i,
184
- negative: l,
185
- fieldId: n,
186
- noOptionsText: u,
187
- selectAllLabel: b,
188
- selectedItems: w = []
189
- }) => {
190
- if (u !== void 0 && !e.length)
191
- return /* @__PURE__ */ d(ue.Item, { noninteractive: !0, children: u });
192
- const k = e[0]?.id === de;
193
- let p = !1;
194
- if (k) {
195
- const a = e.filter((s) => s.id !== de).filter((s) => !s.disabled), _ = a.filter(
196
- (s) => w.some((x) => x.id === s.id)
197
- ).length, y = a.length > 0 && _ === a.length, f = w.length > 0;
198
- p = y ? !0 : f ? "indeterminate" : !1;
199
- }
200
- return e.map((h, a) => {
201
- const { key: _, selected: y, ...f } = o(h, a);
202
- return h.id === de ? /* @__PURE__ */ d(
203
- ue.Item,
204
- {
205
- ...f,
206
- "aria-selected": p === !0,
207
- className: m(
208
- `${r}__checkbox-item-multiple`,
209
- `${r}__select-all-item`
210
- ),
211
- hideSelectedIcon: !0,
212
- children: /* @__PURE__ */ d("span", { className: m(`${r}__checkbox-container`), children: /* @__PURE__ */ d(
213
- Se,
214
- {
215
- id: `${n}-checkbox-select-all`,
216
- checked: p,
217
- label: b,
218
- negative: l,
219
- "aria-hidden": !0
220
- }
221
- ) })
222
- },
223
- _
224
- ) : i ? /* @__PURE__ */ d(
225
- ue.Item,
226
- {
227
- ...f,
228
- className: m(`${r}__checkbox-item-multiple`, {
229
- [`${r}__select-all-child`]: k
230
- }),
231
- selected: !!y,
232
- hideSelectedIcon: !0,
233
- children: /* @__PURE__ */ d(
234
- "span",
235
- {
236
- className: m(`${r}__checkbox-container`, {
237
- [`${r}__checkbox-container--disabled`]: h.disabled
238
- }),
239
- children: /* @__PURE__ */ d(
240
- Se,
241
- {
242
- id: `${n}-checkbox-${h.id}`,
243
- checked: !!y,
244
- label: h.label,
245
- negative: l,
246
- "aria-hidden": !0,
247
- disabled: h.disabled
248
- }
249
- )
250
- }
251
- )
252
- },
253
- _
254
- ) : /* @__PURE__ */ d(ue.Item, { ...f, selected: !!y, children: /* @__PURE__ */ d("div", { children: h.label }) }, _);
255
- });
256
- }, Xe = (e, o, i) => {
257
- if (i)
258
- return e.filter((n) => i(o, n));
259
- if (!o) return e;
260
- const l = o.toUpperCase().split(" ");
261
- return e.filter(
262
- (n) => l.every(
263
- (u) => (n.value || (typeof n.label == "string" ? n.label : "")).toUpperCase().includes(u)
264
- )
265
- );
266
- }, Te = ({
267
- options: e,
268
- searchTerm: o,
269
- filterOption: i,
270
- selectedOption: l,
271
- multiple: n
272
- }) => !n && l && re(l) === o ? e : Xe(e, o, i), Be = ({
273
- controlledInputValue: e,
274
- defaultInputValue: o,
275
- selectedOption: i,
276
- onInputChange: l
277
- }) => {
278
- const [n, u] = xe(
279
- (typeof e == "string" ? e : o ?? (i ? re(i) : void 0)) ?? ""
280
- );
281
- return {
282
- displayInputValue: typeof e == "string" ? e : n,
283
- populateInputField: (k) => {
284
- l?.(k), u(k);
285
- }
286
- };
287
- }, Fe = $e((e, o) => {
288
- const {
289
- id: i,
290
- label: l,
291
- options: n,
292
- className: u,
293
- errorText: b,
294
- helperText: w,
295
- placeholder: k,
296
- negative: p = !1,
297
- readOnly: h = !1,
298
- disabled: a = !1,
299
- required: _ = !1,
300
- valid: y,
301
- loading: f,
302
- multiple: s = !1,
303
- selectedOption: x,
304
- selectedOptions: L = [],
305
- onSelect: S,
306
- openOnFocus: se = !1,
307
- listboxMaxHeight: E,
308
- listboxLabel: _e,
309
- filterOption: F,
310
- inputValue: te,
311
- defaultInputValue: q,
312
- onInputChange: g,
313
- noOptionsText: oe,
314
- highlightFirstOption: P = !1,
315
- selectAllLabel: O,
316
- moreOptionsText: Q,
317
- removeOptionAriaLabel: A,
318
- ["data-testid"]: C
319
- } = e, z = ye(), K = i ?? z, D = (c) => C ? `${C}-${c}` : void 0, j = !!y && !b, G = `${K}-helper-text`, $ = s ? L : x ? [x] : [], { displayInputValue: M, populateInputField: W } = Be({
320
- controlledInputValue: te,
321
- defaultInputValue: q,
322
- selectedOption: x,
323
- onInputChange: g
324
- }), le = Te({
325
- options: n,
326
- searchTerm: M,
327
- filterOption: F,
328
- selectedOption: x,
329
- multiple: s
330
- }), ae = Ae({
331
- selectAllLabel: O,
332
- multiple: s,
333
- options: n,
334
- selectedItems: $
335
- }), ne = ae && (ae && !M) ? [{ id: de, label: O }, ...le] : le, V = () => {
336
- const c = n.filter((N) => !N.disabled);
337
- if (c.every(
338
- (N) => $.some((B) => B.id === N.id)
339
- )) {
340
- const N = $.filter((B) => B.disabled);
341
- S?.(void 0, N);
342
- } else {
343
- const B = [...$.filter((ve) => ve.disabled), ...c];
344
- S?.(void 0, B);
345
- }
346
- W("");
347
- }, ge = (c) => {
348
- if (c.id === de) {
349
- V();
350
- return;
351
- }
352
- if (s) {
353
- const N = $.some((B) => B.id === c.id) ? $.filter((B) => B.id !== c.id) : [...$, c];
354
- S?.(c, N), W("");
355
- } else
356
- S?.(c, [c]), W(re(c));
357
- }, {
358
- rootRef: X,
359
- inputRef: Z,
360
- inputProps: U,
361
- listboxProps: ce,
362
- getListboxItemProps: be,
363
- isOpen: v,
364
- openListbox: Y,
365
- anchorStyle: R
366
- } = He({
367
- id: K,
368
- // useAutocomplete only reads id/disabled, never label's value, so this is safe even though
369
- // DropdownOption.label can be a ReactNode instead of the string it's typed to require.
370
- options: ne,
371
- listboxLabel: _e || l || "Options",
372
- selectedOption: s ? void 0 : x,
373
- disabled: a,
374
- readOnly: h,
375
- openOnFocus: se,
376
- listboxMaxHeight: E,
377
- highlightFirstOption: P,
378
- closeOnSelect: !s,
379
- noOptionsText: oe,
380
- negative: p,
381
- onSelect: ge,
382
- "data-testid": C
383
- }), J = (c) => {
384
- X.current = c, typeof o == "function" ? o(c) : o && (o.current = c);
385
- }, he = (c, I) => {
386
- const N = be(c, I);
387
- if (s) {
388
- const B = $.some((ve) => ve.id === c.id);
389
- return { ...N, selected: B, "aria-selected": B };
390
- }
391
- return N;
392
- }, t = (c) => {
393
- const I = $.filter((N) => N.id !== c.id);
394
- S?.(c, I);
395
- }, T = (c) => {
396
- if (s && c.key === "Backspace" && c.currentTarget.value === "" && $.length > 0) {
397
- for (let I = $.length - 1; I >= 0; I--)
398
- if (!$[I].disabled) {
399
- t($[I]);
400
- break;
401
- }
402
- }
403
- U?.onKeyDown?.(c);
404
- }, pe = (c) => {
405
- W(c.target.value), v || Y();
406
- }, H = (c) => {
407
- U?.onBlur?.(c), !s && setTimeout(() => {
408
- if (X.current?.contains(document.activeElement)) return;
409
- const I = x ? re(x) : "";
410
- M !== I && W(I);
411
- });
412
- }, we = (c) => {
413
- if (a || h) return;
414
- const I = c.target;
415
- if (I === Z.current || I.closest("button"))
416
- return;
417
- const N = Z.current;
418
- N?.dispatchEvent(new MouseEvent("mousedown", { bubbles: !0 })), N?.focus();
419
- }, ie = s && !!O && n.length > 0 && n.every((c) => $.some((I) => I.id === c.id)), Ke = m(r, u, {
420
- [`${r}--negative`]: p
421
- });
422
- return /* @__PURE__ */ ee("div", { ref: J, className: Ke, children: [
423
- /* @__PURE__ */ d(
424
- De,
425
- {
426
- fieldId: K,
427
- htmlForSuffix: "input",
428
- label: l,
429
- getTestId: D,
430
- disabled: a,
431
- negative: p,
432
- required: _
433
- }
434
- ),
435
- /* @__PURE__ */ d("div", { className: m(`${r}__field-row`), children: /* @__PURE__ */ ee(
436
- "div",
437
- {
438
- className: m(`${r}__combobox-container`, {
439
- [`${r}__combobox-container--error`]: !!b,
440
- [`${r}__combobox-container--is-valid`]: j,
441
- [`${r}__combobox-container--negative`]: p,
442
- [`${r}__combobox-container--disabled`]: a,
443
- [`${r}__combobox-container--readonly`]: h && !a
444
- }),
445
- style: R,
446
- onClick: we,
447
- children: [
448
- s && !ie && /* @__PURE__ */ d(
449
- Le,
450
- {
451
- selectedItems: $,
452
- getTestId: D,
453
- disabled: a,
454
- negative: p,
455
- onRemove: t,
456
- moreOptionsText: Q,
457
- removeOptionAriaLabel: A
458
- }
459
- ),
460
- /* @__PURE__ */ d(
461
- "input",
462
- {
463
- ...U,
464
- ref: Z,
465
- id: `${K}-input`,
466
- "data-testid": D("input"),
467
- onKeyDown: T,
468
- onChange: pe,
469
- onBlur: H,
470
- value: ie && !M ? O : M,
471
- placeholder: k,
472
- className: m(`${r}__input`, {
473
- [`${r}__input--negative`]: p
474
- }),
475
- "aria-describedby": G,
476
- "aria-invalid": !!b,
477
- disabled: a,
478
- readOnly: h
479
- }
480
- ),
481
- /* @__PURE__ */ d(
482
- Ne,
483
- {
484
- getTestId: D,
485
- loading: f,
486
- disabled: a,
487
- negative: p,
488
- isValid: j,
489
- isOpen: v,
490
- showChevronOpen: !0
491
- }
492
- ),
493
- /* @__PURE__ */ d(
494
- "span",
495
- {
496
- className: m(`${r}__frame`, {
497
- [`${r}__frame--negative`]: p
498
- })
499
- }
500
- )
501
- ]
502
- }
503
- ) }),
504
- v && /* @__PURE__ */ d(ue, { ...ce, className: m(`${r}__listbox`), children: Re({
505
- optionsToShow: ne,
506
- getListboxItemProps: he,
507
- multiple: s,
508
- negative: p,
509
- fieldId: K,
510
- noOptionsText: oe,
511
- selectAllLabel: O,
512
- selectedItems: $
513
- }) }),
514
- /* @__PURE__ */ d(
515
- Ee,
516
- {
517
- errorText: b,
518
- helperText: w,
519
- helperTextId: G,
520
- negative: p
521
- }
522
- )
523
- ] });
524
- });
525
- Fe.displayName = "DropdownCombobox";
526
- const Je = ({
527
- options: e,
528
- highlightFirstOption: o
529
- }) => {
530
- const i = fe(null), l = fe({}), [n, u] = xe(
531
- o ? e[0] : void 0
532
- ), b = (_) => {
533
- if (_) {
534
- const y = _.getBoundingClientRect(), f = i.current?.getBoundingClientRect() || { top: 0, bottom: 0 };
535
- (y.top < f.top || y.bottom > f.bottom) && _.scrollIntoView({ block: "nearest" });
536
- }
537
- };
538
- return {
539
- highlightedOption: n,
540
- listboxRef: i,
541
- optionRefs: l,
542
- findNextOption: (_, y) => {
543
- const f = y.filter((x) => !x.disabled);
544
- if (!f.length) return;
545
- const s = n ? f.findIndex((x) => x.id === n.id) : -1;
546
- return _ === "ArrowDown" ? f[(s + 1) % f.length] : f[(s - 1 + f.length) % f.length];
547
- },
548
- highlightOption: (_) => {
549
- u(_ ? { ..._ } : void 0), _ && b(l.current[_.id]);
550
- },
551
- highlightByClick: (_) => {
552
- _.id !== n?.id && u({ ..._, isSetByClickEvent: !0 });
553
- },
554
- highlightSelected: (_, y) => {
555
- requestAnimationFrame(() => {
556
- u({ ..._, isSetByClickEvent: y === "CLICK" }), b(l.current[_.id]);
557
- });
558
- },
559
- resetHighlight: () => {
560
- u(void 0);
561
- }
562
- };
563
- }, Qe = (e, o) => {
564
- const i = Oe(
565
- (l) => {
566
- e && !e.contains(l.target) && o();
567
- },
568
- [o, e]
569
- );
570
- Ve(() => (document.addEventListener("mousedown", i), () => {
571
- document.removeEventListener("mousedown", i);
572
- }), [i]);
573
- }, Ze = ({
574
- id: e,
575
- variant: o,
576
- options: i,
577
- listboxLabel: l,
578
- multiple: n = !1,
579
- selectedOption: u,
580
- selectedOptions: b = [],
581
- onSelect: w,
582
- filterOption: k,
583
- inputValue: p,
584
- defaultInputValue: h,
585
- onInputChange: a,
586
- noOptionsText: _,
587
- highlightFirstOption: y = !1,
588
- openOnFocus: f = !1,
589
- listboxMaxHeight: s,
590
- negative: x,
591
- disabled: L = !1,
592
- readOnly: S = !1,
593
- ["data-testid"]: se
594
- }) => {
595
- const E = o === "combobox", _e = ye(), F = fe(null), te = fe(null), q = fe(null), g = Je({ options: i, highlightFirstOption: y }), { displayInputValue: oe, populateInputField: P } = Be({
596
- controlledInputValue: p,
597
- defaultInputValue: h,
598
- selectedOption: u,
599
- onInputChange: a
600
- }), [O, Q] = xe(!1), A = () => {
601
- Q(!1), g.resetHighlight();
602
- };
603
- Qe(F.current, A);
604
- const C = ({ eventType: t }) => {
605
- Q(!0);
606
- const T = n ? void 0 : u;
607
- T && g.highlightSelected(T, t);
608
- }, z = n ? b : u ? [u] : [], K = E ? Te({
609
- options: i,
610
- searchTerm: oe,
611
- filterOption: k,
612
- selectedOption: u,
613
- multiple: n
614
- }) : i, D = O && (!!K.length || !!_), j = (t) => se ? `${se}-${t}` : void 0, G = (t) => {
615
- if (!(!t || t.disabled))
616
- if (n) {
617
- const pe = z.some((H) => H.id === t.id) ? z.filter((H) => H.id !== t.id) : [...z, t];
618
- w?.(t, pe), E && (P(""), q.current?.focus());
619
- } else
620
- w?.(t, [t]), E && P(re(t)), A(), (E ? q : te).current?.focus();
621
- }, $ = (t) => {
622
- D || C({ eventType: "KEYBOARD" });
623
- const T = g.findNextOption(t, K);
624
- g.highlightOption(T);
625
- }, M = (t) => {
626
- if (!(L || S))
627
- switch (t.key) {
628
- case "ArrowUp":
629
- case "ArrowDown":
630
- t.preventDefault(), $(t.key);
631
- break;
632
- case "Enter": {
633
- t.preventDefault(), D && g.highlightedOption ? G(g.highlightedOption) : D || C({ eventType: "KEYBOARD" });
634
- break;
635
- }
636
- case " ": {
637
- E || (t.preventDefault(), D && g.highlightedOption ? G(g.highlightedOption) : D || C({ eventType: "KEYBOARD" }));
638
- break;
639
- }
640
- case "Escape":
641
- t.preventDefault(), A();
642
- break;
643
- case "Tab":
644
- A();
645
- break;
646
- case "Home":
647
- case "End":
648
- E && A();
649
- break;
650
- }
651
- }, W = (t) => {
652
- P(t.target.value), g.resetHighlight(), O || C({ eventType: "KEYBOARD" });
653
- }, le = () => {
654
- L || S || (O ? A() : C({ eventType: "CLICK" }));
655
- }, ae = () => {
656
- !O && f && !L && !S && C({ eventType: "KEYBOARD" }), q.current?.select();
657
- }, me = () => {
658
- setTimeout(() => {
659
- const t = document.activeElement;
660
- t !== document.body && !q.current?.contains(t) && !g.listboxRef.current?.contains(t) && !F.current?.contains(t) && (A(), E && !n && P(u ? re(u) : ""));
661
- });
662
- }, ne = () => {
663
- L || S || (O ? A() : C({ eventType: "CLICK" }));
664
- }, V = (t) => {
665
- if (L || S) return;
666
- const T = t.target.closest("button");
667
- T && T !== te.current || ne();
668
- }, ge = () => {
669
- !O && f && !L && !S && C({ eventType: "KEYBOARD" });
670
- }, X = `${e}-listbox`, Z = (t) => `${e}-listbox-item-${t.id}`, U = `--purpur-dropdown-${_e.replace(/:/g, "")}`, ce = { anchorName: U }, be = E ? null : {
671
- onClick: V
672
- }, v = Oe(
673
- (t) => {
674
- if (g.listboxRef.current = t, t && typeof t.showPopover == "function")
675
- try {
676
- t.showPopover();
677
- } catch {
678
- }
679
- },
680
- [g.listboxRef]
681
- ), Y = {
682
- "aria-label": l,
683
- "aria-expanded": D,
684
- "data-testid": j("listbox"),
685
- id: X,
686
- ref: v,
687
- onMouseLeave: () => g.resetHighlight(),
688
- popover: "manual",
689
- negative: x,
690
- style: {
691
- ...s ? {
692
- maxHeight: typeof s == "number" ? `${s}px` : s
693
- } : {},
694
- positionAnchor: U
695
- }
696
- }, R = (t, T) => {
697
- const pe = z.some((ie) => ie.id === t.id), { highlightedOption: H } = g, we = (t.id === H?.id || y && !H && T === 0) && !H?.isSetByClickEvent;
698
- return {
699
- "data-testid": j(`listbox-item-${t.id}`),
700
- id: Z(t),
701
- key: t.id,
702
- onMouseMove: () => g.highlightByClick(t),
703
- onMouseUp: () => G(t),
704
- ref: (ie) => {
705
- ie && (g.optionRefs.current[t.id] = ie);
706
- },
707
- tabIndex: -1,
708
- selected: pe,
709
- disabled: t.disabled,
710
- highlighted: we,
711
- hovered: t.id === H?.id && !!H?.isSetByClickEvent,
712
- "aria-selected": pe
713
- };
714
- }, J = E ? {} : {
715
- ref: te,
716
- type: "button",
717
- role: "combobox",
718
- "aria-haspopup": "listbox",
719
- "aria-expanded": D,
720
- "aria-controls": X,
721
- "aria-disabled": L,
722
- "data-testid": j("trigger"),
723
- id: `${e}-trigger`,
724
- onKeyDown: M,
725
- onFocus: ge,
726
- disabled: L,
727
- tabIndex: L ? -1 : 0,
728
- style: ce
729
- }, he = E ? {
730
- ref: q,
731
- role: "combobox",
732
- "aria-autocomplete": "list",
733
- "aria-expanded": D,
734
- "aria-controls": X,
735
- "aria-activedescendant": g.highlightedOption ? Z(g.highlightedOption) : void 0,
736
- "data-testid": j("input"),
737
- autoComplete: "off",
738
- id: `${e}-input`,
739
- type: "text",
740
- value: oe,
741
- onChange: W,
742
- onMouseDown: le,
743
- onFocus: ae,
744
- onBlur: me,
745
- onKeyDown: M,
746
- disabled: L,
747
- readOnly: S
748
- } : null;
749
- return {
750
- rootRef: F,
751
- triggerContainerProps: be,
752
- triggerProps: J,
753
- inputProps: he,
754
- listboxProps: Y,
755
- getListboxItemProps: R,
756
- optionsToShow: K,
757
- isOpen: D,
758
- highlightedOption: g.highlightedOption,
759
- selectedItems: z,
760
- anchorStyle: ce
761
- };
762
- }, Pe = $e((e, o) => {
763
- const {
764
- id: i,
765
- label: l,
766
- options: n,
767
- className: u,
768
- errorText: b,
769
- helperText: w,
770
- placeholder: k,
771
- negative: p = !1,
772
- readOnly: h = !1,
773
- disabled: a = !1,
774
- required: _ = !1,
775
- valid: y = !1,
776
- loading: f = !1,
777
- multiple: s = !1,
778
- selectedOption: x,
779
- selectedOptions: L = [],
780
- onSelect: S,
781
- openOnFocus: se = !1,
782
- listboxMaxHeight: E,
783
- listboxLabel: _e,
784
- selectAllLabel: F,
785
- moreOptionsText: te,
786
- removeOptionAriaLabel: q,
787
- ["data-testid"]: g
788
- } = e, oe = ye(), P = i ?? oe, O = (v) => g ? `${g}-${v}` : void 0, Q = !!y && !b, A = `${P}-helper-text`, C = s ? L : x ? [x] : [], z = Ae({
789
- selectAllLabel: F,
790
- multiple: s,
791
- options: n,
792
- selectedItems: C
793
- }), K = () => {
794
- const v = n.filter((R) => !R.disabled);
795
- if (v.every(
796
- (R) => C.some((J) => J.id === R.id)
797
- )) {
798
- const R = C.filter((J) => J.disabled);
799
- S?.(void 0, R);
800
- } else {
801
- const J = [...C.filter((he) => he.disabled), ...v];
802
- S?.(void 0, J);
803
- }
804
- }, D = (v, Y) => {
805
- if (v?.id === de) {
806
- K();
807
- return;
808
- }
809
- S?.(v, Y);
810
- }, j = z ? [{ id: de, label: F }, ...n] : n, G = Ze({
811
- id: P,
812
- variant: "select",
813
- options: j,
814
- listboxLabel: _e || l || "Options",
815
- multiple: s,
816
- negative: p,
817
- selectedOption: x,
818
- selectedOptions: L,
819
- onSelect: D,
820
- openOnFocus: se,
821
- listboxMaxHeight: E,
822
- disabled: a,
823
- readOnly: h,
824
- "data-testid": g
825
- }), $ = (v) => {
826
- G.rootRef.current = v, typeof o == "function" ? o(v) : o && (o.current = v);
827
- }, {
828
- triggerContainerProps: M,
829
- triggerProps: W,
830
- listboxProps: le,
831
- getListboxItemProps: ae,
832
- optionsToShow: me,
833
- isOpen: ne,
834
- selectedItems: V,
835
- anchorStyle: ge
836
- } = G, X = {
837
- ...W
838
- };
839
- delete X.style;
840
- const Z = (v) => {
841
- const Y = V.filter((R) => R.id !== v.id);
842
- S?.(v, Y);
843
- }, U = s && !!F && n.length > 0 && n.every((v) => V.some((Y) => Y.id === v.id)), ce = s ? U ? F : V.length === 0 && k || "" : x?.label || k || "", be = m(r, u, {
844
- [`${r}--negative`]: p
845
- });
846
- return /* @__PURE__ */ ee("div", { ref: $, className: be, children: [
847
- /* @__PURE__ */ d(
848
- De,
849
- {
850
- fieldId: P,
851
- htmlForSuffix: "trigger",
852
- label: l,
853
- getTestId: O,
854
- disabled: a,
855
- negative: p,
856
- required: _
857
- }
858
- ),
859
- /* @__PURE__ */ d("div", { className: m(`${r}__field-row`), children: /* @__PURE__ */ ee(
860
- "div",
861
- {
862
- ...M,
863
- className: m(`${r}__trigger-container`, {
864
- [`${r}__trigger-container--error`]: !!b,
865
- [`${r}__trigger-container--is-valid`]: Q,
866
- [`${r}__trigger-container--negative`]: p,
867
- [`${r}__trigger-container--disabled`]: a,
868
- [`${r}__trigger-container--readonly`]: h && !a,
869
- [`${r}__trigger-container--has-tags`]: s && V.length > 0 && !U
870
- }),
871
- style: ge,
872
- children: [
873
- s && !U && /* @__PURE__ */ d(
874
- Le,
875
- {
876
- selectedItems: V,
877
- getTestId: O,
878
- disabled: a,
879
- negative: p,
880
- onRemove: Z,
881
- moreOptionsText: te,
882
- removeOptionAriaLabel: q,
883
- isSelect: !0
884
- }
885
- ),
886
- /* @__PURE__ */ d(
887
- "button",
888
- {
889
- ...X,
890
- className: m(`${r}__trigger`, {
891
- [`${r}__trigger--is-valid`]: Q,
892
- [`${r}__trigger--negative`]: p,
893
- [`${r}__trigger--disabled`]: a,
894
- [`${r}__trigger--readonly`]: h && !a,
895
- [`${r}__trigger--placeholder`]: !V.length
896
- }),
897
- "aria-describedby": A,
898
- children: /* @__PURE__ */ d("span", { className: m(`${r}__trigger-text`), children: ce })
899
- }
900
- ),
901
- /* @__PURE__ */ d(
902
- Ne,
903
- {
904
- getTestId: O,
905
- loading: f,
906
- disabled: a,
907
- negative: p,
908
- isValid: Q,
909
- isOpen: ne,
910
- readOnly: h,
911
- showChevronOpen: !0
912
- }
913
- ),
914
- /* @__PURE__ */ d(
915
- "span",
916
- {
917
- className: m(`${r}__frame`, {
918
- [`${r}__frame--negative`]: p
919
- })
920
- }
921
- )
922
- ]
923
- }
924
- ) }),
925
- ne && /* @__PURE__ */ d(ue, { ...le, className: m(`${r}__listbox`), children: Re({
926
- optionsToShow: me,
927
- getListboxItemProps: ae,
928
- multiple: s,
929
- negative: p,
930
- fieldId: P,
931
- selectAllLabel: F,
932
- selectedItems: V
933
- }) }),
934
- /* @__PURE__ */ d(
935
- Ee,
936
- {
937
- errorText: b,
938
- helperText: w,
939
- helperTextId: A,
940
- negative: p
941
- }
942
- )
943
- ] });
944
- });
945
- Pe.displayName = "DropdownSelect";
946
- const er = $e((e, o) => e.combobox ? /* @__PURE__ */ d(Fe, { ref: o, ...e }) : /* @__PURE__ */ d(Pe, { ref: o, ...e }));
947
- er.displayName = "Dropdown";
948
- export {
949
- er as D,
950
- Ze as u
951
- };
952
- //# sourceMappingURL=dropdown-CxEElxNf.mjs.map