@adyen/bento-vue3 2.0.1 → 2.1.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.
- package/dist/@types/bento-translation-keys.generated.d.ts +908 -0
- package/dist/@types/index.d.ts +136 -82
- package/dist/accordion.js +1 -1
- package/dist/action-bar.js +1 -1
- package/dist/ai-tag.js +1 -1
- package/dist/alert.js +1 -1
- package/dist/anchor-scroller.js +1 -1
- package/dist/assets/accordion-item.css +1 -1
- package/dist/assets/action-bar.css +1 -1
- package/dist/assets/base-modal.css +1 -1
- package/dist/assets/button-actions.css +1 -1
- package/dist/assets/button.css +1 -1
- package/dist/assets/calendar.css +1 -1
- package/dist/assets/card.css +1 -1
- package/dist/assets/checkbox.css +1 -1
- package/dist/assets/chip.css +1 -1
- package/dist/assets/currency.css +1 -1
- package/dist/assets/data-grid.css +1 -1
- package/dist/assets/date-range-picker.css +1 -1
- package/dist/assets/dialog-page.css +1 -1
- package/dist/assets/draggable.css +1 -1
- package/dist/assets/dropdown.css +1 -1
- package/dist/assets/file-uploader.css +1 -1
- package/dist/assets/filter-bar.css +1 -1
- package/dist/assets/header-with-views.css +1 -1
- package/dist/assets/input-field.css +1 -1
- package/dist/assets/input-time.css +1 -1
- package/dist/assets/inspector.css +1 -1
- package/dist/assets/modal-fullscreen.css +1 -1
- package/dist/assets/navigation-menu-group.css +1 -1
- package/dist/assets/pagination.css +1 -1
- package/dist/assets/rich-text-editor.css +1 -1
- package/dist/assets/search-bar.css +1 -1
- package/dist/assets/secondary-nav.css +1 -1
- package/dist/assets/selection-card-group.css +1 -1
- package/dist/assets/sidepanel.css +1 -1
- package/dist/assets/step.css +1 -1
- package/dist/assets/structured-list-item.css +1 -1
- package/dist/assets/tab.css +1 -1
- package/dist/assets/textarea.css +1 -1
- package/dist/assets/toggle.css +1 -1
- package/dist/assets/typography.css +1 -1
- package/dist/avatar.js +1 -1
- package/dist/button.js +3 -3
- package/dist/card.js +1 -1
- package/dist/checkbox.js +2 -2
- package/dist/chip.js +1 -1
- package/dist/chunks/{accordion-item.BMxeTYDy.js → accordion-item.BbMoC7Rn.js} +6 -6
- package/dist/chunks/{accordion-item.BMxeTYDy.js.map → accordion-item.BbMoC7Rn.js.map} +1 -1
- package/dist/chunks/{action-bar.CWjLoeOU.js → action-bar.C6XFuiE0.js} +20 -20
- package/dist/chunks/{action-bar.CWjLoeOU.js.map → action-bar.C6XFuiE0.js.map} +1 -1
- package/dist/chunks/{ai-button.CYaCMWFk.js → ai-button.M2xaszNl.js} +3 -3
- package/dist/chunks/{ai-button.CYaCMWFk.js.map → ai-button.M2xaszNl.js.map} +1 -1
- package/dist/chunks/{ai-tag.CjrOE5yl.js → ai-tag.BLDTP7fs.js} +4 -4
- package/dist/chunks/{ai-tag.CjrOE5yl.js.map → ai-tag.BLDTP7fs.js.map} +1 -1
- package/dist/chunks/{alert.C8Pe1-OO.js → alert.BYmn1ewo.js} +4 -4
- package/dist/chunks/{alert.C8Pe1-OO.js.map → alert.BYmn1ewo.js.map} +1 -1
- package/dist/chunks/{anchor-scroller.C3zkcfPH.js → anchor-scroller.B35-JMuH.js} +6 -6
- package/dist/chunks/{anchor-scroller.C3zkcfPH.js.map → anchor-scroller.B35-JMuH.js.map} +1 -1
- package/dist/chunks/{avatar.DcXyOCS4.js → avatar.Bes5Qw12.js} +2 -2
- package/dist/chunks/{avatar.DcXyOCS4.js.map → avatar.Bes5Qw12.js.map} +1 -1
- package/dist/chunks/{base-button.Bi5JR_6k.js → base-button.Dg_u0f2_.js} +3 -3
- package/dist/chunks/{base-button.Bi5JR_6k.js.map → base-button.Dg_u0f2_.js.map} +1 -1
- package/dist/chunks/{base-modal.Bn4ZXwv6.js → base-modal.CulokESn.js} +7 -7
- package/dist/chunks/{base-modal.Bn4ZXwv6.js.map → base-modal.CulokESn.js.map} +1 -1
- package/dist/chunks/{button-actions-with-menu.CrbF2BSQ.js → button-actions-with-menu.BsCmJeKU.js} +2 -2
- package/dist/chunks/{button-actions-with-menu.CrbF2BSQ.js.map → button-actions-with-menu.BsCmJeKU.js.map} +1 -1
- package/dist/chunks/{button-actions.uIjzze43.js → button-actions.DvuGEQxM.js} +9 -9
- package/dist/chunks/button-actions.DvuGEQxM.js.map +1 -0
- package/dist/chunks/button-actions.types.BptAXjD8.js.map +1 -1
- package/dist/chunks/{button.Ciflfide.js → button.DAcwNdtP.js} +3 -3
- package/dist/chunks/{button.Ciflfide.js.map → button.DAcwNdtP.js.map} +1 -1
- package/dist/chunks/{calendar.Dtba7fcs.js → calendar.EuBZ9HoM.js} +325 -322
- package/dist/chunks/calendar.EuBZ9HoM.js.map +1 -0
- package/dist/chunks/{card.a8QL14dy.js → card.OErI_R47.js} +8 -8
- package/dist/chunks/{card.a8QL14dy.js.map → card.OErI_R47.js.map} +1 -1
- package/dist/chunks/{checkbox-group.BCzNXT1-.js → checkbox-group.Deb5pHjj.js} +4 -4
- package/dist/chunks/{checkbox-group.BCzNXT1-.js.map → checkbox-group.Deb5pHjj.js.map} +1 -1
- package/dist/chunks/{checkbox.0RmIkniU.js → checkbox.YBhv3GCJ.js} +17 -17
- package/dist/chunks/{checkbox.0RmIkniU.js.map → checkbox.YBhv3GCJ.js.map} +1 -1
- package/dist/chunks/{chip.Bv6IGch0.js → chip.D4OozULC.js} +13 -11
- package/dist/chunks/{chip.Bv6IGch0.js.map → chip.D4OozULC.js.map} +1 -1
- package/dist/chunks/{code-snippet.BbswO6TU.js → code-snippet.DNDXr7t6.js} +7 -7
- package/dist/chunks/{code-snippet.BbswO6TU.js.map → code-snippet.DNDXr7t6.js.map} +1 -1
- package/dist/chunks/{controls-group.KarFHKUT.js → controls-group.CC3yZiTT.js} +3 -3
- package/dist/chunks/{controls-group.KarFHKUT.js.map → controls-group.CC3yZiTT.js.map} +1 -1
- package/dist/chunks/{copy.C92qFRaR.js → copy.YBeE8V9S.js} +4 -4
- package/dist/chunks/{copy.C92qFRaR.js.map → copy.YBeE8V9S.js.map} +1 -1
- package/dist/chunks/{country.BN34hLpN.js → country.PHJgPzKU.js} +7 -7
- package/dist/chunks/{country.BN34hLpN.js.map → country.PHJgPzKU.js.map} +1 -1
- package/dist/chunks/country.types.BCOrkmVK.js.map +1 -1
- package/dist/chunks/{currency.DS4-apvT.js → currency.Y6BqUzYE.js} +5 -5
- package/dist/chunks/{currency.DS4-apvT.js.map → currency.Y6BqUzYE.js.map} +1 -1
- package/dist/chunks/{dashboard-section.Bv-SveGN.js → dashboard-section.CjC3fVU6.js} +3 -3
- package/dist/chunks/{dashboard-section.Bv-SveGN.js.map → dashboard-section.CjC3fVU6.js.map} +1 -1
- package/dist/chunks/{dashed-underline.C3lSC1_R.js → dashed-underline.DAtZOaad.js} +4 -4
- package/dist/chunks/{dashed-underline.C3lSC1_R.js.map → dashed-underline.DAtZOaad.js.map} +1 -1
- package/dist/chunks/{data-grid-template.DqZmPeze.js → data-grid-template.bPjGSga2.js} +4 -4
- package/dist/chunks/{data-grid-template.DqZmPeze.js.map → data-grid-template.bPjGSga2.js.map} +1 -1
- package/dist/chunks/{data-grid.vBDlLHOW.js → data-grid.o5MQdWnJ.js} +26 -26
- package/dist/chunks/{data-grid.vBDlLHOW.js.map → data-grid.o5MQdWnJ.js.map} +1 -1
- package/dist/chunks/{date-picker.Dnr2HuxA.js → date-picker.DyB8XkiY.js} +10 -10
- package/dist/chunks/{date-picker.Dnr2HuxA.js.map → date-picker.DyB8XkiY.js.map} +1 -1
- package/dist/chunks/date-picker.types.Ckt7zxGy.js.map +1 -1
- package/dist/chunks/{date-range-picker.CuBygd3O.js → date-range-picker.BcQUUVcW.js} +567 -525
- package/dist/chunks/date-range-picker.BcQUUVcW.js.map +1 -0
- package/dist/chunks/date-range-picker.types.Ckt7zxGy.js.map +1 -1
- package/dist/chunks/{date.ojGAujAt.js → date.SUOSxkTe.js} +4 -4
- package/dist/chunks/{date.ojGAujAt.js.map → date.SUOSxkTe.js.map} +1 -1
- package/dist/chunks/{dialog-page.D60pjDsQ.js → dialog-page.CHpFuDd9.js} +4 -4
- package/dist/chunks/{dialog-page.D60pjDsQ.js.map → dialog-page.CHpFuDd9.js.map} +1 -1
- package/dist/chunks/{draggable-handle.Cvc8gHzx.js → draggable-handle.CKkSJP0K.js} +3 -3
- package/dist/chunks/{draggable-handle.Cvc8gHzx.js.map → draggable-handle.CKkSJP0K.js.map} +1 -1
- package/dist/chunks/{draggable.BZsgR26I.js → draggable.jzTSFcM7.js} +38 -35
- package/dist/chunks/draggable.jzTSFcM7.js.map +1 -0
- package/dist/chunks/{drawer.D3j-d3q5.js → drawer.De-jDVb2.js} +2 -2
- package/dist/chunks/{drawer.D3j-d3q5.js.map → drawer.De-jDVb2.js.map} +1 -1
- package/dist/chunks/{dropdown-tag.Bn5FPeEL.js → dropdown-tag.BvXqllkv.js} +8 -8
- package/dist/chunks/{dropdown-tag.Bn5FPeEL.js.map → dropdown-tag.BvXqllkv.js.map} +1 -1
- package/dist/chunks/{dropdown.D_jkFrMd.js → dropdown.BoSI-Rre.js} +20 -20
- package/dist/chunks/{dropdown.D_jkFrMd.js.map → dropdown.BoSI-Rre.js.map} +1 -1
- package/dist/chunks/{empty-state.DpUC-3wv.js → empty-state.BuK12EGe.js} +4 -4
- package/dist/chunks/{empty-state.DpUC-3wv.js.map → empty-state.BuK12EGe.js.map} +1 -1
- package/dist/chunks/{error-message.Bt0CznQM.js → error-message.DJ5l0EUH.js} +3 -3
- package/dist/chunks/{error-message.Bt0CznQM.js.map → error-message.DJ5l0EUH.js.map} +1 -1
- package/dist/chunks/es6.yPcTMnSH.js.map +1 -1
- package/dist/chunks/{field-label.Cz11fn_F.js → field-label.vrUwhoOg.js} +4 -4
- package/dist/chunks/{field-label.Cz11fn_F.js.map → field-label.vrUwhoOg.js.map} +1 -1
- package/dist/chunks/{file-uploader.BglImnqw.js → file-uploader.Cv8sm0Jd.js} +12 -12
- package/dist/chunks/{file-uploader.BglImnqw.js.map → file-uploader.Cv8sm0Jd.js.map} +1 -1
- package/dist/chunks/{filter-bar.DG4GTi8L.js → filter-bar.6ElVHgFA.js} +34 -31
- package/dist/chunks/filter-bar.6ElVHgFA.js.map +1 -0
- package/dist/chunks/{fixed-scroller.DoOR83iH.js → fixed-scroller.C0nVzRBU.js} +3 -3
- package/dist/chunks/{fixed-scroller.DoOR83iH.js.map → fixed-scroller.C0nVzRBU.js.map} +1 -1
- package/dist/chunks/{footer-actions.Dl20Q1WX.js → footer-actions.BJif4sIk.js} +4 -4
- package/dist/chunks/{footer-actions.Dl20Q1WX.js.map → footer-actions.BJif4sIk.js.map} +1 -1
- package/dist/chunks/{form-layout-group.iAwbiI_S.js → form-layout-group.B9Kzae5F.js} +2 -2
- package/dist/chunks/{form-layout-group.iAwbiI_S.js.map → form-layout-group.B9Kzae5F.js.map} +1 -1
- package/dist/chunks/{form-layout-title.BZFh_nGD.js → form-layout-title.C7f1ByNh.js} +4 -4
- package/dist/chunks/{form-layout-title.BZFh_nGD.js.map → form-layout-title.C7f1ByNh.js.map} +1 -1
- package/dist/chunks/{header-with-views.WJlXgGI5.js → header-with-views.Dl6bfk_7.js} +17 -17
- package/dist/chunks/{header-with-views.WJlXgGI5.js.map → header-with-views.Dl6bfk_7.js.map} +1 -1
- package/dist/chunks/{header.Bi3MPZKE.js → header.E-KFjIG7.js} +5 -5
- package/dist/chunks/{header.Bi3MPZKE.js.map → header.E-KFjIG7.js.map} +1 -1
- package/dist/chunks/index.CGBfMQdv.js +38 -0
- package/dist/chunks/index.CGBfMQdv.js.map +1 -0
- package/dist/chunks/{info-icon-with-popover.uSr6-jzR.js → info-icon-with-popover.DqnQnwMI.js} +4 -4
- package/dist/chunks/{info-icon-with-popover.uSr6-jzR.js.map → info-icon-with-popover.DqnQnwMI.js.map} +1 -1
- package/dist/chunks/{info-icon.Zlg6Sgz0.js → info-icon.D_zu5SYT.js} +2 -2
- package/dist/chunks/{info-icon.Zlg6Sgz0.js.map → info-icon.D_zu5SYT.js.map} +1 -1
- package/dist/chunks/{input-field-password.CJZxudne.js → input-field-password.BXptrVTT.js} +7 -7
- package/dist/chunks/{input-field-password.CJZxudne.js.map → input-field-password.BXptrVTT.js.map} +1 -1
- package/dist/chunks/{input-field-phone-number.OJ4MG9Gf.js → input-field-phone-number.Crxi8Wm7.js} +4 -4
- package/dist/chunks/{input-field-phone-number.OJ4MG9Gf.js.map → input-field-phone-number.Crxi8Wm7.js.map} +1 -1
- package/dist/chunks/{input-field.IyNujUZt.js → input-field._keU91LW.js} +24 -24
- package/dist/chunks/{input-field.IyNujUZt.js.map → input-field._keU91LW.js.map} +1 -1
- package/dist/chunks/input-time.D7UW_ww_.js +193 -0
- package/dist/chunks/input-time.D7UW_ww_.js.map +1 -0
- package/dist/chunks/{inspector-page.D42_PXHM.js → inspector-page.DNsc0lK1.js} +4 -4
- package/dist/chunks/{inspector-page.D42_PXHM.js.map → inspector-page.DNsc0lK1.js.map} +1 -1
- package/dist/chunks/{inspector.BBgrupfO.js → inspector.BLAqbhmV.js} +6 -6
- package/dist/chunks/{inspector.BBgrupfO.js.map → inspector.BLAqbhmV.js.map} +1 -1
- package/dist/chunks/{layout-row.DijjweVX.js → layout-row.X6mPrUu8.js} +2 -2
- package/dist/chunks/{layout-row.DijjweVX.js.map → layout-row.X6mPrUu8.js.map} +1 -1
- package/dist/chunks/{link.types.BGj7apK3.js → link.types.BZ1u_6CS.js} +2 -2
- package/dist/chunks/{link.types.BGj7apK3.js.map → link.types.BZ1u_6CS.js.map} +1 -1
- package/dist/chunks/{list-item.CT7dyMQH.js → list-item.RuGQ8Y4T.js} +6 -6
- package/dist/chunks/{list-item.CT7dyMQH.js.map → list-item.RuGQ8Y4T.js.map} +1 -1
- package/dist/chunks/{listbox-option-tag.CwrFdsY1.js → listbox-option-tag.71rmQvG8.js} +3 -3
- package/dist/chunks/{listbox-option-tag.CwrFdsY1.js.map → listbox-option-tag.71rmQvG8.js.map} +1 -1
- package/dist/chunks/{modal-fullscreen.I5bjqzfd.js → modal-fullscreen.jXJnaueu.js} +10 -10
- package/dist/chunks/modal-fullscreen.jXJnaueu.js.map +1 -0
- package/dist/chunks/{modal.vue_vue_type_script_setup_true_lang.CrsIyU7A.js → modal.vue_vue_type_script_setup_true_lang.BwmYlzFm.js} +8 -8
- package/dist/chunks/{modal.vue_vue_type_script_setup_true_lang.CrsIyU7A.js.map → modal.vue_vue_type_script_setup_true_lang.BwmYlzFm.js.map} +1 -1
- package/dist/chunks/{navigation-menu-group.BJ9ZsXEn.js → navigation-menu-group.BnS0isK8.js} +32 -32
- package/dist/chunks/navigation-menu-group.BnS0isK8.js.map +1 -0
- package/dist/chunks/{pagination.C5gZxtZY.js → pagination.C-kvJ-XK.js} +9 -8
- package/dist/chunks/{pagination.C5gZxtZY.js.map → pagination.C-kvJ-XK.js.map} +1 -1
- package/dist/chunks/{payment-method.q2yow5VR.js → payment-method.B69Mu88z.js} +2 -2
- package/dist/chunks/{payment-method.q2yow5VR.js.map → payment-method.B69Mu88z.js.map} +1 -1
- package/dist/chunks/payment-method.types.BqtH7RM2.js.map +1 -1
- package/dist/chunks/popover.types.dhllh3NP.js.map +1 -1
- package/dist/chunks/popper-container.Rfj8UdMD.js.map +1 -1
- package/dist/chunks/{promo-banner.kE1-WkzI.js → promo-banner.3d1DHWas.js} +4 -4
- package/dist/chunks/{promo-banner.kE1-WkzI.js.map → promo-banner.3d1DHWas.js.map} +1 -1
- package/dist/chunks/{radio-group.XmRPh03c.js → radio-group.BTI_2U11.js} +5 -5
- package/dist/chunks/{radio-group.XmRPh03c.js.map → radio-group.BTI_2U11.js.map} +1 -1
- package/dist/chunks/{rich-text-editor.Cv_Vwt-6.js → rich-text-editor.ClUU1zPM.js} +12 -12
- package/dist/chunks/{rich-text-editor.Cv_Vwt-6.js.map → rich-text-editor.ClUU1zPM.js.map} +1 -1
- package/dist/chunks/{scroll-to-section.CJorrxQT.js → scroll-to-section.BRr4Vwi7.js} +2 -2
- package/dist/chunks/{scroll-to-section.CJorrxQT.js.map → scroll-to-section.BRr4Vwi7.js.map} +1 -1
- package/dist/chunks/{search-bar.5tObtLfW.js → search-bar.D1Jz7hdd.js} +13 -13
- package/dist/chunks/{search-bar.5tObtLfW.js.map → search-bar.D1Jz7hdd.js.map} +1 -1
- package/dist/chunks/{secondary-nav.DApIImQ0.js → secondary-nav.D32VFDTi.js} +26 -26
- package/dist/chunks/{secondary-nav.DApIImQ0.js.map → secondary-nav.D32VFDTi.js.map} +1 -1
- package/dist/chunks/{segmented-control.CEt2dz4n.js → segmented-control.CarI0i3p.js} +3 -3
- package/dist/chunks/{segmented-control.CEt2dz4n.js.map → segmented-control.CarI0i3p.js.map} +1 -1
- package/dist/chunks/segmented-control.types.BHRLV8KU.js.map +1 -1
- package/dist/chunks/{selection-card-group.DHXtJpoB.js → selection-card-group.CQsS8-H9.js} +109 -108
- package/dist/chunks/{selection-card-group.DHXtJpoB.js.map → selection-card-group.CQsS8-H9.js.map} +1 -1
- package/dist/chunks/{sidepanel._30g8POM.js → sidepanel.CYWPV9dE.js} +13 -13
- package/dist/chunks/{sidepanel._30g8POM.js.map → sidepanel.CYWPV9dE.js.map} +1 -1
- package/dist/chunks/{status.Nss4P5OU.js → status.BJ48Isyh.js} +2 -2
- package/dist/chunks/{status.Nss4P5OU.js.map → status.BJ48Isyh.js.map} +1 -1
- package/dist/chunks/status.types.Dx8MDhEH.js.map +1 -1
- package/dist/chunks/{step.5_ZukVqJ.js → step.CRVu8HPR.js} +6 -6
- package/dist/chunks/step.CRVu8HPR.js.map +1 -0
- package/dist/chunks/{structured-list-item.CBzznwcF.js → structured-list-item.C6SAUS9a.js} +11 -10
- package/dist/chunks/structured-list-item.C6SAUS9a.js.map +1 -0
- package/dist/chunks/{summary-grid.types.BR_EGvRg.js → summary-grid.types.FTWeUNFh.js} +7 -7
- package/dist/chunks/{summary-grid.types.BR_EGvRg.js.map → summary-grid.types.FTWeUNFh.js.map} +1 -1
- package/dist/chunks/{tab.D_k5AVHk.js → tab.CwXAsp9E.js} +44 -43
- package/dist/chunks/tab.CwXAsp9E.js.map +1 -0
- package/dist/chunks/{table-of-contents.CJ2yMbAG.js → table-of-contents.Bnyua5hb.js} +4 -4
- package/dist/chunks/{table-of-contents.CJ2yMbAG.js.map → table-of-contents.Bnyua5hb.js.map} +1 -1
- package/dist/chunks/{tag.BE1j0Oid.js → tag.BYxa556o.js} +3 -3
- package/dist/chunks/{tag.BE1j0Oid.js.map → tag.BYxa556o.js.map} +1 -1
- package/dist/chunks/{textarea.BYshPd98.js → textarea.D4aMdmDx.js} +8 -8
- package/dist/chunks/textarea.D4aMdmDx.js.map +1 -0
- package/dist/chunks/{timeline-item.Sy_DSw6p.js → timeline-item.De8HCoYw.js} +11 -11
- package/dist/chunks/{timeline-item.Sy_DSw6p.js.map → timeline-item.De8HCoYw.js.map} +1 -1
- package/dist/chunks/{title-details.C4ZvxPMu.js → title-details.8cyCeaLf.js} +5 -5
- package/dist/chunks/{title-details.C4ZvxPMu.js.map → title-details.8cyCeaLf.js.map} +1 -1
- package/dist/chunks/{toast.u5Y_CGe_.js → toast.BI2PD8Oj.js} +5 -5
- package/dist/chunks/{toast.u5Y_CGe_.js.map → toast.BI2PD8Oj.js.map} +1 -1
- package/dist/chunks/{toggle.BW8ww0Ih.js → toggle.BbCqV953.js} +4 -4
- package/dist/chunks/{toggle.BW8ww0Ih.js.map → toggle.BbCqV953.js.map} +1 -1
- package/dist/chunks/{tooltip.TFOGHOO0.js → tooltip.0QqJo2sa.js} +2 -2
- package/dist/chunks/{tooltip.TFOGHOO0.js.map → tooltip.0QqJo2sa.js.map} +1 -1
- package/dist/chunks/{tutorial.vue_vue_type_script_setup_true_lang.BIP-heAH.js → tutorial.vue_vue_type_script_setup_true_lang.Dn4toWHY.js} +4 -4
- package/dist/chunks/{tutorial.vue_vue_type_script_setup_true_lang.BIP-heAH.js.map → tutorial.vue_vue_type_script_setup_true_lang.Dn4toWHY.js.map} +1 -1
- package/dist/chunks/{typography.wIM07Hbl.js → typography.B6elnWpr.js} +35 -35
- package/dist/chunks/{typography.wIM07Hbl.js.map → typography.B6elnWpr.js.map} +1 -1
- package/dist/chunks/{use-bento-toast-controller.BAoPbtq7.js → use-bento-toast-controller.CkpBtweL.js} +2 -2
- package/dist/chunks/{use-bento-toast-controller.BAoPbtq7.js.map → use-bento-toast-controller.CkpBtweL.js.map} +1 -1
- package/dist/chunks/{use-country-items.CYnYzs7x.js → use-country-items.CAYJt6XS.js} +3 -3
- package/dist/chunks/{use-country-items.CYnYzs7x.js.map → use-country-items.CAYJt6XS.js.map} +1 -1
- package/dist/chunks/{use-date-input-formatter._ik1DYYV.js → use-date-input-formatter.BIVkaB1k.js} +2 -2
- package/dist/chunks/{use-date-input-formatter._ik1DYYV.js.map → use-date-input-formatter.BIVkaB1k.js.map} +1 -1
- package/dist/chunks/{use-dynamic-date-fns-locale.BMO9rsEh.js → use-dynamic-date-fns-locale._EtEeU3i.js} +2 -2
- package/dist/chunks/{use-dynamic-date-fns-locale.BMO9rsEh.js.map → use-dynamic-date-fns-locale._EtEeU3i.js.map} +1 -1
- package/dist/code-snippet.js +1 -1
- package/dist/country.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/dashboard-template.js +1 -1
- package/dist/dashed-underline.js +1 -1
- package/dist/data-grid-template.js +1 -1
- package/dist/data-grid.js +1 -1
- package/dist/date-picker.js +2 -2
- package/dist/date-range-picker.js +2 -2
- package/dist/date-time-picker.js +6 -6
- package/dist/date.js +1 -1
- package/dist/draggable.js +2 -2
- package/dist/drawer.js +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/empty-state.js +1 -1
- package/dist/file-uploader.js +1 -1
- package/dist/filter-bar.js +1 -1
- package/dist/form-layout.js +2 -2
- package/dist/header-with-views.js +1 -1
- package/dist/header.js +1 -1
- package/dist/index.js +382 -353
- package/dist/index.js.map +1 -1
- package/dist/info-icon.js +1 -1
- package/dist/input-field-password.js +1 -1
- package/dist/input-field-phone-number.js +1 -1
- package/dist/input-field.js +1 -1
- package/dist/input-time.js +1 -1
- package/dist/inspector.js +2 -2
- package/dist/internal.js +14 -14
- package/dist/layout.js +1 -1
- package/dist/link.js +1 -1
- package/dist/list.js +1 -1
- package/dist/menu.js +1 -1
- package/dist/modal-fullscreen.js +1 -1
- package/dist/modal.js +2 -2
- package/dist/navigation-menu.js +1 -1
- package/dist/pagination.js +1 -1
- package/dist/payment-method.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress-bar.js +4 -4
- package/dist/promo-banner.js +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/rich-text-editor.js +1 -1
- package/dist/search-bar.js +2 -2
- package/dist/secondary-nav.js +1 -1
- package/dist/segmented-control.js +1 -1
- package/dist/selection-card.js +1 -1
- package/dist/sidepanel.js +1 -1
- package/dist/status.js +1 -1
- package/dist/stepper.js +1 -1
- package/dist/structured-list.js +1 -1
- package/dist/styles/bento-dark.css +3 -0
- package/dist/styles/bento-light.css +3 -0
- package/dist/styles/bento.css +3 -0
- package/dist/styles/legacy.css +3 -0
- package/dist/styles/styleguide.css +3 -0
- package/dist/styles/utility.css +9 -0
- package/dist/summary-grid.js +1 -1
- package/dist/table-of-contents.js +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tag.js +1 -1
- package/dist/textarea.js +1 -1
- package/dist/timeline.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle.js +1 -1
- package/dist/tutorial.js +1 -1
- package/dist/typography.js +1 -1
- package/dist/web-types.json +1 -1
- package/package.json +9 -5
- package/dist/chunks/button-actions.uIjzze43.js.map +0 -1
- package/dist/chunks/calendar.Dtba7fcs.js.map +0 -1
- package/dist/chunks/date-range-picker.CuBygd3O.js.map +0 -1
- package/dist/chunks/draggable.BZsgR26I.js.map +0 -1
- package/dist/chunks/filter-bar.DG4GTi8L.js.map +0 -1
- package/dist/chunks/index.B875RXHM.js +0 -15
- package/dist/chunks/index.B875RXHM.js.map +0 -1
- package/dist/chunks/input-time.BJ6YqkFi.js +0 -122
- package/dist/chunks/input-time.BJ6YqkFi.js.map +0 -1
- package/dist/chunks/modal-fullscreen.I5bjqzfd.js.map +0 -1
- package/dist/chunks/navigation-menu-group.BJ9ZsXEn.js.map +0 -1
- package/dist/chunks/step.5_ZukVqJ.js.map +0 -1
- package/dist/chunks/structured-list-item.CBzznwcF.js.map +0 -1
- package/dist/chunks/tab.D_k5AVHk.js.map +0 -1
- package/dist/chunks/textarea.BYshPd98.js.map +0 -1
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { defineComponent as J, useSlots as K, computed as r, inject as ee, ref as _, openBlock as n, createElementBlock as w, normalizeClass as h, createElementVNode as T, unref as t, renderSlot as
|
|
1
|
+
import { defineComponent as J, useSlots as K, computed as r, inject as ee, ref as _, openBlock as n, createElementBlock as w, normalizeClass as h, createElementVNode as T, unref as t, renderSlot as b, createCommentVNode as R, withModifiers as ae, createBlock as u, withCtx as s, createTextVNode as U, toDisplayString as j, createVNode as le, watch as oe, provide as te, onMounted as re, Fragment as W, renderList as F, mergeProps as p, createSlots as Y } from "vue";
|
|
2
2
|
import { h as ne } from "./index.DCpihRYV.js";
|
|
3
3
|
import { a as ie, B as se } from "./es6.yPcTMnSH.js";
|
|
4
|
-
import { B as
|
|
5
|
-
import {
|
|
4
|
+
import { B as E } from "./typography.B6elnWpr.js";
|
|
5
|
+
import { C as de } from "./checkbox-input.Bv_GjPU8.js";
|
|
6
|
+
import { u as ue } from "./aria-label.CaUURpnB.js";
|
|
6
7
|
import { g as Q } from "./generate-uid.DBWe4g6T.js";
|
|
7
|
-
import { u as
|
|
8
|
-
import { a as
|
|
9
|
-
import { C as fe } from "./checkbox-input.Bv_GjPU8.js";
|
|
8
|
+
import { u as ce } from "./use-has-slot.CyMiImRQ.js";
|
|
9
|
+
import { a as me } from "./radio-input.FC4PVCHr.js";
|
|
10
10
|
import { _ as X } from "./_plugin-vue_export-helper.CHgC5LLL.js";
|
|
11
|
-
import { u as
|
|
12
|
-
import { C as ve } from "./controls-group.
|
|
13
|
-
import { G as
|
|
14
|
-
import { E as
|
|
11
|
+
import { u as fe } from "./form-field.B60VsF8d.js";
|
|
12
|
+
import { C as ve } from "./controls-group.CC3yZiTT.js";
|
|
13
|
+
import { G as be } from "./grid-layout.CCWNscU_.js";
|
|
14
|
+
import { E as pe } from "./error-message.DJ5l0EUH.js";
|
|
15
15
|
import "../assets/selection-card-group.css";
|
|
16
|
-
var G = /* @__PURE__ */ ((
|
|
17
|
-
const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"),
|
|
16
|
+
var G = /* @__PURE__ */ ((o) => (o.DISABLED = "disabled", o.READONLY = "readonly", o.ERROR = "error", o))(G || {});
|
|
17
|
+
const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), ye = {
|
|
18
18
|
key: 0,
|
|
19
19
|
class: "b-selection-card__icon",
|
|
20
20
|
role: "presentation",
|
|
@@ -83,15 +83,15 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
85
|
emits: ["input", "update:model-value"],
|
|
86
|
-
setup(
|
|
87
|
-
const e =
|
|
86
|
+
setup(o, { emit: x }) {
|
|
87
|
+
const e = o, S = x, z = K(), k = ce(z), c = Q("selection-card-input-id"), N = Q("selection-card-description"), g = r(
|
|
88
88
|
() => e.modelValue
|
|
89
|
-
),
|
|
89
|
+
), M = r(
|
|
90
90
|
() => e.modelValue
|
|
91
91
|
), C = r(() => ({
|
|
92
92
|
"b-selection-card--checked": P.value,
|
|
93
93
|
"b-selection-card--fully-clickable": e.fullyClickable
|
|
94
|
-
})),
|
|
94
|
+
})), L = r(() => ({
|
|
95
95
|
[`b-selection-card--${G.DISABLED}`]: e.disabled,
|
|
96
96
|
[`b-selection-card--${G.ERROR}`]: e.hasError,
|
|
97
97
|
[`b-selection-card--${G.READONLY}`]: e.readonly,
|
|
@@ -102,35 +102,35 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
102
102
|
"b-selection-card__checkbox-container-text--center-aligned": B.value
|
|
103
103
|
})), O = r(() => ({
|
|
104
104
|
"b-selection-card__slot--with-icon": k("icon")
|
|
105
|
-
})), $ =
|
|
105
|
+
})), $ = ue({
|
|
106
106
|
ariaLabel: e.title,
|
|
107
107
|
label: e.value
|
|
108
|
-
}),
|
|
109
|
-
if (f.value.$refs.inputRef ===
|
|
108
|
+
}), m = r(() => Array.isArray(e.modelValue)), P = r(() => y.value ? e.value === e.modelValue : m.value ? e.modelValue.some((l) => l === e.value) : e.modelValue), y = ee(Z, _(!1)), B = r(() => !e.subtitle && !e.description), f = _(null), I = _(null), a = _(null), d = (l) => {
|
|
109
|
+
if (f.value.$refs.inputRef === l.target) {
|
|
110
110
|
const D = i();
|
|
111
111
|
q(D);
|
|
112
112
|
return;
|
|
113
113
|
}
|
|
114
|
-
if (e.disabled && e.readonly || !e.fullyClickable && (
|
|
114
|
+
if (e.disabled && e.readonly || !e.fullyClickable && (I.value && I.value?.$el?.contains(l.target) || a.value && a.value?.$el?.contains(l.target) || f.value && f.value?.$el?.contains(l.target)))
|
|
115
115
|
return;
|
|
116
|
-
const
|
|
117
|
-
q(
|
|
116
|
+
const v = i();
|
|
117
|
+
q(v);
|
|
118
118
|
}, i = () => {
|
|
119
|
-
const
|
|
120
|
-
if (
|
|
121
|
-
const
|
|
122
|
-
return D === -1 ?
|
|
119
|
+
const l = (f.value?.$refs.inputRef).checked;
|
|
120
|
+
if (m.value) {
|
|
121
|
+
const v = [...e.modelValue], D = v.indexOf(e.value);
|
|
122
|
+
return D === -1 ? v.push(e.value) : v.splice(D, 1), v;
|
|
123
123
|
}
|
|
124
|
-
return
|
|
125
|
-
}, q = (
|
|
126
|
-
!e.disabled && !e.readonly && (S("update:model-value",
|
|
124
|
+
return y.value ? e.value : l;
|
|
125
|
+
}, q = (l) => {
|
|
126
|
+
!e.disabled && !e.readonly && (S("update:model-value", l), S("input", l));
|
|
127
127
|
};
|
|
128
|
-
return (
|
|
128
|
+
return (l, v) => (n(), w("div", {
|
|
129
129
|
class: h(["b-selection-card", C.value]),
|
|
130
|
-
onClick:
|
|
130
|
+
onClick: d
|
|
131
131
|
}, [
|
|
132
132
|
T("div", {
|
|
133
|
-
class: h(["b-selection-card__container",
|
|
133
|
+
class: h(["b-selection-card__container", L.value])
|
|
134
134
|
}, [
|
|
135
135
|
T("div", {
|
|
136
136
|
class: h(["b-selection-card__checkbox-container", V.value])
|
|
@@ -138,35 +138,35 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
138
138
|
T("div", {
|
|
139
139
|
class: h(["b-selection-card__checkbox-container-text", A.value])
|
|
140
140
|
}, [
|
|
141
|
-
t(k)("icon") ? (n(), w("div",
|
|
142
|
-
|
|
141
|
+
t(k)("icon") ? (n(), w("div", ye, [
|
|
142
|
+
b(l.$slots, "icon", {}, void 0, !0)
|
|
143
143
|
])) : R("", !0),
|
|
144
144
|
T("label", {
|
|
145
|
-
for: t(
|
|
145
|
+
for: t(c),
|
|
146
146
|
class: "b-selection-card__text",
|
|
147
|
-
onClick: ae(
|
|
147
|
+
onClick: ae(d, ["stop", "prevent"])
|
|
148
148
|
}, [
|
|
149
|
-
|
|
149
|
+
o.subtitle ? (n(), u(t(E), {
|
|
150
150
|
key: 0,
|
|
151
151
|
class: "b-selection-card__description",
|
|
152
152
|
el: "span",
|
|
153
153
|
variant: "caption"
|
|
154
154
|
}, {
|
|
155
155
|
default: s(() => [
|
|
156
|
-
U(j(
|
|
156
|
+
U(j(o.subtitle), 1)
|
|
157
157
|
]),
|
|
158
158
|
_: 1
|
|
159
159
|
})) : R("", !0),
|
|
160
|
-
|
|
160
|
+
le(t(E), {
|
|
161
161
|
el: "span",
|
|
162
162
|
variant: "title"
|
|
163
163
|
}, {
|
|
164
164
|
default: s(() => [
|
|
165
|
-
U(j(
|
|
165
|
+
U(j(o.title), 1)
|
|
166
166
|
]),
|
|
167
167
|
_: 1
|
|
168
168
|
}),
|
|
169
|
-
|
|
169
|
+
o.description ? (n(), u(t(E), {
|
|
170
170
|
key: 1,
|
|
171
171
|
id: "descriptionId",
|
|
172
172
|
class: "b-selection-card__description",
|
|
@@ -174,53 +174,53 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
174
174
|
variant: "body"
|
|
175
175
|
}, {
|
|
176
176
|
default: s(() => [
|
|
177
|
-
U(j(
|
|
177
|
+
U(j(o.description), 1)
|
|
178
178
|
]),
|
|
179
179
|
_: 1
|
|
180
180
|
})) : R("", !0)
|
|
181
181
|
], 8, he)
|
|
182
182
|
], 2),
|
|
183
|
-
t(
|
|
183
|
+
t(y) ? (n(), u(t(me), {
|
|
184
184
|
key: 0,
|
|
185
|
-
id: t(
|
|
185
|
+
id: t(c),
|
|
186
186
|
ref_key: "inputRef",
|
|
187
187
|
ref: f,
|
|
188
188
|
"aria-label": t($),
|
|
189
|
-
"aria-describedby":
|
|
190
|
-
disabled:
|
|
191
|
-
"has-error":
|
|
192
|
-
"aria-readonly":
|
|
193
|
-
value:
|
|
194
|
-
readonly:
|
|
189
|
+
"aria-describedby": o.description ? t(N) : void 0,
|
|
190
|
+
disabled: o.disabled,
|
|
191
|
+
"has-error": o.hasError,
|
|
192
|
+
"aria-readonly": o.readonly ?? void 0,
|
|
193
|
+
value: o.value,
|
|
194
|
+
readonly: o.readonly,
|
|
195
195
|
"model-value": g.value
|
|
196
|
-
}, null, 8, ["id", "aria-label", "aria-describedby", "disabled", "has-error", "aria-readonly", "value", "readonly", "model-value"])) : (n(),
|
|
196
|
+
}, null, 8, ["id", "aria-label", "aria-describedby", "disabled", "has-error", "aria-readonly", "value", "readonly", "model-value"])) : (n(), u(t(de), {
|
|
197
197
|
key: 1,
|
|
198
|
-
id: t(
|
|
198
|
+
id: t(c),
|
|
199
199
|
ref_key: "inputRef",
|
|
200
200
|
ref: f,
|
|
201
201
|
"aria-label": t($),
|
|
202
|
-
"aria-describedby":
|
|
203
|
-
disabled:
|
|
204
|
-
"has-error":
|
|
205
|
-
"aria-readonly":
|
|
206
|
-
value:
|
|
207
|
-
readonly:
|
|
208
|
-
"model-value":
|
|
202
|
+
"aria-describedby": o.description ? t(N) : void 0,
|
|
203
|
+
disabled: o.disabled,
|
|
204
|
+
"has-error": o.hasError,
|
|
205
|
+
"aria-readonly": o.readonly ?? void 0,
|
|
206
|
+
value: o.value,
|
|
207
|
+
readonly: o.readonly,
|
|
208
|
+
"model-value": M.value
|
|
209
209
|
}, null, 8, ["id", "aria-label", "aria-describedby", "disabled", "has-error", "aria-readonly", "value", "readonly", "model-value"]))
|
|
210
210
|
], 2),
|
|
211
|
-
t(k)("content") ? (n(),
|
|
211
|
+
t(k)("content") ? (n(), u(t(E), {
|
|
212
212
|
key: 0,
|
|
213
213
|
ref_key: "slotRef",
|
|
214
|
-
ref:
|
|
214
|
+
ref: I,
|
|
215
215
|
el: "div",
|
|
216
216
|
class: h(["b-selection-card__slot", O.value])
|
|
217
217
|
}, {
|
|
218
218
|
default: s(() => [
|
|
219
|
-
|
|
219
|
+
b(l.$slots, "content", {}, void 0, !0)
|
|
220
220
|
]),
|
|
221
221
|
_: 3
|
|
222
222
|
}, 8, ["class"])) : R("", !0),
|
|
223
|
-
t(k)("dynamicContent") && P.value ? (n(),
|
|
223
|
+
t(k)("dynamicContent") && P.value ? (n(), u(t(E), {
|
|
224
224
|
key: 1,
|
|
225
225
|
ref_key: "dynamicSlotRef",
|
|
226
226
|
ref: a,
|
|
@@ -228,7 +228,7 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
228
228
|
class: h(["b-selection-card__slot", O.value])
|
|
229
229
|
}, {
|
|
230
230
|
default: s(() => [
|
|
231
|
-
|
|
231
|
+
b(l.$slots, "dynamicContent", {}, void 0, !0)
|
|
232
232
|
]),
|
|
233
233
|
_: 3
|
|
234
234
|
}, 8, ["class"])) : R("", !0)
|
|
@@ -259,42 +259,43 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
259
259
|
tooltipText: { default: null }
|
|
260
260
|
},
|
|
261
261
|
emits: ["update:model-value"],
|
|
262
|
-
setup(
|
|
263
|
-
const e =
|
|
262
|
+
setup(o, { emit: x }) {
|
|
263
|
+
const e = o, S = x, { emitValue: z } = fe(S), k = K(), c = (a) => !!k[a], N = r(() => ({
|
|
264
264
|
"b-selection-card-group__items--horizontal": e.layout === "horizontal"
|
|
265
265
|
})), g = _(e.modelValue);
|
|
266
|
-
|
|
266
|
+
oe(
|
|
267
267
|
() => e.modelValue,
|
|
268
268
|
() => {
|
|
269
269
|
g.value = e.modelValue;
|
|
270
270
|
}
|
|
271
271
|
);
|
|
272
|
-
const
|
|
272
|
+
const M = Q("error"), C = r(() => !e.disabled && !e.readonly && !!e.errorMessage), L = _(null), { width: V } = ne(L), A = r(() => ie.split("px")[0]), O = r(() => se.split("px")[0]), $ = r(() => V.value < A.value ? "small" : V.value >= A.value && V.value < O.value ? "medium" : "large"), m = r(() => e.itemsPerRow?.[$?.value] || e.items.length), P = r(() => {
|
|
273
273
|
if (!e.itemsPerRow)
|
|
274
274
|
return [];
|
|
275
275
|
const a = [];
|
|
276
|
-
for (let
|
|
277
|
-
a.push(e.items.slice(
|
|
276
|
+
for (let d = 0; d < e.items.length; d += m?.value)
|
|
277
|
+
a.push(e.items.slice(d, d + m?.value));
|
|
278
278
|
return a;
|
|
279
|
-
}),
|
|
279
|
+
}), y = r(() => 12 / m?.value), B = r(() => m?.value ? new Array(m?.value).fill({
|
|
280
280
|
// Instead of passing the actual screen sizes values, passing the same values per each screen size and recomputing it makes sure visually the change is smoother and not laggy
|
|
281
|
-
small:
|
|
282
|
-
medium:
|
|
283
|
-
large:
|
|
281
|
+
small: y.value,
|
|
282
|
+
medium: y.value,
|
|
283
|
+
large: y.value
|
|
284
284
|
}) : []), f = (a) => {
|
|
285
285
|
g.value = a, z(a);
|
|
286
|
-
},
|
|
287
|
-
return te(Z,
|
|
286
|
+
}, I = r(() => e.variant === "radio");
|
|
287
|
+
return te(Z, I), re(() => {
|
|
288
288
|
e.itemsPerRow && Object.values(e.itemsPerRow).forEach((a) => {
|
|
289
|
-
|
|
289
|
+
const d = Number(a);
|
|
290
|
+
if (!Number.isInteger(d) || d < 1 || d > 6)
|
|
290
291
|
throw new Error(
|
|
291
|
-
"itemsPerRow values must have a value between
|
|
292
|
+
"itemsPerRow values must have a value between 1 and 6 items per row. Read the documentation for more information."
|
|
292
293
|
);
|
|
293
294
|
});
|
|
294
|
-
}), (a,
|
|
295
|
+
}), (a, d) => (n(), u(t(ve), {
|
|
295
296
|
ref_key: "containerRef",
|
|
296
|
-
ref:
|
|
297
|
-
"aria-describedby": C.value ? t(
|
|
297
|
+
ref: L,
|
|
298
|
+
"aria-describedby": C.value ? t(M) : null,
|
|
298
299
|
"aria-required": a.required,
|
|
299
300
|
label: a.label,
|
|
300
301
|
"hide-label": a.hideLabel,
|
|
@@ -310,9 +311,9 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
310
311
|
default: s(() => [
|
|
311
312
|
!a.itemsPerRow || a.layout === "vertical" ? (n(), w("div", {
|
|
312
313
|
key: 0,
|
|
313
|
-
class: h(["b-selection-card-group__items",
|
|
314
|
+
class: h(["b-selection-card-group__items", N.value])
|
|
314
315
|
}, [
|
|
315
|
-
(n(!0), w(W, null, F(a.items, (i) => (n(),
|
|
316
|
+
(n(!0), w(W, null, F(a.items, (i) => (n(), u(H, p({
|
|
316
317
|
key: `selection-card-${i.value}`,
|
|
317
318
|
class: "b-selection-card-group__item",
|
|
318
319
|
ref_for: !0
|
|
@@ -323,24 +324,24 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
323
324
|
disabled: a.disabled || i.disabled,
|
|
324
325
|
"onUpdate:modelValue": f
|
|
325
326
|
}), Y({ _: 2 }, [
|
|
326
|
-
|
|
327
|
+
c("icon") && i.icon ? {
|
|
327
328
|
name: "icon",
|
|
328
329
|
fn: s(() => [
|
|
329
|
-
|
|
330
|
+
b(a.$slots, "icon", p({ ref_for: !0 }, i), void 0, !0)
|
|
330
331
|
]),
|
|
331
332
|
key: "0"
|
|
332
333
|
} : void 0,
|
|
333
|
-
|
|
334
|
+
c("content") && i.content ? {
|
|
334
335
|
name: "content",
|
|
335
336
|
fn: s(() => [
|
|
336
|
-
|
|
337
|
+
b(a.$slots, "content", p({ ref_for: !0 }, i), void 0, !0)
|
|
337
338
|
]),
|
|
338
339
|
key: "1"
|
|
339
340
|
} : void 0,
|
|
340
|
-
|
|
341
|
+
c("dynamicContent") && i.dynamicContent ? {
|
|
341
342
|
name: "dynamicContent",
|
|
342
343
|
fn: s(() => [
|
|
343
|
-
|
|
344
|
+
b(a.$slots, "dynamicContent", p({ ref_for: !0 }, i), void 0, !0)
|
|
344
345
|
]),
|
|
345
346
|
key: "2"
|
|
346
347
|
} : void 0
|
|
@@ -348,43 +349,43 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
348
349
|
], 2)) : (n(), w("div", {
|
|
349
350
|
key: `selection-card-group-layout-breakpoint-${$.value}`
|
|
350
351
|
}, [
|
|
351
|
-
(n(!0), w(W, null, F(P.value, (i, q) => (n(),
|
|
352
|
-
key: `selection-card-group-row-${q}-cols-${
|
|
352
|
+
(n(!0), w(W, null, F(P.value, (i, q) => (n(), u(t(be), {
|
|
353
|
+
key: `selection-card-group-row-${q}-cols-${m.value}`,
|
|
353
354
|
class: "b-selection-card-group__items--wrap",
|
|
354
355
|
"column-width": B.value
|
|
355
356
|
}, Y({ _: 2 }, [
|
|
356
|
-
F(i, (
|
|
357
|
-
name: `col-${Number(
|
|
357
|
+
F(i, (l, v) => ({
|
|
358
|
+
name: `col-${Number(v) + 1}`,
|
|
358
359
|
fn: s(() => [
|
|
359
|
-
(n(),
|
|
360
|
-
key: `selection-card-${
|
|
360
|
+
(n(), u(H, p({
|
|
361
|
+
key: `selection-card-${l.value}`,
|
|
361
362
|
class: "b-selection-card-group__item b-selection-card-group__item--full-height",
|
|
362
363
|
ref_for: !0
|
|
363
|
-
},
|
|
364
|
+
}, l, {
|
|
364
365
|
"model-value": g.value,
|
|
365
|
-
readonly: a.readonly ||
|
|
366
|
+
readonly: a.readonly || l.readonly,
|
|
366
367
|
"has-error": C.value,
|
|
367
|
-
disabled: a.disabled ||
|
|
368
|
+
disabled: a.disabled || l.disabled,
|
|
368
369
|
"onUpdate:modelValue": f
|
|
369
370
|
}), Y({ _: 2 }, [
|
|
370
|
-
|
|
371
|
+
c("icon") && l.icon ? {
|
|
371
372
|
name: "icon",
|
|
372
373
|
fn: s(() => [
|
|
373
|
-
|
|
374
|
+
b(a.$slots, "icon", p({ ref_for: !0 }, l), void 0, !0)
|
|
374
375
|
]),
|
|
375
376
|
key: "0"
|
|
376
377
|
} : void 0,
|
|
377
|
-
|
|
378
|
+
c("content") && l.content ? {
|
|
378
379
|
name: "content",
|
|
379
380
|
fn: s(() => [
|
|
380
|
-
|
|
381
|
+
b(a.$slots, "content", p({ ref_for: !0 }, l), void 0, !0)
|
|
381
382
|
]),
|
|
382
383
|
key: "1"
|
|
383
384
|
} : void 0,
|
|
384
|
-
|
|
385
|
+
c("dynamicContent") && l.dynamicContent ? {
|
|
385
386
|
name: "dynamicContent",
|
|
386
387
|
fn: s(() => [
|
|
387
|
-
|
|
388
|
+
b(a.$slots, "dynamicContent", p({ ref_for: !0 }, l), void 0, !0)
|
|
388
389
|
]),
|
|
389
390
|
key: "2"
|
|
390
391
|
} : void 0
|
|
@@ -393,9 +394,9 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
393
394
|
}))
|
|
394
395
|
]), 1032, ["column-width"]))), 128))
|
|
395
396
|
])),
|
|
396
|
-
C.value ? (n(),
|
|
397
|
+
C.value ? (n(), u(t(pe), {
|
|
397
398
|
key: 2,
|
|
398
|
-
id: t(
|
|
399
|
+
id: t(M),
|
|
399
400
|
"error-message": a.errorMessage,
|
|
400
401
|
class: "b-selection-card-group__error-message"
|
|
401
402
|
}, null, 8, ["id", "error-message"])) : R("", !0)
|
|
@@ -403,10 +404,10 @@ const Z = /* @__PURE__ */ Symbol("selection card radio input injection key"), be
|
|
|
403
404
|
_: 3
|
|
404
405
|
}, 8, ["aria-describedby", "aria-required", "label", "hide-label", "description", "disabled", "tooltip-text", "readonly", "required", "optional"]));
|
|
405
406
|
}
|
|
406
|
-
}), qe = /* @__PURE__ */ X(Re, [["__scopeId", "data-v-
|
|
407
|
+
}), qe = /* @__PURE__ */ X(Re, [["__scopeId", "data-v-78394b17"]]);
|
|
407
408
|
export {
|
|
408
409
|
H as B,
|
|
409
410
|
G as a,
|
|
410
411
|
qe as s
|
|
411
412
|
};
|
|
412
|
-
//# sourceMappingURL=selection-card-group.
|
|
413
|
+
//# sourceMappingURL=selection-card-group.CQsS8-H9.js.map
|
package/dist/chunks/{selection-card-group.DHXtJpoB.js.map → selection-card-group.CQsS8-H9.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection-card-group.DHXtJpoB.js","sources":["../../../vue2/src/components/selection-card/selection-card.types.ts","../../../vue2/src/components/selection-card/selection-card.keys.ts","../../../vue2/src/components/selection-card/selection-card.vue","../../../vue2/src/components/selection-card/components/selection-card-group/selection-card-group.vue"],"sourcesContent":["import { type RadioInputValue } from '@/components/internal/radio-input';\nimport { type BentoCheckboxType } from '@/types/checkbox';\nimport { type VueNodeElement } from '@/types/elements';\n\nexport enum BentoSelectionCardState {\n DISABLED = 'disabled',\n READONLY = 'readonly',\n ERROR = 'error',\n}\n\nexport type BentoSelectionCardValue = string | number;\n\nexport type BentoSelectionCardModelValue = BentoCheckboxType | RadioInputValue;\n\nexport interface BentoSelectionCardItem {\n content?: string | object;\n description?: string;\n disabled?: boolean;\n dynamicContent?: string | object;\n fullyClickable?: boolean;\n hasError?: boolean;\n icon?: VueNodeElement;\n readonly?: boolean;\n subtitle?: string;\n title: string;\n value: BentoSelectionCardValue;\n}\n","export const SELECTION_CARD_RADIO_INPUT_INJECTION_KEY = Symbol('selection card radio input injection key');\n","<template>\n <div class=\"b-selection-card\" :class=\"conditionalClasses\" @click=\"handleCardClick\">\n <div class=\"b-selection-card__container\" :class=\"containerConditionalClasses\">\n <div class=\"b-selection-card__checkbox-container\" :class=\"checkboxContainerConditionalClasses\">\n <div class=\"b-selection-card__checkbox-container-text\" :class=\"checkboxContainerTextConditionalClasses\">\n <div v-if=\"hasSlot('icon')\" class=\"b-selection-card__icon\" role=\"presentation\" aria-hidden=\"true\">\n <slot name=\"icon\" />\n </div>\n <label :for=\"inputId\" class=\"b-selection-card__text\" @click.stop.prevent=\"handleCardClick\">\n <bento-typography\n v-if=\"subtitle\"\n class=\"b-selection-card__description\"\n el=\"span\"\n variant=\"caption\"\n >\n {{ subtitle }}\n </bento-typography>\n <bento-typography el=\"span\" variant=\"title\">{{ title }}</bento-typography>\n <bento-typography\n v-if=\"description\"\n id=\"descriptionId\"\n class=\"b-selection-card__description\"\n el=\"span\"\n variant=\"body\"\n >\n {{ description }}\n </bento-typography>\n </label>\n </div>\n <radio-input\n v-if=\"isRadioInput\"\n :id=\"inputId\"\n ref=\"inputRef\"\n :aria-label=\"ariaLabel\"\n :aria-describedby=\"description ? descriptionId : undefined\"\n :disabled=\"disabled\"\n :has-error=\"hasError\"\n :aria-readonly=\"readonly ?? undefined\"\n :value=\"value\"\n :readonly=\"readonly\"\n :model-value=\"computedRadioInputModelValue\"\n />\n <checkbox-input\n v-else\n :id=\"inputId\"\n ref=\"inputRef\"\n :aria-label=\"ariaLabel\"\n :aria-describedby=\"description ? descriptionId : undefined\"\n :disabled=\"disabled\"\n :has-error=\"hasError\"\n :aria-readonly=\"readonly ?? undefined\"\n :value=\"value\"\n :readonly=\"readonly\"\n :model-value=\"computedCheckboxInputModelValue\"\n />\n </div>\n <bento-typography\n v-if=\"hasSlot('content')\"\n ref=\"slotRef\"\n el=\"div\"\n class=\"b-selection-card__slot\"\n :class=\"slotConditionalClasses\"\n >\n <slot name=\"content\" />\n </bento-typography>\n <bento-typography\n v-if=\"hasSlot('dynamicContent') && isChecked\"\n ref=\"dynamicSlotRef\"\n el=\"div\"\n class=\"b-selection-card__slot\"\n :class=\"slotConditionalClasses\"\n >\n <slot name=\"dynamicContent\" />\n </bento-typography>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { BentoTypography } from '@/components/typography';\n import { CheckboxInput } from '../internal/checkbox-input';\n import { RadioInput, type RadioInputValue } from '../internal/radio-input';\n import { type BentoCheckboxType, type BentoMultiCheckboxType } from '@/types/checkbox';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { generateUid } from '@/utils/ts/generate-uid';\n import { computed, type ComputedRef, inject, type PropType, type Ref, ref, useSlots } from 'vue';\n import { useHasSlot } from '@/composables';\n import type { BentoSelectionCardModelValue, BentoSelectionCardValue } from './selection-card.types';\n import { BentoSelectionCardState } from './selection-card.types';\n import { SELECTION_CARD_RADIO_INPUT_INJECTION_KEY } from './selection-card.keys';\n\n const props = defineProps({\n /**\n * The description of the selection card\n */\n description: {\n type: String,\n default: undefined,\n },\n\n /**\n * Disables the selection card\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Makes the entire selection card clickable. Clicking over interactive elements inside the card with this prop enabled will not be possible.\n */\n fullyClickable: { type: Boolean, default: false },\n\n /**\n * Shows the selection card in error state\n */\n hasError: { type: Boolean, default: false },\n\n /**\n * This property should not be used directly.\n * It will be used by v-model directive on selection card component.\n *\n * When handling a single input, use a string or a number.\n *\n * When handling multiple inputs, use an array of keys.\n * These keys exist as a set \"value\" prop for each input.\n */\n modelValue: {\n type: [Boolean, String, Array] as PropType<BentoSelectionCardModelValue>,\n default: null,\n },\n\n /**\n * Sets the selection card to readonly\n */\n readonly: { type: Boolean, default: false },\n\n /**\n * The subtitle of the selection card\n */\n subtitle: {\n type: String,\n default: undefined,\n },\n\n /**\n * The title of the selection card\n */\n title: {\n type: String,\n required: true,\n },\n\n /**\n * Indicates the value of the input that will be returned when it's checked.\n */\n value: {\n type: [String, Number] as PropType<BentoSelectionCardValue>,\n required: true,\n },\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the selection card is clicked. Enables Vue2 \"v-model\"\n */\n (e: 'input', value: BentoSelectionCardValue);\n /**\n * Emitted when the selection card is clicked. Enables Vue3 \"v-model\"\n */\n (e: 'update:model-value', value: BentoSelectionCardValue);\n }>();\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n\n const inputId = generateUid('selection-card-input-id');\n const descriptionId = generateUid('selection-card-description');\n\n const computedRadioInputModelValue: ComputedRef<RadioInputValue> = computed(\n () => props.modelValue as RadioInputValue\n );\n const computedCheckboxInputModelValue: ComputedRef<BentoCheckboxType> = computed(\n () => props.modelValue as BentoCheckboxType\n );\n\n const conditionalClasses = computed(() => ({\n 'b-selection-card--checked': isChecked.value,\n 'b-selection-card--fully-clickable': props.fullyClickable,\n }));\n\n const containerConditionalClasses = computed(() => ({\n [`b-selection-card--${BentoSelectionCardState.DISABLED}`]: props.disabled,\n [`b-selection-card--${BentoSelectionCardState.ERROR}`]: props.hasError,\n [`b-selection-card--${BentoSelectionCardState.READONLY}`]: props.readonly,\n 'b-selection-card--center-aligned': isTitleOnly.value,\n }));\n\n const checkboxContainerConditionalClasses = computed(() => ({\n 'b-selection-card__checkbox-container--center-aligned': isTitleOnly.value,\n }));\n\n const checkboxContainerTextConditionalClasses = computed(() => ({\n 'b-selection-card__checkbox-container-text--center-aligned': isTitleOnly.value,\n }));\n\n const slotConditionalClasses = computed(() => ({\n 'b-selection-card__slot--with-icon': hasSlot('icon'),\n }));\n\n const ariaLabel = useAriaLabel({\n ariaLabel: props.title,\n label: props.value as string,\n });\n\n const isCheckboxGroup = computed(() => Array.isArray(props.modelValue));\n\n const isChecked: ComputedRef<boolean> = computed(() => {\n if (isRadioInput.value) {\n return props.value === props.modelValue;\n }\n if (!isCheckboxGroup.value) {\n return props.modelValue as boolean;\n }\n\n return (props.modelValue as BentoMultiCheckboxType).some(item => item === props.value);\n });\n\n const isRadioInput: Ref<boolean> = inject(SELECTION_CARD_RADIO_INPUT_INJECTION_KEY, ref(false));\n\n const isTitleOnly = computed(() => !props.subtitle && !props.description);\n\n const inputRef = ref<InstanceType<typeof RadioInput> | InstanceType<typeof CheckboxInput>>(null);\n const slotRef = ref(null);\n const dynamicSlotRef = ref(null);\n\n // Handle click on the whole card area\n const handleCardClick = (event: Event) => {\n if (inputRef.value.$refs.inputRef === event.target) {\n const newValue = toggleInput();\n onChange(newValue);\n return;\n }\n\n // Do nothing if disabled or readonly\n if (props.disabled && props.readonly) {\n return;\n }\n\n // If it's not fully clickable prevent selecting the card if the click\n // originated in a slot\n if (!props.fullyClickable) {\n // Check if the click originated from the slot - in that case, do nothng\n if (slotRef.value && slotRef.value?.$el?.contains(event.target)) {\n return;\n }\n // Check if the click originated from the dynamic slot - in that case, do nothng\n if (dynamicSlotRef.value && dynamicSlotRef.value?.$el?.contains(event.target)) {\n return;\n }\n // Check if the click originated from the input - in that case do nothing, as the input will emit the event already\n if (inputRef.value && inputRef.value?.$el?.contains(event.target as Node)) {\n return;\n }\n }\n\n // If the click originated outside of these two areas, emit the change event\n const newValue = toggleInput();\n\n onChange(newValue);\n };\n\n const toggleInput = (): BentoSelectionCardModelValue => {\n const currentValue: boolean = (inputRef.value?.$refs.inputRef as HTMLInputElement).checked;\n\n if (isCheckboxGroup.value) {\n const newCheckedList = [...(props.modelValue as BentoMultiCheckboxType)];\n const index = newCheckedList.indexOf(props.value);\n\n if (index === -1) {\n newCheckedList.push(props.value);\n } else {\n newCheckedList.splice(index, 1);\n }\n return newCheckedList;\n }\n\n if (isRadioInput.value) {\n return props.value;\n }\n return currentValue;\n };\n\n const onChange = newValue => {\n if (!props.disabled && !props.readonly) {\n emit('update:model-value', newValue);\n emit('input', newValue);\n }\n };\n</script>\n\n<script lang=\"ts\">\n /**\n * Selection card component. If used standalone, only the checkbox variant can be used. If the checkbox variant is needed, please use the bento-selection-card-group component.\n *\n * @example\n * import { BentoSelectionCard } from '@adyen/bento-vue2';\n * import EmoticonHappyIcon from '@adyen/ui-assets-icons-16/vue/emoticon-happy';\n *\n * export default {\n * components: { BentoSelectionCard, EmoticonHappyIcon },\n * template: `\n * <bento-selection-card title=\"Card title\" :model-value.sync=\"yourModelValue\">\n * <template #icon>\n * <emoticon-happy-icon />\n * </template>\n * </bento-selection-card>\n * `\n * }\n */\n export default {\n name: 'bento-selection-card',\n };\n</script>\n<style lang=\"scss\" scoped src=\"./selection-card.scss\" />\n","<template>\n <controls-group\n ref=\"containerRef\"\n :aria-describedby=\"shouldShowGroupError ? errorMessageId : null\"\n :aria-required=\"required\"\n :label=\"label\"\n :hide-label=\"hideLabel\"\n :description=\"description\"\n :disabled=\"disabled\"\n :tooltip-text=\"tooltipText\"\n :readonly=\"readonly\"\n :required=\"required\"\n :optional=\"optional\"\n class=\"b-selection-card-group\"\n component-name=\"selection-card-group\"\n >\n <div\n v-if=\"!itemsPerRow || layout === 'vertical'\"\n class=\"b-selection-card-group__items\"\n :class=\"conditionalItemsClasses\"\n >\n <bento-selection-card\n v-for=\"item in items\"\n :key=\"`selection-card-${item.value}`\"\n class=\"b-selection-card-group__item\"\n v-bind=\"item\"\n :model-value=\"inputValue\"\n :readonly=\"readonly || item.readonly\"\n :has-error=\"shouldShowGroupError\"\n :disabled=\"disabled || item.disabled\"\n @update:model-value=\"onInput\"\n >\n <template v-if=\"hasSlot('icon') && item.icon\" #icon>\n <slot name=\"icon\" v-bind=\"item\"></slot>\n </template>\n <template v-if=\"hasSlot('content') && item.content\" #content>\n <slot name=\"content\" v-bind=\"item\"></slot>\n </template>\n <template v-if=\"hasSlot('dynamicContent') && item.dynamicContent\" #dynamicContent>\n <slot name=\"dynamicContent\" v-bind=\"item\"></slot>\n </template>\n </bento-selection-card>\n </div>\n <template v-else>\n <div :key=\"`selection-card-group-layout-breakpoint-${currentBreakpoint}`\">\n <grid-layout\n v-for=\"(row, rowIndex) in computedRows\"\n :key=\"`selection-card-group-row-${rowIndex}-cols-${computedItemsPerRow}`\"\n class=\"b-selection-card-group__items--wrap\"\n :column-width=\"computedColumnWidth\"\n >\n <template v-for=\"(item, columnIndex) in row\" #[`col-${Number(columnIndex)+1}`]>\n <bento-selection-card\n :key=\"`selection-card-${item.value}`\"\n class=\"b-selection-card-group__item b-selection-card-group__item--full-height\"\n v-bind=\"item\"\n :model-value=\"inputValue\"\n :readonly=\"readonly || item.readonly\"\n :has-error=\"shouldShowGroupError\"\n :disabled=\"disabled || item.disabled\"\n @update:model-value=\"onInput\"\n >\n <template v-if=\"hasSlot('icon') && item.icon\" #icon>\n <slot name=\"icon\" v-bind=\"item\"></slot>\n </template>\n <template v-if=\"hasSlot('content') && item.content\" #content>\n <slot name=\"content\" v-bind=\"item\"></slot>\n </template>\n <template v-if=\"hasSlot('dynamicContent') && item.dynamicContent\" #dynamicContent>\n <slot name=\"dynamicContent\" v-bind=\"item\"></slot>\n </template>\n </bento-selection-card>\n </template>\n </grid-layout>\n </div>\n </template>\n <error-message\n v-if=\"shouldShowGroupError\"\n :id=\"errorMessageId\"\n :error-message=\"errorMessage\"\n class=\"b-selection-card-group__error-message\"\n />\n </controls-group>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, onMounted, provide, ref, useSlots, watch } from 'vue';\n import { useElementSize } from '@vueuse/core';\n import { BMediaQueryMMax, BMediaQuerySMax } from '@adyen/bento-design-tokens/dist/js/bento/es6';\n import { type BentoSelectionCardGroupEmits, type BentoSelectionCardGroupProps } from './selection-card-group.types';\n import BentoSelectionCard from '../../selection-card.vue';\n import { ControlsGroup, ErrorMessage, GridLayout } from '../../../internal';\n import { SELECTION_CARD_RADIO_INPUT_INJECTION_KEY } from '../../selection-card.keys';\n import { generateUid } from '@/utils/ts/generate-uid';\n import { useFormFieldEmits } from '@/utils/ts/form-field/form-field';\n\n const props = withDefaults(defineProps<BentoSelectionCardGroupProps>(), {\n description: null,\n disabled: false,\n errorMessage: null,\n formId: null,\n hideLabel: null,\n label: null,\n layout: 'vertical',\n itemsPerRow: undefined,\n modelValue: null,\n optional: false,\n required: false,\n tooltipText: null,\n readonly: false,\n variant: 'checkbox',\n });\n\n const emit = defineEmits<BentoSelectionCardGroupEmits>();\n\n const { emitValue } = useFormFieldEmits(emit);\n\n const slots = useSlots();\n // Slots logic\n // Temporary, use-has-slots composable doesn't currently work for vue3 named scoped slots\n // We do the same in bento-checkbox-group\n const hasSlot = name => !!slots[name];\n\n const conditionalItemsClasses = computed(() => ({\n 'b-selection-card-group__items--horizontal': props.layout === 'horizontal',\n }));\n\n const inputValue = ref(props.modelValue);\n watch(\n () => props.modelValue,\n () => {\n inputValue.value = props.modelValue;\n }\n );\n\n // Error message logic\n const errorMessageId = generateUid('error');\n const shouldShowGroupError = computed(() => !props.disabled && !props.readonly && !!props.errorMessage);\n\n // itemsPerRow logic\n const containerRef = ref<HTMLElement | null>(null);\n const { width } = useElementSize(containerRef);\n\n const smallBreakpoint = computed(() => BMediaQuerySMax.split('px')[0]);\n const mediumBreakpoint = computed(() => BMediaQueryMMax.split('px')[0]);\n\n const currentBreakpoint = computed(() => {\n if (width.value < smallBreakpoint.value) {\n return 'small';\n }\n if (width.value >= smallBreakpoint.value && width.value < mediumBreakpoint.value) {\n return 'medium';\n }\n return 'large';\n });\n\n const computedItemsPerRow = computed(() => {\n return (props.itemsPerRow?.[currentBreakpoint?.value] as number) || props.items.length;\n });\n\n const computedRows = computed(() => {\n if (!props.itemsPerRow) {\n return [];\n }\n const rows = [];\n for (let i = 0; i < props.items.length; i += computedItemsPerRow?.value) {\n rows.push(props.items.slice(i, i + computedItemsPerRow?.value));\n }\n return rows;\n });\n\n // We need to compute the column width on 12 because we're using a 12-column system for out grid-layout logic\n const itemColumnWidth = computed(() => 12 / computedItemsPerRow?.value);\n\n /**\n * Filling the columnWidth array with the same parameters per item to pass\n * to the `grid-layout` layout so the each card can have\n * the same width according to the screen size.\n */\n const computedColumnWidth = computed(() => {\n return computedItemsPerRow?.value\n ? new Array(computedItemsPerRow?.value).fill({\n // Instead of passing the actual screen sizes values, passing the same values per each screen size and recomputing it makes sure visually the change is smoother and not laggy\n small: itemColumnWidth.value,\n medium: itemColumnWidth.value,\n large: itemColumnWidth.value,\n })\n : [];\n });\n\n const onInput = value => {\n inputValue.value = value;\n emitValue(value);\n };\n\n const isRadioVariant = computed(() => props.variant === 'radio');\n\n provide(SELECTION_CARD_RADIO_INPUT_INJECTION_KEY, isRadioVariant);\n\n onMounted(() => {\n if (props.itemsPerRow) {\n Object.values(props.itemsPerRow).forEach(el => {\n if (el && (el < 2 || el > 6)) {\n throw new Error(\n 'itemsPerRow values must have a value between 2 and 6 items per row. Read the documentation for more information.'\n );\n }\n });\n }\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * Group of bento-selection-cards.\n *\n * @example\n * import { BentoSelectionCardGroup } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSelectionCardGroup },\n * template: `\n * <bento-selection-card-group\n * :items=\"[\n * {\n * title: 'Card 1',\n * value: 'card-1',\n * content: 'Slot content 1',\n * icon: RetailIcon,\n * },\n * {\n * title: 'Card 2',\n * value: 'card-2',\n * content: 'Slot content 2',\n * icon: LeafIcon,\n * },\n * ]\"\n * >\n * <template #icon=\"{ icon }\">\n * <component :is=\"icon\"/>\n * </template>\n * <template #content=\"{ content }\">\n * <div>{{ content }}</div>\n * </template>\n * </bento-selection-card-group>\n * `,\n * }\n */\n export default {\n model: { prop: 'modelValue', event: 'update:model-value' },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./selection-card-group.scss\" />\n"],"names":["BentoSelectionCardState","BentoSelectionCardState2","SELECTION_CARD_RADIO_INPUT_INJECTION_KEY","__default__$1","props","__props","emit","__emit","slots","useSlots","hasSlot","useHasSlot","inputId","generateUid","descriptionId","computedRadioInputModelValue","computed","computedCheckboxInputModelValue","conditionalClasses","isChecked","containerConditionalClasses","isTitleOnly","checkboxContainerConditionalClasses","checkboxContainerTextConditionalClasses","slotConditionalClasses","ariaLabel","useAriaLabel","isCheckboxGroup","isRadioInput","item","inject","ref","inputRef","slotRef","dynamicSlotRef","handleCardClick","event","newValue2","toggleInput","onChange","newValue","currentValue","newCheckedList","index","__default__","emitValue","useFormFieldEmits","name","conditionalItemsClasses","inputValue","watch","errorMessageId","shouldShowGroupError","containerRef","width","useElementSize","smallBreakpoint","BMediaQuerySMax","mediumBreakpoint","BMediaQueryMMax","currentBreakpoint","computedItemsPerRow","computedRows","rows","i","itemColumnWidth","computedColumnWidth","onInput","value","isRadioVariant","provide","onMounted","el"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selection-card-group.CQsS8-H9.js","sources":["../../../vue2/src/components/selection-card/selection-card.types.ts","../../../vue2/src/components/selection-card/selection-card.keys.ts","../../../vue2/src/components/selection-card/selection-card.vue","../../../vue2/src/components/selection-card/components/selection-card-group/selection-card-group.vue"],"sourcesContent":["import { type RadioInputValue } from '@/components/internal/radio-input';\nimport { type BentoCheckboxType } from '@/types/checkbox';\nimport { type VueNodeElement } from '@/types/elements';\n\nexport enum BentoSelectionCardState {\n DISABLED = 'disabled',\n READONLY = 'readonly',\n ERROR = 'error',\n}\n\nexport type BentoSelectionCardValue = string | number;\n\nexport type BentoSelectionCardModelValue = BentoCheckboxType | RadioInputValue;\n\nexport interface BentoSelectionCardItem {\n content?: string | object;\n description?: string;\n disabled?: boolean;\n dynamicContent?: string | object;\n fullyClickable?: boolean;\n hasError?: boolean;\n icon?: VueNodeElement;\n readonly?: boolean;\n subtitle?: string;\n title: string;\n value: BentoSelectionCardValue;\n}\n","export const SELECTION_CARD_RADIO_INPUT_INJECTION_KEY = Symbol('selection card radio input injection key');\n","<template>\n <div class=\"b-selection-card\" :class=\"conditionalClasses\" @click=\"handleCardClick\">\n <div class=\"b-selection-card__container\" :class=\"containerConditionalClasses\">\n <div class=\"b-selection-card__checkbox-container\" :class=\"checkboxContainerConditionalClasses\">\n <div class=\"b-selection-card__checkbox-container-text\" :class=\"checkboxContainerTextConditionalClasses\">\n <div v-if=\"hasSlot('icon')\" class=\"b-selection-card__icon\" role=\"presentation\" aria-hidden=\"true\">\n <slot name=\"icon\" />\n </div>\n <label :for=\"inputId\" class=\"b-selection-card__text\" @click.stop.prevent=\"handleCardClick\">\n <bento-typography\n v-if=\"subtitle\"\n class=\"b-selection-card__description\"\n el=\"span\"\n variant=\"caption\"\n >\n {{ subtitle }}\n </bento-typography>\n <bento-typography el=\"span\" variant=\"title\">{{ title }}</bento-typography>\n <bento-typography\n v-if=\"description\"\n id=\"descriptionId\"\n class=\"b-selection-card__description\"\n el=\"span\"\n variant=\"body\"\n >\n {{ description }}\n </bento-typography>\n </label>\n </div>\n <radio-input\n v-if=\"isRadioInput\"\n :id=\"inputId\"\n ref=\"inputRef\"\n :aria-label=\"ariaLabel\"\n :aria-describedby=\"description ? descriptionId : undefined\"\n :disabled=\"disabled\"\n :has-error=\"hasError\"\n :aria-readonly=\"readonly ?? undefined\"\n :value=\"value\"\n :readonly=\"readonly\"\n :model-value=\"computedRadioInputModelValue\"\n />\n <checkbox-input\n v-else\n :id=\"inputId\"\n ref=\"inputRef\"\n :aria-label=\"ariaLabel\"\n :aria-describedby=\"description ? descriptionId : undefined\"\n :disabled=\"disabled\"\n :has-error=\"hasError\"\n :aria-readonly=\"readonly ?? undefined\"\n :value=\"value\"\n :readonly=\"readonly\"\n :model-value=\"computedCheckboxInputModelValue\"\n />\n </div>\n <bento-typography\n v-if=\"hasSlot('content')\"\n ref=\"slotRef\"\n el=\"div\"\n class=\"b-selection-card__slot\"\n :class=\"slotConditionalClasses\"\n >\n <slot name=\"content\" />\n </bento-typography>\n <bento-typography\n v-if=\"hasSlot('dynamicContent') && isChecked\"\n ref=\"dynamicSlotRef\"\n el=\"div\"\n class=\"b-selection-card__slot\"\n :class=\"slotConditionalClasses\"\n >\n <slot name=\"dynamicContent\" />\n </bento-typography>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { BentoTypography } from '@/components/typography';\n import { CheckboxInput } from '../internal/checkbox-input';\n import { RadioInput, type RadioInputValue } from '../internal/radio-input';\n import { type BentoCheckboxType, type BentoMultiCheckboxType } from '@/types/checkbox';\n import { useAriaLabel } from '@/utils/ts/aria-label';\n import { generateUid } from '@/utils/ts/generate-uid';\n import { computed, type ComputedRef, inject, type PropType, type Ref, ref, useSlots } from 'vue';\n import { useHasSlot } from '@/composables';\n import type { BentoSelectionCardModelValue, BentoSelectionCardValue } from './selection-card.types';\n import { BentoSelectionCardState } from './selection-card.types';\n import { SELECTION_CARD_RADIO_INPUT_INJECTION_KEY } from './selection-card.keys';\n\n const props = defineProps({\n /**\n * The description of the selection card\n */\n description: {\n type: String,\n default: undefined,\n },\n\n /**\n * Disables the selection card\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Makes the entire selection card clickable. Clicking over interactive elements inside the card with this prop enabled will not be possible.\n */\n fullyClickable: { type: Boolean, default: false },\n\n /**\n * Shows the selection card in error state\n */\n hasError: { type: Boolean, default: false },\n\n /**\n * This property should not be used directly.\n * It will be used by v-model directive on selection card component.\n *\n * When handling a single input, use a string or a number.\n *\n * When handling multiple inputs, use an array of keys.\n * These keys exist as a set \"value\" prop for each input.\n */\n modelValue: {\n type: [Boolean, String, Array] as PropType<BentoSelectionCardModelValue>,\n default: null,\n },\n\n /**\n * Sets the selection card to readonly\n */\n readonly: { type: Boolean, default: false },\n\n /**\n * The subtitle of the selection card\n */\n subtitle: {\n type: String,\n default: undefined,\n },\n\n /**\n * The title of the selection card\n */\n title: {\n type: String,\n required: true,\n },\n\n /**\n * Indicates the value of the input that will be returned when it's checked.\n */\n value: {\n type: [String, Number] as PropType<BentoSelectionCardValue>,\n required: true,\n },\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the selection card is clicked. Enables Vue2 \"v-model\"\n */\n (e: 'input', value: BentoSelectionCardValue);\n /**\n * Emitted when the selection card is clicked. Enables Vue3 \"v-model\"\n */\n (e: 'update:model-value', value: BentoSelectionCardValue);\n }>();\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n\n const inputId = generateUid('selection-card-input-id');\n const descriptionId = generateUid('selection-card-description');\n\n const computedRadioInputModelValue: ComputedRef<RadioInputValue> = computed(\n () => props.modelValue as RadioInputValue\n );\n const computedCheckboxInputModelValue: ComputedRef<BentoCheckboxType> = computed(\n () => props.modelValue as BentoCheckboxType\n );\n\n const conditionalClasses = computed(() => ({\n 'b-selection-card--checked': isChecked.value,\n 'b-selection-card--fully-clickable': props.fullyClickable,\n }));\n\n const containerConditionalClasses = computed(() => ({\n [`b-selection-card--${BentoSelectionCardState.DISABLED}`]: props.disabled,\n [`b-selection-card--${BentoSelectionCardState.ERROR}`]: props.hasError,\n [`b-selection-card--${BentoSelectionCardState.READONLY}`]: props.readonly,\n 'b-selection-card--center-aligned': isTitleOnly.value,\n }));\n\n const checkboxContainerConditionalClasses = computed(() => ({\n 'b-selection-card__checkbox-container--center-aligned': isTitleOnly.value,\n }));\n\n const checkboxContainerTextConditionalClasses = computed(() => ({\n 'b-selection-card__checkbox-container-text--center-aligned': isTitleOnly.value,\n }));\n\n const slotConditionalClasses = computed(() => ({\n 'b-selection-card__slot--with-icon': hasSlot('icon'),\n }));\n\n const ariaLabel = useAriaLabel({\n ariaLabel: props.title,\n label: props.value as string,\n });\n\n const isCheckboxGroup = computed(() => Array.isArray(props.modelValue));\n\n const isChecked: ComputedRef<boolean> = computed(() => {\n if (isRadioInput.value) {\n return props.value === props.modelValue;\n }\n if (!isCheckboxGroup.value) {\n return props.modelValue as boolean;\n }\n\n return (props.modelValue as BentoMultiCheckboxType).some(item => item === props.value);\n });\n\n const isRadioInput: Ref<boolean> = inject(SELECTION_CARD_RADIO_INPUT_INJECTION_KEY, ref(false));\n\n const isTitleOnly = computed(() => !props.subtitle && !props.description);\n\n const inputRef = ref<InstanceType<typeof RadioInput> | InstanceType<typeof CheckboxInput>>(null);\n const slotRef = ref(null);\n const dynamicSlotRef = ref(null);\n\n // Handle click on the whole card area\n const handleCardClick = (event: Event) => {\n if (inputRef.value.$refs.inputRef === event.target) {\n const newValue = toggleInput();\n onChange(newValue);\n return;\n }\n\n // Do nothing if disabled or readonly\n if (props.disabled && props.readonly) {\n return;\n }\n\n // If it's not fully clickable prevent selecting the card if the click\n // originated in a slot\n if (!props.fullyClickable) {\n // Check if the click originated from the slot - in that case, do nothng\n if (slotRef.value && slotRef.value?.$el?.contains(event.target)) {\n return;\n }\n // Check if the click originated from the dynamic slot - in that case, do nothng\n if (dynamicSlotRef.value && dynamicSlotRef.value?.$el?.contains(event.target)) {\n return;\n }\n // Check if the click originated from the input - in that case do nothing, as the input will emit the event already\n if (inputRef.value && inputRef.value?.$el?.contains(event.target as Node)) {\n return;\n }\n }\n\n // If the click originated outside of these two areas, emit the change event\n const newValue = toggleInput();\n\n onChange(newValue);\n };\n\n const toggleInput = (): BentoSelectionCardModelValue => {\n const currentValue: boolean = (inputRef.value?.$refs.inputRef as HTMLInputElement).checked;\n\n if (isCheckboxGroup.value) {\n const newCheckedList = [...(props.modelValue as BentoMultiCheckboxType)];\n const index = newCheckedList.indexOf(props.value);\n\n if (index === -1) {\n newCheckedList.push(props.value);\n } else {\n newCheckedList.splice(index, 1);\n }\n return newCheckedList;\n }\n\n if (isRadioInput.value) {\n return props.value;\n }\n return currentValue;\n };\n\n const onChange = newValue => {\n if (!props.disabled && !props.readonly) {\n emit('update:model-value', newValue);\n emit('input', newValue);\n }\n };\n</script>\n\n<script lang=\"ts\">\n /**\n * Selection card component. If used standalone, only the checkbox variant can be used. If the checkbox variant is needed, please use the bento-selection-card-group component.\n *\n * @example\n * import { BentoSelectionCard } from '@adyen/bento-vue2';\n * import EmoticonHappyIcon from '@adyen/ui-assets-icons-16/vue/emoticon-happy';\n *\n * export default {\n * components: { BentoSelectionCard, EmoticonHappyIcon },\n * template: `\n * <bento-selection-card title=\"Card title\" :model-value.sync=\"yourModelValue\">\n * <template #icon>\n * <emoticon-happy-icon />\n * </template>\n * </bento-selection-card>\n * `\n * }\n */\n export default {\n name: 'bento-selection-card',\n };\n</script>\n<style lang=\"scss\" scoped src=\"./selection-card.scss\" />\n","<template>\n <controls-group\n ref=\"containerRef\"\n :aria-describedby=\"shouldShowGroupError ? errorMessageId : null\"\n :aria-required=\"required\"\n :label=\"label\"\n :hide-label=\"hideLabel\"\n :description=\"description\"\n :disabled=\"disabled\"\n :tooltip-text=\"tooltipText\"\n :readonly=\"readonly\"\n :required=\"required\"\n :optional=\"optional\"\n class=\"b-selection-card-group\"\n component-name=\"selection-card-group\"\n >\n <div\n v-if=\"!itemsPerRow || layout === 'vertical'\"\n class=\"b-selection-card-group__items\"\n :class=\"conditionalItemsClasses\"\n >\n <bento-selection-card\n v-for=\"item in items\"\n :key=\"`selection-card-${item.value}`\"\n class=\"b-selection-card-group__item\"\n v-bind=\"item\"\n :model-value=\"inputValue\"\n :readonly=\"readonly || item.readonly\"\n :has-error=\"shouldShowGroupError\"\n :disabled=\"disabled || item.disabled\"\n @update:model-value=\"onInput\"\n >\n <template v-if=\"hasSlot('icon') && item.icon\" #icon>\n <slot name=\"icon\" v-bind=\"item\"></slot>\n </template>\n <template v-if=\"hasSlot('content') && item.content\" #content>\n <slot name=\"content\" v-bind=\"item\"></slot>\n </template>\n <template v-if=\"hasSlot('dynamicContent') && item.dynamicContent\" #dynamicContent>\n <slot name=\"dynamicContent\" v-bind=\"item\"></slot>\n </template>\n </bento-selection-card>\n </div>\n <template v-else>\n <div :key=\"`selection-card-group-layout-breakpoint-${currentBreakpoint}`\">\n <grid-layout\n v-for=\"(row, rowIndex) in computedRows\"\n :key=\"`selection-card-group-row-${rowIndex}-cols-${computedItemsPerRow}`\"\n class=\"b-selection-card-group__items--wrap\"\n :column-width=\"computedColumnWidth\"\n >\n <template v-for=\"(item, columnIndex) in row\" #[`col-${Number(columnIndex)+1}`]>\n <bento-selection-card\n :key=\"`selection-card-${item.value}`\"\n class=\"b-selection-card-group__item b-selection-card-group__item--full-height\"\n v-bind=\"item\"\n :model-value=\"inputValue\"\n :readonly=\"readonly || item.readonly\"\n :has-error=\"shouldShowGroupError\"\n :disabled=\"disabled || item.disabled\"\n @update:model-value=\"onInput\"\n >\n <template v-if=\"hasSlot('icon') && item.icon\" #icon>\n <slot name=\"icon\" v-bind=\"item\"></slot>\n </template>\n <template v-if=\"hasSlot('content') && item.content\" #content>\n <slot name=\"content\" v-bind=\"item\"></slot>\n </template>\n <template v-if=\"hasSlot('dynamicContent') && item.dynamicContent\" #dynamicContent>\n <slot name=\"dynamicContent\" v-bind=\"item\"></slot>\n </template>\n </bento-selection-card>\n </template>\n </grid-layout>\n </div>\n </template>\n <error-message\n v-if=\"shouldShowGroupError\"\n :id=\"errorMessageId\"\n :error-message=\"errorMessage\"\n class=\"b-selection-card-group__error-message\"\n />\n </controls-group>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, onMounted, provide, ref, useSlots, watch } from 'vue';\n import { useElementSize } from '@vueuse/core';\n import { BMediaQueryMMax, BMediaQuerySMax } from '@adyen/bento-design-tokens/dist/js/bento/es6';\n import { type BentoSelectionCardGroupEmits, type BentoSelectionCardGroupProps } from './selection-card-group.types';\n import BentoSelectionCard from '../../selection-card.vue';\n import { ControlsGroup, ErrorMessage, GridLayout } from '../../../internal';\n import { SELECTION_CARD_RADIO_INPUT_INJECTION_KEY } from '../../selection-card.keys';\n import { generateUid } from '@/utils/ts/generate-uid';\n import { useFormFieldEmits } from '@/utils/ts/form-field/form-field';\n\n const props = withDefaults(defineProps<BentoSelectionCardGroupProps>(), {\n description: null,\n disabled: false,\n errorMessage: null,\n formId: null,\n hideLabel: null,\n label: null,\n layout: 'vertical',\n itemsPerRow: undefined,\n modelValue: null,\n optional: false,\n required: false,\n tooltipText: null,\n readonly: false,\n variant: 'checkbox',\n });\n\n const emit = defineEmits<BentoSelectionCardGroupEmits>();\n\n const { emitValue } = useFormFieldEmits(emit);\n\n const slots = useSlots();\n // Slots logic\n // Temporary, use-has-slots composable doesn't currently work for vue3 named scoped slots\n // We do the same in bento-checkbox-group\n const hasSlot = name => !!slots[name];\n\n const conditionalItemsClasses = computed(() => ({\n 'b-selection-card-group__items--horizontal': props.layout === 'horizontal',\n }));\n\n const inputValue = ref(props.modelValue);\n watch(\n () => props.modelValue,\n () => {\n inputValue.value = props.modelValue;\n }\n );\n\n // Error message logic\n const errorMessageId = generateUid('error');\n const shouldShowGroupError = computed(() => !props.disabled && !props.readonly && !!props.errorMessage);\n\n // itemsPerRow logic\n const containerRef = ref<HTMLElement | null>(null);\n const { width } = useElementSize(containerRef);\n\n const smallBreakpoint = computed(() => BMediaQuerySMax.split('px')[0]);\n const mediumBreakpoint = computed(() => BMediaQueryMMax.split('px')[0]);\n\n const currentBreakpoint = computed(() => {\n if (width.value < smallBreakpoint.value) {\n return 'small';\n }\n if (width.value >= smallBreakpoint.value && width.value < mediumBreakpoint.value) {\n return 'medium';\n }\n return 'large';\n });\n\n const computedItemsPerRow = computed(() => {\n return (props.itemsPerRow?.[currentBreakpoint?.value] as number) || props.items.length;\n });\n\n const computedRows = computed(() => {\n if (!props.itemsPerRow) {\n return [];\n }\n const rows = [];\n for (let i = 0; i < props.items.length; i += computedItemsPerRow?.value) {\n rows.push(props.items.slice(i, i + computedItemsPerRow?.value));\n }\n return rows;\n });\n\n // We need to compute the column width on 12 because we're using a 12-column system for out grid-layout logic\n const itemColumnWidth = computed(() => 12 / computedItemsPerRow?.value);\n\n /**\n * Filling the columnWidth array with the same parameters per item to pass\n * to the `grid-layout` layout so the each card can have\n * the same width according to the screen size.\n */\n const computedColumnWidth = computed(() => {\n return computedItemsPerRow?.value\n ? new Array(computedItemsPerRow?.value).fill({\n // Instead of passing the actual screen sizes values, passing the same values per each screen size and recomputing it makes sure visually the change is smoother and not laggy\n small: itemColumnWidth.value,\n medium: itemColumnWidth.value,\n large: itemColumnWidth.value,\n })\n : [];\n });\n\n const onInput = value => {\n inputValue.value = value;\n emitValue(value);\n };\n\n const isRadioVariant = computed(() => props.variant === 'radio');\n\n provide(SELECTION_CARD_RADIO_INPUT_INJECTION_KEY, isRadioVariant);\n\n onMounted(() => {\n if (props.itemsPerRow) {\n Object.values(props.itemsPerRow).forEach(value => {\n const numericValue = Number(value);\n if (!Number.isInteger(numericValue) || numericValue < 1 || numericValue > 6) {\n throw new Error(\n 'itemsPerRow values must have a value between 1 and 6 items per row. Read the documentation for more information.'\n );\n }\n });\n }\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * Group of bento-selection-cards.\n *\n * @example\n * import { BentoSelectionCardGroup } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoSelectionCardGroup },\n * template: `\n * <bento-selection-card-group\n * :items=\"[\n * {\n * title: 'Card 1',\n * value: 'card-1',\n * content: 'Slot content 1',\n * icon: RetailIcon,\n * },\n * {\n * title: 'Card 2',\n * value: 'card-2',\n * content: 'Slot content 2',\n * icon: LeafIcon,\n * },\n * ]\"\n * >\n * <template #icon=\"{ icon }\">\n * <component :is=\"icon\"/>\n * </template>\n * <template #content=\"{ content }\">\n * <div>{{ content }}</div>\n * </template>\n * </bento-selection-card-group>\n * `,\n * }\n */\n export default {\n model: { prop: 'modelValue', event: 'update:model-value' },\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./selection-card-group.scss\" />\n"],"names":["BentoSelectionCardState","BentoSelectionCardState2","SELECTION_CARD_RADIO_INPUT_INJECTION_KEY","__default__$1","props","__props","emit","__emit","slots","useSlots","hasSlot","useHasSlot","inputId","generateUid","descriptionId","computedRadioInputModelValue","computed","computedCheckboxInputModelValue","conditionalClasses","isChecked","containerConditionalClasses","isTitleOnly","checkboxContainerConditionalClasses","checkboxContainerTextConditionalClasses","slotConditionalClasses","ariaLabel","useAriaLabel","isCheckboxGroup","isRadioInput","item","inject","ref","inputRef","slotRef","dynamicSlotRef","handleCardClick","event","newValue2","toggleInput","onChange","newValue","currentValue","newCheckedList","index","__default__","emitValue","useFormFieldEmits","name","conditionalItemsClasses","inputValue","watch","errorMessageId","shouldShowGroupError","containerRef","width","useElementSize","smallBreakpoint","BMediaQuerySMax","mediumBreakpoint","BMediaQueryMMax","currentBreakpoint","computedItemsPerRow","computedRows","rows","i","itemColumnWidth","computedColumnWidth","onInput","value","isRadioVariant","provide","onMounted","numericValue"],"mappings":"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"}
|