@adyen/bento-vue2 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 (229) hide show
  1. package/dist/@types/index.d.ts +473 -253
  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.DHdrZtmW.js → action-bar.BxX3I27_.js} +31 -31
  40. package/dist/chunks/action-bar.BxX3I27_.js.map +1 -0
  41. package/dist/chunks/{base-modal.3OptY7u_.js → base-modal.QGDM_kjG.js} +2 -2
  42. package/dist/chunks/{base-modal.3OptY7u_.js.map → base-modal.QGDM_kjG.js.map} +1 -1
  43. package/dist/chunks/button-actions-with-menu.itkbcqzk.js +83 -0
  44. package/dist/chunks/button-actions-with-menu.itkbcqzk.js.map +1 -0
  45. package/dist/chunks/{button-actions._OIvTdKt.js → button-actions.BKdI_ooV.js} +2 -2
  46. package/dist/chunks/button-actions.BKdI_ooV.js.map +1 -0
  47. package/dist/chunks/calendar.DvIQEYwN.js +2086 -0
  48. package/dist/chunks/calendar.DvIQEYwN.js.map +1 -0
  49. package/dist/chunks/{card.CypgT0Ji.js → card.BktfAMv5.js} +2 -2
  50. package/dist/chunks/{card.CypgT0Ji.js.map → card.BktfAMv5.js.map} +1 -1
  51. package/dist/chunks/{checkbox-group.DVX0GFm9.js → checkbox-group.BVMGnokj.js} +4 -4
  52. package/dist/chunks/{checkbox-group.DVX0GFm9.js.map → checkbox-group.BVMGnokj.js.map} +1 -1
  53. package/dist/chunks/{checkbox.nHrvoKfp.js → checkbox.Bg5FM5Oa.js} +2 -2
  54. package/dist/chunks/{checkbox.nHrvoKfp.js.map → checkbox.Bg5FM5Oa.js.map} +1 -1
  55. package/dist/chunks/{code-snippet.W8Zp0zQP.js → code-snippet.DDiQ9R3o.js} +4 -4
  56. package/dist/chunks/{code-snippet.W8Zp0zQP.js.map → code-snippet.DDiQ9R3o.js.map} +1 -1
  57. package/dist/chunks/{controls-group.BWAmz7Tg.js → controls-group.CccuLkgP.js} +2 -2
  58. package/dist/chunks/{controls-group.BWAmz7Tg.js.map → controls-group.CccuLkgP.js.map} +1 -1
  59. package/dist/chunks/copy.CF8Fzu2Y.js +96 -0
  60. package/dist/chunks/copy.CF8Fzu2Y.js.map +1 -0
  61. package/dist/chunks/{dashboard-section.Bz54Z6Hh.js → dashboard-section.Beep1lY8.js} +3 -3
  62. package/dist/chunks/{dashboard-section.Bz54Z6Hh.js.map → dashboard-section.Beep1lY8.js.map} +1 -1
  63. package/dist/chunks/{dashed-underline.CEaAmjDa.js → dashed-underline.BQwLgzz6.js} +2 -2
  64. package/dist/chunks/{dashed-underline.CEaAmjDa.js.map → dashed-underline.BQwLgzz6.js.map} +1 -1
  65. package/dist/chunks/{data-grid-template.DtFRjaR8.js → data-grid-template.nkx0pCMA.js} +16 -14
  66. package/dist/chunks/data-grid-template.nkx0pCMA.js.map +1 -0
  67. package/dist/chunks/{data-grid.D4oeTUhn.js → data-grid.CkwZVy3a.js} +190 -188
  68. package/dist/chunks/data-grid.CkwZVy3a.js.map +1 -0
  69. package/dist/chunks/{date-picker.k0g6anfy.js → date-picker.BLBXaDHv.js} +8 -9
  70. package/dist/chunks/{date-picker.k0g6anfy.js.map → date-picker.BLBXaDHv.js.map} +1 -1
  71. package/dist/chunks/{date-range-picker.D9lyIoO-.js → date-range-picker.am63DgMj.js} +409 -393
  72. package/dist/chunks/date-range-picker.am63DgMj.js.map +1 -0
  73. package/dist/chunks/date.BfyWX2PY.js +160 -0
  74. package/dist/chunks/date.BfyWX2PY.js.map +1 -0
  75. package/dist/chunks/{dropdown-default-textbox.BNuuA4ES.js → dropdown-default-textbox.94q6opSD.js} +3 -3
  76. package/dist/chunks/dropdown-default-textbox.94q6opSD.js.map +1 -0
  77. package/dist/chunks/{dropdown-tag.DKhxBV52.js → dropdown-tag.DYIkCBa6.js} +2 -2
  78. package/dist/chunks/{dropdown-tag.DKhxBV52.js.map → dropdown-tag.DYIkCBa6.js.map} +1 -1
  79. package/dist/chunks/{dropdown.DV7uhHNP.js → dropdown.HA6ISg2h.js} +265 -270
  80. package/dist/chunks/{dropdown.DV7uhHNP.js.map → dropdown.HA6ISg2h.js.map} +1 -1
  81. package/dist/chunks/{error-message.1Em7Lis3.js → error-message.BgxnwPLF.js} +2 -2
  82. package/dist/chunks/{error-message.1Em7Lis3.js.map → error-message.BgxnwPLF.js.map} +1 -1
  83. package/dist/chunks/es6.n1ewaW31.js.map +1 -1
  84. package/dist/chunks/{file-uploader.DyjdNLOa.js → file-uploader.BPslxGI8.js} +323 -323
  85. package/dist/chunks/file-uploader.BPslxGI8.js.map +1 -0
  86. package/dist/chunks/{filter-bar.BxDEplt3.js → filter-bar.DbqsoAI1.js} +667 -652
  87. package/dist/chunks/{filter-bar.BxDEplt3.js.map → filter-bar.DbqsoAI1.js.map} +1 -1
  88. package/dist/chunks/{footer-actions.DyuSTjC5.js → footer-actions.BUfQFz7J.js} +2 -2
  89. package/dist/chunks/{footer-actions.DyuSTjC5.js.map → footer-actions.BUfQFz7J.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.Ds9mcwmp.js → header-with-views.JllLR2nW.js} +341 -327
  93. package/dist/chunks/header-with-views.JllLR2nW.js.map +1 -0
  94. package/dist/chunks/{header.Cb644uAi.js → header.04Y0unpy.js} +27 -26
  95. package/dist/chunks/{header.Cb644uAi.js.map → header.04Y0unpy.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.COq40yTq.js → info-icon-with-popover.B1DnkW4B.js} +2 -2
  99. package/dist/chunks/{info-icon-with-popover.COq40yTq.js.map → info-icon-with-popover.B1DnkW4B.js.map} +1 -1
  100. package/dist/chunks/info-icon.CYOXx8CL.js +37 -0
  101. package/dist/chunks/info-icon.CYOXx8CL.js.map +1 -0
  102. package/dist/chunks/{input-field-password.Bloa-rqx.js → input-field-password.BtOdV0gF.js} +124 -123
  103. package/dist/chunks/input-field-password.BtOdV0gF.js.map +1 -0
  104. package/dist/chunks/{input-field-phone-number.B3qzZKuP.js → input-field-phone-number.Dq-LnGag.js} +3 -3
  105. package/dist/chunks/{input-field-phone-number.B3qzZKuP.js.map → input-field-phone-number.Dq-LnGag.js.map} +1 -1
  106. package/dist/chunks/input-field.Bg77qHT2.js +157 -0
  107. package/dist/chunks/input-field.Bg77qHT2.js.map +1 -0
  108. package/dist/chunks/{menu.BCD4FW54.js → menu.EgYjFAku.js} +2 -2
  109. package/dist/chunks/{menu.BCD4FW54.js.map → menu.EgYjFAku.js.map} +1 -1
  110. package/dist/chunks/{modal-fullscreen.1OdCgyca.js → modal-fullscreen.BNTUOC7o.js} +2 -2
  111. package/dist/chunks/{modal-fullscreen.1OdCgyca.js.map → modal-fullscreen.BNTUOC7o.js.map} +1 -1
  112. package/dist/chunks/{modal.xY5aFhAO.js → modal.OvB4kEGR.js} +4 -4
  113. package/dist/chunks/{modal.xY5aFhAO.js.map → modal.OvB4kEGR.js.map} +1 -1
  114. package/dist/chunks/{pagination.Cl7SzoId.js → pagination.Dw153NzQ.js} +115 -115
  115. package/dist/chunks/pagination.Dw153NzQ.js.map +1 -0
  116. package/dist/chunks/{popover.B05xkQ4e.js → popover.BGHbPUOr.js} +2 -2
  117. package/dist/chunks/{popover.B05xkQ4e.js.map → popover.BGHbPUOr.js.map} +1 -1
  118. package/dist/chunks/promo-banner.Bbc2U3S3.js.map +1 -1
  119. package/dist/chunks/{radio-group.CtPG_iiI.js → radio-group.4_KKjvAm.js} +3 -3
  120. package/dist/chunks/{radio-group.CtPG_iiI.js.map → radio-group.4_KKjvAm.js.map} +1 -1
  121. package/dist/chunks/{rich-text-editor.CLxVaskq.js → rich-text-editor.CRJRvfJn.js} +5 -7
  122. package/dist/chunks/{rich-text-editor.CLxVaskq.js.map → rich-text-editor.CRJRvfJn.js.map} +1 -1
  123. package/dist/chunks/{search-bar.CadVBoj0.js → search-bar.BTZSePJh.js} +3 -3
  124. package/dist/chunks/{search-bar.CadVBoj0.js.map → search-bar.BTZSePJh.js.map} +1 -1
  125. package/dist/chunks/{secondary-nav.OwimHNCb.js → secondary-nav.BBhSBNn7.js} +2 -2
  126. package/dist/chunks/{secondary-nav.OwimHNCb.js.map → secondary-nav.BBhSBNn7.js.map} +1 -1
  127. package/dist/chunks/{selection-card-group.CoqBRUT8.js → selection-card-group.0o5T4tab.js} +3 -3
  128. package/dist/chunks/{selection-card-group.CoqBRUT8.js.map → selection-card-group.0o5T4tab.js.map} +1 -1
  129. package/dist/chunks/{sidepanel.CI8fu1Q3.js → sidepanel.Dt-BnFzN.js} +2 -2
  130. package/dist/chunks/{sidepanel.CI8fu1Q3.js.map → sidepanel.Dt-BnFzN.js.map} +1 -1
  131. package/dist/chunks/step.DMMofD4B.js +217 -0
  132. package/dist/chunks/step.DMMofD4B.js.map +1 -0
  133. package/dist/chunks/{structured-list-item.tox2Kcb6.js → structured-list-item.Bnn6-Z3q.js} +3 -3
  134. package/dist/chunks/{structured-list-item.tox2Kcb6.js.map → structured-list-item.Bnn6-Z3q.js.map} +1 -1
  135. package/dist/chunks/summary-grid.types.DsvtLg3D.js +337 -0
  136. package/dist/chunks/summary-grid.types.DsvtLg3D.js.map +1 -0
  137. package/dist/chunks/tab.BhWPBxcB.js +192 -0
  138. package/dist/chunks/tab.BhWPBxcB.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.BPeDUAPL.js → textarea.RAU710Uw.js} +83 -80
  142. package/dist/chunks/textarea.RAU710Uw.js.map +1 -0
  143. package/dist/chunks/{timeline-item.CS9ZDOsm.js → timeline-item.Dz66luo5.js} +11 -12
  144. package/dist/chunks/timeline-item.Dz66luo5.js.map +1 -0
  145. package/dist/chunks/{tutorial.DJ_Cwp9i.js → tutorial.DAKO-fKz.js} +4 -4
  146. package/dist/chunks/{tutorial.DJ_Cwp9i.js.map → tutorial.DAKO-fKz.js.map} +1 -1
  147. package/dist/chunks/{use-cached-selected-values.DNOmzQVy.js → use-cached-selected-values.DQPABFfG.js} +538 -498
  148. package/dist/chunks/use-cached-selected-values.DQPABFfG.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 +261 -81
  192. package/package.json +6 -6
  193. package/dist/assets/tabs.css +0 -1
  194. package/dist/chunks/action-bar.DHdrZtmW.js.map +0 -1
  195. package/dist/chunks/button-actions-with-menu.CYkEoiee.js +0 -166
  196. package/dist/chunks/button-actions-with-menu.CYkEoiee.js.map +0 -1
  197. package/dist/chunks/button-actions._OIvTdKt.js.map +0 -1
  198. package/dist/chunks/calendar.DbTC35rM.js +0 -1167
  199. package/dist/chunks/calendar.DbTC35rM.js.map +0 -1
  200. package/dist/chunks/copy.CXeLbvUP.js +0 -129
  201. package/dist/chunks/copy.CXeLbvUP.js.map +0 -1
  202. package/dist/chunks/data-grid-template.DtFRjaR8.js.map +0 -1
  203. package/dist/chunks/data-grid.D4oeTUhn.js.map +0 -1
  204. package/dist/chunks/date-range-picker.D9lyIoO-.js.map +0 -1
  205. package/dist/chunks/date.dYFFEunA.js +0 -987
  206. package/dist/chunks/date.dYFFEunA.js.map +0 -1
  207. package/dist/chunks/dropdown-default-textbox.BNuuA4ES.js.map +0 -1
  208. package/dist/chunks/file-uploader.DyjdNLOa.js.map +0 -1
  209. package/dist/chunks/get-date-locale.BN8xEjY0.js.map +0 -1
  210. package/dist/chunks/header-with-views.Ds9mcwmp.js.map +0 -1
  211. package/dist/chunks/index.BDuTpjD8.js +0 -40
  212. package/dist/chunks/index.BDuTpjD8.js.map +0 -1
  213. package/dist/chunks/index.DD7TppDb.js +0 -10
  214. package/dist/chunks/index.DD7TppDb.js.map +0 -1
  215. package/dist/chunks/info-icon.B9aTl1nU.js +0 -41
  216. package/dist/chunks/info-icon.B9aTl1nU.js.map +0 -1
  217. package/dist/chunks/input-field-password.Bloa-rqx.js.map +0 -1
  218. package/dist/chunks/input-field.B_3nZFYz.js +0 -152
  219. package/dist/chunks/input-field.B_3nZFYz.js.map +0 -1
  220. package/dist/chunks/pagination.Cl7SzoId.js.map +0 -1
  221. package/dist/chunks/step.dNTg2rtW.js +0 -217
  222. package/dist/chunks/step.dNTg2rtW.js.map +0 -1
  223. package/dist/chunks/summary-grid.types.CkUIw703.js +0 -301
  224. package/dist/chunks/summary-grid.types.CkUIw703.js.map +0 -1
  225. package/dist/chunks/tabs.Dx6teJGW.js +0 -205
  226. package/dist/chunks/tabs.Dx6teJGW.js.map +0 -1
  227. package/dist/chunks/textarea.BPeDUAPL.js.map +0 -1
  228. package/dist/chunks/timeline-item.CS9ZDOsm.js.map +0 -1
  229. package/dist/chunks/use-cached-selected-values.DNOmzQVy.js.map +0 -1
