@adyen/bento-vue3 1.65.0 → 1.67.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 (233) hide show
  1. package/dist/@types/index.d.ts +499 -250
  2. package/dist/action-bar.js +1 -1
  3. package/dist/assets/accordion-item.css +1 -1
  4. package/dist/assets/action-bar.css +1 -1
  5. package/dist/assets/base-modal.css +1 -1
  6. package/dist/assets/button-actions-with-menu.css +1 -1
  7. package/dist/assets/button-actions.css +1 -1
  8. package/dist/assets/card.css +1 -1
  9. package/dist/assets/copy.css +1 -1
  10. package/dist/assets/data-grid-template.css +1 -1
  11. package/dist/assets/data-grid.css +1 -1
  12. package/dist/assets/date-range-picker.css +1 -1
  13. package/dist/assets/date.css +1 -1
  14. package/dist/assets/dialog-page.css +1 -1
  15. package/dist/assets/dropdown-default-textbox.css +1 -1
  16. package/dist/assets/dropdown.css +1 -1
  17. package/dist/assets/file-uploader.css +1 -1
  18. package/dist/assets/filter-bar.css +1 -1
  19. package/dist/assets/footer-actions.css +1 -1
  20. package/dist/assets/header-with-views.css +1 -1
  21. package/dist/assets/header.css +1 -1
  22. package/dist/assets/info-icon.css +1 -1
  23. package/dist/assets/input-field-password.css +1 -1
  24. package/dist/assets/input-field.css +1 -1
  25. package/dist/assets/inspector.css +1 -1
  26. package/dist/assets/menu.css +1 -1
  27. package/dist/assets/modal-fullscreen.css +1 -1
  28. package/dist/assets/pagination.css +1 -1
  29. package/dist/assets/popover.css +1 -1
  30. package/dist/assets/sidepanel.css +1 -1
  31. package/dist/assets/step.css +1 -1
  32. package/dist/assets/summary-grid.css +1 -1
  33. package/dist/assets/tab.css +1 -0
  34. package/dist/assets/textarea.css +1 -1
  35. package/dist/assets/use-cached-selected-values.css +1 -1
  36. package/dist/button.js +1 -1
  37. package/dist/card.js +1 -1
  38. package/dist/checkbox.js +2 -2
  39. package/dist/chunks/{action-bar.BAfqAQjP.js → action-bar.ComuZPet.js} +38 -38
  40. package/dist/chunks/action-bar.ComuZPet.js.map +1 -0
  41. package/dist/chunks/{base-modal.CCwWuH6k.js → base-modal.DzJrvis_.js} +2 -2
  42. package/dist/chunks/{base-modal.CCwWuH6k.js.map → base-modal.DzJrvis_.js.map} +1 -1
  43. package/dist/chunks/button-actions-with-menu.B0nWCTwZ.js +91 -0
  44. package/dist/chunks/button-actions-with-menu.B0nWCTwZ.js.map +1 -0
  45. package/dist/chunks/{button-actions.D1pXI1AJ.js → button-actions.BwpznQ6c.js} +2 -2
  46. package/dist/chunks/button-actions.BwpznQ6c.js.map +1 -0
  47. package/dist/chunks/calendar._oPk_A1C.js +2209 -0
  48. package/dist/chunks/calendar._oPk_A1C.js.map +1 -0
  49. package/dist/chunks/{card.DiBtLuRU.js → card.JBOvn2BO.js} +2 -2
  50. package/dist/chunks/{card.DiBtLuRU.js.map → card.JBOvn2BO.js.map} +1 -1
  51. package/dist/chunks/{checkbox-group.BKsddn67.js → checkbox-group.Dc5Olq0c.js} +4 -4
  52. package/dist/chunks/{checkbox-group.BKsddn67.js.map → checkbox-group.Dc5Olq0c.js.map} +1 -1
  53. package/dist/chunks/{checkbox.C1y3Ad4Z.js → checkbox.fkPJvdUo.js} +2 -2
  54. package/dist/chunks/{checkbox.C1y3Ad4Z.js.map → checkbox.fkPJvdUo.js.map} +1 -1
  55. package/dist/chunks/{code-snippet.Bj5SAyT-.js → code-snippet.vrlSqi9k.js} +4 -4
  56. package/dist/chunks/{code-snippet.Bj5SAyT-.js.map → code-snippet.vrlSqi9k.js.map} +1 -1
  57. package/dist/chunks/{controls-group.DD1m4EKn.js → controls-group.CrzkSu0U.js} +2 -2
  58. package/dist/chunks/{controls-group.DD1m4EKn.js.map → controls-group.CrzkSu0U.js.map} +1 -1
  59. package/dist/chunks/copy.RUoQOydT.js +118 -0
  60. package/dist/chunks/copy.RUoQOydT.js.map +1 -0
  61. package/dist/chunks/{dashboard-section.C6FNJuEz.js → dashboard-section.Bg0dfNs-.js} +3 -3
  62. package/dist/chunks/{dashboard-section.C6FNJuEz.js.map → dashboard-section.Bg0dfNs-.js.map} +1 -1
  63. package/dist/chunks/{dashed-underline.ywc0ydgS.js → dashed-underline.DgE-UB-x.js} +2 -2
  64. package/dist/chunks/{dashed-underline.ywc0ydgS.js.map → dashed-underline.DgE-UB-x.js.map} +1 -1
  65. package/dist/chunks/data-grid-template.Df7j2oxe.js +144 -0
  66. package/dist/chunks/data-grid-template.Df7j2oxe.js.map +1 -0
  67. package/dist/chunks/{data-grid.DroQMKSc.js → data-grid.rDZadZwc.js} +370 -368
  68. package/dist/chunks/data-grid.rDZadZwc.js.map +1 -0
  69. package/dist/chunks/{date-picker.BuX2J2OW.js → date-picker.CZ6zU-NJ.js} +24 -25
  70. package/dist/chunks/{date-picker.BuX2J2OW.js.map → date-picker.CZ6zU-NJ.js.map} +1 -1
  71. package/dist/chunks/date-range-picker.Dw4R9bIs.js +1225 -0
  72. package/dist/chunks/date-range-picker.Dw4R9bIs.js.map +1 -0
  73. package/dist/chunks/date.DSjCnSgL.js +163 -0
  74. package/dist/chunks/date.DSjCnSgL.js.map +1 -0
  75. package/dist/chunks/{dropdown-default-textbox.B05elQig.js → dropdown-default-textbox.Ce5D3ipi.js} +40 -39
  76. package/dist/chunks/dropdown-default-textbox.Ce5D3ipi.js.map +1 -0
  77. package/dist/chunks/{dropdown-tag.Dm-1VD3B.js → dropdown-tag.BlHovDol.js} +2 -2
  78. package/dist/chunks/{dropdown-tag.Dm-1VD3B.js.map → dropdown-tag.BlHovDol.js.map} +1 -1
  79. package/dist/chunks/{dropdown.Bj6DK-2v.js → dropdown.B5ZaFDn_.js} +308 -313
  80. package/dist/chunks/{dropdown.Bj6DK-2v.js.map → dropdown.B5ZaFDn_.js.map} +1 -1
  81. package/dist/chunks/{error-message.DZWphzoT.js → error-message.DHMHq9bR.js} +2 -2
  82. package/dist/chunks/{error-message.DZWphzoT.js.map → error-message.DHMHq9bR.js.map} +1 -1
  83. package/dist/chunks/es6.n1ewaW31.js.map +1 -1
  84. package/dist/chunks/{file-uploader.C8DwUCMp.js → file-uploader.B_EI2fAc.js} +523 -523
  85. package/dist/chunks/file-uploader.B_EI2fAc.js.map +1 -0
  86. package/dist/chunks/{filter-bar.BvInaVGL.js → filter-bar.XonJn7ao.js} +1007 -992
  87. package/dist/chunks/{filter-bar.BvInaVGL.js.map → filter-bar.XonJn7ao.js.map} +1 -1
  88. package/dist/chunks/{footer-actions.vQ4flLqU.js → footer-actions.CdJLLWNR.js} +2 -2
  89. package/dist/chunks/{footer-actions.vQ4flLqU.js.map → footer-actions.CdJLLWNR.js.map} +1 -1
  90. package/dist/chunks/{get-date-locale.BN8xEjY0.js → get-date-locale.CAyOIbcp.js} +288 -649
  91. package/dist/chunks/get-date-locale.CAyOIbcp.js.map +1 -0
  92. package/dist/chunks/{header-with-views.De0oVJXS.js → header-with-views.CHbH1_1V.js} +680 -663
  93. package/dist/chunks/header-with-views.CHbH1_1V.js.map +1 -0
  94. package/dist/chunks/{header.Ckjp7n9t.js → header.CJJWPB5Z.js} +63 -62
  95. package/dist/chunks/{header.Ckjp7n9t.js.map → header.CJJWPB5Z.js.map} +1 -1
  96. package/dist/chunks/index.BrH1t1iu.js +407 -0
  97. package/dist/chunks/index.BrH1t1iu.js.map +1 -0
  98. package/dist/chunks/{info-icon-with-popover.Duk1tj5G.js → info-icon-with-popover.DVH46dPy.js} +2 -2
  99. package/dist/chunks/{info-icon-with-popover.Duk1tj5G.js.map → info-icon-with-popover.DVH46dPy.js.map} +1 -1
  100. package/dist/chunks/info-icon.DprUQ9fj.js +36 -0
  101. package/dist/chunks/info-icon.DprUQ9fj.js.map +1 -0
  102. package/dist/chunks/input-field-password.DWZAf1Oh.js +370 -0
  103. package/dist/chunks/input-field-password.DWZAf1Oh.js.map +1 -0
  104. package/dist/chunks/{input-field-phone-number.DVliTkE3.js → input-field-phone-number.CbpRItYf.js} +3 -3
  105. package/dist/chunks/{input-field-phone-number.DVliTkE3.js.map → input-field-phone-number.CbpRItYf.js.map} +1 -1
  106. package/dist/chunks/input-field.DExw_Cow.js +303 -0
  107. package/dist/chunks/input-field.DExw_Cow.js.map +1 -0
  108. package/dist/chunks/{menu.CiyYOoKd.js → menu.CeLJ1gIz.js} +2 -2
  109. package/dist/chunks/{menu.CiyYOoKd.js.map → menu.CeLJ1gIz.js.map} +1 -1
  110. package/dist/chunks/{modal-fullscreen.CuL9oSAq.js → modal-fullscreen.CZnLS-fQ.js} +2 -2
  111. package/dist/chunks/{modal-fullscreen.CuL9oSAq.js.map → modal-fullscreen.CZnLS-fQ.js.map} +1 -1
  112. package/dist/chunks/{modal.vue_vue_type_script_setup_true_lang.LnD61fHp.js → modal.vue_vue_type_script_setup_true_lang.CP7dV1Yy.js} +4 -4
  113. package/dist/chunks/{modal.vue_vue_type_script_setup_true_lang.LnD61fHp.js.map → modal.vue_vue_type_script_setup_true_lang.CP7dV1Yy.js.map} +1 -1
  114. package/dist/chunks/{pagination.D6A7TX6J.js → pagination.DL9LmFMJ.js} +168 -168
  115. package/dist/chunks/pagination.DL9LmFMJ.js.map +1 -0
  116. package/dist/chunks/{popover.maCMPyz8.js → popover.VI3TrUkL.js} +2 -2
  117. package/dist/chunks/{popover.maCMPyz8.js.map → popover.VI3TrUkL.js.map} +1 -1
  118. package/dist/chunks/promo-banner.CQp3z2CP.js.map +1 -1
  119. package/dist/chunks/{radio-group.435rdgzm.js → radio-group.H9A5QcNu.js} +3 -3
  120. package/dist/chunks/{radio-group.435rdgzm.js.map → radio-group.H9A5QcNu.js.map} +1 -1
  121. package/dist/chunks/{rich-text-editor.BDLncrV5.js → rich-text-editor.Dl9PsYbk.js} +6 -5
  122. package/dist/chunks/{rich-text-editor.BDLncrV5.js.map → rich-text-editor.Dl9PsYbk.js.map} +1 -1
  123. package/dist/chunks/{search-bar.Cngs3uYZ.js → search-bar.a-jzP1UA.js} +3 -3
  124. package/dist/chunks/{search-bar.Cngs3uYZ.js.map → search-bar.a-jzP1UA.js.map} +1 -1
  125. package/dist/chunks/{secondary-nav.ByCa4wiA.js → secondary-nav.UrmIAVGD.js} +2 -2
  126. package/dist/chunks/{secondary-nav.ByCa4wiA.js.map → secondary-nav.UrmIAVGD.js.map} +1 -1
  127. package/dist/chunks/{selection-card-group.9wJy7FC2.js → selection-card-group.B4xpnd-z.js} +3 -3
  128. package/dist/chunks/{selection-card-group.9wJy7FC2.js.map → selection-card-group.B4xpnd-z.js.map} +1 -1
  129. package/dist/chunks/{sidepanel.CTIjklfG.js → sidepanel.BuNmgmpj.js} +2 -2
  130. package/dist/chunks/{sidepanel.CTIjklfG.js.map → sidepanel.BuNmgmpj.js.map} +1 -1
  131. package/dist/chunks/step.BtNhPZAf.js +268 -0
  132. package/dist/chunks/step.BtNhPZAf.js.map +1 -0
  133. package/dist/chunks/{structured-list-item.DQzxNb_M.js → structured-list-item.BQbEDKhg.js} +3 -3
  134. package/dist/chunks/{structured-list-item.DQzxNb_M.js.map → structured-list-item.BQbEDKhg.js.map} +1 -1
  135. package/dist/chunks/summary-grid.types.CoSCUI1V.js +490 -0
  136. package/dist/chunks/summary-grid.types.CoSCUI1V.js.map +1 -0
  137. package/dist/chunks/tab.CAt51ksU.js +252 -0
  138. package/dist/chunks/tab.CAt51ksU.js.map +1 -0
  139. package/dist/chunks/{tabs.keys.Bc2pSKRw.js → tabs.keys.Cb4Vw5Jh.js} +3 -3
  140. package/dist/chunks/{tabs.keys.Bc2pSKRw.js.map → tabs.keys.Cb4Vw5Jh.js.map} +1 -1
  141. package/dist/chunks/{textarea.CV1HjB0x.js → textarea.DXSe9MHH.js} +83 -80
  142. package/dist/chunks/textarea.DXSe9MHH.js.map +1 -0
  143. package/dist/chunks/{timeline-item.DUp8MmgZ.js → timeline-item.BRHwCA1F.js} +11 -12
  144. package/dist/chunks/timeline-item.BRHwCA1F.js.map +1 -0
  145. package/dist/chunks/{tutorial.vue_vue_type_script_setup_true_lang.E8oBlhrC.js → tutorial.vue_vue_type_script_setup_true_lang.CAf69UYO.js} +4 -4
  146. package/dist/chunks/{tutorial.vue_vue_type_script_setup_true_lang.E8oBlhrC.js.map → tutorial.vue_vue_type_script_setup_true_lang.CAf69UYO.js.map} +1 -1
  147. package/dist/chunks/use-cached-selected-values.D7dOPJSO.js +1653 -0
  148. package/dist/chunks/use-cached-selected-values.D7dOPJSO.js.map +1 -0
  149. package/dist/code-snippet.js +1 -1
  150. package/dist/dashboard-template.js +1 -1
  151. package/dist/dashed-underline.js +1 -1
  152. package/dist/data-grid-template.js +1 -1
  153. package/dist/data-grid.js +1 -1
  154. package/dist/date-picker.js +2 -2
  155. package/dist/date-range-picker.js +2 -2
  156. package/dist/date.js +1 -1
  157. package/dist/dropdown.js +4 -4
  158. package/dist/file-uploader.js +1 -1
  159. package/dist/filter-bar.js +1 -1
  160. package/dist/header-with-views.js +1 -1
  161. package/dist/header.js +1 -1
  162. package/dist/index.js +45 -45
  163. package/dist/info-icon.js +1 -1
  164. package/dist/input-field-password.js +1 -1
  165. package/dist/input-field-phone-number.js +1 -1
  166. package/dist/input-field.js +1 -1
  167. package/dist/internal.js +8 -8
  168. package/dist/menu.js +1 -1
  169. package/dist/modal-fullscreen.js +1 -1
  170. package/dist/modal.js +2 -2
  171. package/dist/pagination.js +1 -1
  172. package/dist/popover.js +1 -1
  173. package/dist/radio-group.js +1 -1
  174. package/dist/rich-text-editor.js +1 -1
  175. package/dist/search-bar.js +2 -2
  176. package/dist/secondary-nav.js +1 -1
  177. package/dist/selection-card.js +1 -1
  178. package/dist/sidepanel.js +1 -1
  179. package/dist/stepper.js +1 -1
  180. package/dist/structured-list.js +1 -1
  181. package/dist/styles/bento-dark.css +1 -0
  182. package/dist/styles/bento-light.css +1 -0
  183. package/dist/styles/bento.css +1 -0
  184. package/dist/styles/legacy.css +1 -0
  185. package/dist/styles/styleguide.css +1 -0
  186. package/dist/summary-grid.js +1 -1
  187. package/dist/tabs.js +1 -1
  188. package/dist/textarea.js +1 -1
  189. package/dist/timeline.js +1 -1
  190. package/dist/tutorial.js +1 -1
  191. package/dist/web-types.json +1 -1
  192. package/package.json +6 -6
  193. package/dist/assets/tabs.css +0 -1
  194. package/dist/chunks/action-bar.BAfqAQjP.js.map +0 -1
  195. package/dist/chunks/button-actions-with-menu.D50ABuSV.js +0 -174
  196. package/dist/chunks/button-actions-with-menu.D50ABuSV.js.map +0 -1
  197. package/dist/chunks/button-actions.D1pXI1AJ.js.map +0 -1
  198. package/dist/chunks/calendar.CLpwW_-k.js +0 -1290
  199. package/dist/chunks/calendar.CLpwW_-k.js.map +0 -1
  200. package/dist/chunks/copy.DqckFHHS.js +0 -156
  201. package/dist/chunks/copy.DqckFHHS.js.map +0 -1
  202. package/dist/chunks/data-grid-template.DzIpssxc.js +0 -143
  203. package/dist/chunks/data-grid-template.DzIpssxc.js.map +0 -1
  204. package/dist/chunks/data-grid.DroQMKSc.js.map +0 -1
  205. package/dist/chunks/date-range-picker.C2x1_xoz.js +0 -1209
  206. package/dist/chunks/date-range-picker.C2x1_xoz.js.map +0 -1
  207. package/dist/chunks/date.CKXySBQv.js +0 -995
  208. package/dist/chunks/date.CKXySBQv.js.map +0 -1
  209. package/dist/chunks/dropdown-default-textbox.B05elQig.js.map +0 -1
  210. package/dist/chunks/file-uploader.C8DwUCMp.js.map +0 -1
  211. package/dist/chunks/get-date-locale.BN8xEjY0.js.map +0 -1
  212. package/dist/chunks/header-with-views.De0oVJXS.js.map +0 -1
  213. package/dist/chunks/index.BDuTpjD8.js +0 -40
  214. package/dist/chunks/index.BDuTpjD8.js.map +0 -1
  215. package/dist/chunks/index.DD7TppDb.js +0 -10
  216. package/dist/chunks/index.DD7TppDb.js.map +0 -1
  217. package/dist/chunks/info-icon.CpGwbhZQ.js +0 -45
  218. package/dist/chunks/info-icon.CpGwbhZQ.js.map +0 -1
  219. package/dist/chunks/input-field-password.CJOf1GlS.js +0 -369
  220. package/dist/chunks/input-field-password.CJOf1GlS.js.map +0 -1
  221. package/dist/chunks/input-field.xUQT0LXI.js +0 -298
  222. package/dist/chunks/input-field.xUQT0LXI.js.map +0 -1
  223. package/dist/chunks/pagination.D6A7TX6J.js.map +0 -1
  224. package/dist/chunks/step.CpSPMvdW.js +0 -264
  225. package/dist/chunks/step.CpSPMvdW.js.map +0 -1
  226. package/dist/chunks/summary-grid.types.BpS1z1-W.js +0 -466
  227. package/dist/chunks/summary-grid.types.BpS1z1-W.js.map +0 -1
  228. package/dist/chunks/tabs.Cq1fdzVh.js +0 -266
  229. package/dist/chunks/tabs.Cq1fdzVh.js.map +0 -1
  230. package/dist/chunks/textarea.CV1HjB0x.js.map +0 -1
  231. package/dist/chunks/timeline-item.DUp8MmgZ.js.map +0 -1
  232. package/dist/chunks/use-cached-selected-values.CEwKqYIe.js +0 -1600
  233. package/dist/chunks/use-cached-selected-values.CEwKqYIe.js.map +0 -1
