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