@@ -1,166 +0,0 @@
1
- import { ref as v, watch as b, nextTick as m, defineComponent as h, toRef as y, computed as _, provide as A } from "vue";
2
- import { M as B, B as N } from "./menu.BCD4FW54.js";
3
- import { a as T } from "./popover.B05xkQ4e.js";
4
- import { c as f, f as w, B as C } from "./button-actions._OIvTdKt.js";
5
- import { u as E } from "./index.BdrLbvtJ.js";
6
- import { n as M } from "./_plugin-vue2_normalizer.CeySl7Fu.js";
7
- import "../assets/button-actions-with-menu.css";
8
- const W = (r) => {
9
- const { breakpoint: t, container: i, defaultActionsCount: e, offset: o } = r, { width: d } = E(), s = v(e), l = 150, a = async () => {
10
- var u;
11
- await m();
12
- const c = i.value.clientWidth, n = l * s.value + (((u = o == null ? void 0 : o.value) == null ? void 0 : u.offsetWidth) ?? 0) + l;
13
- c >= n && s.value < e && (s.value += 1, a());
14
- }, p = async () => {
15
- var u;
16
- await m();
17
- const c = i.value.clientWidth, n = l * s.value + (((u = o == null ? void 0 : o.value) == null ? void 0 : u.offsetWidth) ?? 0);
18
- c < n && s.value > 0 && (s.value -= 1, p());
19
- };
20
- return b([d, i], async ([c, n], [u]) => {
21
- if (!n || !e || c > t)
22
- return;
23
- await m(), c > u ? a() : p();
24
- }), {
25
- displayedActionsCount: s
26
- };
27
- }, I = {}, R = /* @__PURE__ */ h({
28
- ...I,
29
- __name: "button-actions-with-menu",
30
- props: {
31
- /**
32
- * List of actions that will be used to render the buttons.
33
- * First element in the list will be rendered as "primary".
34
- * All elements after the first will be rendered as "secondary".
35
- *
36
- * Each object in the list should have a `title`, an `event` and
37
- * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.
38
- *
39
- * `title`: Button's text.
40
- *
41
- * `event`: Event triggered when clicking the Button.
42
- *
43
- * `icon` (optional): Vue Icon from the library `@adyen/ui-assets-icons-16`.
44
- *
45
- * @see BentoButton for a list of all the other props supported by each button action.
46
- *
47
- * ```
48
- * [{
49
- * title: 'Primary',
50
- * event: () => { ... },
51
- * icon: FourPeopleIcon,
52
- * link: {
53
- variant: 'default',
54
- external: true,
55
- to: 'https://www.adyen.com/'
56
- },
57
- * }, {
58
- * title: 'Secondary',
59
- * event: () => { ... }
60
- * disabled: true,
61
- * variant: 'primary',
62
- * critical: true
63
- * }]
64
- * ```
65
- */
66
- actions: {
67
- type: Array,
68
- required: !0
69
- },
70
- /**
71
- * Defines the layout in which the button actions is presented.
72
- *
73
- * @see {@link BentoButtonActionsLayout}
74
- *
75
- */
76
- actionsLayout: {
77
- type: String,
78
- default: f.BUTTONS_END
79
- },
80
- /**
81
- * The number of actions to be displayed. The rest of the actions will be collapsed in a menu component.
82
- */
83
- disableResponsiveBehavior: {
84
- type: Boolean,
85
- default: !1
86
- },
87
- /**
88
- * The number of actions to be displayed. The rest of the actions will be collapsed in a menu component.
89
- */
90
- displayedActions: {
91
- type: Number,
92
- default: void 0
93
- },
94
- /**
95
- * Set inverse color scheme to buttons and menu
96
- */
97
- inverse: {
98
- type: Boolean,
99
- default: !1
100
- },
101
- /**
102
- * The min-width breakpoint to hide the button actions.
103
- *
104
- * For example, a value of 200 means that buttons will be hidden at <= 200px.
105
- *
106
- * Defaults to 0 i.e. it shows all buttons.
107
- */
108
- hideDisplayedActionsBreakpoint: {
109
- type: Number,
110
- default: 0
111
- },
112
- /**
113
- * The position of where the menu should open.
114
- */
115
- menuPosition: {
116
- type: String,
117
- default: "bottom-start",
118
- validator: (r) => Object.values(T).includes(r)
119
- }
120
- },
121
- setup(r) {
122
- const t = r, i = y(t, "inverse"), e = v(null), o = v(null), d = v(!1), s = _(() => {
123
- const n = t.hideDisplayedActionsBreakpoint ? a.value : t.displayedActions;
124
- return t.actions.slice(0, n);
125
- }), l = _(() => {
126
- var n;
127
- return (n = o == null ? void 0 : o.value) == null ? void 0 : n.$el;
128
- }), { displayedActionsCount: a } = W({
129
- breakpoint: t.hideDisplayedActionsBreakpoint,
130
- container: e,
131
- defaultActionsCount: t.displayedActions,
132
- offset: l
133
- });
134
- A(B, i), t.disableResponsiveBehavior || A(w, { buttonActionsWithMenu: e, menu: o, stackButtons: d });
135
- const p = _(() => ({
136
- "b-button-actions-with-menu__container-wrapper--buttons-end": t.actionsLayout === f.BUTTONS_END,
137
- "b-button-actions-with-menu__container-wrapper--buttons-start": t.actionsLayout === f.BUTTONS_START,
138
- "b-button-actions-with-menu__container-wrapper--stacked-buttons": d.value
139
- })), c = _(
140
- () => a.value !== void 0 && a.value < t.actions.length ? t.actions.slice(a.value, t.actions.length).map((n) => ({
141
- text: n.title,
142
- handler: n.event,
143
- icon: n.icon,
144
- critical: n.critical,
145
- disabled: n.disabled
146
- })) : []
147
- );
148
- return { __sfc: !0, props: t, inverseRef: i, buttonActionsWithMenu: e, menu: o, stackButtons: d, computedActions: s, computedMenuRef: l, displayedActionsCount: a, conditionalClasses: p, computedMenuActions: c, BentoButtonActions: C, BentoMenu: N };
149
- }
150
- });
151
- var S = function() {
152
- var t = this, i = t._self._c, e = t._self._setupProxy;
153
- return i("div", { staticClass: "b-button-actions-with-menu" }, [i("div", { ref: "buttonActionsWithMenu", staticClass: "b-button-actions-with-menu__container-wrapper", class: e.conditionalClasses, attrs: { role: "group" } }, [i(e.BentoButtonActions, { attrs: { actions: e.computedActions, inverse: t.inverse, layout: t.actionsLayout } }), e.computedMenuActions.length ? i(e.BentoMenu, { ref: "menu", attrs: { data: e.computedMenuActions, "menu-position": t.menuPosition } }) : t._e()], 1)]);
154
- }, O = [], g = /* @__PURE__ */ M(
155
- R,
156
- S,
157
- O,
158
- !1,
159
- null,
160
- "3e32ebfe"
161
- );
162
- const H = g.exports;
163
- export {
164
- H as B
165
- };
166
- //# sourceMappingURL=button-actions-with-menu.CYkEoiee.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-actions-with-menu.CYkEoiee.js","sources":["../../src/components/internal/button-actions-with-menu/composables/use-responsive-actions.ts","../../src/components/internal/button-actions-with-menu/button-actions-with-menu.vue"],"sourcesContent":["import { useWindowSize } from '@vueuse/core';\nimport { nextTick, Ref, ref, watch } from 'vue';\n\ninterface UseResponsiveActionsProps {\n breakpoint?: number;\n container: Ref<HTMLElement>;\n defaultActionsCount: number;\n offset?: Ref<HTMLElement>;\n}\n\nexport const useResponsiveActions = (props: UseResponsiveActionsProps) => {\n const { breakpoint, container, defaultActionsCount, offset } = props;\n\n const { width: windowWidth } = useWindowSize();\n\n const displayedActionsCount = ref<number>(defaultActionsCount);\n\n const AVERAGE_BUTTON_WIDTH = 150; // button size + gap\n\n const showActions = async () => {\n await nextTick();\n\n const availableSpace = container.value.clientWidth;\n const totalActionWidth =\n AVERAGE_BUTTON_WIDTH * displayedActionsCount.value +\n (offset?.value?.offsetWidth ?? 0) +\n AVERAGE_BUTTON_WIDTH;\n\n // Only add actions if there's enough space and we haven't reached max\n if (availableSpace >= totalActionWidth && displayedActionsCount.value < defaultActionsCount) {\n displayedActionsCount.value += 1;\n\n showActions(); // keep trying to show more\n }\n };\n\n const hideActions = async () => {\n await nextTick();\n\n const availableSpace = container.value.clientWidth;\n const totalActionWidth = AVERAGE_BUTTON_WIDTH * displayedActionsCount.value + (offset?.value?.offsetWidth ?? 0);\n\n // Hide actions if they overflow the container\n if (availableSpace < totalActionWidth && displayedActionsCount.value > 0) {\n displayedActionsCount.value -= 1;\n\n hideActions(); // keep hiding until it fits\n }\n };\n\n watch([windowWidth, container], async ([newWidth, containerEl], [oldWidth]) => {\n if (!containerEl || !defaultActionsCount || newWidth > breakpoint) {\n return;\n }\n\n await nextTick();\n\n const isIncreasing = newWidth > oldWidth;\n\n if (isIncreasing) {\n showActions();\n } else {\n hideActions();\n }\n });\n\n return {\n displayedActionsCount,\n };\n};\n","<template>\n <div class=\"b-button-actions-with-menu\">\n <div\n ref=\"buttonActionsWithMenu\"\n role=\"group\"\n class=\"b-button-actions-with-menu__container-wrapper\"\n :class=\"conditionalClasses\"\n >\n <bento-button-actions :actions=\"computedActions\" :inverse=\"inverse\" :layout=\"actionsLayout\" />\n <bento-menu\n v-if=\"computedMenuActions.length\"\n ref=\"menu\"\n :data=\"computedMenuActions\"\n :menu-position=\"menuPosition\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { BentoButtonActions, BentoButtonActionsLayout, BentoButtonActionsList } from '@/components/button';\n import { BentoMenuItem } from '@/components/menu/components/menu-item/menu-item.types';\n import { MENU_INVERSE_INJECTION_KEY } from '@/components/menu/menu.keys';\n import BentoMenu from '@/components/menu/menu.vue';\n import { BentoPopoverPositions } from '@/components/popover';\n import { computed, PropType, provide, ref, toRef } from 'vue';\n import { BUTTON_ACTIONS_WITH_MENU_CONTAINER_INJECTION_KEY } from './button-actions-with-menu.keys';\n import { useResponsiveActions } from './composables/use-responsive-actions';\n\n /**\n * An internal button actions component with the option to display some of the actions in a menu.\n *\n * @example\n * <button-actions-with-menu\n * :actions=\"[\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon,\n * link: {\n * variant: 'default',\n * external: true,\n * to: 'https://www.adyen.com/'\n * },\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * disabled: true,\n * variant: BentoButtonVariant.PRIMARY,\n * critical: true\n * }]\n * :displayedActions=\"2\"\n * />\n */\n const props = defineProps({\n /**\n * List of actions that will be used to render the buttons.\n * First element in the list will be rendered as \"primary\".\n * All elements after the first will be rendered as \"secondary\".\n *\n * Each object in the list should have a `title`, an `event` and\n * (optional) a Vue `icon` from the library `@adyen/ui-assets-icons-16`.\n *\n * `title`: Button's text.\n *\n * `event`: Event triggered when clicking the Button.\n *\n * `icon` (optional): Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * @see BentoButton for a list of all the other props supported by each button action.\n *\n * ```\n * [{\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon,\n * link: {\n variant: 'default',\n external: true,\n to: 'https://www.adyen.com/'\n },\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * disabled: true,\n * variant: 'primary',\n * critical: true\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n required: true,\n },\n\n /**\n * Defines the layout in which the button actions is presented.\n *\n * @see {@link BentoButtonActionsLayout}\n *\n */\n actionsLayout: {\n type: String as PropType<`${BentoButtonActionsLayout}`>,\n default: BentoButtonActionsLayout.BUTTONS_END,\n },\n\n /**\n * The number of actions to be displayed. The rest of the actions will be collapsed in a menu component.\n */\n disableResponsiveBehavior: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The number of actions to be displayed. The rest of the actions will be collapsed in a menu component.\n */\n displayedActions: {\n type: Number,\n default: undefined,\n },\n\n /**\n * Set inverse color scheme to buttons and menu\n */\n inverse: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The min-width breakpoint to hide the button actions.\n *\n * For example, a value of 200 means that buttons will be hidden at <= 200px.\n *\n * Defaults to 0 i.e. it shows all buttons.\n */\n hideDisplayedActionsBreakpoint: {\n type: Number,\n default: 0,\n },\n\n /**\n * The position of where the menu should open.\n */\n menuPosition: {\n type: String as PropType<BentoPopoverPositions | `${BentoPopoverPositions}`>,\n default: 'bottom-start',\n validator: (value: BentoPopoverPositions) => Object.values(BentoPopoverPositions).includes(value),\n },\n });\n\n const inverseRef = toRef(props, 'inverse');\n const buttonActionsWithMenu = ref<HTMLDivElement>(null);\n const menu = ref(null);\n const stackButtons = ref(false);\n\n const computedActions = computed(() => {\n const displayedActionsLimit = props.hideDisplayedActionsBreakpoint\n ? displayedActionsCount.value\n : props.displayedActions;\n\n return props.actions.slice(0, displayedActionsLimit);\n });\n const computedMenuRef = computed(() => menu?.value?.$el);\n\n const { displayedActionsCount } = useResponsiveActions({\n breakpoint: props.hideDisplayedActionsBreakpoint,\n container: buttonActionsWithMenu,\n defaultActionsCount: props.displayedActions,\n offset: computedMenuRef,\n });\n\n provide(MENU_INVERSE_INJECTION_KEY, inverseRef);\n\n if (!props.disableResponsiveBehavior) {\n provide(BUTTON_ACTIONS_WITH_MENU_CONTAINER_INJECTION_KEY, { buttonActionsWithMenu, menu, stackButtons });\n }\n\n const conditionalClasses = computed(() => ({\n [`b-button-actions-with-menu__container-wrapper--buttons-end`]:\n props.actionsLayout === BentoButtonActionsLayout.BUTTONS_END,\n [`b-button-actions-with-menu__container-wrapper--buttons-start`]:\n props.actionsLayout === BentoButtonActionsLayout.BUTTONS_START,\n [`b-button-actions-with-menu__container-wrapper--stacked-buttons`]: stackButtons.value,\n }));\n\n const computedMenuActions = computed(() =>\n displayedActionsCount.value !== undefined && displayedActionsCount.value < props.actions.length\n ? (props.actions.slice(displayedActionsCount.value, props.actions.length).map(el => ({\n text: el.title,\n handler: el.event,\n icon: el.icon,\n critical: el.critical,\n disabled: el.disabled,\n })) as BentoMenuItem[])\n : []\n );\n</script>\n\n<script lang=\"ts\">\n /**\n * An internal button actions component with the option to display some of the actions in a menu.\n *\n * @example\n * <button-actions-with-menu\n * :actions=\"[\n * title: 'Primary',\n * event: () => { ... },\n * icon: FourPeopleIcon,\n * link: {\n * variant: 'default',\n * external: true,\n * to: 'https://www.adyen.com/'\n * },\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * disabled: true,\n * variant: BentoButtonVariant.PRIMARY,\n * critical: true\n * }]\n * :displayedActions=\"2\"\n * />\n */\n\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./button-actions-with-menu.scss\" />\n"],"names":["useResponsiveActions","props","breakpoint","container","defaultActionsCount","offset","windowWidth","useWindowSize","displayedActionsCount","ref","AVERAGE_BUTTON_WIDTH","showActions","nextTick","availableSpace","totalActionWidth","_a","hideActions","watch","newWidth","containerEl","oldWidth","__default__","inverseRef","toRef","buttonActionsWithMenu","menu","stackButtons","computedActions","computed","displayedActionsLimit","computedMenuRef","provide","MENU_INVERSE_INJECTION_KEY","BUTTON_ACTIONS_WITH_MENU_CONTAINER_INJECTION_KEY","conditionalClasses","BentoButtonActionsLayout","computedMenuActions","el"],"mappings":";;;;;;;AAUa,MAAAA,IAAA,CAAAC,MAAA;AACT,QAAA,EAAA,YAAAC,GAAA,WAAAC,GAAA,qBAAAC,GAAA,QAAAC,EAAA,IAAAJ,GAEA,EAAA,OAAAK,EAAA,IAAAC,EAAA,GAEAC,IAAAC,EAAAL,CAAA,GAEAM,IAAA,KAEAC,IAAA,YAAA;;AACI,UAAAC,EAAA;AAEA,UAAAC,IAAAV,EAAA,MAAA,aACAW,IAAAJ,IAAAF,EAAA,WAAAO,IAAAV,KAAA,gBAAAA,EAAA,UAAA,gBAAAU,EAAA,gBAAA,KAAAL;AAMA,IAAAG,KAAAC,KAAAN,EAAA,QAAAJ,MACII,EAAA,SAAA,GAEAG,EAAA;AAAA,EACJ,GAGJK,IAAA,YAAA;;AACI,UAAAJ,EAAA;AAEA,UAAAC,IAAAV,EAAA,MAAA,aACAW,IAAAJ,IAAAF,EAAA,WAAAO,IAAAV,KAAA,gBAAAA,EAAA,UAAA,gBAAAU,EAAA,gBAAA;AAGA,IAAAF,IAAAC,KAAAN,EAAA,QAAA,MACIA,EAAA,SAAA,GAEAQ,EAAA;AAAA,EACJ;AAGJ,SAAAC,EAAA,CAAAX,GAAAH,CAAA,GAAA,OAAA,CAAAe,GAAAC,CAAA,GAAA,CAAAC,CAAA,MAAA;AACI,QAAA,CAAAD,KAAA,CAAAf,KAAAc,IAAAhB;AACI;AAGJ,UAAAU,EAAA,GAEAM,IAAAE,IAGIT,EAAA,IAEAK,EAAA;AAAA,EACJ,CAAA,GAGJ;AAAA,IAAO,uBAAAR;AAAA,EACH;AAER,GC4JIa,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA1EAC,IAAAC,EAAAtB,GAAA,SAAA,GACAuB,IAAAf,EAAA,IAAA,GACAgB,IAAAhB,EAAA,IAAA,GACAiB,IAAAjB,EAAA,EAAA,GAEAkB,IAAAC,EAAA,MAAA;AACI,YAAAC,IAAA5B,EAAA,iCAAAO,EAAA,QAAAP,EAAA;AAIA,aAAAA,EAAA,QAAA,MAAA,GAAA4B,CAAA;AAAA,IAAmD,CAAA,GAEvDC,IAAAF,EAAA,MAAA;;AAAA,cAAAb,IAAAU,KAAA,gBAAAA,EAAA,UAAA,gBAAAV,EAAA;AAAA,KAAA,GAEA,EAAA,uBAAAP,EAAA,IAAAR,EAAA;AAAA,MAAuD,YAAAC,EAAA;AAAA,MACjC,WAAAuB;AAAA,MACP,qBAAAvB,EAAA;AAAA,MACgB,QAAA6B;AAAA,IACnB,CAAA;AAGZ,IAAAC,EAAAC,GAAAV,CAAA,GAEArB,EAAA,6BACI8B,EAAAE,GAAA,EAAA,uBAAAT,GAAA,MAAAC,GAAA,cAAAC,EAAA,CAAA;AAGJ,UAAAQ,IAAAN,EAAA,OAAA;AAAA,MAA2C,8DAAA3B,EAAA,kBAAAkC,EAAA;AAAA,MAEc,gEAAAlC,EAAA,kBAAAkC,EAAA;AAAA,MAEA,kEAAAT,EAAA;AAAA,IAC4B,EAAA,GAGrFU,IAAAR;AAAA,MAA4B,MAAApB,EAAA,UAAA,UAAAA,EAAA,QAAAP,EAAA,QAAA,SAAAA,EAAA,QAAA,MAAAO,EAAA,OAAAP,EAAA,QAAA,MAAA,EAAA,IAAA,CAAAoC,OAAA;AAAA,QAEiE,MAAAA,EAAA;AAAA,QACtE,SAAAA,EAAA;AAAA,QACG,MAAAA,EAAA;AAAA,QACH,UAAAA,EAAA;AAAA,QACI,UAAAA,EAAA;AAAA,MACA,EAAA,IAAA,CAAA;AAAA,IAEhB;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-actions._OIvTdKt.js","sources":["../../../core/src/components/button-actions/button-actions.types.ts","../../../core/src/components/loading-button/loading-button.types.ts","../../src/components/button/components/loading-button/loading-button.vue","../../src/components/internal/button-actions-with-menu/button-actions-with-menu.keys.ts","../../src/components/button/components/button-actions/composables/use-stack-buttons/use-stack-buttons.ts","../../src/components/button/components/button-actions/button-actions.vue"],"sourcesContent":["import type { BentoButtonProps } from '@/core/components/button/button.types';\nimport { BentoLoadingButtonState } from '@/core/components/loading-button/loading-button.types';\n\nexport interface BentoButtonActionObject<IconType = object> extends BentoButtonProps {\n title: string;\n event?: (event: Event) => void;\n icon?: IconType;\n iconLeft?: IconType;\n iconRight?: IconType;\n state?: BentoLoadingButtonState | `${BentoLoadingButtonState}`;\n iconOnly?: boolean;\n}\n\nexport type BentoButtonActionsList<IconType = object> = Array<BentoButtonActionObject<IconType>>;\n\nexport enum BentoButtonActionsLayoutBasic {\n BUTTONS_END = 'buttons-end',\n FILL_CONTAINER = 'fill-container',\n SPACE_BETWEEN = 'space-between',\n VERTICAL_STACK = 'vertical-stack',\n}\nexport enum BentoButtonActionsLayoutExtended {\n BUTTONS_START = 'buttons-start',\n}\n\n/**\n * @deprecated for usage with properties since version 2.0. Use the string literal instead.\n */\nexport const BentoButtonActionsLayout = { ...BentoButtonActionsLayoutBasic, ...BentoButtonActionsLayoutExtended };\nexport type BentoButtonActionsLayout = BentoButtonActionsLayoutBasic | BentoButtonActionsLayoutExtended;\n","export enum BentoLoadingButtonState {\n START = 'start',\n LOADING = 'loading',\n SUCCESS = 'success',\n FAIL = 'fail',\n}\n\nexport type BentoLoadingButtonIconState = Partial<{ [key in BentoLoadingButtonState]: string }>;\n","<template>\n <bento-button\n :critical=\"isCritical\"\n :variant=\"variant\"\n :condensed=\"condensed\"\n :disabled=\"disabled\"\n :inverse=\"inverse\"\n class=\"b-loading-button\"\n :class=\"conditionalClasses\"\n @click.capture.stop=\"onClick\"\n >\n <slot></slot>\n\n <template v-if=\"state === 'start' && hasSlot('iconLeft')\" #iconLeft>\n <slot name=\"iconLeft\"></slot>\n </template>\n <template v-else-if=\"state !== 'start'\" #iconLeft>\n <span class=\"b-loading-button__icon\" data-testid=\"loading-button-rotating-icon\">\n <cross v-if=\"state === 'fail'\" :svg-title=\"t('failed')\" />\n <checkmark v-else-if=\"state === 'success'\" :svg-title=\"t('succeded')\" />\n <!-- TODO: Replace with new loading-indicator component -->\n <bento-loading-indicator v-else-if=\"state === 'loading'\" small :inverse=\"isInverseLoadingIndicator\" />\n </span>\n </template>\n </bento-button>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, PropType, useSlots } from 'vue';\n import { BentoLoadingButtonState } from '@/core/components/loading-button/loading-button.types';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\n import BentoButton from '@/components/button/button.vue';\n import Cross from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import Checkmark from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n import { useHasSlot } from '@/composables/use-has-slot/use-has-slot';\n\n import { useI18n } from '@/utils/ts/i18n';\n\n import messages from './messages.json';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n const props = defineProps({\n /**\n * Reduces sizing of button\n */\n condensed: {\n type: BentoButton.props.condensed.type,\n default: false,\n },\n\n /**\n * Displays loading-button as critical\n */\n critical: {\n type: BentoButton.props.critical.type,\n default: false,\n },\n\n /**\n * Disables button functonality\n */\n disabled: {\n type: BentoButton.props.disabled.type,\n default: false,\n },\n\n /**\n * Sets color set to inverse\n */\n inverse: {\n type: Boolean,\n default: false,\n },\n\n /**\n * State of the button.\n * @values start, loading, success, fail\n */\n state: {\n type: String as PropType<BentoLoadingButtonState | `${BentoLoadingButtonState}`>,\n default: BentoLoadingButtonState.START,\n validator: (value: BentoLoadingButtonState) => Object.values(BentoLoadingButtonState).includes(value),\n },\n\n /**\n * Types of flavour of Button\n */\n variant: {\n type: BentoButton.props.variant.type,\n default: 'primary',\n validator: BentoButton.props.variant.validator,\n },\n });\n\n const emit = defineEmits([\"click\"]);\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n const { t } = useI18n<{ message: MessageSchema }>({ messages });\n\n const conditionalClasses = computed(() => ({\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.LOADING}`]:\n props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n 'b-loading-button--loading': props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.SUCCESS}`]:\n props.state === BentoLoadingButtonState.SUCCESS,\n [`b-loading-button--inverse`]: props.inverse,\n }));\n\n const isInverseLoadingIndicator = computed(\n () => (props.variant === 'primary' && !props.inverse) || (props.variant !== 'primary' && props.inverse)\n );\n const isCritical = computed(\n () =>\n (props.critical && props.state === BentoLoadingButtonState.START) ||\n props.state === BentoLoadingButtonState.FAIL\n );\n\n const onClick = (e: MouseEvent) => {\n // Prevent Vue3 from triggering event twice\n e.stopPropagation();\n\n if (props.state !== BentoLoadingButtonState.LOADING) {\n emit('click', e);\n }\n };\n</script>\n\n<script lang=\"ts\">\n /**\n * Loading Button component is used for cases where pressing a button starts an event that requires a loading state, e.g. when you have any sort of asynchronous action and are waiting for a response\n *\n * @example\n * import { BentoLoadingButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoLoadingButton },\n * template: `\n * <bento-loading-button state=\"loading\" variant=\"secondary\">\n * Loading\n * </bento-loading button>\n * `\n * }\n */\n export default {\n i18n: { messages },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"@/core/components/loading-button/loading-button.scss\" />\n","export const BUTTON_ACTIONS_WITH_MENU_CONTAINER_INJECTION_KEY = Symbol(\n 'button actions with menu container injection key'\n);\n","import { computed, inject, nextTick, onMounted, onUnmounted, ref, Ref, watch } from 'vue';\nimport { observeSizeOfElement } from '@/utils/ts/resize';\nimport { BButtonActionsButtonsEndColumnGap } from '@adyen/bento-design-tokens/dist/js/bento/es6';\nimport { BentoButtonActionsList } from '../../button-actions.types';\nimport { BUTTON_ACTIONS_WITH_MENU_CONTAINER_INJECTION_KEY } from '@/internal/button-actions-with-menu/button-actions-with-menu.keys';\n\nconst CONTAINER_QUERY = 242;\nconst BUTTONS_GAP = parseInt(BButtonActionsButtonsEndColumnGap, 10);\n\n/**\n * Calculates the width of the container and the buttons and decides if the buttons should be stacked or not\n *\n * @param buttonActions Reference to the container element\n * @param buttons Reference array of button elements\n * @param actions Button actions actions prop\n */\nexport const useStackButtons = (\n buttonActions: Ref<HTMLDivElement>,\n buttons: Ref<HTMLDivElement[]>,\n actions: BentoButtonActionsList\n) => {\n const originalButtonsWidth = ref(0);\n let containerObserver: ResizeObserver | null = null;\n\n const { buttonActionsWithMenu, menu, stackButtons } = inject(BUTTON_ACTIONS_WITH_MENU_CONTAINER_INJECTION_KEY, {\n buttonActionsWithMenu: ref(null),\n menu: ref(null),\n stackButtons: ref(false),\n });\n\n const container = computed(() => buttonActionsWithMenu.value ?? buttonActions.value);\n\n const computedButtons = computed(() => (menu.value ? [...buttons.value, menu.value.$el] : buttons.value));\n\n const areButtonsWiderThanContainer = (updateOriginalButtonsWidth?: boolean) => {\n const buttonsWidth = computedButtons.value?.reduce(\n (acc, button) => acc + button.clientWidth + BUTTONS_GAP,\n -BUTTONS_GAP - 1 // to remove the extra spacing, as if there's 3 buttons, only two will have a gap in between\n );\n\n const containersWidth = container.value.clientWidth;\n\n if (updateOriginalButtonsWidth) {\n originalButtonsWidth.value = containersWidth >= CONTAINER_QUERY && !stackButtons.value ? buttonsWidth : 0;\n }\n return originalButtonsWidth.value > containersWidth;\n };\n\n watch(\n () => actions,\n () => {\n nextTick(() => {\n stackButtons.value = areButtonsWiderThanContainer(true);\n });\n },\n { deep: true }\n );\n\n onMounted(() => {\n containerObserver = observeSizeOfElement(container.value, () => {\n stackButtons.value = areButtonsWiderThanContainer(originalButtonsWidth.value === 0);\n });\n });\n\n onUnmounted(() => {\n containerObserver?.disconnect();\n });\n\n return stackButtons;\n};\n","<template>\n <div ref=\"buttonActions\" class=\"b-button-actions\">\n <div class=\"b-button-actions__container-wrapper\" :class=\"conditionalClasses\" role=\"group\">\n <div\n v-for=\"(button, index) in reversedActionsList\"\n :key=\"index\"\n ref=\"buttons\"\n class=\"b-button-actions__button-wrapper\"\n >\n <bento-loading-button\n v-if=\"button.state\"\n :condensed=\"button.condensed\"\n :critical=\"button.critical\"\n :disabled=\"button.disabled\"\n :inverse=\"inverse\"\n :state=\"button.state\"\n :variant=\"button.variant || generateButtonVariantByIndex(index)\"\n v-on=\"generateButtonEvents(button)\"\n >\n {{ button.title }}\n </bento-loading-button>\n <bento-button\n v-else\n :condensed=\"button.condensed\"\n :critical=\"button.critical\"\n :disabled=\"button.disabled\"\n :inverse=\"inverse\"\n :link=\"button.link\"\n :variant=\"button.variant || generateButtonVariantByIndex(index)\"\n v-on=\"generateButtonEvents(button)\"\n >\n <template v-if=\"button.icon || button.iconLeft\" #iconLeft>\n <component :is=\"button.icon || button.iconLeft\" :svg-title=\"button.title\"></component>\n </template>\n <template v-if=\"!isIconOnly(button)\" #default>\n {{ button.title }}\n </template>\n <template v-if=\"button.iconRight\" #iconRight>\n <component :is=\"button.iconRight\" :svg-title=\"button.title\"></component>\n </template>\n </bento-button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, ref } from 'vue';\n import BentoButton from '../../button.vue';\n import {\n BentoButtonActionObject,\n BentoButtonActionsLayout,\n } from '@/core/components/button-actions/button-actions.types';\n import type { BentoButtonActionsProps } from './button-actions.types';\n import { BentoLoadingButton } from '../loading-button';\n import { useStackButtons } from '@/components/button/components/button-actions/composables/use-stack-buttons/use-stack-buttons';\n\n const props = defineProps({\n actions: null,\n inverse: { type: Boolean, default: false },\n layout: { default: BentoButtonActionsLayout.BUTTONS_END }\n});\n\n const buttonActions = ref<HTMLDivElement>(null);\n const buttons = ref<HTMLDivElement[]>(null);\n const stackButtons = useStackButtons(buttonActions, buttons, props.actions);\n\n const reversedActionsList = computed(() => props.actions.slice().reverse());\n const generateButtonVariantByIndex = actionIndex => {\n const lastActionIndex = props.actions.length - 1;\n return actionIndex === lastActionIndex ? 'primary' : 'secondary';\n };\n\n const conditionalClasses = computed(() => ({\n [`b-button-actions--${props.layout}`]: true,\n [`b-button-actions--stacked-buttons`]: stackButtons.value,\n }));\n\n const generateButtonEvents = (button: BentoButtonActionObject) =>\n button?.event !== undefined\n ? {\n click: button.event,\n }\n : {};\n\n const isIconOnly = (button: BentoButtonActionObject) =>\n button.iconOnly && (button.iconLeft || button.iconRight || button.icon);\n</script>\n\n<script lang=\"ts\">\n /**\n * ButtonActions component manages a set of actions a user can choose from by displaying a group of buttons.\n *\n * @example\n * import { BentoButtonActions } from '@adyen/bento-vue2';\n * import MachineLearningIcon from '@adyen/ui-assets-icons-16/vue/machine-learning';\n *\n * const clickedAction = () => { //your action here }\n *\n * <template>\n * <bento-button-actions\n * :actions=\"[{\n * title: 'Primary',\n * event: clickedAction,\n * icon: MachineLearningIcon,\n * }, {\n * title: 'Secondary',\n * event: clickedAction,\n * }, {\n * title: 'Tertiary',\n * event: clickedAction,\n * }]\"\n * />\n * </template>\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"@/core/components/button-actions/button-actions.scss\" />\n"],"names":["BentoButtonActionsLayoutBasic","BentoButtonActionsLayoutBasic2","BentoButtonActionsLayoutExtended","BentoButtonActionsLayoutExtended2","BentoButtonActionsLayout","BentoLoadingButtonState","BentoLoadingButtonState2","__default__$1","messages","slots","useSlots","hasSlot","useHasSlot","t","useI18n","conditionalClasses","computed","props","isInverseLoadingIndicator","isCritical","e","emit","BUTTON_ACTIONS_WITH_MENU_CONTAINER_INJECTION_KEY","CONTAINER_QUERY","BUTTONS_GAP","BButtonActionsButtonsEndColumnGap","useStackButtons","buttonActions","buttons","actions","originalButtonsWidth","ref","containerObserver","buttonActionsWithMenu","menu","stackButtons","inject","container","computedButtons","areButtonsWiderThanContainer","updateOriginalButtonsWidth","buttonsWidth","_a","acc","button","containersWidth","watch","nextTick","onMounted","observeSizeOfElement","onUnmounted","__default__","reversedActionsList","generateButtonVariantByIndex","actionIndex","lastActionIndex"],"mappings":"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"}