@@ -0,0 +1,1653 @@
1
+ import { computed as m, ref as $, onMounted as rt, onUnmounted as ct, watch as pe, defineComponent as J, resolveComponent as D, createElementBlock as O, openBlock as v, createVNode as x, createElementVNode as U, withCtx as A, createTextVNode as F, toDisplayString as z, renderSlot as K, mergeProps as Y, withKeys as ue, createCommentVNode as X, createBlock as N, withModifiers as ne, normalizeProps as ie, guardReactiveProps as be, withDirectives as ae, vShow as Ge, nextTick as we, toRef as me, resolveDirective as Ye, toHandlers as te, Fragment as se, renderList as j, createSlots as ve, normalizeClass as fe, unref as M, useSlots as dt, useAttrs as ut } from "vue";
2
+ import { B as V, a as he } from "./keyboard-navigation.CqgGzfZQ.js";
3
+ import "./events.FNmSWp_P.js";
4
+ import { B as re } from "./typography.DN5eC5ch.js";
5
+ import { B as bt } from "./loading-indicator.DEepb9Wl.js";
6
+ import { B as mt } from "./empty-state.D7llINgF.js";
7
+ import { u as Ie } from "./i18n.B6g5VX0q.js";
8
+ import { d as vt } from "./debounce.DUTu11PS.js";
9
+ import { B as ft } from "./chip.CneNX2_j.js";
10
+ import { _ as q } from "./_plugin-vue_export-helper.CHgC5LLL.js";
11
+ import { C as Se, N as pt } from "./minus-small.DYIyF5XW.js";
12
+ import { C as gt } from "./checkmark-small.x-gmK2Dt.js";
13
+ import { C as yt } from "./chevron-down.DCQ6ZLaq.js";
14
+ import { C as St } from "./chevron-up.kfuLRpZb.js";
15
+ import { d as ht, e as Ne } from "./button-actions.BwpznQ6c.js";
16
+ /* empty css */
17
+ import { o as Ct } from "./resize.Bqks3WUm.js";
18
+ import "../assets/use-cached-selected-values.css";
19
+ const Ue = (e, t, i, s) => {
20
+ const n = m(
21
+ () => {
22
+ var p, S;
23
+ return !!((p = e.value) != null && p.length) && ((S = e.value) == null ? void 0 : S.length) === t.value.length;
24
+ }
25
+ ), o = m(() => {
26
+ var p;
27
+ return e.value == null || e.value.length === 0 ? !1 : ((p = e.value) == null ? void 0 : p.length) !== t.value.length;
28
+ });
29
+ return {
30
+ isAllSelected: n,
31
+ isIndeterminate: o,
32
+ toggleSelectAll: (p) => {
33
+ p ? i() : s();
34
+ }
35
+ };
36
+ };
37
+ function Et(e, { disabled: t, itemHeight: i, overscan: s = 5, prefixHeight: n }) {
38
+ const o = $(null), a = $([]), p = $(0), S = $(0), r = $(0);
39
+ let u;
40
+ const l = m(() => {
41
+ const B = typeof i == "number" ? e.value.length * i : e.value.reduce((k, y, _) => k + i(_), 0), G = typeof i == "number" ? p.value * i : e.value.slice(0, p.value).reduce((k, y, _) => k + i(_), 0);
42
+ return {
43
+ style: {
44
+ marginTop: `${G}px`,
45
+ height: `${B - G}px`
46
+ }
47
+ };
48
+ }), f = () => {
49
+ const B = (n == null ? void 0 : n.value) ?? 0, G = Math.max(o.value.scrollTop - B, 0);
50
+ if (typeof i == "number")
51
+ return Math.floor(G / i);
52
+ let k = 0, y = 0;
53
+ for (let _ = 0; _ < e.value.length; _ += 1) {
54
+ const I = i(_);
55
+ if (k += I, k >= G) {
56
+ y = _;
57
+ break;
58
+ }
59
+ }
60
+ return y;
61
+ }, E = () => {
62
+ if (r.value = o.value.clientHeight, typeof i == "number")
63
+ return Math.ceil(r.value / i);
64
+ const B = p.value ?? 0;
65
+ let G = 0, k = 0;
66
+ for (let y = B; y < e.value.length; y += 1) {
67
+ const _ = i(y);
68
+ if (G += _, k = y, G > r.value)
69
+ break;
70
+ }
71
+ return k - B;
72
+ }, T = () => {
73
+ if (o.value) {
74
+ const B = E();
75
+ p.value = f(), S.value = Math.min(p.value + B + s, e.value.length), a.value = e.value.slice(p.value, S.value);
76
+ }
77
+ }, R = () => {
78
+ T();
79
+ };
80
+ t || (rt(() => {
81
+ o.value && (r.value = o.value.clientHeight, u = Ct(o.value, ({ clientHeight: B }) => {
82
+ r.value = B, T();
83
+ }), T());
84
+ }), ct(() => {
85
+ u == null || u.disconnect();
86
+ }), pe(
87
+ () => e.value,
88
+ () => {
89
+ T();
90
+ }
91
+ ));
92
+ const L = {
93
+ ref: o,
94
+ style: { overflowY: "auto" }
95
+ };
96
+ return t ? {
97
+ containerRef: o,
98
+ containerProps: L,
99
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
100
+ onScroll: () => {
101
+ },
102
+ list: e
103
+ } : {
104
+ containerRef: o,
105
+ containerProps: L,
106
+ onScroll: R,
107
+ list: a,
108
+ wrapperProps: l
109
+ };
110
+ }
111
+ var g = /* @__PURE__ */ ((e) => (e.SELECT = "select", e.SHOW_MORE = "show-more", e.ESCAPE = "escape-pressed", e.CLICK = "click", e.ENTER = "enter-pressed", e.SPACE = "space-pressed", e.TAB = "tab-pressed", e.CLOSE_DROPDOWN = "close-dropdown", e))(g || {}), oe = /* @__PURE__ */ ((e) => (e.AUTOMATIC = "automatic", e.BUTTON = "button", e.NONE = "none", e))(oe || {});
112
+ const Ot = J({
113
+ name: "bento-listbox-static-category",
114
+ components: {
115
+ BentoTypography: re
116
+ },
117
+ props: {
118
+ /**
119
+ * Category label text
120
+ */
121
+ categoryLabel: {
122
+ type: String,
123
+ required: !0
124
+ }
125
+ }
126
+ }), Tt = { class: "b-listbox-single-select-category" };
127
+ function _t(e, t, i, s, n, o) {
128
+ const a = D("bento-typography");
129
+ return v(), O("div", Tt, [
130
+ x(a, {
131
+ variant: "caption",
132
+ el: "span",
133
+ class: "b-listbox-single-select-category__label-text"
134
+ }, {
135
+ default: A(() => [
136
+ F(z(e.categoryLabel), 1)
137
+ ]),
138
+ _: 1
139
+ }),
140
+ U("div", null, [
141
+ K(e.$slots, "default", {}, void 0, !0)
142
+ ])
143
+ ]);
144
+ }
145
+ const It = /* @__PURE__ */ q(Ot, [["render", _t], ["__scopeId", "data-v-a90eff17"]]), At = J({
146
+ name: "bento-listbox-option",
147
+ props: {
148
+ /**
149
+ * Setting this property to true will disable the option.
150
+ */
151
+ disabled: { type: Boolean, default: !1 },
152
+ /**
153
+ * Indicates if the value is selected. Only one element can be selected at a time.
154
+ */
155
+ selected: { type: Boolean, default: !1 }
156
+ },
157
+ emits: [g.CLICK, g.ENTER, g.SPACE, g.TAB],
158
+ setup(e, { emit: t }) {
159
+ const i = m(() => ({
160
+ "b-listbox-option--disabled": e.disabled,
161
+ "b-listbox-option--selected": e.selected
162
+ }));
163
+ return {
164
+ // Enums
165
+ BentoKeyboardNavigationKeyDownEvent: V,
166
+ BentoListboxEvent: g,
167
+ // Values
168
+ conditionalClasses: i,
169
+ // Events
170
+ onClick: (o) => {
171
+ t(g.CLICK, o);
172
+ },
173
+ onOptionSelected: (o, a) => {
174
+ t(o, a);
175
+ }
176
+ };
177
+ }
178
+ });
179
+ function kt(e, t, i, s, n, o) {
180
+ return v(), O("div", Y({
181
+ class: ["b-listbox-option", e.conditionalClasses],
182
+ role: "option"
183
+ }, e.$attrs, {
184
+ onClick: t[0] || (t[0] = (...a) => e.onClick && e.onClick(...a)),
185
+ onKeydown: [
186
+ t[1] || (t[1] = ue((a) => e.onOptionSelected(e.BentoListboxEvent.ENTER, a), ["enter"])),
187
+ t[2] || (t[2] = ue((a) => e.onOptionSelected(e.BentoListboxEvent.SPACE, a), ["space"])),
188
+ t[3] || (t[3] = ue((a) => e.onOptionSelected(e.BentoListboxEvent.TAB, a), ["tab"]))
189
+ ]
190
+ }), [
191
+ K(e.$slots, "default", {}, void 0, !0)
192
+ ], 16);
193
+ }
194
+ const Ce = /* @__PURE__ */ q(At, [["render", kt], ["__scopeId", "data-v-b7af43a6"]]);
195
+ let Pe = 0;
196
+ const Lt = {
197
+ beforeCreate() {
198
+ this.uuid = Pe.toString(), Pe += 1;
199
+ }
200
+ }, $t = { key: 0 };
201
+ function Dt(e, t, i, s, n, o) {
202
+ return v(), O("svg", Y({ role: "img" }, e.$attrs, {
203
+ class: "ui-assets-icons-16",
204
+ xmlns: "http://www.w3.org/2000/svg",
205
+ width: "16",
206
+ height: "16",
207
+ fill: "none"
208
+ }), [
209
+ e.$attrs["svg-title"] ? (v(), O("title", $t, z(e.$attrs["svg-title"]), 1)) : X("", !0),
210
+ t[0] || (t[0] = U("path", {
211
+ fill: "#001222",
212
+ d: "M15.0608 4.00011L14.0001 2.93945L6.00011 10.9395L2.00011 6.93945L0.939453 8.00011L6.00011 13.0608L15.0608 4.00011Z"
213
+ }, null, -1))
214
+ ], 16);
215
+ }
216
+ const Bt = /* @__PURE__ */ q(Lt, [["render", Dt]]), Rt = J({
217
+ name: "bento-listbox-single-select-option",
218
+ components: {
219
+ BentoListboxOption: Ce,
220
+ BentoTypography: re,
221
+ CheckmarkIcon: Bt
222
+ },
223
+ props: {
224
+ /**
225
+ * Setting this property to true will disable the option.
226
+ */
227
+ disabled: { type: Boolean, default: !1 },
228
+ /**
229
+ * The option item that contains all the option item's data.
230
+ * @type {BentoListboxOptionItem}
231
+ */
232
+ option: {
233
+ type: Object,
234
+ required: !0
235
+ },
236
+ /**
237
+ * Indicates if the value is selected. Only one element can be selected at a time.
238
+ */
239
+ selected: { type: Boolean, default: !1 }
240
+ },
241
+ emits: [g.ENTER, g.SELECT, g.SPACE, g.TAB],
242
+ setup(e, { emit: t }) {
243
+ const i = (a) => {
244
+ e.disabled || t(a, e.option);
245
+ }, s = m(() => e.disabled ? !0 : null), n = m(() => e.selected ? !0 : null), o = m(() => e.disabled ? -1 : 0);
246
+ return {
247
+ // Values
248
+ ariaDisabled: s,
249
+ ariaSelected: n,
250
+ tabIndex: o,
251
+ // Enums
252
+ BentoListboxEvent: g,
253
+ // Events
254
+ onOptionSelected: i
255
+ };
256
+ }
257
+ }), Nt = { class: "b-listbox-single-select-option__text" }, Pt = { class: "b-listbox-single-select-option__check-icon" };
258
+ function Mt(e, t, i, s, n, o) {
259
+ const a = D("bento-typography"), p = D("checkmark-icon"), S = D("bento-listbox-option");
260
+ return v(), N(S, {
261
+ class: "b-listbox-single-select-option",
262
+ disabled: e.disabled,
263
+ selected: e.selected,
264
+ "aria-selected": e.ariaSelected,
265
+ "aria-disabled": e.ariaDisabled,
266
+ tabindex: e.tabIndex,
267
+ onClick: t[0] || (t[0] = (r) => e.onOptionSelected(e.BentoListboxEvent.SELECT)),
268
+ onEnterPressed: t[1] || (t[1] = (r) => e.onOptionSelected(e.BentoListboxEvent.ENTER)),
269
+ onSpacePressed: t[2] || (t[2] = ne((r) => e.onOptionSelected(e.BentoListboxEvent.SPACE), ["prevent"])),
270
+ onTabPressed: t[3] || (t[3] = (r) => e.onOptionSelected(e.BentoListboxEvent.TAB))
271
+ }, {
272
+ default: A(() => [
273
+ K(e.$slots, "default", ie(be(e.option)), () => [
274
+ U("span", Nt, [
275
+ x(a, { el: "span" }, {
276
+ default: A(() => [
277
+ F(z(e.option.label), 1)
278
+ ]),
279
+ _: 1
280
+ }),
281
+ e.option.description ? (v(), N(a, {
282
+ key: 0,
283
+ class: "b-listbox-single-select-option__description",
284
+ el: "span"
285
+ }, {
286
+ default: A(() => [
287
+ F(z(e.option.description), 1)
288
+ ]),
289
+ _: 1
290
+ })) : X("", !0)
291
+ ])
292
+ ], !0),
293
+ U("span", Pt, [
294
+ ae(x(p, { "svg-title": "selected" }, null, 512), [
295
+ [Ge, e.selected]
296
+ ])
297
+ ])
298
+ ]),
299
+ _: 3
300
+ }, 8, ["disabled", "selected", "aria-selected", "aria-disabled", "tabindex"]);
301
+ }
302
+ const xt = /* @__PURE__ */ q(Rt, [["render", Mt], ["__scopeId", "data-v-226f4c84"]]), ze = ({ items: e }, t) => {
303
+ const i = m(() => e.value.length - 1), s = $(0), n = (f) => {
304
+ switch (f) {
305
+ case "increase":
306
+ s.value += 1;
307
+ break;
308
+ case "decrease":
309
+ s.value -= 1;
310
+ break;
311
+ }
312
+ }, o = ({ edgeCaseItem: f }, E) => {
313
+ s.value !== f && (n(E), t(s.value));
314
+ }, a = (f) => {
315
+ l(f), o(
316
+ {
317
+ edgeCaseItem: i.value
318
+ },
319
+ "increase"
320
+ /* INCREASE */
321
+ );
322
+ }, p = (f) => {
323
+ l(f), o(
324
+ {
325
+ edgeCaseItem: 0
326
+ },
327
+ "decrease"
328
+ /* DECREASE */
329
+ );
330
+ }, S = () => {
331
+ s.value = 0, t(s.value);
332
+ }, r = () => {
333
+ s.value = i.value, t(s.value);
334
+ }, u = (f) => {
335
+ s.value = f;
336
+ }, l = (f) => {
337
+ var E;
338
+ (E = f == null ? void 0 : f.detail) == null || E.preventDefault();
339
+ };
340
+ return {
341
+ moveToFirstElement: S,
342
+ moveToLastElement: r,
343
+ moveToNextElement: a,
344
+ moveToPreviousElement: p,
345
+ setListboxFocusedIndex: u,
346
+ preventDefault: l,
347
+ focusedIndex: s
348
+ };
349
+ }, Ve = (e, t, i = $("option"), s = !0) => {
350
+ const n = $([]), o = async () => {
351
+ if (!e.value || e.value.nodeType === Node.COMMENT_NODE)
352
+ return;
353
+ const a = Array.from(e.value.querySelectorAll(`[role="${i.value}"]`));
354
+ n.value = s ? a.filter((p) => p.checkVisibility()) : a;
355
+ };
356
+ return pe(
357
+ t,
358
+ () => {
359
+ we(() => {
360
+ o();
361
+ });
362
+ },
363
+ { immediate: !0 }
364
+ ), {
365
+ visibleDomOptions: n,
366
+ updateVisibleDomOptions: o
367
+ };
368
+ }, Gt = J({
369
+ name: "bento-listbox-single-select",
370
+ components: {
371
+ BentoListboxSingleSelectCategory: It,
372
+ BentoListboxSingleSelectOption: xt
373
+ },
374
+ directives: { BentoKeyboardNavigationDirective: he },
375
+ inheritAttrs: !1,
376
+ props: {
377
+ /**
378
+ * Function that allows the options to be disabled
379
+ *
380
+ * @type {BentoListboxIsOptionDisabled}
381
+ * @param {BentoListboxOptionItem} option - listbox option object
382
+ * @param {string} option.label - Option's label text
383
+ * @param {string|number} option.value - Option's value
384
+ * @param {unknown} option.data - Option's extra data to be passed to the default slot
385
+ */
386
+ isOptionDisabled: {
387
+ type: Function,
388
+ default: () => !1
389
+ },
390
+ /**
391
+ * The option elements to populate the listbox with.
392
+ * It must be an array of {@see BentoListboxOptionItem }.
393
+ *
394
+ * @property {string} value.label - Text to be displayed in the option
395
+ * @property {string,number} value.value - Value of the option
396
+ */
397
+ items: {
398
+ type: Array,
399
+ required: !0
400
+ },
401
+ /**
402
+ * The `input` value.
403
+ * Providing an empty string will select no options.
404
+ * Set to an empty string `''` if you don't want any of the available options to be selected
405
+ */
406
+ selectedValue: {
407
+ type: Array,
408
+ default: void 0
409
+ },
410
+ /**
411
+ * If enabled, dropdown will display non-selectable, static categories
412
+ */
413
+ staticCategories: { type: Boolean, default: !1 }
414
+ },
415
+ emits: [g.SELECT, g.ENTER, g.SPACE, g.TAB],
416
+ setup(e, { emit: t, expose: i, slots: s, attrs: n }) {
417
+ const o = $(null), a = $([]), p = m(() => {
418
+ var y;
419
+ return !!((y = e.selectedValue) != null && y.length) && e.selectedValue.at(0);
420
+ }), S = m(
421
+ () => {
422
+ var y, _, I, w;
423
+ return {
424
+ "aria-label": (y = n["aria-label"]) == null ? void 0 : y.toString(),
425
+ "aria-busy": (_ = n["aria-busy"]) == null ? void 0 : _.toString(),
426
+ "aria-atomic": (I = n["aria-atomic"]) == null ? void 0 : I.toString(),
427
+ "aria-live": (w = n["aria-live"]) == null ? void 0 : w.toString()
428
+ };
429
+ }
430
+ ), r = m(() => !!e.items.some(({ items: y }) => !!y)), u = (y) => (_) => {
431
+ t(y, [_]);
432
+ }, { visibleDomOptions: l } = Ve(o, me(e, "items"), $("option"), !1), f = (y) => {
433
+ var _;
434
+ (_ = l.value[y]) == null || _.focus();
435
+ }, {
436
+ moveToNextElement: E,
437
+ moveToPreviousElement: T,
438
+ moveToFirstElement: R,
439
+ moveToLastElement: L,
440
+ setListboxFocusedIndex: B
441
+ } = ze(
442
+ {
443
+ items: l
444
+ },
445
+ f
446
+ ), G = {
447
+ [V.ARROW_UP]: T,
448
+ [V.ARROW_DOWN]: E,
449
+ [V.HOME]: R,
450
+ [V.END]: L
451
+ }, k = {
452
+ [g.SELECT]: u(g.SELECT),
453
+ [g.SPACE]: u(g.SPACE),
454
+ [g.TAB]: u(g.TAB),
455
+ [g.ENTER]: u(g.ENTER)
456
+ };
457
+ return i({
458
+ /**
459
+ * Reference for a single listbox item.
460
+ * Required for keyboard navigation in dropdown as $children is removed in vue@3
461
+ */
462
+ listboxItemRef: a,
463
+ /**
464
+ * Method to set the index of the item to be focused on
465
+ * Used for focus management to be kept in-sync with parent e.g. dropdowns
466
+ */
467
+ setListboxFocusedIndex: B
468
+ }), {
469
+ // Enums
470
+ BentoListboxEvent: g,
471
+ // Values
472
+ listboxRef: o,
473
+ listboxItemRef: a,
474
+ selectedItem: p,
475
+ slots: s,
476
+ ariaAttributes: S,
477
+ // Computed
478
+ hasCategories: r,
479
+ // Methods
480
+ onOptionSelected: u,
481
+ // Keyboard navigation
482
+ listboxListeners: G,
483
+ listboxOptionListeners: k
484
+ };
485
+ }
486
+ });
487
+ function wt(e, t, i, s, n, o) {
488
+ const a = D("bento-listbox-single-select-option"), p = D("bento-listbox-single-select-category"), S = Ye("bento-keyboard-navigation-directive");
489
+ return ae((v(), O("div", Y({ ref: "listboxRef" }, e.ariaAttributes, { role: "listbox" }, te(e.listboxListeners, !0)), [
490
+ e.hasCategories && e.staticCategories ? (v(!0), O(se, { key: 0 }, j(e.items, (r) => (v(), N(p, {
491
+ key: r.value,
492
+ "category-label": r.label,
493
+ role: "group"
494
+ }, {
495
+ default: A(() => [
496
+ (v(!0), O(se, null, j(r.items, (u) => (v(), N(a, Y({
497
+ key: u.value,
498
+ ref_for: !0,
499
+ ref: "listboxItemRef",
500
+ role: "option",
501
+ option: u,
502
+ disabled: e.isOptionDisabled ? e.isOptionDisabled(u) : null,
503
+ selected: u.value === e.selectedItem.value
504
+ }, te(e.listboxOptionListeners)), ve({ _: 2 }, [
505
+ j(e.slots, (l, f) => ({
506
+ name: f,
507
+ fn: A((E) => [
508
+ K(e.$slots, f, Y({ ref_for: !0 }, E))
509
+ ])
510
+ }))
511
+ ]), 1040, ["option", "disabled", "selected"]))), 128))
512
+ ]),
513
+ _: 2
514
+ }, 1032, ["category-label"]))), 128)) : (v(!0), O(se, { key: 1 }, j(e.items, (r) => (v(), N(a, Y({
515
+ key: r.value,
516
+ ref_for: !0,
517
+ ref: "listboxItemRef",
518
+ role: "option",
519
+ option: r,
520
+ disabled: e.isOptionDisabled ? e.isOptionDisabled(r) : null,
521
+ selected: r.value === e.selectedItem.value
522
+ }, te(e.listboxOptionListeners)), ve({ _: 2 }, [
523
+ j(e.slots, (u, l) => ({
524
+ name: l,
525
+ fn: A((f) => [
526
+ K(e.$slots, l, Y({ ref_for: !0 }, f))
527
+ ])
528
+ }))
529
+ ]), 1040, ["option", "disabled", "selected"]))), 128))
530
+ ], 16)), [
531
+ [S]
532
+ ]);
533
+ }
534
+ const Yt = /* @__PURE__ */ q(Gt, [["render", wt]]), Ut = {}, zt = /* @__PURE__ */ J({
535
+ ...Ut,
536
+ __name: "listbox-decorative-checkbox",
537
+ props: {
538
+ disabled: { type: Boolean, default: !1 },
539
+ indeterminate: { type: Boolean, default: !1 },
540
+ checked: { type: Boolean, default: !1 }
541
+ },
542
+ setup(e) {
543
+ const t = e, i = m(() => ({
544
+ [`b-checkbox-input--${Se.DISABLED}`]: t.disabled
545
+ })), s = m(() => ({
546
+ [`b-checkbox-input__outline--${Se.UNCHECKED}`]: !t.checked && !t.indeterminate,
547
+ [`b-checkbox-input__outline--${Se.CHECKED}`]: t.checked && !t.indeterminate,
548
+ [`b-checkbox-input__outline--${Se.INDETERMINATE}`]: t.indeterminate
549
+ }));
550
+ return (n, o) => (v(), O("div", {
551
+ class: fe(["b-checkbox-input", i.value]),
552
+ role: "presentation"
553
+ }, [
554
+ n.indeterminate ? (v(), N(M(pt), {
555
+ key: 0,
556
+ class: "b-checkbox-input__icon",
557
+ "svg-title": "",
558
+ "aria-hidden": "true"
559
+ })) : n.checked ? (v(), N(M(gt), {
560
+ key: 1,
561
+ class: "b-checkbox-input__icon",
562
+ "svg-title": "",
563
+ "aria-hidden": "true"
564
+ })) : X("", !0),
565
+ U("div", {
566
+ class: fe(["b-checkbox-input__outline", s.value])
567
+ }, null, 2)
568
+ ], 2));
569
+ }
570
+ }), Ae = /* @__PURE__ */ q(zt, [["__scopeId", "data-v-c604b68a"]]);
571
+ var Fe = /* @__PURE__ */ ((e) => (e.DISABLED = "disabled", e.STATIC_CATEGORY = "static-category", e))(Fe || {}), ee = /* @__PURE__ */ ((e) => (e.SELECT_CATEGORY = "select-category", e.UNSELECT_CATEGORY = "unselect-category", e.TOGGLE_CATEGORY_VISIBILITY = "toggle-category-visibility", e))(ee || {});
572
+ const Vt = {
573
+ "en-US": {
574
+ categoryClosed: "{category} closed",
575
+ categoryOpened: "{category} opened"
576
+ }
577
+ }, Ft = J({
578
+ i18n: { messages: Vt },
579
+ name: "bento-listbox-multi-select-category",
580
+ components: {
581
+ BentoTypography: re,
582
+ BentoListboxOption: Ce,
583
+ ChevronDownIcon: yt,
584
+ ChevronUpIcon: St,
585
+ ListboxDecorativeCheckbox: Ae
586
+ },
587
+ props: {
588
+ /**
589
+ * The option elements to populate the listbox with.
590
+ * It must be an array of {@see BentoListboxOptionItem }.
591
+ *
592
+ * @property {string} value.label - Text to be displayed in the option
593
+ * @property {string,number} value.value - Value of the option
594
+ * @property {BentoListboxOptionItem} value.items - Category items list
595
+ */
596
+ category: {
597
+ type: Object,
598
+ required: !0
599
+ },
600
+ /**
601
+ * Function that allows the options to be disabled
602
+ *
603
+ * @type {BentoListboxIsOptionDisabled}
604
+ * @param {BentoListboxOptionItem} option - listbox option object
605
+ * @param {string} option.label - Option's label text
606
+ * @param {string|number} option.value - Option's value
607
+ * @param {unknown} option.data - Option's extra data to be passed to the default slot
608
+ */
609
+ isOptionDisabled: {
610
+ type: [Function],
611
+ default: () => !1
612
+ },
613
+ /**
614
+ * The `input` value.
615
+ * Providing an empty array will select no options.
616
+ */
617
+ selectedItemsList: {
618
+ type: Array,
619
+ default: () => []
620
+ },
621
+ /**
622
+ * If enabled, dropdown will display non-selectable, static categories
623
+ */
624
+ staticCategories: { type: Boolean, default: !1 },
625
+ /**
626
+ * Category's tabindex
627
+ */
628
+ tabindex: { type: Number, default: -1 }
629
+ },
630
+ emits: [
631
+ ee.SELECT_CATEGORY,
632
+ ee.UNSELECT_CATEGORY,
633
+ ee.TOGGLE_CATEGORY_VISIBILITY
634
+ ],
635
+ setup(e, { emit: t }) {
636
+ const i = $(!1), { t: s } = Ie(), n = (I) => e.isOptionDisabled ? e.isOptionDisabled(I) : !1, o = m(
637
+ () => e.category.items.every((I) => n(I))
638
+ ), a = me(e, "staticCategories"), p = m(() => i.value || e.staticCategories), S = m(() => ({
639
+ [`b-listbox-multi-select-category--${Fe.DISABLED}`]: o.value
640
+ })), r = (I, w) => {
641
+ I.preventDefault(), i.value = w !== void 0 ? w : !i.value, t(ee.TOGGLE_CATEGORY_VISIBILITY, e.category.value);
642
+ }, u = (I) => {
643
+ var Q;
644
+ const w = n(I), W = ((Q = e.selectedItemsList) == null ? void 0 : Q.includes(I.value)) || !1;
645
+ return { isDisabled: w, isPreSelected: W };
646
+ }, l = m(
647
+ () => e.category.items.filter((I) => {
648
+ const { isDisabled: w, isPreSelected: W } = u(I);
649
+ return w && W || !w;
650
+ })
651
+ ), f = m(
652
+ () => {
653
+ var I;
654
+ return (I = l.value) == null ? void 0 : I.filter(
655
+ ({ value: w }) => {
656
+ var W;
657
+ return (W = e.selectedItemsList) == null ? void 0 : W.includes(w);
658
+ }
659
+ );
660
+ }
661
+ ), E = m(() => {
662
+ const I = i.value ? "categoryOpened" : "categoryClosed";
663
+ return s(I, { category: e.category.label });
664
+ }), T = () => {
665
+ t(ee.SELECT_CATEGORY);
666
+ }, R = () => {
667
+ t(ee.UNSELECT_CATEGORY);
668
+ }, { isAllSelected: L, isIndeterminate: B, toggleSelectAll: G } = Ue(
669
+ f,
670
+ l,
671
+ T,
672
+ R
673
+ ), k = m(() => B.value ? "mixed" : `${L.value}`), y = $(L.value), _ = () => {
674
+ y.value = !y.value, G(y.value);
675
+ };
676
+ return pe(L, () => {
677
+ y.value = L.value;
678
+ }), {
679
+ // Values
680
+ chevronTitle: E,
681
+ conditionalClass: S,
682
+ hasAllPropsDisabled: o,
683
+ isOpen: i,
684
+ isAllSelected: L,
685
+ isIndeterminate: B,
686
+ isStaticCategory: a,
687
+ // Computed
688
+ showItemChildren: p,
689
+ ariaCheckedComputed: k,
690
+ // Methods
691
+ handleSelectAll: _,
692
+ toggleOpen: r,
693
+ toggleSelectAll: G
694
+ };
695
+ }
696
+ }), Kt = { class: "b-listbox-multi-select-category__label" }, Wt = {
697
+ key: 1,
698
+ class: "b-listbox-multi-select-category b-listbox-multi-select-category--static-category"
699
+ }, jt = { class: "b-listbox-multi-select-category__label" };
700
+ function qt(e, t, i, s, n, o) {
701
+ const a = D("listbox-decorative-checkbox"), p = D("bento-typography"), S = D("chevron-up-icon"), r = D("chevron-down-icon"), u = D("bento-listbox-option");
702
+ return v(), O("div", null, [
703
+ e.isStaticCategory ? (v(), O("div", Wt, [
704
+ U("span", jt, [
705
+ x(p, {
706
+ el: "span",
707
+ variant: "caption",
708
+ class: "b-listbox-multi-select-category__label-text"
709
+ }, {
710
+ default: A(() => [
711
+ F(z(e.category.label), 1)
712
+ ]),
713
+ _: 1
714
+ })
715
+ ])
716
+ ])) : (v(), N(u, {
717
+ key: 0,
718
+ class: fe(["b-listbox-multi-select-category__option", e.conditionalClass]),
719
+ tabindex: e.tabindex,
720
+ "aria-selected": e.ariaCheckedComputed !== "false",
721
+ "aria-checked": e.ariaCheckedComputed,
722
+ "aria-disabled": e.hasAllPropsDisabled,
723
+ "aria-expanded": e.isOpen,
724
+ role: "treeitem",
725
+ onClick: e.handleSelectAll,
726
+ onEnterPressed: e.handleSelectAll,
727
+ onSpacePressed: ne(e.handleSelectAll, ["prevent"]),
728
+ onKeydown: [
729
+ t[1] || (t[1] = ue((l) => e.toggleOpen(l, !1), ["arrow-left", "native"])),
730
+ t[2] || (t[2] = ue((l) => e.toggleOpen(l, !0), ["arrow-right", "native"]))
731
+ ]
732
+ }, {
733
+ default: A(() => [
734
+ x(a, {
735
+ indeterminate: e.isIndeterminate,
736
+ disabled: e.hasAllPropsDisabled,
737
+ checked: e.isAllSelected
738
+ }, null, 8, ["indeterminate", "disabled", "checked"]),
739
+ U("span", Kt, [
740
+ x(p, {
741
+ el: "span",
742
+ class: "b-listbox-multi-select-category__label-text"
743
+ }, {
744
+ default: A(() => [
745
+ F(z(e.category.label), 1)
746
+ ]),
747
+ _: 1
748
+ }),
749
+ U("div", {
750
+ class: "b-listbox-multi-select-category__label-chevron",
751
+ "data-testid": "toggle-listbox",
752
+ onClickCapture: t[0] || (t[0] = ne((...l) => e.toggleOpen && e.toggleOpen(...l), ["stop"]))
753
+ }, [
754
+ e.isOpen ? (v(), N(S, {
755
+ key: 0,
756
+ "svg-title": e.chevronTitle
757
+ }, null, 8, ["svg-title"])) : (v(), N(r, {
758
+ key: 1,
759
+ "svg-title": e.chevronTitle
760
+ }, null, 8, ["svg-title"]))
761
+ ], 32)
762
+ ])
763
+ ]),
764
+ _: 1
765
+ }, 8, ["class", "tabindex", "aria-selected", "aria-checked", "aria-disabled", "aria-expanded", "onClick", "onEnterPressed", "onSpacePressed"])),
766
+ ae(U("div", null, [
767
+ K(e.$slots, "default", {}, void 0, !0)
768
+ ], 512), [
769
+ [Ge, e.showItemChildren]
770
+ ])
771
+ ]);
772
+ }
773
+ const Ht = /* @__PURE__ */ q(Ft, [["render", qt], ["__scopeId", "data-v-94c9983d"]]);
774
+ var H = /* @__PURE__ */ ((e) => (e.SELECT_CATEGORY = "select-category", e.TOGGLE_CHECKBOX_SELECTION = "toggle-checkbox-selection", e.UNSELECT_CATEGORY = "unselect-category", e.TOGGLE_CATEGORY_VISIBILITY = "toggle-category-visibility", e))(H || {});
775
+ const Xt = J({
776
+ name: "listbox-multi-select-options",
777
+ components: {
778
+ BentoListboxOption: Ce,
779
+ BentoTypography: re,
780
+ ListboxMultiSelectCategory: Ht,
781
+ ListboxDecorativeCheckbox: Ae
782
+ },
783
+ inheritAttrs: !1,
784
+ props: {
785
+ /**
786
+ * Indicates if the items listed are inside a category
787
+ * so they can be padded to right by one level in recursion.
788
+ * Items of categories are automatically defined as "categoryItems"
789
+ */
790
+ categoryItems: { type: Boolean, default: !1 },
791
+ /**
792
+ * Current focused option index
793
+ */
794
+ focusedIndex: { type: Number, default: 0 },
795
+ /**
796
+ * Function that allows the options to be disabled
797
+ *
798
+ * @type {BentoListboxIsOptionDisabled}
799
+ * @param {BentoListboxOptionItem} option - listbox option object
800
+ * @param {string} option.label - Option's label text
801
+ * @param {string|number} option.value - Option's value
802
+ * @param {unknown} option.data - Option's extra data to be passed to the default slot
803
+ */
804
+ isOptionDisabled: {
805
+ type: Function,
806
+ default: () => !1
807
+ },
808
+ /**
809
+ * The option elements to populate the listbox with.
810
+ * It must be an array of {@see BentoListboxOptionItem }.
811
+ *
812
+ * @property {string} value.label - Text to be displayed in the option
813
+ * @property {string,number} value.value - Value of the option
814
+ */
815
+ items: {
816
+ type: Array,
817
+ required: !0
818
+ },
819
+ /**
820
+ * Indicates if the elements options are inside a multi-level category
821
+ */
822
+ isMultiLevel: { type: Boolean, default: !1 },
823
+ /**
824
+ * Flag that indicates that an external search it's being made
825
+ * to filter out the items inside the the multi-select listbox
826
+ *
827
+ * If enabled, hides the "Select all" checkbox in "multiple" mode.
828
+ */
829
+ searching: { type: Boolean, default: !1 },
830
+ /**
831
+ * List of selected items.
832
+ * Providing an empty array will select no options.
833
+ */
834
+ selectedItemsList: {
835
+ type: Array,
836
+ default: () => []
837
+ },
838
+ /**
839
+ * If enabled, dropdown will display non-selectable, static categories
840
+ */
841
+ staticCategories: { type: Boolean, default: !1 },
842
+ /**
843
+ * Object with the index of each item.
844
+ */
845
+ itemsIndex: {
846
+ type: Object,
847
+ default: () => ({})
848
+ }
849
+ },
850
+ emits: [
851
+ H.TOGGLE_CHECKBOX_SELECTION,
852
+ H.SELECT_CATEGORY,
853
+ H.UNSELECT_CATEGORY,
854
+ H.TOGGLE_CATEGORY_VISIBILITY
855
+ ],
856
+ setup(e, { emit: t }) {
857
+ const i = (r) => {
858
+ e.isOptionDisabled(r) || t(H.TOGGLE_CHECKBOX_SELECTION, r);
859
+ }, s = (r) => !!r.items, n = (r) => {
860
+ const u = e.isMultiLevel && e.searching;
861
+ return r.description && (!e.isMultiLevel || u);
862
+ }, o = (r) => r.items ? !!r.items.find((u) => e.selectedItemsList.includes(u.value)) : e.selectedItemsList.includes(r.value), a = (r) => {
863
+ if (s(r)) {
864
+ const u = o(r) ? H.UNSELECT_CATEGORY : H.SELECT_CATEGORY;
865
+ t(u, r);
866
+ } else
867
+ i(r);
868
+ };
869
+ return {
870
+ // Values
871
+ conditionalClasses: m(() => ({
872
+ "b-listbox-multi-select-options__static-category-option": e.staticCategories,
873
+ "b-listbox-multi-select-options__category-option": e.categoryItems
874
+ })),
875
+ // Methods
876
+ isOptionSelected: o,
877
+ shouldShowDescription: n,
878
+ toggleCheckboxSelection: i,
879
+ toggleSearchOption: a,
880
+ computedTabindex: (r) => e.itemsIndex[r] === e.focusedIndex ? 0 : -1,
881
+ // Enums
882
+ BentoListboxEvent: g,
883
+ ListboxMultiSelectOptionsEvent: H
884
+ };
885
+ }
886
+ }), Jt = { class: "b-listbox-multi-select__option-text" }, Zt = { class: "b-listbox-multi-select__option-text" };
887
+ function Qt(e, t, i, s, n, o) {
888
+ const a = D("listbox-decorative-checkbox"), p = D("bento-typography"), S = D("bento-listbox-option"), r = D("listbox-multi-select-options", !0), u = D("listbox-multi-select-category");
889
+ return v(), O("div", null, [
890
+ (v(!0), O(se, null, j(e.items, (l) => (v(), O("div", {
891
+ key: `selected-${l.value}`
892
+ }, [
893
+ e.searching && e.isMultiLevel ? (v(), N(S, {
894
+ key: 0,
895
+ class: fe(["b-listbox-multi-select-options", e.conditionalClasses]),
896
+ disabled: e.isOptionDisabled ? e.isOptionDisabled(l) : null,
897
+ tabindex: e.computedTabindex(l.value),
898
+ "aria-selected": `${e.isOptionSelected(l)}`,
899
+ "aria-checked": `${e.isOptionSelected(l)}`,
900
+ "aria-disabled": e.isOptionDisabled ? e.isOptionDisabled(l) : null,
901
+ role: e.$attrs.role,
902
+ onClick: (f) => e.toggleSearchOption(l),
903
+ onEnterPressed: (f) => e.toggleSearchOption(l),
904
+ onSpacePressed: ne((f) => e.toggleSearchOption(l), ["prevent"])
905
+ }, {
906
+ default: A(() => [
907
+ x(a, {
908
+ disabled: e.isOptionDisabled ? e.isOptionDisabled(l) : null,
909
+ checked: e.isOptionSelected(l)
910
+ }, null, 8, ["disabled", "checked"]),
911
+ K(e.$slots, "default", Y({ ref_for: !0 }, l), () => [
912
+ U("span", Jt, [
913
+ x(p, { el: "span" }, {
914
+ default: A(() => [
915
+ F(z(l.label), 1)
916
+ ]),
917
+ _: 2
918
+ }, 1024),
919
+ e.shouldShowDescription(l) ? (v(), N(p, {
920
+ key: 0,
921
+ class: "b-listbox-multi-select__option-description",
922
+ el: "span"
923
+ }, {
924
+ default: A(() => [
925
+ F(z(l.description), 1)
926
+ ]),
927
+ _: 2
928
+ }, 1024)) : X("", !0)
929
+ ])
930
+ ], !0)
931
+ ]),
932
+ _: 2
933
+ }, 1032, ["class", "disabled", "tabindex", "aria-selected", "aria-checked", "aria-disabled", "role", "onClick", "onEnterPressed", "onSpacePressed"])) : (v(), O(se, { key: 1 }, [
934
+ l.items ? (v(), N(u, {
935
+ key: 0,
936
+ category: l,
937
+ "static-categories": e.staticCategories,
938
+ "is-option-disabled": e.isOptionDisabled,
939
+ "selected-items-list": e.selectedItemsList,
940
+ tabindex: e.computedTabindex(l.value),
941
+ onSelectCategory: (f) => e.$emit(e.ListboxMultiSelectOptionsEvent.SELECT_CATEGORY, l),
942
+ onUnselectCategory: (f) => e.$emit(e.ListboxMultiSelectOptionsEvent.UNSELECT_CATEGORY, l),
943
+ onToggleCategoryVisibility: t[1] || (t[1] = (f) => e.$emit(e.ListboxMultiSelectOptionsEvent.TOGGLE_CATEGORY_VISIBILITY, f))
944
+ }, {
945
+ default: A(() => [
946
+ x(r, {
947
+ "category-items": "",
948
+ items: l.items,
949
+ "is-option-disabled": e.isOptionDisabled,
950
+ "items-index": e.itemsIndex,
951
+ "focused-index": e.focusedIndex,
952
+ "is-multi-level": e.isMultiLevel,
953
+ "static-categories": e.staticCategories,
954
+ "selected-items-list": e.selectedItemsList,
955
+ searching: e.searching,
956
+ role: e.$attrs.role,
957
+ onToggleCheckboxSelection: t[0] || (t[0] = (f) => e.toggleCheckboxSelection(f))
958
+ }, null, 8, ["items", "is-option-disabled", "items-index", "focused-index", "is-multi-level", "static-categories", "selected-items-list", "searching", "role"])
959
+ ]),
960
+ _: 2
961
+ }, 1032, ["category", "static-categories", "is-option-disabled", "selected-items-list", "tabindex", "onSelectCategory", "onUnselectCategory"])) : (v(), N(S, {
962
+ key: 1,
963
+ class: fe(["b-listbox-multi-select-options", e.conditionalClasses]),
964
+ disabled: e.isOptionDisabled ? e.isOptionDisabled(l) : null,
965
+ tabindex: e.computedTabindex(l.value),
966
+ "aria-selected": `${e.isOptionSelected(l)}`,
967
+ "aria-checked": `${e.isOptionSelected(l)}`,
968
+ "aria-disabled": e.isOptionDisabled ? e.isOptionDisabled(l) : null,
969
+ role: e.$attrs.role,
970
+ onClick: (f) => e.toggleCheckboxSelection(l),
971
+ onEnterPressed: (f) => e.toggleCheckboxSelection(l),
972
+ onSpacePressed: ne((f) => e.toggleCheckboxSelection(l), ["prevent"])
973
+ }, {
974
+ default: A(() => [
975
+ x(a, {
976
+ disabled: e.isOptionDisabled ? e.isOptionDisabled(l) : null,
977
+ checked: e.isOptionSelected(l)
978
+ }, null, 8, ["disabled", "checked"]),
979
+ K(e.$slots, "default", Y({ ref_for: !0 }, l), () => [
980
+ U("span", Zt, [
981
+ x(p, { el: "span" }, {
982
+ default: A(() => [
983
+ F(z(l.label), 1)
984
+ ]),
985
+ _: 2
986
+ }, 1024),
987
+ e.shouldShowDescription(l) ? (v(), N(p, {
988
+ key: 0,
989
+ class: "b-listbox-multi-select__option-description",
990
+ el: "span"
991
+ }, {
992
+ default: A(() => [
993
+ F(z(l.description), 1)
994
+ ]),
995
+ _: 2
996
+ }, 1024)) : X("", !0)
997
+ ])
998
+ ], !0)
999
+ ]),
1000
+ _: 2
1001
+ }, 1032, ["class", "disabled", "tabindex", "aria-selected", "aria-checked", "aria-disabled", "role", "onClick", "onEnterPressed", "onSpacePressed"]))
1002
+ ], 64))
1003
+ ]))), 128))
1004
+ ]);
1005
+ }
1006
+ const es = /* @__PURE__ */ q(Xt, [["render", Qt], ["__scopeId", "data-v-fd1a6cbe"]]), ts = (e) => {
1007
+ const t = m(() => {
1008
+ var s;
1009
+ return !!((s = e.value) != null && s.find(({ items: n }) => !!n));
1010
+ }), i = m(() => {
1011
+ var s;
1012
+ return t.value ? (s = e.value) == null ? void 0 : s.reduce((n, o) => (o.items ? n.push(...o.items.flat()) : n.push(o), n), []) : e.value;
1013
+ });
1014
+ return {
1015
+ isMultiLevelSelect: t,
1016
+ flattenedItemsList: i
1017
+ };
1018
+ }, Ke = {
1019
+ "en-US": {
1020
+ allSelected: "All selected ({total})",
1021
+ numberOfTotalSelected: "{number} of {total} selected",
1022
+ numbersSelected: "{number} selected",
1023
+ selectAll: "Select all ({total})"
1024
+ },
1025
+ "ja-JP": {
1026
+ allSelected: "すべて選択済み ({total})",
1027
+ numberOfTotalSelected: "{total}件中{number}件を選択済み",
1028
+ numbersSelected: "{number}件を選択済み",
1029
+ selectAll: "すべて選択 ({total})"
1030
+ },
1031
+ "pt-BR": {
1032
+ allSelected: "Todos selecionados ({total})",
1033
+ numberOfTotalSelected: "{number} de {total} selecionados",
1034
+ numbersSelected: "{number} selecionados",
1035
+ selectAll: "Selecionar todos ({total})"
1036
+ }
1037
+ }, ss = { key: 0 }, ls = ["role"], os = {
1038
+ key: 1,
1039
+ class: "b-listbox-multi-select__divider",
1040
+ "aria-hidden": "true"
1041
+ }, is = { i18n: { messages: Ke } }, ns = /* @__PURE__ */ J({
1042
+ ...is,
1043
+ __name: "listbox-multi-select",
1044
+ props: {
1045
+ hasMoreItems: { type: Boolean, default: !1 },
1046
+ isOptionDisabled: { type: Function, default: () => !1 },
1047
+ items: {},
1048
+ lazyLoadType: { default: "none" },
1049
+ searching: { type: Boolean, default: !1 },
1050
+ selectedValues: {},
1051
+ staticCategories: { type: Boolean, default: !1 }
1052
+ },
1053
+ emits: ["select"],
1054
+ setup(e, { expose: t, emit: i }) {
1055
+ const s = e, n = i, { t: o, n: a } = Ie({ messages: Ke }), p = dt(), S = ut(), r = m(
1056
+ () => {
1057
+ var c, b, d, h;
1058
+ return {
1059
+ "aria-label": (c = S["aria-label"]) == null ? void 0 : c.toString(),
1060
+ "aria-busy": (b = S["aria-busy"]) == null ? void 0 : b.toString(),
1061
+ "aria-atomic": (d = S["aria-atomic"]) == null ? void 0 : d.toString(),
1062
+ "aria-live": (h = S["aria-live"]) == null ? void 0 : h.toString(),
1063
+ "aria-multiselectable": !0
1064
+ };
1065
+ }
1066
+ ), u = $(null), l = $(null), f = $(null), E = $(null), T = m(() => s.selectedValues.map(({ value: c }) => c)), { isMultiLevelSelect: R, flattenedItemsList: L } = ts(me(s, "items")), B = m(() => R.value && !s.staticCategories), G = m(() => B.value ? "tree" : "listbox"), k = m(() => B.value ? "treeitem" : "option"), y = (c) => {
1067
+ var h;
1068
+ const b = s.isOptionDisabled(c), d = ((h = T.value) == null ? void 0 : h.includes(c.value)) || !1;
1069
+ return { isDisabled: b, isPreSelected: d };
1070
+ }, _ = m(() => {
1071
+ if (s.searching && R)
1072
+ return s.items;
1073
+ const c = L.value.filter((b) => {
1074
+ const { isDisabled: d, isPreSelected: h } = y(b);
1075
+ return d && h || !d;
1076
+ });
1077
+ return s.selectedValues.forEach((b) => {
1078
+ c.find((d) => d.value === b.value) || c.push(b);
1079
+ }), c;
1080
+ }), I = m(
1081
+ () => {
1082
+ var c;
1083
+ return (c = _.value) == null ? void 0 : c.filter((b) => {
1084
+ var d;
1085
+ return b.items && R.value && s.searching ? b.items.filter(
1086
+ (C) => (s.selectedValues ?? []).includes(C.value)
1087
+ ).length === b.items.length : (d = T.value) == null ? void 0 : d.includes(b.value);
1088
+ });
1089
+ }
1090
+ ), w = () => R.value && !s.searching ? L.value.length : s.items.length, W = m(() => {
1091
+ var h;
1092
+ const c = _.value.length, b = w(), d = ((h = I.value) == null ? void 0 : h.length) || 0;
1093
+ return d === 0 ? o("selectAll", { total: a(c) }) : d === b ? o("allSelected", { total: a(b) }) : d <= b ? o("numberOfTotalSelected", { number: a(d), total: a(b) }) : o("numbersSelected", { number: a(d) });
1094
+ }), Q = (c) => {
1095
+ const b = (h) => {
1096
+ const { isDisabled: C, isPreSelected: Z } = y(h);
1097
+ return C && Z || !C;
1098
+ }, d = c.filter(b).filter((h) => !T.value.includes(h.value));
1099
+ n("select", [...s.selectedValues, ...d]);
1100
+ }, ge = (c) => {
1101
+ const b = (C) => {
1102
+ const { isDisabled: Z, isPreSelected: at } = y(C);
1103
+ return !(Z && at);
1104
+ }, d = c.filter(b).map(({ value: C }) => C), h = s.selectedValues.filter((C) => !(d != null && d.includes(C.value)));
1105
+ n("select", h);
1106
+ }, Ee = () => {
1107
+ Q(L.value);
1108
+ }, Oe = () => {
1109
+ ge(L.value);
1110
+ }, { isAllSelected: P, isIndeterminate: le, toggleSelectAll: We } = Ue(
1111
+ I,
1112
+ _,
1113
+ Ee,
1114
+ Oe
1115
+ ), ke = m(() => le.value ? "mixed" : `${P.value}`), ye = $(P.value), Te = () => {
1116
+ ye.value = !ye.value, We(ye.value);
1117
+ };
1118
+ pe(P, () => {
1119
+ ye.value = P.value;
1120
+ });
1121
+ const je = (c) => {
1122
+ Q(c.items);
1123
+ }, Le = (c) => {
1124
+ ge(c.items);
1125
+ }, ce = (c, b) => {
1126
+ let d = !1;
1127
+ const h = s.selectedValues.filter(({ value: C }) => b.value === C ? (d = !0, !1) : !0);
1128
+ d || h.push(b), n(c, h);
1129
+ }, qe = m(() => {
1130
+ if (!R.value)
1131
+ return s.selectedValues;
1132
+ const c = (C) => T.value.includes(C.value), b = (C) => !s.staticCategories && C.every((Z) => c(Z));
1133
+ return s.items.flatMap(
1134
+ (C) => C.items && !b(C.items) ? C.items : C
1135
+ ).filter((C) => C.items ? !0 : c(C));
1136
+ }), He = m(() => {
1137
+ var d, h, C, Z;
1138
+ const c = ["automatic", "button"].includes(s.lazyLoadType), b = ((d = s.selectedValues) == null ? void 0 : d.length) > 0 && ((h = I.value) == null ? void 0 : h.length) !== ((C = L.value) == null ? void 0 : C.length);
1139
+ return c && s.hasMoreItems ? !!((Z = s.selectedValues) != null && Z.length) : b;
1140
+ }), $e = m(() => ["automatic", "button"].includes(s.lazyLoadType) ? !s.hasMoreItems : !0), de = $([]), { visibleDomOptions: De, updateVisibleDomOptions: Xe } = Ve(
1141
+ u,
1142
+ me(s, "items"),
1143
+ k
1144
+ ), Je = (c) => {
1145
+ de.value.includes(c) ? de.value = de.value.filter((b) => b !== c) : de.value.push(c), we(() => {
1146
+ Xe();
1147
+ });
1148
+ }, Ze = (c) => {
1149
+ var b;
1150
+ (b = De.value[c]) == null || b.focus();
1151
+ }, {
1152
+ moveToNextElement: Qe,
1153
+ moveToPreviousElement: et,
1154
+ moveToFirstElement: tt,
1155
+ moveToLastElement: st,
1156
+ preventDefault: Be,
1157
+ focusedIndex: Re,
1158
+ setListboxFocusedIndex: lt
1159
+ } = ze(
1160
+ {
1161
+ items: De
1162
+ },
1163
+ Ze
1164
+ ), ot = {
1165
+ [V.ARROW_UP]: (c) => et(c),
1166
+ [V.ARROW_DOWN]: (c) => Qe(c),
1167
+ [V.HOME]: tt,
1168
+ [V.END]: st
1169
+ };
1170
+ t({
1171
+ /**
1172
+ * Method to set the index of the item to be focused on
1173
+ * Used for focus management to be kept in-sync with parent e.g. dropdowns
1174
+ */
1175
+ setListboxFocusedIndex: lt
1176
+ });
1177
+ const it = {
1178
+ [V.ARROW_UP]: Be,
1179
+ [V.ARROW_DOWN]: Be
1180
+ }, nt = m(() => {
1181
+ let c = 1;
1182
+ const b = {};
1183
+ return s.items.forEach((d) => {
1184
+ let h = de.value.includes(d.value);
1185
+ d.items ? (s.staticCategories ? h = !0 : b[d.value] = c++, h && d.items.forEach((C) => b[C.value] = c++)) : b[d.value] = c++;
1186
+ }), b;
1187
+ });
1188
+ return (c, b) => (v(), O("div", {
1189
+ ref_key: "listboxRef",
1190
+ ref: u,
1191
+ class: "b-listbox-multi-select"
1192
+ }, [
1193
+ He.value ? (v(), O("div", ss, [
1194
+ ae((v(), O("ul", Y({ class: "b-listbox-multi-select__chips" }, te(it, !0)), [
1195
+ (v(!0), O(se, null, j(qe.value, (d) => (v(), O("li", {
1196
+ key: d.value
1197
+ }, [
1198
+ x(M(ft), {
1199
+ ref_for: !0,
1200
+ ref_key: "selectedListboxItemsRef",
1201
+ ref: f,
1202
+ disabled: c.isOptionDisabled(d),
1203
+ label: d.label,
1204
+ condensed: "",
1205
+ onClick: (h) => d.items ? Le(d) : ce("select", d)
1206
+ }, null, 8, ["disabled", "label", "onClick"])
1207
+ ]))), 128))
1208
+ ], 16)), [
1209
+ [M(he)]
1210
+ ]),
1211
+ b[4] || (b[4] = U("hr", {
1212
+ class: "b-listbox-multi-select__divider",
1213
+ "aria-hidden": "true"
1214
+ }, null, -1))
1215
+ ])) : X("", !0),
1216
+ ae((v(), O("div", Y(r.value, { role: G.value }, te(ot, !0)), [
1217
+ $e.value ? (v(), N(M(Ce), {
1218
+ key: 0,
1219
+ ref_key: "selectAllListboxItemsRef",
1220
+ ref: l,
1221
+ class: "b-listbox-multi-select__option",
1222
+ tabindex: M(Re) === 0 ? 0 : -1,
1223
+ "aria-selected": ke.value !== "false",
1224
+ "aria-checked": ke.value,
1225
+ role: k.value,
1226
+ onClick: Te,
1227
+ onEnterPressed: Te,
1228
+ onSpacePressed: ne(Te, ["prevent"])
1229
+ }, {
1230
+ default: A(() => [
1231
+ x(M(Ae), {
1232
+ checked: M(P),
1233
+ indeterminate: M(le)
1234
+ }, null, 8, ["checked", "indeterminate"]),
1235
+ x(M(re), { el: "span" }, {
1236
+ default: A(() => [
1237
+ F(z(W.value), 1)
1238
+ ]),
1239
+ _: 1
1240
+ })
1241
+ ]),
1242
+ _: 1
1243
+ }, 8, ["tabindex", "aria-selected", "aria-checked", "role"])) : X("", !0),
1244
+ $e.value ? (v(), O("hr", os)) : X("", !0),
1245
+ x(M(es), {
1246
+ ref_key: "listboxItemsRef",
1247
+ ref: E,
1248
+ items: c.items,
1249
+ "is-option-disabled": c.isOptionDisabled,
1250
+ "is-multi-level": M(R),
1251
+ "static-categories": c.staticCategories,
1252
+ searching: c.searching,
1253
+ "selected-items-list": T.value,
1254
+ "focused-index": M(Re),
1255
+ "items-index": nt.value,
1256
+ role: k.value,
1257
+ onToggleCheckboxSelection: b[0] || (b[0] = (d) => ce("select", d)),
1258
+ onSelectCategory: je,
1259
+ onUnselectCategory: Le,
1260
+ onToggleCategoryVisibility: Je,
1261
+ onSpacePressed: b[1] || (b[1] = (d) => ce(M(g).SPACE, d)),
1262
+ onTabPressed: b[2] || (b[2] = (d) => ce(M(g).TAB, d)),
1263
+ onEnterPressed: b[3] || (b[3] = (d) => ce(M(g).ENTER, d))
1264
+ }, ve({ _: 2 }, [
1265
+ j(M(p), (d, h) => ({
1266
+ name: h,
1267
+ fn: A((C) => [
1268
+ K(c.$slots, h, ie(be(C)), void 0, !0)
1269
+ ])
1270
+ }))
1271
+ ]), 1032, ["items", "is-option-disabled", "is-multi-level", "static-categories", "searching", "selected-items-list", "focused-index", "items-index", "role"])
1272
+ ], 16, ls)), [
1273
+ [M(he)]
1274
+ ])
1275
+ ], 512));
1276
+ }
1277
+ }), Me = /* @__PURE__ */ q(ns, [["__scopeId", "data-v-dc031d72"]]), xe = {
1278
+ "en-US": {
1279
+ loading: "Loading",
1280
+ showMore: "Show more"
1281
+ },
1282
+ "ja-JP": {
1283
+ loading: "読み込み中",
1284
+ showMore: "表示内容を増やす"
1285
+ },
1286
+ "pt-BR": {
1287
+ loading: "Carregando",
1288
+ showMore: "Mostrar mais"
1289
+ }
1290
+ }, as = 36, rs = J({
1291
+ name: "bento-listbox",
1292
+ components: {
1293
+ BentoEmptyState: mt,
1294
+ BentoListboxSingleSelect: Yt,
1295
+ BentoListboxMultiSelect: Me,
1296
+ BentoTypography: re,
1297
+ BentoLoadingIndicator: bt,
1298
+ BentoLoadingButton: ht
1299
+ },
1300
+ directives: { BentoKeyboardNavigationDirective: he },
1301
+ i18n: { messages: xe },
1302
+ props: {
1303
+ /**
1304
+ * Defines a string value that labels an interactive element.
1305
+ */
1306
+ ariaLabel: { type: String, default: null },
1307
+ /**
1308
+ * Empty state props that will be used with the inner empty state component to be displayed when no search results are found.
1309
+ */
1310
+ emptyState: {
1311
+ type: Object,
1312
+ default: void 0
1313
+ },
1314
+ /**
1315
+ * Indicates whether there are more items to load
1316
+ */
1317
+ hasMoreItems: { type: Boolean, default: !1 },
1318
+ /**
1319
+ * Identifies the listbox whose contents are controlled by the the combobox on which the aria-controls attribute is set.
1320
+ */
1321
+ id: { type: String, required: !0 },
1322
+ /**
1323
+ * Function that allows the options to be disabled
1324
+ *
1325
+ * @type {BentoListboxIsOptionDisabled}
1326
+ * @param {BentoListboxOptionItem} option - Listbox option object
1327
+ * @param {string} option.label - Option's label text
1328
+ * @param {string|number} option.value - Option's value
1329
+ * @param {unknown} option.data - Option's extra data to be passed to the default slot
1330
+ */
1331
+ isOptionDisabled: {
1332
+ type: Function,
1333
+ default: () => {
1334
+ }
1335
+ },
1336
+ /**
1337
+ * The option elements to populate the listbox with.
1338
+ * It must be an array of {@see BentoListboxOptionItem }
1339
+ * * @property {string} value.label - Text to be displayed in the option
1340
+ * * @property {string,number} value.value - Value of the option
1341
+ */
1342
+ items: {
1343
+ type: Array,
1344
+ required: !0
1345
+ },
1346
+ /**
1347
+ * Indicates if new options are lazy loading.
1348
+ */
1349
+ loading: { type: Boolean, default: !1 },
1350
+ /**
1351
+ * The type of `Lazy Load`.
1352
+ * Type "automatic" will enable infinite scrolling
1353
+ * Type "button" will enable lazy loading with "Show more" button
1354
+ */
1355
+ lazyLoadType: {
1356
+ type: String,
1357
+ default: oe.NONE,
1358
+ validator: (e) => Object.values(oe).includes(e)
1359
+ },
1360
+ /**
1361
+ * Indicates the listbox is loading filtered items.
1362
+ */
1363
+ componentLoading: { type: Boolean, default: !1 },
1364
+ /**
1365
+ * If enabled, the user will be able to select multiple items.
1366
+ */
1367
+ multiple: { type: Boolean, default: !1 },
1368
+ /**
1369
+ * If enabled, dropdown will display non-selectable, static categories
1370
+ */
1371
+ staticCategories: { type: Boolean, default: !1 },
1372
+ /**
1373
+ * Messaged displayed when no items are listed in the listbox
1374
+ */
1375
+ noResultsMessage: { type: String, required: !0 },
1376
+ /**
1377
+ * Flag that indicates that an external search it's being made
1378
+ * to filter out the items inside the the multi-select listbox
1379
+ *
1380
+ * If enabled, hides the "Select all" checkbox in "multiple" mode.
1381
+ */
1382
+ searching: Me.props.searching,
1383
+ /**
1384
+ * The `input` value.
1385
+ * Providing an empty string or empty array will select no options.
1386
+ * Set to an empty string `''` if you don't want any of the available options to be selected for single select
1387
+ */
1388
+ selectedValue: {
1389
+ type: Array,
1390
+ default: () => []
1391
+ },
1392
+ /**
1393
+ * Enables virtual scrolling if set to true or by providing an object with itemHeight function.
1394
+ * The itemHeight function is used to calculate the height of rendered item given it's index.
1395
+ */
1396
+ virtualScroll: {
1397
+ type: [Boolean, Object],
1398
+ default: !1
1399
+ }
1400
+ },
1401
+ emits: [
1402
+ g.SELECT,
1403
+ g.SPACE,
1404
+ g.SHOW_MORE,
1405
+ g.ENTER,
1406
+ g.ESCAPE,
1407
+ g.TAB
1408
+ ],
1409
+ setup(e, { emit: t, slots: i }) {
1410
+ const s = $([]), n = me(e, "items"), { t: o } = Ie({ messages: xe }), a = m(() => e.lazyLoadType !== oe.AUTOMATIC), p = m(() => e.lazyLoadType === oe.AUTOMATIC), S = () => {
1411
+ var P;
1412
+ return typeof (e == null ? void 0 : e.virtualScroll) == "object" && ((P = e == null ? void 0 : e.virtualScroll) != null && P.itemHeight) ? e.virtualScroll.itemHeight : as;
1413
+ }, {
1414
+ containerRef: r,
1415
+ containerProps: u,
1416
+ onScroll: l,
1417
+ list: f,
1418
+ wrapperProps: E
1419
+ } = Et(n, {
1420
+ itemHeight: S(),
1421
+ // Disable virtual scrolling if not enabled or if lazy loading is enabled or if multi-select
1422
+ disabled: (e == null ? void 0 : e.multiple) || (e == null ? void 0 : e.virtualScroll) === !1 || (e == null ? void 0 : e.lazyLoadType) !== "none"
1423
+ }), T = m(
1424
+ () => e.componentLoading !== void 0 || a.value ? "true" : void 0
1425
+ ), R = m(
1426
+ () => a.value && e.loading || e.componentLoading ? "true" : "false"
1427
+ ), L = m(
1428
+ () => a.value || e.componentLoading !== void 0 ? "polite" : void 0
1429
+ ), B = m(
1430
+ () => ({
1431
+ "aria-label": e.ariaLabel,
1432
+ "aria-busy": R.value,
1433
+ "aria-atomic": T.value,
1434
+ "aria-live": L.value
1435
+ })
1436
+ ), G = m(
1437
+ () => e.componentLoading ? {
1438
+ ...B.value,
1439
+ role: "alert"
1440
+ } : {}
1441
+ ), k = (P) => (le) => {
1442
+ t(P, le);
1443
+ }, y = () => {
1444
+ t(g.SHOW_MORE);
1445
+ }, _ = vt(() => {
1446
+ const P = r.value;
1447
+ if (!P)
1448
+ return;
1449
+ const le = Math.round(P.scrollTop) + P.clientHeight >= P.scrollHeight;
1450
+ e.hasMoreItems && le && !e.loading && y();
1451
+ }), I = () => {
1452
+ p.value ? _() : l();
1453
+ }, w = m(() => {
1454
+ var P;
1455
+ return ((P = e.items) == null ? void 0 : P.length) === 0;
1456
+ }), W = m(
1457
+ () => e.lazyLoadType === oe.BUTTON && e.hasMoreItems
1458
+ ), Q = m(
1459
+ () => e.loading ? Ne.LOADING : Ne.START
1460
+ ), ge = m(() => e.loading ? o("loading") : o("showMore")), Ee = m(() => ({
1461
+ ...e.emptyState,
1462
+ variant: "condensed"
1463
+ })), Oe = {
1464
+ [g.SELECT]: k(g.SELECT),
1465
+ [g.SPACE]: k(g.SPACE),
1466
+ [g.TAB]: k(g.TAB),
1467
+ [g.ENTER]: k(g.ENTER)
1468
+ };
1469
+ return {
1470
+ // Refs
1471
+ listboxRef: r,
1472
+ listboxItemRef: s,
1473
+ // a11y
1474
+ ariaAttributes: B,
1475
+ listboxContainerAttributes: G,
1476
+ // Values
1477
+ containerProps: u,
1478
+ isSearchResultEmpty: w,
1479
+ limitedEmptyStateProps: Ee,
1480
+ loadingButtonState: Q,
1481
+ slots: i,
1482
+ shouldDisplayShowMoreButton: W,
1483
+ showMoreButtonText: ge,
1484
+ virtualisedItems: f,
1485
+ wrapperProps: E,
1486
+ // Enums
1487
+ BentoKeyboardNavigationKeyDownEvent: V,
1488
+ BentoListboxEvent: g,
1489
+ // Methods
1490
+ onListboxContainerScroll: I,
1491
+ onOptionSelected: k,
1492
+ emitShowMore: y,
1493
+ listboxListeners: Oe
1494
+ };
1495
+ }
1496
+ }), cs = ["id"], ds = {
1497
+ key: 0,
1498
+ class: "b-listbox__loading-filtered-items"
1499
+ }, us = {
1500
+ key: 1,
1501
+ class: "b-listbox__empty-search-message"
1502
+ }, bs = {
1503
+ key: 2,
1504
+ class: "b-listbox__lazy-load"
1505
+ }, ms = {
1506
+ key: 3,
1507
+ class: "b-listbox__lazy-load"
1508
+ };
1509
+ function vs(e, t, i, s, n, o) {
1510
+ var E;
1511
+ const a = D("bento-loading-indicator"), p = D("bento-empty-state"), S = D("bento-typography"), r = D("bento-listbox-multi-select"), u = D("bento-listbox-single-select"), l = D("bento-loading-button"), f = Ye("bento-keyboard-navigation-directive");
1512
+ return ae((v(), O("div", Y({
1513
+ id: e.id,
1514
+ ref: "listboxRef",
1515
+ class: "b-listbox",
1516
+ tabindex: "-1"
1517
+ }, e.listboxContainerAttributes, {
1518
+ style: (E = e.containerProps) == null ? void 0 : E.style,
1519
+ "data-testid": "listbox-container",
1520
+ onScroll: t[0] || (t[0] = (...T) => e.onListboxContainerScroll && e.onListboxContainerScroll(...T))
1521
+ }), [
1522
+ U("div", ie(be(e.wrapperProps)), [
1523
+ e.componentLoading ? (v(), O("div", ds, [
1524
+ x(a)
1525
+ ])) : e.isSearchResultEmpty ? (v(), O("div", us, [
1526
+ e.emptyState ? (v(), N(p, ie(Y({ key: 0 }, e.limitedEmptyStateProps)), null, 16)) : (v(), N(S, {
1527
+ key: 1,
1528
+ el: "span"
1529
+ }, {
1530
+ default: A(() => [
1531
+ F(z(e.noResultsMessage), 1)
1532
+ ]),
1533
+ _: 1
1534
+ }))
1535
+ ])) : (v(), O(se, { key: 2 }, [
1536
+ e.multiple ? (v(), N(r, Y({
1537
+ key: 0,
1538
+ ref: "listboxItemRef",
1539
+ "has-more-items": e.hasMoreItems
1540
+ }, e.ariaAttributes, {
1541
+ items: e.items,
1542
+ "lazy-load-type": e.lazyLoadType,
1543
+ "static-categories": e.staticCategories,
1544
+ "selected-values": e.selectedValue,
1545
+ searching: e.searching,
1546
+ "is-option-disabled": e.isOptionDisabled
1547
+ }, te(e.listboxListeners)), ve({ _: 2 }, [
1548
+ j(e.slots, (T, R) => ({
1549
+ name: R,
1550
+ fn: A((L) => [
1551
+ K(e.$slots, R, ie(be(L)), void 0, !0)
1552
+ ])
1553
+ }))
1554
+ ]), 1040, ["has-more-items", "items", "lazy-load-type", "static-categories", "selected-values", "searching", "is-option-disabled"])) : (v(), N(u, Y({
1555
+ key: 1,
1556
+ ref: "listboxItemRef",
1557
+ items: e.virtualisedItems
1558
+ }, e.ariaAttributes, {
1559
+ "selected-value": e.selectedValue,
1560
+ "static-categories": e.staticCategories,
1561
+ "is-option-disabled": e.isOptionDisabled
1562
+ }, te(e.listboxListeners)), ve({ _: 2 }, [
1563
+ j(e.slots, (T, R) => ({
1564
+ name: R,
1565
+ fn: A((L) => [
1566
+ K(e.$slots, R, ie(be(L)), void 0, !0)
1567
+ ])
1568
+ }))
1569
+ ]), 1040, ["items", "selected-value", "static-categories", "is-option-disabled"])),
1570
+ e.shouldDisplayShowMoreButton ? (v(), O("div", bs, [
1571
+ x(l, {
1572
+ state: e.loadingButtonState,
1573
+ variant: "secondary",
1574
+ onClickCapture: e.emitShowMore
1575
+ }, {
1576
+ default: A(() => [
1577
+ F(z(e.showMoreButtonText), 1)
1578
+ ]),
1579
+ _: 1
1580
+ }, 8, ["state", "onClickCapture"])
1581
+ ])) : e.loading ? (v(), O("div", ms, [
1582
+ x(a)
1583
+ ])) : X("", !0)
1584
+ ], 64))
1585
+ ], 16)
1586
+ ], 16, cs)), [
1587
+ [f]
1588
+ ]);
1589
+ }
1590
+ const Rs = /* @__PURE__ */ q(rs, [["render", vs], ["__scopeId", "data-v-c9aaa0e3"]]), _e = (e, t) => {
1591
+ for (const i of e) {
1592
+ if (i.value === t)
1593
+ return i;
1594
+ if (i.items) {
1595
+ const s = _e(i.items, t);
1596
+ if (s)
1597
+ return s;
1598
+ }
1599
+ }
1600
+ return null;
1601
+ }, fs = (e) => typeof e == "object" && e !== null && "value" in e && "label" in e, Ns = (e, t, i, s) => {
1602
+ const n = $([]), o = $(), a = (u) => {
1603
+ i.value ? o.value = u.map(({ value: l }) => l) : o.value = u.length > 0 ? u[0].value : null;
1604
+ }, p = (u) => {
1605
+ i.value ? o.value = u.map(({ value: l, label: f }) => ({ value: l, label: f })) : o.value = u.length > 0 ? { value: u[0].value, label: u[0].label } : null;
1606
+ }, S = (u) => {
1607
+ n.value = u, s != null && s.value ? p(u) : a(u);
1608
+ }, r = () => {
1609
+ n.value = [], o.value = null;
1610
+ };
1611
+ return pe(
1612
+ () => t.value,
1613
+ () => {
1614
+ if (!t.value && t.value !== 0) {
1615
+ r();
1616
+ return;
1617
+ }
1618
+ const u = !Array.isArray(t.value), l = [...n.value];
1619
+ r();
1620
+ const f = (E) => {
1621
+ if (fs(E))
1622
+ n.value.push(E);
1623
+ else {
1624
+ let T = _e(e.value, E);
1625
+ T || (T = _e(l, E)), T || (T = { value: E, label: E.toString() }), n.value.push(T);
1626
+ }
1627
+ };
1628
+ if (u) {
1629
+ const E = t.value;
1630
+ f(E), s != null && s.value ? p(n.value) : a(n.value);
1631
+ return;
1632
+ }
1633
+ t.value.forEach(f), s != null && s.value ? p(n.value) : a(n.value);
1634
+ },
1635
+ { immediate: !0 }
1636
+ ), {
1637
+ // Values
1638
+ cachedSelectedListboxOptions: n,
1639
+ cachedListboxSelectedValues: o,
1640
+ // Methods
1641
+ resetCache: r,
1642
+ setCachedValues: S
1643
+ };
1644
+ };
1645
+ export {
1646
+ oe as B,
1647
+ g as a,
1648
+ Rs as b,
1649
+ Ns as c,
1650
+ Ve as d,
1651
+ ts as u
1652
+ };
1653
+ //# sourceMappingURL=use-cached-selected-values.D7dOPJSO.js.map