@adyen/bento-vue2 1.84.2 → 1.86.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/components.d.ts +6 -0
- package/dist/@types/index.d.ts +480 -268
- package/dist/accordion.js +1 -1
- package/dist/action-bar.js +1 -1
- package/dist/ai-tag.js +5 -0
- package/dist/ai-tag.js.map +1 -0
- package/dist/alert.js +1 -1
- package/dist/anchor-scroller.js +5 -0
- package/dist/anchor-scroller.js.map +1 -0
- package/dist/assets/accordion-item.css +1 -1
- package/dist/assets/action-bar.css +1 -1
- package/dist/assets/ai-tag.css +1 -0
- package/dist/assets/anchor-scroller.css +1 -0
- package/dist/assets/base-modal.css +1 -1
- package/dist/assets/button-actions.css +1 -1
- package/dist/assets/card.css +1 -1
- package/dist/assets/checkbox.css +1 -1
- package/dist/assets/data-grid.css +1 -1
- package/dist/assets/date-picker.css +1 -1
- package/dist/assets/date-range-picker.css +1 -1
- package/dist/assets/dialog-page.css +1 -1
- package/dist/assets/draggable-handle.css +1 -0
- package/dist/assets/dropdown-default-textbox.css +1 -1
- package/dist/assets/dropdown.css +1 -1
- package/dist/assets/error-message.css +1 -0
- package/dist/assets/file-uploader.css +1 -1
- package/dist/assets/filter-bar.css +1 -1
- package/dist/assets/fixed-scroller.css +1 -1
- package/dist/assets/form-layout-title.css +1 -1
- package/dist/assets/inspector.css +1 -1
- package/dist/assets/layout-row.css +1 -1
- package/dist/assets/modal-fullscreen.css +1 -1
- package/dist/assets/radio-group.css +1 -1
- package/dist/assets/secondary-nav.css +1 -1
- package/dist/assets/sidepanel.css +1 -1
- package/dist/assets/use-cached-selected-values.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 +6 -6
- package/dist/chip.js +1 -1
- package/dist/chunks/1-generic-use.CZhwP2Yc.js.map +1 -1
- package/dist/chunks/1-generic-use.R6x8PEGA.js.map +1 -1
- package/dist/chunks/2-generic-use.CNKjB4B7.js.map +1 -1
- package/dist/chunks/2-generic-use.w0fUhovx.js.map +1 -1
- package/dist/chunks/3-generic-use.BLEzR04g.js.map +1 -1
- package/dist/chunks/3-generic-use.D3NFHgI4.js.map +1 -1
- package/dist/chunks/4-generic-use.CULEpvgj.js.map +1 -1
- package/dist/chunks/4-generic-use.D82y3n39.js.map +1 -1
- package/dist/chunks/{accordion-item.DeV8s0oW.js → accordion-item.Cv6kG2N3.js} +2 -2
- package/dist/chunks/{accordion-item.DeV8s0oW.js.map → accordion-item.Cv6kG2N3.js.map} +1 -1
- package/dist/chunks/action-bar.Dnkt4yn7.js +163 -0
- package/dist/chunks/action-bar.Dnkt4yn7.js.map +1 -0
- package/dist/chunks/adding-payment-methods.BJZLPxtM.js.map +1 -1
- package/dist/chunks/adding-payment-methods.Dle8zt43.js.map +1 -1
- package/dist/chunks/adyen-giving.Ffw_DlJK.js.map +1 -1
- package/dist/chunks/adyen-giving.LiKHj_jY.js.map +1 -1
- package/dist/chunks/ai-button.BTi18ipD.js +50 -0
- package/dist/chunks/ai-button.BTi18ipD.js.map +1 -0
- package/dist/chunks/ai-tag.s8TECgn_.js +82 -0
- package/dist/chunks/ai-tag.s8TECgn_.js.map +1 -0
- package/dist/chunks/{alert.B3Pdp02a.js → alert.BESCd8iS.js} +5 -5
- package/dist/chunks/{alert.B3Pdp02a.js.map → alert.BESCd8iS.js.map} +1 -1
- package/dist/chunks/anchor-scroller.3_idPubO.js +178 -0
- package/dist/chunks/anchor-scroller.3_idPubO.js.map +1 -0
- package/dist/chunks/aria-label.CaUURpnB.js.map +1 -1
- package/dist/chunks/arrow-left.CRREfabP.js +24 -0
- package/dist/chunks/arrow-left.CRREfabP.js.map +1 -0
- package/dist/chunks/arrow-right.Dn3AYpUP.js +24 -0
- package/dist/chunks/arrow-right.Dn3AYpUP.js.map +1 -0
- package/dist/chunks/artificial-intelligence-ai-filled.C6TMsiHK.js +24 -0
- package/dist/chunks/artificial-intelligence-ai-filled.C6TMsiHK.js.map +1 -0
- package/dist/chunks/{avatar.CUCH3CTc.js → avatar.rwWPYJnt.js} +2 -2
- package/dist/chunks/{avatar.CUCH3CTc.js.map → avatar.rwWPYJnt.js.map} +1 -1
- package/dist/chunks/{base-button.IN4bpcds.js → base-button.BPRPrO0p.js} +2 -2
- package/dist/chunks/{base-button.IN4bpcds.js.map → base-button.BPRPrO0p.js.map} +1 -1
- package/dist/chunks/{base-modal.KYkLKswF.js → base-modal.09nAcnF_.js} +41 -41
- package/dist/chunks/{base-modal.KYkLKswF.js.map → base-modal.09nAcnF_.js.map} +1 -1
- package/dist/chunks/{button-actions-with-menu.B5mKwc-F.js → button-actions-with-menu.C8tSTxrm.js} +3 -3
- package/dist/chunks/{button-actions-with-menu.B5mKwc-F.js.map → button-actions-with-menu.C8tSTxrm.js.map} +1 -1
- package/dist/chunks/{button-actions.D9n7MxWe.js → button-actions.VSc47LLH.js} +8 -8
- package/dist/chunks/{button-actions.D9n7MxWe.js.map → button-actions.VSc47LLH.js.map} +1 -1
- package/dist/chunks/button-actions.types.BptAXjD8.js.map +1 -1
- package/dist/chunks/{button.DIU6m9wD.js → button.Ctj3rkxw.js} +5 -5
- package/dist/chunks/{button.DIU6m9wD.js.map → button.Ctj3rkxw.js.map} +1 -1
- package/dist/chunks/{calendar.C8DpZ4Sr.js → calendar.DiXkjQDP.js} +100 -94
- package/dist/chunks/{calendar.C8DpZ4Sr.js.map → calendar.DiXkjQDP.js.map} +1 -1
- package/dist/chunks/{card.CLX0RGG6.js → card.BdjdBN36.js} +3 -3
- package/dist/chunks/{card.CLX0RGG6.js.map → card.BdjdBN36.js.map} +1 -1
- package/dist/chunks/{checkbox-group.BCnhjQie.js → checkbox-group.d6VQvZL7.js} +5 -5
- package/dist/chunks/{checkbox-group.BCnhjQie.js.map → checkbox-group.d6VQvZL7.js.map} +1 -1
- package/dist/chunks/{checkbox.CU5ierOq.js → checkbox.ClFNfhNh.js} +4 -4
- package/dist/chunks/{checkbox.CU5ierOq.js.map → checkbox.ClFNfhNh.js.map} +1 -1
- package/dist/chunks/{chip.C6DRfdJ8.js → chip.D_XQ8ReC.js} +3 -3
- package/dist/chunks/{chip.C6DRfdJ8.js.map → chip.D_XQ8ReC.js.map} +1 -1
- package/dist/chunks/{click-outside.C1Ud8AA2.js → click-outside.CDz_x8mN.js} +2 -2
- package/dist/chunks/{click-outside.C1Ud8AA2.js.map → click-outside.CDz_x8mN.js.map} +1 -1
- package/dist/chunks/{code-snippet.9MwDHp50.js → code-snippet.DBNJgt1j.js} +11 -11
- package/dist/chunks/{code-snippet.9MwDHp50.js.map → code-snippet.DBNJgt1j.js.map} +1 -1
- package/dist/chunks/{codemirror.Cy7iSLbd.js → codemirror.D2BAltnu.js} +3688 -3673
- package/dist/chunks/codemirror.D2BAltnu.js.map +1 -0
- package/dist/chunks/constructNow.B8T1ljs6.js +8 -0
- package/dist/chunks/{constructNow.DuaJst0D.js.map → constructNow.B8T1ljs6.js.map} +1 -1
- package/dist/chunks/{controls-group.D4eW9DtP.js → controls-group.HUWlAOhG.js} +3 -3
- package/dist/chunks/{controls-group.D4eW9DtP.js.map → controls-group.HUWlAOhG.js.map} +1 -1
- package/dist/chunks/{copy.C0q7xgXs.js → copy.BXykYfg0.js} +7 -7
- package/dist/chunks/{copy.C0q7xgXs.js.map → copy.BXykYfg0.js.map} +1 -1
- package/dist/chunks/{country.DyrDj95W.js → country.BywHth0L.js} +3 -3
- package/dist/chunks/{country.DyrDj95W.js.map → country.BywHth0L.js.map} +1 -1
- package/dist/chunks/{country.types.DaVCMxk-.js → country.types.BBQbWkTY.js} +3 -3
- package/dist/chunks/{country.types.DaVCMxk-.js.map → country.types.BBQbWkTY.js.map} +1 -1
- package/dist/chunks/{currency.DYZr_RDk.js → currency.Ciyxfmg1.js} +2 -2
- package/dist/chunks/{currency.DYZr_RDk.js.map → currency.Ciyxfmg1.js.map} +1 -1
- package/dist/chunks/{dashboard-section.B83FdC0Z.js → dashboard-section.Cw2Ima3U.js} +6 -6
- package/dist/chunks/{dashboard-section.B83FdC0Z.js.map → dashboard-section.Cw2Ima3U.js.map} +1 -1
- package/dist/chunks/{dashed-underline.DQGVy5T2.js → dashed-underline.Dfw7cJ-9.js} +9 -9
- package/dist/chunks/{dashed-underline.DQGVy5T2.js.map → dashed-underline.Dfw7cJ-9.js.map} +1 -1
- package/dist/chunks/{data-grid-template.BTEFoEwf.js → data-grid-template.6LR2Jqka.js} +4 -4
- package/dist/chunks/{data-grid-template.BTEFoEwf.js.map → data-grid-template.6LR2Jqka.js.map} +1 -1
- package/dist/chunks/data-grid-template.keys.VezYtHtM.js.map +1 -1
- package/dist/chunks/{data-grid.Bk7_6Z0F.js → data-grid.B_uZEPDW.js} +449 -442
- package/dist/chunks/data-grid.B_uZEPDW.js.map +1 -0
- package/dist/chunks/date-input.etw_pFpA.js +20 -0
- package/dist/chunks/date-input.etw_pFpA.js.map +1 -0
- package/dist/chunks/{date-picker.CnsC_UMG.js → date-picker.CITeN8WH.js} +56 -56
- package/dist/chunks/date-picker.CITeN8WH.js.map +1 -0
- package/dist/chunks/date-picker.types.Ckt7zxGy.js.map +1 -1
- package/dist/chunks/date-range-picker.DxVjXxap.js +897 -0
- package/dist/chunks/date-range-picker.DxVjXxap.js.map +1 -0
- package/dist/chunks/date-range-picker.types.Ckt7zxGy.js.map +1 -1
- package/dist/chunks/{date.DBWzp0So.js → date.B0m0sFP6.js} +2 -2
- package/dist/chunks/{date.DBWzp0So.js.map → date.B0m0sFP6.js.map} +1 -1
- package/dist/chunks/de.DvtL0g75.js.map +1 -1
- package/dist/chunks/debounce.DUTu11PS.js.map +1 -1
- package/dist/chunks/delight.CDBAFnwC.js.map +1 -1
- package/dist/chunks/delight.xKDCvvaS.js.map +1 -1
- package/dist/chunks/dialog-page.DA6E6qma.js +122 -0
- package/dist/chunks/dialog-page.DA6E6qma.js.map +1 -0
- package/dist/chunks/{differenceInMonths.DcFDl4eH.js → differenceInMonths.BR4Z2HIa.js} +2 -2
- package/dist/chunks/{differenceInMonths.DcFDl4eH.js.map → differenceInMonths.BR4Z2HIa.js.map} +1 -1
- package/dist/chunks/{directive.Cbdox5VL.js → directive.rXUeDb8p.js} +2 -2
- package/dist/chunks/{directive.Cbdox5VL.js.map → directive.rXUeDb8p.js.map} +1 -1
- package/dist/chunks/divider.DX5gwN7p.js.map +1 -1
- package/dist/chunks/{dropdown-default-textbox.Cq68tN9F.js → dropdown-default-textbox.5WjhJWdh.js} +71 -80
- package/dist/chunks/dropdown-default-textbox.5WjhJWdh.js.map +1 -0
- package/dist/chunks/{dropdown-tag.HBM0wrEV.js → dropdown-tag.BnMuMIDk.js} +8 -8
- package/dist/chunks/{dropdown-tag.HBM0wrEV.js.map → dropdown-tag.BnMuMIDk.js.map} +1 -1
- package/dist/chunks/{dropdown.C2pXf8Li.js → dropdown.DDPfKc74.js} +227 -225
- package/dist/chunks/dropdown.DDPfKc74.js.map +1 -0
- package/dist/chunks/{empty-state.DpBnqAxu.js → empty-state.IiG1LXa2.js} +6 -6
- package/dist/chunks/{empty-state.DpBnqAxu.js.map → empty-state.IiG1LXa2.js.map} +1 -1
- package/dist/chunks/en-GB.DCGuCmAv.js.map +1 -1
- package/dist/chunks/en-US.BZii9jNW.js.map +1 -1
- package/dist/chunks/{field-label.CEkJnsiL.js → error-message.VenUl2OK.js} +54 -54
- package/dist/chunks/error-message.VenUl2OK.js.map +1 -0
- package/dist/chunks/es.bz0mzkMq.js.map +1 -1
- package/dist/chunks/es6.C1DXQV6f.js.map +1 -1
- package/dist/chunks/events.BQOQSSb7.js.map +1 -1
- package/dist/chunks/{file-uploader.CnOqfuI-.js → file-uploader.BU1V40qK.js} +10 -10
- package/dist/chunks/file-uploader.BU1V40qK.js.map +1 -0
- package/dist/chunks/filter-bar.UdXQf_RN.js +3321 -0
- package/dist/chunks/filter-bar.UdXQf_RN.js.map +1 -0
- package/dist/chunks/fixed-scroller.BueAsyGk.js +120 -0
- package/dist/chunks/{fixed-scroller.Bp4-iO80.js.map → fixed-scroller.BueAsyGk.js.map} +1 -1
- package/dist/chunks/{focus-trap.CNIU5jOz.js → focus-trap.DMc1wL3A.js} +312 -295
- package/dist/chunks/focus-trap.DMc1wL3A.js.map +1 -0
- package/dist/chunks/{footer-actions.BOiN47Xd.js → footer-actions.z-api8J_.js} +4 -4
- package/dist/chunks/{footer-actions.BOiN47Xd.js.map → footer-actions.z-api8J_.js.map} +1 -1
- package/dist/chunks/form-field.D_2g7vaP.js.map +1 -1
- package/dist/chunks/{form-layout-title.CdC1T4gs.js → form-layout-title.Bbq05nMT.js} +6 -6
- package/dist/chunks/{form-layout-title.CdC1T4gs.js.map → form-layout-title.Bbq05nMT.js.map} +1 -1
- package/dist/chunks/form-layout.types.bZW9iR6_.js.map +1 -1
- package/dist/chunks/fr-CA.B1aPU8fp.js.map +1 -1
- package/dist/chunks/fr.Dj7wEToe.js.map +1 -1
- package/dist/chunks/generate-uid.NJ8tVoha.js.map +1 -1
- package/dist/chunks/getRoundingMethod.C3eaeGLR.js.map +1 -1
- package/dist/chunks/{getTimezoneOffsetInMilliseconds.C-aIpRfB.js → getTimezoneOffsetInMilliseconds.Tu2wlbTR.js} +3 -3
- package/dist/chunks/{getTimezoneOffsetInMilliseconds.C-aIpRfB.js.map → getTimezoneOffsetInMilliseconds.Tu2wlbTR.js.map} +1 -1
- package/dist/chunks/grab.BxiVZ1RZ.js +24 -0
- package/dist/chunks/grab.BxiVZ1RZ.js.map +1 -0
- package/dist/chunks/grid-layout.1aIiz2N_.js.map +1 -1
- package/dist/chunks/{header-meta.D_oAu2S9.js → header-meta.CuMQSsOm.js} +11 -11
- package/dist/chunks/{header-meta.D_oAu2S9.js.map → header-meta.CuMQSsOm.js.map} +1 -1
- package/dist/chunks/{header-with-views.Dc9LUYNY.js → header-with-views.DX8EXLMJ.js} +383 -400
- package/dist/chunks/header-with-views.DX8EXLMJ.js.map +1 -0
- package/dist/chunks/{header.BmtlQmPs.js → header.YECm2GAh.js} +4 -4
- package/dist/chunks/{header.BmtlQmPs.js.map → header.YECm2GAh.js.map} +1 -1
- package/dist/chunks/image.C2D2hKat.js.map +1 -1
- package/dist/chunks/index.B6WW_F-J.js.map +1 -1
- package/dist/chunks/index.BkJqgYF1.js +692 -0
- package/dist/chunks/{index.BDK4hwK_.js.map → index.BkJqgYF1.js.map} +1 -1
- package/dist/chunks/{info-icon.BEyxQgD6.js → info-icon.DS9ax8ZD.js} +3 -3
- package/dist/chunks/{info-icon.BEyxQgD6.js.map → info-icon.DS9ax8ZD.js.map} +1 -1
- package/dist/chunks/{input-field-password.D23H_RvO.js → input-field-password.DrI6eF5u.js} +11 -11
- package/dist/chunks/{input-field-password.D23H_RvO.js.map → input-field-password.DrI6eF5u.js.map} +1 -1
- package/dist/chunks/{input-field-phone-number.Bvk2Pvec.js → input-field-phone-number.Buh4x3pJ.js} +4 -4
- package/dist/chunks/{input-field-phone-number.Bvk2Pvec.js.map → input-field-phone-number.Buh4x3pJ.js.map} +1 -1
- package/dist/chunks/{input-field.hf0_ALq0.js → input-field.NEKXqT4R.js} +7 -7
- package/dist/chunks/{input-field.hf0_ALq0.js.map → input-field.NEKXqT4R.js.map} +1 -1
- package/dist/chunks/{inspector.C0iAxxoz.js → inspector.BomNgVb-.js} +5 -5
- package/dist/chunks/{inspector.C0iAxxoz.js.map → inspector.BomNgVb-.js.map} +1 -1
- package/dist/chunks/inspector.types.DyHwE18g.js.map +1 -1
- package/dist/chunks/internal-error.BLZodVBE.js.map +1 -1
- package/dist/chunks/internal-error.BmrwJFpR.js.map +1 -1
- package/dist/chunks/isSameWeek.DjeUtLwI.js +14 -0
- package/dist/chunks/{isSameWeek.CUD7czUN.js.map → isSameWeek.DjeUtLwI.js.map} +1 -1
- package/dist/chunks/{it.Oaj6BklL.js → it.DIafuXtH.js} +2 -2
- package/dist/chunks/{it.Oaj6BklL.js.map → it.DIafuXtH.js.map} +1 -1
- package/dist/chunks/ja.Cm9tJMi2.js.map +1 -1
- package/dist/chunks/keyboard-navigation.DWmhelVv.js.map +1 -1
- package/dist/chunks/ko.Ceaof6EP.js.map +1 -1
- package/dist/chunks/{layout-row.BPX00mio.js → layout-row.BxuMJU4E.js} +4 -4
- package/dist/chunks/layout-row.BxuMJU4E.js.map +1 -0
- package/dist/chunks/{link.PsTSQjK3.js → link.DKimL08z.js} +2 -2
- package/dist/chunks/{link.PsTSQjK3.js.map → link.DKimL08z.js.map} +1 -1
- package/dist/chunks/{listbox-option-tag.BlDz7oXK.js → listbox-option-tag.Cv3y0TvQ.js} +3 -3
- package/dist/chunks/{listbox-option-tag.BlDz7oXK.js.map → listbox-option-tag.Cv3y0TvQ.js.map} +1 -1
- package/dist/chunks/loading-indicator.PxbRzshH.js.map +1 -1
- package/dist/chunks/match.CMBZxEs9.js.map +1 -1
- package/dist/chunks/minus-small.DJacLGTw.js.map +1 -1
- package/dist/chunks/{modal-fullscreen.B1gltlxA.js → modal-fullscreen.6bAjPENL.js} +73 -69
- package/dist/chunks/modal-fullscreen.6bAjPENL.js.map +1 -0
- package/dist/chunks/{modal.e3EQ6Kex.js → modal.DOR8c0gy.js} +6 -6
- package/dist/chunks/{modal.e3EQ6Kex.js.map → modal.DOR8c0gy.js.map} +1 -1
- package/dist/chunks/nl.B6vCf2B9.js.map +1 -1
- package/dist/chunks/no-results-found.Bg_ZcEid.js.map +1 -1
- package/dist/chunks/no-results-found.BqvYsBR6.js.map +1 -1
- package/dist/chunks/notifications-cleared.BMZk37uf.js.map +1 -1
- package/dist/chunks/notifications-cleared.C7W9ZXY7.js.map +1 -1
- package/dist/chunks/on-click-outside.BW4rkhzG.js +91 -0
- package/dist/chunks/on-click-outside.BW4rkhzG.js.map +1 -0
- package/dist/chunks/page-not-found.COJLPVaU.js.map +1 -1
- package/dist/chunks/page-not-found.DWW6W-PZ.js.map +1 -1
- package/dist/chunks/{pagination.BcFt2FqK.js → pagination.wuEIlDcq.js} +4 -4
- package/dist/chunks/{pagination.BcFt2FqK.js.map → pagination.wuEIlDcq.js.map} +1 -1
- package/dist/chunks/{payment-method.BKXLPDC9.js → payment-method.B3CkgsAY.js} +2 -2
- package/dist/chunks/{payment-method.BKXLPDC9.js.map → payment-method.B3CkgsAY.js.map} +1 -1
- package/dist/chunks/payment-method.types.BqtH7RM2.js.map +1 -1
- package/dist/chunks/planned-maintenance.C61sWB9h.js.map +1 -1
- package/dist/chunks/planned-maintenance.jmWYTdet.js.map +1 -1
- package/dist/chunks/popover.types.DkiRUQ4Z.js +6 -0
- package/dist/chunks/{popover.types.WDh5ggr3.js.map → popover.types.DkiRUQ4Z.js.map} +1 -1
- package/dist/chunks/popper-container.D4dworD4.js +1423 -0
- package/dist/chunks/popper-container.D4dworD4.js.map +1 -0
- package/dist/chunks/{promo-banner.yfBorKj7.js → promo-banner.bjMDm76T.js} +4 -4
- package/dist/chunks/{promo-banner.yfBorKj7.js.map → promo-banner.bjMDm76T.js.map} +1 -1
- package/dist/chunks/pt-BR.CiGdfP45.js.map +1 -1
- package/dist/chunks/{radio-group.CtTnfkYg.js → radio-group.DKRxfGtE.js} +8 -8
- package/dist/chunks/{radio-group.CtTnfkYg.js.map → radio-group.DKRxfGtE.js.map} +1 -1
- package/dist/chunks/radio-input.kzb4gxLW.js.map +1 -1
- package/dist/chunks/referrals.BvtT-kQS.js.map +1 -1
- package/dist/chunks/referrals.aX8WZigH.js.map +1 -1
- package/dist/chunks/resize.Bqks3WUm.js.map +1 -1
- package/dist/chunks/{rich-text-editor.Dq2CFGOu.js → rich-text-editor.DiuS9alD.js} +9 -13
- package/dist/chunks/rich-text-editor.DiuS9alD.js.map +1 -0
- package/dist/chunks/{search-bar.B0SdQBnY.js → search-bar.UVSaoX0h.js} +5 -5
- package/dist/chunks/{search-bar.B0SdQBnY.js.map → search-bar.UVSaoX0h.js.map} +1 -1
- package/dist/chunks/{secondary-nav.BPGpxd0p.js → secondary-nav.C6ldQMZ2.js} +18 -18
- package/dist/chunks/secondary-nav.C6ldQMZ2.js.map +1 -0
- package/dist/chunks/{segmented-control.BtWFda0P.js → segmented-control.BLnuxgnJ.js} +3 -3
- package/dist/chunks/{segmented-control.BtWFda0P.js.map → segmented-control.BLnuxgnJ.js.map} +1 -1
- package/dist/chunks/segmented-control.types.BHRLV8KU.js.map +1 -1
- package/dist/chunks/{selection-card-group.BryV14qP.js → selection-card-group.CqGYskmS.js} +5 -5
- package/dist/chunks/{selection-card-group.BryV14qP.js.map → selection-card-group.CqGYskmS.js.map} +1 -1
- package/dist/chunks/{sidepanel.NFyZGE57.js → sidepanel.BKE87Uef.js} +71 -67
- package/dist/chunks/sidepanel.BKE87Uef.js.map +1 -0
- package/dist/chunks/{startOfWeek.Dxw2MhGp.js → startOfWeek.D8Yh4c0G.js} +3 -3
- package/dist/chunks/{startOfWeek.Dxw2MhGp.js.map → startOfWeek.D8Yh4c0G.js.map} +1 -1
- package/dist/chunks/{status.types.Cv5XN4zL.js → status.types.BTsaLHQ6.js} +2 -2
- package/dist/chunks/{status.types.Cv5XN4zL.js.map → status.types.BTsaLHQ6.js.map} +1 -1
- package/dist/chunks/{step.BLFXvHL6.js → step.BEbWkprZ.js} +5 -5
- package/dist/chunks/{step.BLFXvHL6.js.map → step.BEbWkprZ.js.map} +1 -1
- package/dist/chunks/{structured-list-item.CptOCpHP.js → structured-list-item.DRFRap_S.js} +6 -6
- package/dist/chunks/{structured-list-item.CptOCpHP.js.map → structured-list-item.DRFRap_S.js.map} +1 -1
- package/dist/chunks/success.DhioLvPD.js.map +1 -1
- package/dist/chunks/success.nNwxJRBS.js.map +1 -1
- package/dist/chunks/summary-grid.keys.Xx-W5a2w.js.map +1 -1
- package/dist/chunks/{summary-grid.types.B1T8_k1m.js → summary-grid.types.OldkhD7S.js} +10 -10
- package/dist/chunks/{summary-grid.types.B1T8_k1m.js.map → summary-grid.types.OldkhD7S.js.map} +1 -1
- package/dist/chunks/sv.f8EfZjMZ.js.map +1 -1
- package/dist/chunks/{tab.FUMpPsBP.js → tab.BqSNoefU.js} +5 -5
- package/dist/chunks/{tab.FUMpPsBP.js.map → tab.BqSNoefU.js.map} +1 -1
- package/dist/chunks/tabs.keys.B4qGhjp2.js.map +1 -1
- package/dist/chunks/{tag.B1Ywhgvc.js → tag.Cy3XkSDQ.js} +3 -3
- package/dist/chunks/{tag.B1Ywhgvc.js.map → tag.Cy3XkSDQ.js.map} +1 -1
- package/dist/chunks/{textarea.riUt0BiI.js → textarea.Bm9MZb_W.js} +4 -4
- package/dist/chunks/{textarea.riUt0BiI.js.map → textarea.Bm9MZb_W.js.map} +1 -1
- package/dist/chunks/{timeline-item.CFfW1DoD.js → timeline-item.Cpbm8IUw.js} +15 -15
- package/dist/chunks/{timeline-item.CFfW1DoD.js.map → timeline-item.Cpbm8IUw.js.map} +1 -1
- package/dist/chunks/{toast.Csv6tMyT.js → toast.Wuy6VuOT.js} +4 -4
- package/dist/chunks/{toast.Csv6tMyT.js.map → toast.Wuy6VuOT.js.map} +1 -1
- package/dist/chunks/{toggle.227XgEc7.js → toggle.B1z1YPe_.js} +4 -4
- package/dist/chunks/{toggle.227XgEc7.js.map → toggle.B1z1YPe_.js.map} +1 -1
- package/dist/chunks/{tooltip.C6YCavPw.js → tooltip.DF11J3k3.js} +50 -50
- package/dist/chunks/{tooltip.C6YCavPw.js.map → tooltip.DF11J3k3.js.map} +1 -1
- package/dist/chunks/truncate.BfIl_-71.js.map +1 -1
- package/dist/chunks/{tutorial.D18LwXVy.js → tutorial.D5xtZ1Pt.js} +8 -8
- package/dist/chunks/{tutorial.D18LwXVy.js.map → tutorial.D5xtZ1Pt.js.map} +1 -1
- package/dist/chunks/{typography.Bq-EGj9y.js → typography.C8lPlsbD.js} +3 -3
- package/dist/chunks/{typography.Bq-EGj9y.js.map → typography.C8lPlsbD.js.map} +1 -1
- package/dist/chunks/upload-files.5wQwbfkp.js.map +1 -1
- package/dist/chunks/upload-files.jTQY6y2X.js.map +1 -1
- package/dist/chunks/{use-bento-toast-controller.MmyZXtME.js → use-bento-toast-controller.CB6Qbf3R.js} +2 -2
- package/dist/chunks/{use-bento-toast-controller.MmyZXtME.js.map → use-bento-toast-controller.CB6Qbf3R.js.map} +1 -1
- package/dist/chunks/{use-cached-selected-values.gDWGi5Nk.js → use-cached-selected-values.wn2xnwYG.js} +23 -23
- package/dist/chunks/use-cached-selected-values.wn2xnwYG.js.map +1 -0
- package/dist/chunks/{use-country-items.ClS_So5N.js → use-country-items.CQnldpqM.js} +11 -11
- package/dist/chunks/{use-country-items.ClS_So5N.js.map → use-country-items.CQnldpqM.js.map} +1 -1
- package/dist/chunks/use-country-phon-code.Bui3zD6W.js.map +1 -1
- package/dist/chunks/use-default-slot-validator.BDn0wkYP.js.map +1 -1
- package/dist/chunks/use-expandable-content-height.GkjjbmPy.js.map +1 -1
- package/dist/chunks/use-form-layout-loading.CWbjZiwP.js.map +1 -1
- package/dist/chunks/utils.BzUwtTXc.js +21 -0
- package/dist/chunks/utils.BzUwtTXc.js.map +1 -0
- package/dist/chunks/wrong-environment.BOsyKdRI.js.map +1 -1
- package/dist/chunks/wrong-environment.BiHTPtbJ.js.map +1 -1
- package/dist/chunks/{zh-CN.BzH0fIXr.js → zh-CN.Bw_6j9Cd.js} +2 -2
- package/dist/chunks/{zh-CN.BzH0fIXr.js.map → zh-CN.Bw_6j9Cd.js.map} +1 -1
- package/dist/click-outside.js +1 -1
- package/dist/code-snippet.js +1 -1
- package/dist/country.js +2 -2
- 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 +6 -5
- package/dist/date-picker.js +2 -2
- package/dist/date-range-picker.js +2 -2
- package/dist/date.js +1 -1
- package/dist/draggable-handle.js +173 -0
- package/dist/draggable-handle.js.map +1 -0
- package/dist/dropdown.js +11 -11
- package/dist/empty-state.js +1 -1
- package/dist/file-uploader.js +1 -1
- package/dist/filter-bar.js +1 -1
- package/dist/focus-trap.js +1 -1
- package/dist/form-layout.js +1 -1
- package/dist/header-with-views.js +1 -1
- package/dist/header.js +1 -1
- package/dist/index.js +341 -335
- 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/inspector.js +1 -1
- package/dist/internal.js +42 -42
- package/dist/layout.js +1 -1
- package/dist/link.js +1 -1
- package/dist/menu.js +1 -1
- package/dist/modal-fullscreen.js +1 -1
- package/dist/modal.js +2 -2
- package/dist/pagination.js +1 -1
- package/dist/payment-method.js +1 -1
- package/dist/popover.js +2 -2
- package/dist/popper-container.js +1 -1
- 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 +5 -0
- package/dist/styles/bento-light.css +5 -0
- package/dist/styles/bento.css +5 -0
- package/dist/styles/legacy.css +5 -0
- package/dist/styles/styleguide.css +5 -0
- package/dist/summary-grid.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/use-form-v4.js +756 -7787
- package/dist/use-form-v4.js.map +1 -1
- package/dist/web-types.json +339 -35
- package/package.json +9 -9
- package/dist/assets/field-label.css +0 -1
- package/dist/chunks/action-bar.y4tcdk7R.js +0 -162
- package/dist/chunks/action-bar.y4tcdk7R.js.map +0 -1
- package/dist/chunks/ai-button.BEy4Gly-.js +0 -67
- package/dist/chunks/ai-button.BEy4Gly-.js.map +0 -1
- package/dist/chunks/codemirror.Cy7iSLbd.js.map +0 -1
- package/dist/chunks/constructNow.DuaJst0D.js +0 -8
- package/dist/chunks/data-grid.Bk7_6Z0F.js.map +0 -1
- package/dist/chunks/date-input.BbZqj10S.js +0 -15
- package/dist/chunks/date-input.BbZqj10S.js.map +0 -1
- package/dist/chunks/date-picker.CnsC_UMG.js.map +0 -1
- package/dist/chunks/date-range-picker.B6GSRjjK.js +0 -1693
- package/dist/chunks/date-range-picker.B6GSRjjK.js.map +0 -1
- package/dist/chunks/dialog-page.QpRiNPyx.js +0 -137
- package/dist/chunks/dialog-page.QpRiNPyx.js.map +0 -1
- package/dist/chunks/dropdown-default-textbox.Cq68tN9F.js.map +0 -1
- package/dist/chunks/dropdown.C2pXf8Li.js.map +0 -1
- package/dist/chunks/field-label.CEkJnsiL.js.map +0 -1
- package/dist/chunks/file-uploader.CnOqfuI-.js.map +0 -1
- package/dist/chunks/filter-bar.CnJAxz9B.js +0 -2559
- package/dist/chunks/filter-bar.CnJAxz9B.js.map +0 -1
- package/dist/chunks/fixed-scroller.Bp4-iO80.js +0 -114
- package/dist/chunks/focus-trap.CNIU5jOz.js.map +0 -1
- package/dist/chunks/header-with-views.Dc9LUYNY.js.map +0 -1
- package/dist/chunks/index.BDK4hwK_.js +0 -593
- package/dist/chunks/isSameWeek.CUD7czUN.js +0 -14
- package/dist/chunks/layout-row.BPX00mio.js.map +0 -1
- package/dist/chunks/modal-fullscreen.B1gltlxA.js.map +0 -1
- package/dist/chunks/on-click-outside.D9aY9g8G.js +0 -101
- package/dist/chunks/on-click-outside.D9aY9g8G.js.map +0 -1
- package/dist/chunks/popover.types.WDh5ggr3.js +0 -6
- package/dist/chunks/popper-container.Cdokz_NE.js +0 -1404
- package/dist/chunks/popper-container.Cdokz_NE.js.map +0 -1
- package/dist/chunks/rich-text-editor.Dq2CFGOu.js.map +0 -1
- package/dist/chunks/secondary-nav.BPGpxd0p.js.map +0 -1
- package/dist/chunks/sidepanel.NFyZGE57.js.map +0 -1
- package/dist/chunks/use-cached-selected-values.gDWGi5Nk.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-trap.DMc1wL3A.js","sources":["../../src/components/focus-trap/composables/use-handle-layers.ts","../../../../node_modules/.pnpm/tabbable@6.4.0/node_modules/tabbable/dist/index.esm.js","../../../../node_modules/.pnpm/focus-trap@7.6.4/node_modules/focus-trap/dist/focus-trap.esm.js","../../src/components/focus-trap/composables/use-trap-all.ts","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/constants.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/array.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/is.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/tabbables.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/all-affected.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/focusInside.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/focusIsHidden.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/solver.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/utils/parenting.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/focusMerge.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/focusables.js","../../../../node_modules/.pnpm/focus-lock@0.11.0/node_modules/focus-lock/dist/es2015/setFocus.js","../../src/utils/ts/focus-trap.utils.ts","../../src/components/focus-trap/focus-trap.types.ts","../../src/components/focus-trap/composables/use-trap-arrow-keys.ts","../../src/components/focus-trap/focus-trap.vue"],"sourcesContent":["import { type MaybeRef } from '@/types/maybe-ref';\nimport { useMutationObserver } from '@vueuse/core';\nimport { isRef, onUnmounted, ref } from 'vue';\n\n/**\n * Creates a handler for managing layered components (e.g., tooltips, listboxes, comboboxes)\n * rendered on top of a modal.\n *\n * Prevents a single Escape key press (or similar events) from closing all layers at once.\n * Ensures only the topmost interactive layer is closed per event, preserving expected UX behavior.\n *\n * @param elRef - A reference to the root DOM element encapsulating the modal and its layered content.\n * @returns An object containing:\n * - `handleKeydownEscape`: A function that handles Escape key presses and manages the layered state accordingly.\n */\nexport const useHandleLayers = (elRef: MaybeRef<HTMLElement>) => {\n const elementWithPopover = ref(null);\n\n const { stop } = useMutationObserver(\n elRef,\n mutations => {\n let hasPopover = false;\n\n for (const mutation of mutations) {\n if (mutation.type === 'childList' && mutation.addedNodes.length) {\n const ariaExpandedElement = Array.from(mutation.addedNodes).find(node => {\n if (!(node instanceof HTMLElement)) {\n return false;\n }\n\n return node.getAttribute('aria-expanded') === 'true';\n });\n\n // if there is an element added that has aria-expanded e.g. input-field with dropdown, we mark it as a popover\n if (ariaExpandedElement) {\n elementWithPopover.value = ariaExpandedElement;\n hasPopover = true;\n }\n\n break;\n } else if (mutation.type === 'attributes' && mutation.oldValue === 'false') {\n // check if popup is on the modal via aria-expanded\n elementWithPopover.value = mutations[0].target;\n\n hasPopover = true;\n\n break;\n }\n }\n\n // there is an element with the popover that is opened on the screen\n if (hasPopover === true) {\n return;\n }\n\n // flush all macro-tasks before resetting\n // enables keydown to run before reset - enabling it to identify if the popover was opened\n // otherwise, aria-expanded will ALWAYS be false since it closes before the event bubbles up into the dialog\n setTimeout(() => (elementWithPopover.value = null));\n },\n {\n attributeFilter: ['aria-expanded'],\n attributeOldValue: true,\n childList: true, // check for added/removed nodes i.e. teleport\n subtree: true, // check all descendents\n }\n );\n\n const handleKeydownEscape = (event: KeyboardEvent) => {\n // list of roles that requires escape to be handled\n const roleBlockPropagationList = ['listbox', 'tooltip', 'menu'];\n\n // list of roles that requires escape to be handled when the list is opened\n const roleExpandedBlockPropagationList = ['combobox'];\n\n const tagBlockPropagationList = [\n // input with autocomplete should only close the autocomplete dropdown when ESCAPE is pressed\n // some autocomplete picks up \"name=username\" without the autocomplete attribute\n 'INPUT',\n ];\n\n for (const el of event.composedPath()) {\n if (!(el instanceof HTMLElement)) {\n return;\n }\n\n const htmlEl = el;\n\n const tag = htmlEl.tagName;\n const role = htmlEl.getAttribute('role');\n\n const isElementDialog = tag === 'DIALOG';\n const isRoleWithOwnEscapeHandler = roleBlockPropagationList.includes(role);\n const isRoleWithOwnConditionalEscapeHandler = roleExpandedBlockPropagationList.includes(role);\n const isTagWithOwnEscapeHandler = tagBlockPropagationList.includes(tag);\n\n const isSelf = isRef(elRef) ? elRef.value === htmlEl : elRef === htmlEl;\n\n if (isElementDialog || isSelf) {\n // end loop at the modal - by default <dialog/> handles their own escape \"layering\"\n // or skip if it is currently at the top i.e. the focus-trap component itself\n return;\n }\n\n // combobox should close listbox when focus is on the combobox\n // modal only closes if listbox is not opened\n // handled earlier so that it does not have to go higher in the composed tree\n const isComboboxOpened = isRoleWithOwnConditionalEscapeHandler && elementWithPopover.value;\n\n // specific popovers that are not dialog e.g. listbox can handle their own Escape\n const isPopoverOpened = isRoleWithOwnEscapeHandler || isTagWithOwnEscapeHandler;\n\n // role=dialogs e.g. date-picker can handle their own Escape\n const isDialogOpened = !isElementDialog && role === 'dialog';\n\n if (isComboboxOpened || isPopoverOpened || isDialogOpened) {\n event.stopPropagation();\n event.preventDefault();\n\n return;\n }\n }\n };\n\n onUnmounted(() => {\n stop();\n });\n\n return { handleKeydownEscape };\n};\n","/*!\n* tabbable 6.4.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\nvar candidateSelectors = ['input:not([inert]):not([inert] *)', 'select:not([inert]):not([inert] *)', 'textarea:not([inert]):not([inert] *)', 'a[href]:not([inert]):not([inert] *)', 'button:not([inert]):not([inert] *)', '[tabindex]:not(slot):not([inert]):not([inert] *)', 'audio[controls]:not([inert]):not([inert] *)', 'video[controls]:not([inert]):not([inert] *)', '[contenteditable]:not([contenteditable=\"false\"]):not([inert]):not([inert] *)', 'details>summary:first-of-type:not([inert]):not([inert] *)', 'details:not([inert]):not([inert] *)'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Node} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar _isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n var result = inert || lookUp && node && (\n // closest does not exist on shadow roots, so we fall back to a manual\n // lookup upward, in case it is not defined.\n typeof node.closest === 'function' ? node.closest('[inert]') : _isInert(node.parentNode));\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert (either by itself or via its parent), then all its children are inert\n if (_isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar _getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (_isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = _getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !_isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = _getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n var tabIndex = getTabIndex(node);\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n var radioScope = node.form || getRootNode(node);\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n var radioSet;\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n var _nodeRoot;\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n var nodeRoot = node && getRootNode(node);\n var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n var attached = false;\n if (nodeRoot && nodeRoot !== node) {\n var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n while (!attached && nodeRootHost) {\n var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n }\n }\n return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n var displayCheck = _ref.displayCheck,\n getShadowRoot = _ref.getShadowRoot;\n if (displayCheck === 'full-native') {\n if ('checkVisibility' in node) {\n // Chrome >= 105, Edge >= 105, Firefox >= 106, Safari >= 17.4\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility#browser_compatibility\n var visible = node.checkVisibility({\n // Checking opacity might be desirable for some use cases, but natively,\n // opacity zero elements _are_ focusable and tabbable.\n checkOpacity: false,\n opacityProperty: false,\n contentVisibilityAuto: true,\n visibilityProperty: true,\n // This is an alias for `visibilityProperty`. Contemporary browsers\n // support both. However, this alias has wider browser support (Chrome\n // >= 105 and Firefox >= 106, vs. Chrome >= 121 and Firefox >= 122), so\n // we include it anyway.\n checkVisibilityCSS: true\n });\n return !visible;\n }\n // Fall through to manual visibility checks\n }\n\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full' ||\n // full-native can run this branch when it falls through in case\n // Element#checkVisibility is unsupported\n displayCheck === 'full-native' || displayCheck === 'legacy-full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n var originalNode = node;\n while (node) {\n var parentElement = node.parentElement;\n var rootNode = getRootNode(node);\n if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n var parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (var i = 0; i < parentNode.children.length; i++) {\n var child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled || isHiddenInput(node) || isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n return false;\n }\n return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n return false;\n }\n return true;\n};\nvar isShadowRootTabbable = function isShadowRootTabbable(shadowHostNode) {\n var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar _sortByOrder = function sortByOrder(candidates) {\n var regularTabbables = [];\n var orderedTabbables = [];\n candidates.forEach(function (item, i) {\n var isScope = !!item.scopeParent;\n var element = isScope ? item.scopeParent : item;\n var candidateTabindex = getSortOrderTabIndex(element, isScope);\n var elements = isScope ? _sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements\n });\n }\n });\n return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n return acc;\n }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isShadowRootTabbable\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n }\n return _sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n }\n return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe:not([inert]):not([inert] *)').join(',');\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n* focus-trap 7.6.4\n* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n*/\nimport { tabbable, focusable, isTabbable, getTabIndex, isFocusable } from 'tabbable';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (undefined !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : undefined;\n }\n}\n\nvar activeFocusTraps = {\n activateTrap: function activateTrap(trapStack, trap) {\n if (trapStack.length > 0) {\n var activeTrap = trapStack[trapStack.length - 1];\n if (activeTrap !== trap) {\n activeTrap._setPausedState(true);\n }\n }\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n deactivateTrap: function deactivateTrap(trapStack, trap) {\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n if (trapStack.length > 0 && !trapStack[trapStack.length - 1]._isManuallyPaused()) {\n trapStack[trapStack.length - 1]._setPausedState(false);\n }\n }\n};\nvar isSelectableInput = function isSelectableInput(node) {\n return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';\n};\nvar isEscapeEvent = function isEscapeEvent(e) {\n return (e === null || e === undefined ? undefined : e.key) === 'Escape' || (e === null || e === undefined ? undefined : e.key) === 'Esc' || (e === null || e === undefined ? undefined : e.keyCode) === 27;\n};\nvar isTabEvent = function isTabEvent(e) {\n return (e === null || e === undefined ? undefined : e.key) === 'Tab' || (e === null || e === undefined ? undefined : e.keyCode) === 9;\n};\n\n// checks for TAB by default\nvar isKeyForward = function isKeyForward(e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nvar isKeyBackward = function isKeyBackward(e) {\n return isTabEvent(e) && e.shiftKey;\n};\nvar delay = function delay(fn) {\n return setTimeout(fn, 0);\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nvar valueOrHandler = function valueOrHandler(value) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n return typeof value === 'function' ? value.apply(undefined, params) : value;\n};\nvar getActualTarget = function getActualTarget(event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nvar internalTrapStack = [];\nvar createFocusTrap = function createFocusTrap(elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n var doc = (userOptions === null || userOptions === undefined ? undefined : userOptions.document) || document;\n var trapStack = (userOptions === null || userOptions === undefined ? undefined : userOptions.trapStack) || internalTrapStack;\n var config = _objectSpread2({\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n isKeyForward: isKeyForward,\n isKeyBackward: isKeyBackward\n }, userOptions);\n var state = {\n // containers given to createFocusTrap()\n // @type {Array<HTMLElement>}\n containers: [],\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{\n // container: HTMLElement,\n // tabbableNodes: Array<HTMLElement>, // empty if none\n // focusableNodes: Array<HTMLElement>, // empty if none\n // posTabIndexesFound: boolean,\n // firstTabbableNode: HTMLElement|undefined,\n // lastTabbableNode: HTMLElement|undefined,\n // firstDomTabbableNode: HTMLElement|undefined,\n // lastDomTabbableNode: HTMLElement|undefined,\n // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n // }>}\n containerGroups: [],\n // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n manuallyPaused: false,\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n recentNavEvent: undefined\n };\n var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n var getOption = function getOption(configOverrideOptions, optionName, configOptionName) {\n return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event] If available, and `element` isn't directly found in any container,\n * the event's composed path is used to see if includes any known trap containers in the\n * case where the element is inside a Shadow DOM.\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n var findContainerIndex = function findContainerIndex(element, event) {\n var composedPath = typeof (event === null || event === undefined ? undefined : event.composedPath) === 'function' ? event.composedPath() : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(function (_ref) {\n var container = _ref.container,\n tabbableNodes = _ref.tabbableNodes;\n return container.contains(element) || (// fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath === null || composedPath === undefined ? undefined : composedPath.includes(container)) || tabbableNodes.find(function (node) {\n return node === element;\n });\n });\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @param {Object} options\n * @param {boolean} [options.hasFallback] True if the option could be a selector string\n * and the option allows for a fallback scenario in the case where the selector is\n * valid but does not match a node (i.e. the queried node doesn't exist in the DOM).\n * @param {Array} [options.params] Params to pass to the option if it's a function.\n * @returns {undefined | null | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `null` if the option didn't resolve\n * to a node but `options.hasFallback=true`, `false` if the option resolved to `false`\n * (node explicitly not given); otherwise, the resolved DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node, unless the option is a selector string and `options.hasFallback=true`.\n */\n var getNodeForOption = function getNodeForOption(optionName) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$hasFallback = _ref2.hasFallback,\n hasFallback = _ref2$hasFallback === undefined ? false : _ref2$hasFallback,\n _ref2$params = _ref2.params,\n params = _ref2$params === undefined ? [] : _ref2$params;\n var optionValue = config[optionName];\n if (typeof optionValue === 'function') {\n optionValue = optionValue.apply(undefined, _toConsumableArray(params));\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n try {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n } catch (err) {\n throw new Error(\"`\".concat(optionName, \"` appears to be an invalid selector; error=\\\"\").concat(err.message, \"\\\"\"));\n }\n if (!node) {\n if (!hasFallback) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n // else, `node` MUST be `null` because that's what `Document.querySelector()` returns\n // if the selector is valid but doesn't match anything\n }\n }\n return node;\n };\n var getInitialFocusNode = function getInitialFocusNode() {\n var node = getNodeForOption('initialFocus', {\n hasFallback: true\n });\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n if (node === undefined || node && !isFocusable(node, config.tabbableOptions)) {\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(doc.activeElement) >= 0) {\n node = doc.activeElement;\n } else {\n var firstTabbableGroup = state.tabbableGroups[0];\n var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n } else if (node === null) {\n // option is a VALID selector string that doesn't yield a node: use the `fallbackFocus`\n // option instead of the default behavior when the option isn't specified at all\n node = getNodeForOption('fallbackFocus');\n }\n if (!node) {\n throw new Error('Your focus-trap needs to have at least one focusable element');\n }\n return node;\n };\n var updateTabbableNodes = function updateTabbableNodes() {\n state.containerGroups = state.containers.map(function (container) {\n var tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n // are focusable but not tabbable\n var focusableNodes = focusable(container, config.tabbableOptions);\n var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : undefined;\n var firstDomTabbableNode = focusableNodes.find(function (node) {\n return isTabbable(node);\n });\n var lastDomTabbableNode = focusableNodes.slice().reverse().find(function (node) {\n return isTabbable(node);\n });\n var posTabIndexesFound = !!tabbableNodes.find(function (node) {\n return getTabIndex(node) > 0;\n });\n return {\n container: container,\n tabbableNodes: tabbableNodes,\n focusableNodes: focusableNodes,\n /** True if at least one node with positive `tabindex` was found in this container. */\n posTabIndexesFound: posTabIndexesFound,\n /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n firstTabbableNode: firstTabbableNode,\n /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n lastTabbableNode: lastTabbableNode,\n // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // because that API doesn't work with Shadow DOM as well as it should (@see\n // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n // to address an edge case related to positive tabindex support, this seems like a much easier,\n // \"close enough most of the time\" alternative for positive tabindexes which should generally\n // be avoided anyway...\n /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n firstDomTabbableNode: firstDomTabbableNode,\n /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n lastDomTabbableNode: lastDomTabbableNode,\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode: function nextTabbableNode(node) {\n var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx < 0) {\n // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n // since `node` should at least have been focusable, we assume that's the case and mimic\n // what browsers do, which is set focus to the next node in __document position order__,\n // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n // basic DOM order\n if (forward) {\n return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function (el) {\n return isTabbable(el);\n });\n }\n return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function (el) {\n return isTabbable(el);\n });\n }\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n }\n };\n });\n state.tabbableGroups = state.containerGroups.filter(function (group) {\n return group.tabbableNodes.length > 0;\n });\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times');\n }\n\n // NOTE: Positive tabindexes are only properly supported in single-container traps because\n // doing it across multiple containers where tabindexes could be all over the place\n // would require Tabbable to support multiple containers, would require additional\n // specialized Shadow DOM support, and would require Tabbable's multi-container support\n // to look at those containers in document position order rather than user-provided\n // order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n // https://github.com/focus-trap/focus-trap/issues/375 for more details.\n if (state.containerGroups.find(function (g) {\n return g.posTabIndexesFound;\n }) && state.containerGroups.length > 1) {\n throw new Error(\"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\");\n }\n };\n\n /**\n * Gets the current activeElement. If it's a web-component and has open shadow-root\n * it will recursively search inside shadow roots for the \"true\" activeElement.\n *\n * @param {Document | ShadowRoot} el\n *\n * @returns {HTMLElement} The element that currently has the focus\n **/\n var _getActiveElement = function getActiveElement(el) {\n var activeElement = el.activeElement;\n if (!activeElement) {\n return;\n }\n if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) {\n return _getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n };\n var _tryFocus = function tryFocus(node) {\n if (node === false) {\n return;\n }\n if (node === _getActiveElement(document)) {\n return;\n }\n if (!node || !node.focus) {\n _tryFocus(getInitialFocusNode());\n return;\n }\n node.focus({\n preventScroll: !!config.preventScroll\n });\n // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) {\n var node = getNodeForOption('setReturnFocus', {\n params: [previousActiveElement]\n });\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n /**\n * Finds the next node (in either direction) where focus should move according to a\n * keyboard focus-in event.\n * @param {Object} params\n * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n * will be used to determine the `target`). Ignored if `target` is specified.\n * @param {boolean} [params.isBackward] True if focus should move backward.\n * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n * determined given the current state of the trap.\n */\n var findNextNavNode = function findNextNavNode(_ref3) {\n var target = _ref3.target,\n event = _ref3.event,\n _ref3$isBackward = _ref3.isBackward,\n isBackward = _ref3$isBackward === undefined ? false : _ref3$isBackward;\n target = target || getActualTarget(event);\n updateTabbableNodes();\n var destinationNode = null;\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n var containerIndex = findContainerIndex(target, event);\n var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n var startOfGroupIndex = state.tabbableGroups.findIndex(function (_ref4) {\n var firstTabbableNode = _ref4.firstTabbableNode;\n return target === firstTabbableNode;\n });\n if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n var lastOfGroupIndex = state.tabbableGroups.findIndex(function (_ref5) {\n var lastTabbableNode = _ref5.lastTabbableNode;\n return target === lastTabbableNode;\n });\n if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n return destinationNode;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n var checkPointerDown = function checkPointerDown(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it ocurred inside the trap\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n // scrolling if the node that got focused was out of view; there's nothing we can do to\n // prevent that from happening by the time we discover that focus escaped\n var checkFocusIn = function checkFocusIn(event) {\n var target = getActualTarget(event);\n var targetContained = findContainerIndex(target, event) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n event.stopImmediatePropagation();\n\n // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n // it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n // toward a node with a positive tab index\n var nextNode; // next node to focus, if we find one\n var navAcrossContainers = true;\n if (state.mostRecentlyFocusedNode) {\n if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode);\n // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n // with at least one tabbable node in order to function, so this could be the other container\n // with nothing tabbable in it)\n var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes;\n if (tabbableNodes.length > 0) {\n // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n var mruTabIdx = tabbableNodes.findIndex(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n if (mruTabIdx >= 0) {\n if (config.isKeyForward(state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n }\n // else, don't find in container order without considering direction too\n }\n }\n // else, no tabbable nodes in that container (which means we must have at least one other\n // container with at least one tabbable node in it, otherwise focus-trap would've thrown\n // an error the last time updateTabbableNodes() was run): find next node among all known\n // containers\n } else {\n // check to see if there's at least one tabbable node with a positive tab index inside\n // the trap because focus seems to escape when navigating backward from a tabbable node\n // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n // the greatest positive tab index like it should)\n if (!state.containerGroups.some(function (g) {\n return g.tabbableNodes.some(function (n) {\n return getTabIndex(n) > 0;\n });\n })) {\n // no containers with tabbable nodes with positive tab indexes which means the focus\n // escaped for some other reason and we should just execute the fallback to the\n // MRU node or initial focus node, if any\n navAcrossContainers = false;\n }\n }\n } else {\n // no MRU node means we're likely in some initial condition when the trap has just\n // been activated and initial focus hasn't been given yet, in which case we should\n // fall through to trying to focus the initial focus node, which is what should\n // happen below at this point in the logic\n navAcrossContainers = false;\n }\n if (navAcrossContainers) {\n nextNode = findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: state.mostRecentlyFocusedNode,\n isBackward: config.isKeyBackward(state.recentNavEvent)\n });\n }\n if (nextNode) {\n _tryFocus(nextNode);\n } else {\n _tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }\n state.recentNavEvent = undefined; // clear\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n var checkKeyNav = function checkKeyNav(event) {\n var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n state.recentNavEvent = event;\n var destinationNode = findNextNavNode({\n event: event,\n isBackward: isBackward\n });\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n _tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n var checkTabKey = function checkTabKey(event) {\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n // we use a different event phase for the Escape key to allow canceling the event and checking for this in escapeDeactivates\n var checkEscapeKey = function checkEscapeKey(event) {\n if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {\n event.preventDefault();\n trap.deactivate();\n }\n };\n var checkClick = function checkClick(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n var addListeners = function addListeners() {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function () {\n _tryFocus(getInitialFocusNode());\n }) : _tryFocus(getInitialFocusNode());\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkTabKey, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkEscapeKey);\n return trap;\n };\n var removeListeners = function removeListeners() {\n if (!state.active) {\n return;\n }\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkTabKey, true);\n doc.removeEventListener('keydown', checkEscapeKey);\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n var checkDomRemoval = function checkDomRemoval(mutations) {\n var isFocusedNodeRemoved = mutations.some(function (mutation) {\n var removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n });\n\n // If the currently focused is removed then browsers will move focus to the\n // <body> element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved) {\n _tryFocus(getInitialFocusNode());\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined;\n var updateObservedNodes = function updateObservedNodes() {\n if (!mutationObserver) {\n return;\n }\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n get paused() {\n return state.paused;\n },\n activate: function activate(activateOptions) {\n if (state.active) {\n return this;\n }\n var onActivate = getOption(activateOptions, 'onActivate');\n var onPostActivate = getOption(activateOptions, 'onPostActivate');\n var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n onActivate === null || onActivate === undefined || onActivate();\n var finishActivation = function finishActivation() {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n addListeners();\n updateObservedNodes();\n onPostActivate === null || onPostActivate === undefined || onPostActivate();\n };\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n return this;\n }\n finishActivation();\n return this;\n },\n deactivate: function deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n var options = _objectSpread2({\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus\n }, deactivateOptions);\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n activeFocusTraps.deactivateTrap(trapStack, trap);\n var onDeactivate = getOption(options, 'onDeactivate');\n var onPostDeactivate = getOption(options, 'onPostDeactivate');\n var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate');\n onDeactivate === null || onDeactivate === undefined || onDeactivate();\n var finishDeactivation = function finishDeactivation() {\n delay(function () {\n if (returnFocus) {\n _tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate === null || onPostDeactivate === undefined || onPostDeactivate();\n });\n };\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);\n return this;\n }\n finishDeactivation();\n return this;\n },\n pause: function pause(pauseOptions) {\n if (!state.active) {\n return this;\n }\n state.manuallyPaused = true;\n return this._setPausedState(true, pauseOptions);\n },\n unpause: function unpause(unpauseOptions) {\n if (!state.active) {\n return this;\n }\n state.manuallyPaused = false;\n if (trapStack[trapStack.length - 1] !== this) {\n return this;\n }\n return this._setPausedState(false, unpauseOptions);\n },\n updateContainerElements: function updateContainerElements(containerElements) {\n var elementsAsArray = [].concat(containerElements).filter(Boolean);\n state.containers = elementsAsArray.map(function (element) {\n return typeof element === 'string' ? doc.querySelector(element) : element;\n });\n if (state.active) {\n updateTabbableNodes();\n }\n updateObservedNodes();\n return this;\n }\n };\n Object.defineProperties(trap, {\n _isManuallyPaused: {\n value: function value() {\n return state.manuallyPaused;\n }\n },\n _setPausedState: {\n value: function value(paused, options) {\n if (state.paused === paused) {\n return this;\n }\n state.paused = paused;\n if (paused) {\n var onPause = getOption(options, 'onPause');\n var onPostPause = getOption(options, 'onPostPause');\n onPause === null || onPause === undefined || onPause();\n removeListeners();\n updateObservedNodes();\n onPostPause === null || onPostPause === undefined || onPostPause();\n } else {\n var onUnpause = getOption(options, 'onUnpause');\n var onPostUnpause = getOption(options, 'onPostUnpause');\n onUnpause === null || onUnpause === undefined || onUnpause();\n updateTabbableNodes();\n addListeners();\n updateObservedNodes();\n onPostUnpause === null || onPostUnpause === undefined || onPostUnpause();\n }\n return this;\n }\n }\n });\n\n // initialize container elements\n trap.updateContainerElements(elements);\n return trap;\n};\n\nexport { createFocusTrap };\n//# sourceMappingURL=focus-trap.esm.js.map\n","import { onUnmounted, type Ref, ref, watch } from 'vue';\nimport { unrefElement, useElementVisibility } from '@vueuse/core';\nimport { createFocusTrap, type FocusTrap, type Options } from 'focus-trap';\n\nexport interface BentoFocusTrapOptions extends Options {\n additionalContainers?: Array<HTMLElement>;\n}\n\n/**\n * A composable function that creates and manages a focus trap within a specified HTML element.\n *\n * The focus trap ensures that the focus remains within the element, enhancing accessibility.\n *\n * @param el - A Vue Ref containing the HTMLElement to trap focus within.\n * @param isActivated - A Vue Ref containing a boolean indicating whether the focus trap is active.\n * @param options - An optional Vue Ref containing focus-trap options to customize the focus trap behavior.\n */\nexport const useTrapAll = (el: Ref<HTMLElement>, isActivated: Ref<boolean>, options?: Ref<BentoFocusTrapOptions>) => {\n const focusTrap = ref<FocusTrap | null>(null);\n\n const isElementVisible = useElementVisibility(el);\n\n watch(\n [() => unrefElement(el), () => isActivated.value, isElementVisible, options],\n ([element, isActivatedVal, isElementVisibleVal, optionsVal]: [\n HTMLElement | null,\n boolean,\n boolean,\n BentoFocusTrapOptions | undefined,\n ]) => {\n if (!element || !isActivatedVal || !isElementVisibleVal) {\n return;\n }\n\n const { additionalContainers, ...restOptions } = optionsVal ?? {};\n const containers = [element, ...(additionalContainers ?? [])];\n\n if (!focusTrap.value) {\n focusTrap.value = createFocusTrap(containers, {\n delayInitialFocus: false,\n fallbackFocus: element,\n ...restOptions,\n });\n\n focusTrap.value.activate();\n } else {\n focusTrap.value.updateContainerElements(containers);\n\n if (!focusTrap.value.active) {\n focusTrap.value.activate();\n }\n }\n },\n { flush: 'post' }\n );\n\n onUnmounted(() => {\n if (!isActivated.value) {\n return;\n }\n\n focusTrap.value?.deactivate();\n });\n};\n","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n // we can measure only \"elements\"\n // consider others as \"visible\"\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n var computedStyle = window.getComputedStyle(node, null);\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node.parentNode.host\n : node.parentNode;\n};\nvar isTopNode = function (node) {\n // @ts-ignore\n return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isVisibleUncached = function (node, checkParent) {\n return !node || isTopNode(node) || (!isElementHidden(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n var cached = visibilityCache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n visibilityCache.set(node, result);\n return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n var cached = cache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n cache.set(node, result);\n return result;\n};\nexport var getDataset = function (node) {\n // @ts-ignore\n return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n // elements with explicit roles will also use explicit tabindex\n // '[role=\"button\"]',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n var _a;\n return toArray(((_a = parent.shadowRoot) === null || _a === void 0 ? void 0 : _a.children) || parent.children).reduce(function (acc, child) {\n return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n }, []);\n};\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(\n // add all tabbables inside and within shadow DOMs in DOM order\n getFocusablesWithShadowDom(parent, withGuards), \n // add if node is tabbable itself\n parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n return toArray(nodes)\n .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n if (cache === void 0) { cache = new Map(); }\n return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * only tabbable ones\n * (but with guards which would be ignored)\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * actually anything \"focusable\", not only tabbable\n * (without guards, as long as they are not expected to be focused)\n */\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n return ((scope.shadowRoot\n ? contains(scope.shadowRoot, element)\n : scope.contains(element)) || Array.from(scope.children).some(function (child) { return contains(child, element); }));\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n /* eslint-disable no-bitwise */\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n /* eslint-enable */\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node\n * @returns {T}\n */\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n : [currentNode]));\n return acc;\n }, []);\n};\n","var getNestedShadowActiveElement = function (shadowRoot) {\n return shadowRoot.activeElement\n ? shadowRoot.activeElement.shadowRoot\n ? getNestedShadowActiveElement(shadowRoot.activeElement.shadowRoot)\n : shadowRoot.activeElement\n : undefined;\n};\n/**\n * returns active element from document or from nested shadowdoms\n */\nexport var getActiveElement = function () {\n return (document.activeElement\n ? document.activeElement.shadowRoot\n ? getNestedShadowActiveElement(document.activeElement.shadowRoot)\n : document.activeElement\n : undefined); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes\n */\nexport var focusInside = function (topNode) {\n var activeElement = document && getActiveElement();\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).some(function (node) { return contains(node, activeElement) || focusInsideIframe(node); });\n};\n","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function () {\n var activeElement = document && getActiveElement();\n if (!activeElement) {\n return false;\n }\n // this does not support setting FOCUS_ALLOW within shadow dom\n return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadioElement)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadioElement(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n // IE11 has no Set(array) constructor\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n // using filter to support IE11\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n // focus is inside\n if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n // new focus\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n // old focus\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n // first element\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n // last element\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n // jump out, but not on the guard\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n // focus above lock\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n // focus below lock\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n // index is inside tab order, but outside Lock\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n // do nothing\n return undefined;\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode.host || node.parentNode, parents);\n }\n return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || contains(common, topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n // TODO: add assert here?\n return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { filterAutoFocusable, getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n return function (node) { var _a; \n // @ts-expect-error\n return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n // no Set(dstNodes) for IE11 :(\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n // remap to dstNodes\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * given top node(s) and the last active element return the element to be focused next\n * @param topNode\n * @param lastNode\n */\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = document && getActiveElement();\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var visibilityCache = new Map();\n var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = filterAutoFocusable(anyFocusable.map(function (_a) {\n var node = _a.node;\n return node;\n })).filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n return {\n node: autoFocusable && autoFocusable.length\n ? pickFirstFocus(autoFocusable)\n : pickFirstFocus(filterAutoFocusable(innerNodes)),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\n/**\n * return list of focusable elements inside a given top node\n * @deprecated use {@link getFocusableIn}. Yep, there is typo in the function name\n */\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var visibilityCache = new Map();\n var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n var innerElements = getTabbableNodes(entries, visibilityCache)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n/**\n * return list of focusable elements inside a given top node\n */\nexport var getFocusableIn = getFocusabledIn;\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n if ('focus' in target) {\n target.focus(focusOptions);\n }\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * Sets focus at a given node. The last focused element will help to determine which element(first or last) should be focused.\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @param topNode\n * @param lastNode\n * @param options\n */\nexport var setFocus = function (topNode, lastNode, options) {\n if (options === void 0) { options = {}; }\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n // tslint:disable-next-line:no-console\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node, options.focusOptions);\n guardCount--;\n }\n};\n","import { getFocusableIn } from 'focus-lock';\nimport {\n type BentoFocusTrapFocusableIn,\n type BentoFocusTrapHorizontalNavigationEvent,\n type BentoFocusTrapVerticalNavigationEvent,\n} from '@/components/focus-trap/focus-trap.types';\n\n/**\n * Perform callback before next re-paint frame of browser.\n *\n * @param action\n * @returns\n */\nexport const deferAction = (callback: FrameRequestCallback) => requestAnimationFrame(callback);\n\n/**\n * Get's the index number of the current node inside an array of focusable elements.\n *\n * @param node an HTMLElement node\n * @param nodes an array of focusable elements\n * @returns\n */\nconst getNodeIndex = (node: Element, nodes: Array<BentoFocusTrapFocusableIn>) => {\n const index = nodes.findIndex(item => item.node === node);\n return index === -1 ? 0 : index;\n};\n\n/**\n * Retrieves the next focusable element using a factor to either choose\n * the next or previous focusable element.\n *\n * @param factor a number +1 or -1\n * @param element the element to checks for focusable elements inside of\n * @returns\n */\nexport const getNextFocusableElement = (factor, element): HTMLElement => {\n const currentFocusedEl = document.activeElement;\n const focusableElements = getFocusableIn(element);\n const nextIndex = getNodeIndex(currentFocusedEl, focusableElements) + factor;\n return focusableElements[nextIndex]?.node || (currentFocusedEl as HTMLElement);\n};\n\n/**\n * Returns an object is if keyboard event key is an arrow previous or next key.\n * this changes depending on if the arrow navigation is horizontal or vertical.\n *\n * @param event\n * @param arrowOrder\n * @returns { isArrowNext: boolean, isArrowPrev: boolean }\n */\nexport const getArrowType = (\n event: KeyboardEvent,\n arrowOrder: Array<BentoFocusTrapVerticalNavigationEvent> | Array<BentoFocusTrapHorizontalNavigationEvent>\n) => {\n const eventKey = event.key.toLowerCase();\n return {\n isArrowNext: eventKey === arrowOrder[0],\n isArrowPrev: eventKey === arrowOrder[1],\n };\n};\n\n/**\n * Default scrolling into view options\n */\nexport const SCROLL_INTO_VIEW_OPTIONS: ScrollIntoViewOptions = {\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n};\n","export enum BentoFocusTrapArrowNavigationDirection {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n}\n\nexport enum BentoFocusTrapVerticalNavigationEvent {\n ARROW_UP = 'arrowup',\n ARROW_DOWN = 'arrowdown',\n}\n\nexport enum BentoFocusTrapHorizontalNavigationEvent {\n ARROW_LEFT = 'arrowleft',\n ARROW_RIGHT = 'arrowright',\n}\n\nexport interface BentoFocusTrapFocusableIn {\n node: HTMLElement;\n /**\n * tab index\n */\n index: number;\n /**\n * true, if this node belongs to a Lock\n */\n lockItem: boolean;\n /**\n * true, if this node is a focus-guard (system node)\n */\n guard: boolean;\n}\n","import { computed, onBeforeUnmount, onMounted, type Ref, ref, watch } from 'vue';\nimport moveFocusInside, { focusInside, focusIsHidden } from 'focus-lock';\nimport {\n deferAction,\n getArrowType,\n getNextFocusableElement,\n SCROLL_INTO_VIEW_OPTIONS,\n} from '@/utils/ts/focus-trap.utils';\nimport {\n BentoFocusTrapArrowNavigationDirection,\n BentoFocusTrapHorizontalNavigationEvent,\n BentoFocusTrapVerticalNavigationEvent,\n} from '../focus-trap.types';\n\nexport const useTrapArrowKeys = (\n el: Ref<HTMLElement>,\n isActivated: Ref<boolean>,\n arrowNavigation: BentoFocusTrapArrowNavigationDirection\n) => {\n const lastFocusedElement = ref<EventTarget | null>(null);\n\n const isHorizontalArrowNavigation = computed(\n () => arrowNavigation === BentoFocusTrapArrowNavigationDirection.HORIZONTAL\n );\n\n const isVerticalArrowNavigation = computed(\n () => arrowNavigation === BentoFocusTrapArrowNavigationDirection.VERTICAL\n );\n\n const arrowOrder = computed(() =>\n isVerticalArrowNavigation.value\n ? Object.values(BentoFocusTrapVerticalNavigationEvent)\n : Object.values(BentoFocusTrapHorizontalNavigationEvent)\n );\n\n /**\n * Set focus back inside the element area, giving the last focus element\n * `focus-lock` can determine the next interable element to focus on.\n */\n const setFocusInside = () => {\n const isFocusOnBody = document.activeElement === document.body;\n if (isFocusOnBody || focusIsHidden() || !lastFocusedElement.value) {\n if (el.value && !focusInside(el.value)) {\n moveFocusInside(el.value, lastFocusedElement.value as HTMLElement, {\n focusOptions: { preventScroll: true },\n });\n }\n lastFocusedElement.value = document.activeElement;\n }\n };\n\n /**\n * If focus trap is disabled then return focus to last focus element, parent node or simply the document body.\n */\n const disable = () => {\n const focusOnDestroyEl =\n (lastFocusedElement.value as HTMLElement) || (el.value?.parentNode as HTMLElement) || document.body;\n if (focusOnDestroyEl) {\n focusOnDestroyEl.focus();\n }\n };\n\n /**\n * On blur, trap the focus inside!\n */\n const onBlur = () => {\n if (!isActivated.value) {\n return;\n }\n deferAction(setFocusInside);\n };\n\n /**\n * If the no arrow navigation is enabled\n * or if the currently focus element is a textarea or an input then prevent navigation.\n */\n const shouldPreventNavigation = () => {\n if (!isVerticalArrowNavigation.value && !isHorizontalArrowNavigation.value) {\n return false;\n }\n\n const currentTag = document.activeElement?.tagName.toLowerCase();\n const possibleFormControls = isVerticalArrowNavigation.value ? ['textarea', 'select'] : ['input', 'textarea'];\n return currentTag ? possibleFormControls.includes(currentTag) : false;\n };\n\n /**\n * When an arrow key is pressed then navigate to the next focusable element.\n * If trap is disabled or is content editable then prevent arrow navigation.\n *\n * @param event on keyboard press event\n */\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n !isActivated.value ||\n (document.activeElement as HTMLElement).isContentEditable ||\n shouldPreventNavigation()\n ) {\n return;\n }\n\n const { isArrowNext, isArrowPrev } = getArrowType(event, arrowOrder.value);\n if (isArrowPrev || isArrowNext) {\n event.preventDefault();\n event.stopPropagation();\n if (el.value) {\n const focusableEl = getNextFocusableElement(isArrowPrev ? 1 : -1, el.value);\n focusableEl.focus();\n if ('scrollIntoView' in focusableEl) {\n const options =\n 'scrollBehavior' in document.documentElement.style ? SCROLL_INTO_VIEW_OPTIONS : false;\n focusableEl.scrollIntoView(options);\n }\n }\n }\n };\n\n watch(\n () => isActivated.value,\n isActivatedVal => {\n if (isActivatedVal) {\n setFocusInside();\n } else {\n disable();\n }\n }\n );\n\n onMounted(() => {\n if (!isActivated.value) {\n return;\n }\n setFocusInside();\n });\n\n onBeforeUnmount(() => {\n if (!isActivated.value) {\n return;\n }\n disable();\n });\n\n return {\n onKeyDown,\n onBlur,\n };\n};\n","<template>\n <div\n v-if=\"hasSlot('default')\"\n ref=\"root\"\n class=\"b-focus-trap\"\n data-testid=\"focus-trap\"\n tabindex=\"-1\"\n v-on=\"arrowNavigation ? { keydown: onKeyDown } : {}\"\n @focusout=\"onBlur\"\n @keydown.esc=\"handleKeydownEscape\"\n >\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n import { computed, type PropType, ref, toRef, useSlots } from 'vue';\n import { useHasSlot } from '@/composables';\n import { useHandleLayers } from './composables/use-handle-layers';\n import { type BentoFocusTrapOptions, useTrapAll } from './composables/use-trap-all';\n import { useTrapArrowKeys } from './composables/use-trap-arrow-keys';\n import { BentoFocusTrapArrowNavigationDirection } from './focus-trap.types';\n\n const props = defineProps({\n /**\n * Enables / Disables arrow navigation as well can determine the type of arrow navigation.\n * The types of arrow navigation are horizontal and vertical.\n */\n arrowNavigation: {\n type: String as PropType<BentoFocusTrapArrowNavigationDirection>,\n default: undefined,\n validator: (value: BentoFocusTrapArrowNavigationDirection) =>\n Object.values(BentoFocusTrapArrowNavigationDirection).includes(value),\n },\n /**\n * Enables / disables the focus trap.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n /**\n * Enables / disables the focus trap for all keys.\n */\n trapAll: {\n type: Boolean,\n default: false,\n },\n /**\n * Configurations for the focus-trap when trap-all is active.\n */\n trapAllOptions: {\n type: Object as PropType<BentoFocusTrapOptions>,\n default: undefined,\n },\n });\n\n const root = ref<HTMLElement | null>(null);\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n\n const activateTrapAll = computed(() => {\n return props.trapAll && !props.disabled && !props.arrowNavigation;\n });\n const activateTrapArrowKeysOnly = computed(() => {\n return !props.disabled && !props.trapAll;\n });\n\n useTrapAll(root, activateTrapAll, toRef(props, 'trapAllOptions'));\n\n const { handleKeydownEscape } = useHandleLayers(root);\n const { onKeyDown, onBlur } = useTrapArrowKeys(root, activateTrapArrowKeysOnly, props.arrowNavigation);\n</script>\n\n<script lang=\"ts\">\n /**\n * Locks the focus inside an element for a11y navigation.\n * Useful for things like modals, popovers, etc...\n *\n * @example\n * import { BentoFocusTrap, BentoButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFocusTrap, BentoButton },\n * template: `\n * <div id=\"import-choice\">\n * <bento-focus-trap>\n * Make a choice to proceed further!\n * <bento-button>Yes</bento-button>\n * <bento-button>No</bento-button>\n * </bento-focus-trap>\n * </div>\n * `\n * };\n */\n export default {\n name: 'bento-focus-trap',\n };\n</script>\n\n<style lang=\"scss\" scoped>\n .b-focus-trap {\n outline: none;\n }\n</style>\n"],"names":["useHandleLayers","elRef","elementWithPopover","ref","stop","useMutationObserver","mutations","hasPopover","mutation","ariaExpandedElement","node","handleKeydownEscape","event","roleBlockPropagationList","roleExpandedBlockPropagationList","tagBlockPropagationList","el","htmlEl","tag","role","isElementDialog","isRoleWithOwnEscapeHandler","isRoleWithOwnConditionalEscapeHandler","isTagWithOwnEscapeHandler","isSelf","isRef","onUnmounted","candidateSelectors","candidateSelector","NoElement","matches","getRootNode","element","_element$getRootNode","_isInert","lookUp","_node$getAttribute","inertAtt","inert","result","isContentEditable","_node$getAttribute2","attValue","getCandidates","includeContainer","filter","candidates","_getCandidatesIteratively","elements","options","elementsToCheck","assigned","content","nestedCandidates","validCandidate","shadowRoot","validShadowRoot","_nestedCandidates","hasTabIndex","getTabIndex","getSortOrderTabIndex","isScope","tabIndex","sortOrderedTabbables","a","b","isInput","isHiddenInput","isDetailsWithSummary","child","getCheckedRadio","nodes","form","i","isTabbableRadio","radioScope","queryRadios","name","radioSet","err","checked","isRadio","isNonTabbableRadio","isNodeAttached","_nodeRoot","nodeRoot","nodeRootHost","attached","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isZeroArea","_node$getBoundingClie","width","height","isHidden","_ref","displayCheck","getShadowRoot","visible","isDirectSummary","nodeUnderDetails","originalNode","parentElement","rootNode","isDisabledFromFieldset","parentNode","isNodeMatchingSelectorFocusable","isNodeMatchingSelectorTabbable","isShadowRootTabbable","shadowHostNode","_sortByOrder","regularTabbables","orderedTabbables","item","candidateTabindex","acc","sortable","tabbable","container","focusable","isTabbable","focusableCandidateSelector","isFocusable","_arrayLikeToArray","r","e","_arrayWithoutHoles","_defineProperty","t","_toPropertyKey","_iterableToArray","_nonIterableSpread","ownKeys","o","_objectSpread2","_toConsumableArray","_unsupportedIterableToArray","_toPrimitive","activeFocusTraps","trapStack","trap","activeTrap","trapIndex","isSelectableInput","isEscapeEvent","isTabEvent","isKeyForward","isKeyBackward","delay","fn","valueOrHandler","value","_len","params","_key","getActualTarget","internalTrapStack","createFocusTrap","userOptions","doc","config","state","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","composedPath","tabbableNodes","getNodeForOption","_ref2","_ref2$hasFallback","hasFallback","_ref2$params","optionValue","getInitialFocusNode","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","focusableNodes","lastTabbableNode","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","forward","nodeIdx","group","g","_getActiveElement","activeElement","_tryFocus","getReturnFocusNode","previousActiveElement","findNextNavNode","_ref3","target","_ref3$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","_ref4","destinationGroupIndex","destinationGroup","lastOfGroupIndex","_ref5","_destinationGroupIndex","_destinationGroup","checkPointerDown","checkFocusIn","targetContained","nextNode","navAcrossContainers","mruContainerIdx","mruTabIdx","n","checkKeyNav","checkTabKey","checkEscapeKey","checkClick","addListeners","removeListeners","checkDomRemoval","isFocusedNodeRemoved","removedNodes","mutationObserver","updateObservedNodes","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","finishActivation","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","returnFocus","finishDeactivation","pauseOptions","unpauseOptions","containerElements","elementsAsArray","paused","onPause","onPostPause","onUnpause","onPostUnpause","useTrapAll","isActivated","focusTrap","isElementVisible","useElementVisibility","watch","unrefElement","isActivatedVal","isElementVisibleVal","optionsVal","additionalContainers","restOptions","containers","_a","FOCUS_GROUP","FOCUS_DISABLED","FOCUS_ALLOW","FOCUS_AUTO","FOCUS_NO_AUTOFOCUS","toArray","ret","asArray","isElementHidden","computedStyle","getParentNode","isTopNode","isVisibleUncached","checkParent","isVisibleCached","visibilityCache","cached","isAutoFocusAllowedUncached","isAutoFocusAllowed","isAutoFocusAllowedCached","cache","getDataset","isHTMLButtonElement","isHTMLInputElement","isRadioElement","notHiddenInput","attribute","isGuard","isNotAGuard","isDefined","x","tabSort","tabDiff","indexDiff","orderByTabIndex","filterNegative","keepGuards","index","data","tabbables","queryTabbables","queryGuardTabbables","getFocusablesWithShadowDom","parent","withGuards","getFocusables","parents","getParentAutofocusables","parentFocus","filterFocusable","filterAutoFocusable","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","topNode","contains","scope","filterNested","contained","l","j","position","_","getTopParent","getAllAffectedNodes","currentNode","getNestedShadowActiveElement","getActiveElement","focusInFrame","frame","focusInsideIframe","focusInside","focusIsHidden","findSelectedRadio","correctNode","correctNodes","resultSet","pickFirstFocus","pickFocusable","NEW_FOCUS","newFocus","innerNodes","outerNodes","lastNode","cnt","firstFocus","lastFocus","isOnGuard","activeIndex","lastIndex","lastNodeInside","firstNodeIndex","lastNodeIndex","correctedNodes","correctedIndex","correctedIndexDiff","returnFirstNode","returnLastNode","getParents","getCommonParent","nodeA","nodeB","parentsA","parentsB","currentParent","getTopCommonParent","baseActiveElement","leftEntry","rightEntries","activeElements","leftEntries","topCommon","entry","subEntry","common","allParentAutofocusables","entries","findAutoFocused","autoFocusables","reorderNodes","srcNodes","dstNodes","remap","entity","getFocusMerge","commonParent","anyFocusable","innerElements","orderedInnerElements","newId","autoFocusable","getFocusabledIn","getFocusableIn","focusOn","focusOptions","guardCount","lockDisabled","setFocus","deferAction","callback","getNodeIndex","getNextFocusableElement","factor","currentFocusedEl","focusableElements","nextIndex","getArrowType","arrowOrder","eventKey","SCROLL_INTO_VIEW_OPTIONS","BentoFocusTrapArrowNavigationDirection","BentoFocusTrapArrowNavigationDirection2","BentoFocusTrapVerticalNavigationEvent","BentoFocusTrapVerticalNavigationEvent2","BentoFocusTrapHorizontalNavigationEvent","BentoFocusTrapHorizontalNavigationEvent2","useTrapArrowKeys","arrowNavigation","lastFocusedElement","isHorizontalArrowNavigation","computed","isVerticalArrowNavigation","setFocusInside","disable","focusOnDestroyEl","onBlur","shouldPreventNavigation","currentTag","possibleFormControls","onKeyDown","isArrowNext","isArrowPrev","focusableEl","onMounted","onBeforeUnmount","__default__","root","slots","useSlots","hasSlot","useHasSlot","activateTrapAll","props","activateTrapArrowKeysOnly","toRef"],"mappings":"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","x_google_ignoreList":[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as i, toRefs as r, computed as l, onMounted as c } from "vue";
|
|
2
|
-
import { B as u } from "./typography.
|
|
3
|
-
import {
|
|
4
|
-
import { B as d } from "./button-actions.
|
|
2
|
+
import { B as u } from "./typography.C8lPlsbD.js";
|
|
3
|
+
import { b as _ } from "./button.Ctj3rkxw.js";
|
|
4
|
+
import { B as d } from "./button-actions.VSc47LLH.js";
|
|
5
5
|
import { n as f } from "./_plugin-vue2_normalizer.CeySl7Fu.js";
|
|
6
6
|
import "../assets/footer-actions.css";
|
|
7
7
|
const p = {}, g = /* @__PURE__ */ i({
|
|
@@ -93,4 +93,4 @@ const w = b.exports;
|
|
|
93
93
|
export {
|
|
94
94
|
w as F
|
|
95
95
|
};
|
|
96
|
-
//# sourceMappingURL=footer-actions.
|
|
96
|
+
//# sourceMappingURL=footer-actions.z-api8J_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footer-actions.
|
|
1
|
+
{"version":3,"file":"footer-actions.z-api8J_.js","sources":["../../src/components/internal/footer-actions/footer-actions.vue"],"sourcesContent":["<template>\n <div class=\"b-footer-actions\">\n <div class=\"b-footer-actions__wrapper\">\n <bento-typography v-if=\"actionsLabel\" class=\"b-footer-actions__label\" el=\"span\" variant=\"body\" stronger>\n {{ actionsLabel }}\n </bento-typography>\n\n <bento-button-actions\n v-if=\"alignedActions.leftAligned\"\n class=\"b-footer-actions__left-group\"\n :actions=\"alignedActions.leftAligned\"\n layout=\"buttons-start\"\n ></bento-button-actions>\n\n <bento-button-actions\n class=\"b-footer-actions__right-group\"\n :actions=\"alignedActions.rightAligned\"\n layout=\"buttons-end\"\n ></bento-button-actions>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { BentoTypography } from '@/components/typography';\n import { computed, onMounted, type PropType, toRefs } from 'vue';\n import { BentoButtonActions, type BentoButtonActionsList, BentoButtonVariant } from '@/components/button';\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 * But you may change the color of 1-st action to red with 'critial' key\n * Not more than 3 action buttons can be provided\n * Or 2 action buttons and 1 Label for them\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`: Vue Icon from the library `@adyen/ui-assets-icons-16`.\n *\n * ```\n * [{\n * title: 'Primary',2\n * event: () => { ... },\n * icon: FourPeopleIcon\n * }, {\n * title: 'Secondary',\n * event: () => { ... }\n * }]\n * ```\n */\n actions: {\n type: Array as PropType<BentoButtonActionsList>,\n required: true,\n },\n /**\n * Text label that is displayed left to the action buttons\n */\n actionsLabel: {\n type: String,\n default: null,\n },\n /**\n * If passed - sets first button color to red\n */\n destructiveActions: {\n type: Boolean,\n default: false,\n },\n });\n\n const { actions, destructiveActions } = toRefs(props);\n\n const alignedActions = computed(() => {\n const rightAlignedButtons =\n actions.value.length < 3 ? actions.value : actions.value.slice(0, actions.value.length - 1);\n\n // Add red color to the 1-st Action button\n rightAlignedButtons[0].critical = destructiveActions.value || rightAlignedButtons[0].critical;\n\n return {\n leftAligned:\n actions.value.length === 3\n ? [\n {\n ...actions.value[actions.value.length - 1],\n variant: BentoButtonVariant.SECONDARY,\n },\n ]\n : null,\n rightAligned: [...rightAlignedButtons],\n };\n });\n\n onMounted(() => {\n if (props.actions && props.actions.length > 3) {\n throw new Error('Not more than 3 action buttons may be provided to Bento Modal default variant');\n }\n\n if (props.actionsLabel && props.actions && props.actions.length > 2) {\n throw new Error(\n 'Not more than 2 action buttons may be provided with actions label to Bento Modal default variant'\n );\n }\n });\n</script>\n\n<script lang=\"ts\">\n /**\n * Internal component to handle the logic of displaying actions in default Modal and Sidepanel\n\n * @example\n * import { FooterActions } from '@/components/internal/footer-actions';\n *\n * export default {\n * components: { FooterActions },\n * template: `\n * <footer-actions :actions=\"BentoButtonActionsList\" actions-label=\"Label\" :destructive-actions=\"true\" />\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./footer-actions.scss\" />\n"],"names":["__default__","actions","destructiveActions","toRefs","props","alignedActions","computed","rightAlignedButtons","BentoButtonVariant","onMounted"],"mappings":";;;;;;AA+HI,MAAAA,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAlDA,EAAA,SAAAC,GAAA,oBAAAC,EAAA,IAAAC,EAAAC,CAAA,GAEAC,IAAAC,EAAA,MAAA;AACI,YAAAC,IAAAN,EAAA,MAAA,SAAA,IAAAA,EAAA,QAAAA,EAAA,MAAA,MAAA,GAAAA,EAAA,MAAA,SAAA,CAAA;AAIA,aAAAM,EAAA,CAAA,EAAA,WAAAL,EAAA,SAAAK,EAAA,CAAA,EAAA,UAEA;AAAA,QAAO,aAAAN,EAAA,MAAA,WAAA,IAAA;AAAA,UAGO;AAAA,YACI,GAAAA,EAAA,MAAAA,EAAA,MAAA,SAAA,CAAA;AAAA,YAC6C,SAAAO,EAAA;AAAA,UACb;AAAA,QAChC,IAAA;AAAA,QAEJ,cAAA,CAAA,GAAAD,CAAA;AAAA,MAC2B;AAAA,IACzC,CAAA;AAGJ,WAAAE,EAAA,MAAA;AACI,UAAAL,EAAA,WAAAA,EAAA,QAAA,SAAA;AACI,cAAA,IAAA,MAAA,+EAAA;AAGJ,UAAAA,EAAA,gBAAAA,EAAA,WAAAA,EAAA,QAAA,SAAA;AACI,cAAA,IAAA;AAAA,UAAU;AAAA,QACN;AAAA,IAER,CAAA;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field.D_2g7vaP.js","sources":["../../src/utils/ts/form-field/form-field.ts"],"sourcesContent":["import { type FormFieldEmits } from '../../../types/form-field';\n\n/**\n * Provides standard emit functions for form-field components\n *\n * @param emit The emit function\n */\nexport function useFormFieldEmits<T>(emit: FormFieldEmits<T>) {\n /**\n * Provides standard emit function for the value/model-value for form-field components\n *\n * @param value The value being emitted from the component\n */\n function emitValue(value: T) {\n emit('update:model-value', value);\n emit('input', value);\n }\n\n return { emitValue };\n}\n"],"names":["useFormFieldEmits","emit","emitValue","value"],"mappings":"AAOO,SAASA,EAAqBC,GAAyB;AAM1D,WAASC,EAAUC,GAAU;AACzB,IAAAF,EAAK,sBAAsBE,CAAK,GAChCF,EAAK,SAASE,CAAK;AAAA,
|
|
1
|
+
{"version":3,"file":"form-field.D_2g7vaP.js","sources":["../../src/utils/ts/form-field/form-field.ts"],"sourcesContent":["import { type FormFieldEmits } from '../../../types/form-field';\n\n/**\n * Provides standard emit functions for form-field components\n *\n * @param emit The emit function\n */\nexport function useFormFieldEmits<T>(emit: FormFieldEmits<T>) {\n /**\n * Provides standard emit function for the value/model-value for form-field components\n *\n * @param value The value being emitted from the component\n */\n function emitValue(value: T) {\n emit('update:model-value', value);\n emit('input', value);\n }\n\n return { emitValue };\n}\n"],"names":["useFormFieldEmits","emit","emitValue","value"],"mappings":"AAOO,SAASA,EAAqBC,GAAyB;AAM1D,WAASC,EAAUC,GAAU;AACzB,IAAAF,EAAK,sBAAsBE,CAAK,GAChCF,EAAK,SAASE,CAAK;AAAA,EACvB;AAEA,SAAO,EAAE,WAAAD,EAAA;AACb;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { defineComponent as n, useSlots as c, computed as a, provide as d, toRef as y } from "vue";
|
|
2
|
-
import { B as f } from "./alert.
|
|
2
|
+
import { B as f } from "./alert.BESCd8iS.js";
|
|
3
3
|
import { u } from "./use-has-slot.C9lQZ6nz.js";
|
|
4
4
|
import { F as v } from "./form-layout.types.bZW9iR6_.js";
|
|
5
5
|
import { n as l } from "./_plugin-vue2_normalizer.CeySl7Fu.js";
|
|
6
|
-
import { B as p,
|
|
6
|
+
import { B as p, a as g } from "./typography.C8lPlsbD.js";
|
|
7
7
|
import "../assets/form-layout-title.css";
|
|
8
8
|
const h = {}, b = /* @__PURE__ */ n({
|
|
9
9
|
...h,
|
|
@@ -185,13 +185,13 @@ var k = function() {
|
|
|
185
185
|
w,
|
|
186
186
|
!1,
|
|
187
187
|
null,
|
|
188
|
-
"
|
|
188
|
+
"374afe64"
|
|
189
189
|
);
|
|
190
190
|
const Q = D.exports;
|
|
191
191
|
export {
|
|
192
192
|
K as a,
|
|
193
|
-
|
|
194
|
-
|
|
193
|
+
M as b,
|
|
194
|
+
Q as c,
|
|
195
195
|
J as f
|
|
196
196
|
};
|
|
197
|
-
//# sourceMappingURL=form-layout-title.
|
|
197
|
+
//# sourceMappingURL=form-layout-title.Bbq05nMT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-layout-title.CdC1T4gs.js","sources":["../../src/components/form-layout/form-layout.vue","../../src/components/form-layout/components/form-layout-field-tip/form-layout-tip.types.ts","../../src/components/form-layout/components/form-layout-field-tip/form-layout-field-tip.vue","../../src/components/form-layout/components/form-layout-group/form-layout-group.types.ts","../../src/components/form-layout/components/form-layout-group/form-layout-group.vue","../../src/components/form-layout/components/form-layout-title/form-layout-title.vue"],"sourcesContent":["<template>\n <component :is=\"formLayoutElement\" class=\"b-form-layout\" role=\"form\" @submit=\"emit('submit', $event)\">\n <bento-alert v-if=\"hasSlot('error-message')\" class=\"b-form-layout__error-message\" type=\"critical\">\n <template #description>\n <slot name=\"error-message\" />\n </template>\n </bento-alert>\n\n <slot />\n\n <div v-if=\"hasActions\" class=\"b-form-layout__actions-container\">\n <div class=\"b-form-layout__actions\">\n <slot name=\"actions-left\" />\n </div>\n\n <div class=\"b-form-layout__actions\">\n <slot name=\"actions-right\" />\n </div>\n </div>\n </component>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, provide, toRef, useSlots } from 'vue';\n import { BentoAlert } from '@/components/alert';\n import { useHasSlot } from '@/composables';\n import { FORM_LAYOUT_LOADING_INJECTION_KEY } from './form-layout.types';\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n\n const emit = defineEmits([\"submit\"]);\n\n const props = defineProps({\n /**\n * Renders the form layout as an HTML `form`\n */\n form: { type: Boolean, default: false },\n\n /**\n * Sets the state of the form and its fields to\n * a read only status.\n */\n loading: { type: Boolean, default: false },\n });\n\n const formLayoutElement = computed(() => (props.form ? 'form' : 'div'));\n const hasActions = computed(() => hasSlot('actions-left') || hasSlot('actions-right'));\n\n provide(FORM_LAYOUT_LOADING_INJECTION_KEY, toRef(props, 'loading'));\n</script>\n\n<script lang=\"ts\">\n /**\n * Form layout component is a pre-designed layout that serves\n * as a starting point for creating a form.\n *\n * It can include various common form components:\n * input field, dropdown, date picker, checkbox group, radio group,\n * textarea, etc.\n *\n * Form layout is context agnostic and can be dropped in different\n * places, for example in modals, side panels or pages.\n *\n * @example\n * import { BentoFormLayout, BentoFormLayoutFieldTip } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFormLayout, BentoFormLayoutFieldTip },\n * template: `\n * <bento-form-layout>\n * <template #error-message>There is an error. Correct the highlighted field.</template>\n *\n * <bento-input-field>Input field</bento-input-field>\n *\n * <bento-form-layout-field-tip>\n * <bento-dropdown label=\"Dropdown\" :items=\"dropdownItems\" placeholder=\"Select an animal\" />\n * <template #message>This is a small tip that can be used in small spaces</template>\n * </bento-form-layout-field-tip>\n *\n * <bento-form-layout-title subsection>\n * Section title\n * <template #description>Optional section description</template>\n * </bento-form-layout-title>\n * </bento-form-layout>\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./form-layout.scss\" />\n","import { type BentoAlertTypeOption } from '@/components/alert/alert.types';\n\nexport type BentoFormLayoutFieldTipTypeOption = `${BentoAlertTypeOption}`;\nexport const BentoFormLayoutFieldTipTypeOptions = ['warning', 'critical', 'highlight', 'success'];\n","<template>\n <div class=\"b-form-layout-field-tip\">\n <slot />\n <bento-alert v-if=\"hasSlot('message')\" :id=\"id\" variant=\"tip\" :type=\"type\">\n <template #description>\n <slot name=\"message\" />\n </template>\n </bento-alert>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { type PropType, useSlots } from 'vue';\n import {\n type BentoFormLayoutFieldTipTypeOption,\n BentoFormLayoutFieldTipTypeOptions,\n } from './form-layout-tip.types';\n import { BentoAlert } from '@/components/alert';\n import { useHasSlot } from '@/composables/use-has-slot/use-has-slot';\n\n defineProps({\n /**\n * Type of a alert; set a distinctive icon and color. Defaults to highlight.\n * @values highlight, success, critical, warning\n */\n type: {\n type: String as PropType<BentoFormLayoutFieldTipTypeOption>,\n default: 'highlight',\n validator: (value: BentoFormLayoutFieldTipTypeOption) => BentoFormLayoutFieldTipTypeOptions.includes(value),\n },\n /**\n * Unique identifier to the form field. Used for accessibility.\n */\n id: {\n type: String,\n default: undefined,\n },\n });\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n</script>\n\n<script lang=\"ts\">\n /**\n * You can help users provide accurate and well formatted information\n * by using various elements that come with an input field.\n *\n * Use description/supporting text to add additional context to the\n * field or guidance how to format the input correctly.\n * Because description is always visible it should be the first\n * choice in providing guidance.\n *\n * @example\n * import { BentoFormLayoutFieldTip } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFormLayoutFieldTip },\n * template: `\n * <bento-form-layout-field-tip>\n * <bento-dropdown label=\"Dropdown\" :items=\"dropdownItems\" placeholder=\"Select an animal\" />\n *\n * <template #message>This is a small tip that can be used in small spaces</template>\n * </bento-form-layout-field-tip>\n * `\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./form-layout-field-tip.scss\" />\n","export type BentoLayoutGroupProportions =\n | '33-33-33'\n | '50-50'\n | '25-75'\n | '75-25'\n | '33-66'\n | '66-33'\n | '25'\n | '33'\n | '50'\n | '100';\n\nexport const BentoLayoutGroupProportions = [\n '100',\n '50',\n '33',\n '25',\n '66-33',\n '33-66',\n '75-25',\n '25-75',\n '50-50',\n '33-33-33',\n];\n","<template>\n <div class=\"b-form-layout-group\" :class=\"conditionalClasses\">\n <slot></slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, type PropType } from 'vue';\n import { BentoLayoutGroupProportions } from './form-layout-group.types';\n\n // Default proportion\n const DEFAULT_PROPORTION = 100;\n\n const props = defineProps({\n /**\n * The layout of the pair group of components.\n * This will render the components within the width of the proportions.\n * Only two colums are available.\n *\n * If only one value is entered, then it will assume there's only one child in the group.\n * If two values are entered, the first value will be use for the first child and the second\n * value for the second child.\n *\n * If the value entered is not listed in the example\n * list below it will use 100% by default.\n * @example\n * '33-33-33'\n * '50-50'\n * '25-75'\n * '75-25'\n * '33-66'\n * '66-33'\n * '25'\n * '33'\n * '50'\n * '100'\n */\n layout: {\n type: String as PropType<BentoLayoutGroupProportions>,\n default: '100',\n validator: (value: BentoLayoutGroupProportions) => BentoLayoutGroupProportions.includes(value),\n },\n });\n\n // Sets DEFAULT_PROPORTION by default if `layout` is not in the list\n const computedLayout = computed(() =>\n BentoLayoutGroupProportions.includes(props.layout) ? props.layout : DEFAULT_PROPORTION\n );\n\n const conditionalClasses = computed(() => ({\n // Transform into column if the layout is unsupported\n 'b-form-layout-group--column': !BentoLayoutGroupProportions.includes(props.layout),\n // Assings the correct layout class\n [`b-form-layout-group--${computedLayout.value}`]: true,\n }));\n</script>\n\n<script lang=\"ts\">\n /**\n * Use to provide horizontal layouts to build forms\n * with two fields per line.\n *\n * These can be used for field combinations,\n * such as post code and city or title and first name.\n *\n * @example\n * import { BentoFormLayoutGroup } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFormLayoutGroup },\n * template: `\n * <bento-form-layout-group>\n * <first-element />\n * <second-element />\n * </bento-form-layout-group>\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./form-layout-group.scss\" />\n","<template>\n <div class=\"b-form-layout-title\" :class=\"conditionalClasses\">\n <bento-typography :el=\"el\" variant=\"title\" :medium=\"isSection\">\n <slot />\n </bento-typography>\n\n <bento-typography v-if=\"hasSlot('description')\" class=\"b-form-layout-title__description\" el=\"span\" wide>\n <slot name=\"description\" />\n </bento-typography>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, useSlots } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { useHasSlot } from '@/composables';\n\n const slots = useSlots();\n\n const props = defineProps({\n /**\n * Defines if the Form Layout title is\n * a \"section\" or a \"subsection\".\n * Default is \"section\" (false). Turn into \"true\" for \"subsection\"\n */\n subsection: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the HTML DOM element.\n * @values h1, h2, h3, h4, h5, h6, div, p, span\n */\n el: {\n type: BentoTypography.props.el.type,\n required: true,\n validator: (value: BentoTypographyElement) => Object.values(BentoTypographyElement).includes(value),\n },\n });\n\n // Uses \"medium\" typography if it is a section title\n const isSection = computed(() => !props.subsection);\n const hasSlot = useHasSlot(slots);\n const conditionalClasses = computed(() => ({\n 'b-form-layout-title--subsection': props.subsection,\n }));\n</script>\n\n<script lang=\"ts\">\n /**\n * If you’re building a lengthy form, organise related\n * fields into sections and, if needed, subsections.\n *\n * A form can have a \"Section Title\" and multiple \"Subsection titles\".\n *\n * One of the values provided in @see BentoTypographyElement must always be provided as a string\n * to define correct HTML sementic from the application's context\n *\n * @example\n * import { BentoFormLayoutTitle } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFormLayoutTitle },\n * template: `\n * <bento-form-layout-title subsection el=\"h2\">\n * Title\n * <template #description>Description text</template>\n * </bento-form-layout-title>\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./form-layout-title.scss\" />\n"],"names":["__default__$3","slots","useSlots","hasSlot","useHasSlot","formLayoutElement","computed","props","hasActions","provide","FORM_LAYOUT_LOADING_INJECTION_KEY","toRef","BentoFormLayoutFieldTipTypeOptions","__default__$2","BentoLayoutGroupProportions","__default__$1","DEFAULT_PROPORTION","computedLayout","conditionalClasses","__default__","isSection"],"mappings":";;;;;;;AAwFI,MAAAA,IAAA,CAAA;;;;;;;;;;;;;;;;iBA5DAC,IAAAC,EAAA,GACAC,IAAAC,EAAAH,CAAA,GAiBAI,IAAAC,EAAA,MAAAC,EAAA,OAAA,SAAA,KAAA,GACAC,IAAAF,EAAA,MAAAH,EAAA,cAAA,KAAAA,EAAA,eAAA,CAAA;AAEA,WAAAM,EAAAC,GAAAC,EAAAJ,GAAA,SAAA,CAAA;;;;;;;;;;;;;;;;;;qBC9CGK,IAAA,CAAA,WAAA,YAAA,aAAA,SAAA,GC+DHC,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;AA3BA,UAAAZ,IAAAC,EAAA,GACAC,IAAAC,EAAAH,CAAA;;;;;;;;;;;;;;;;;qBC5BGa,IAAA;AAAA,EAAoC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAEJ,GCuDIC,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAnEAC,IAAA,KAkCAC,IAAAX;AAAA,MAAuB,MAAAQ,EAAA,SAAAP,EAAA,MAAA,IAAAA,EAAA,SAAAS;AAAA,IACiD,GAGxEE,IAAAZ,EAAA,OAAA;AAAA;AAAA,MAA2C,+BAAA,CAAAQ,EAAA,SAAAP,EAAA,MAAA;AAAA;AAAA,MAE0C,CAAA,wBAAAU,EAAA,KAAA,EAAA,GAAA;AAAA,IAE/B,EAAA;;;;;;;;;;;;;;;qBCmBtDE,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;iBAvDAlB,IAAAC,EAAA,GAyBAkB,IAAAd,EAAA,MAAA,CAAAC,EAAA,UAAA,GACAJ,IAAAC,EAAAH,CAAA,GACAiB,IAAAZ,EAAA,OAAA;AAAA,MAA2C,mCAAAC,EAAA;AAAA,IACE,EAAA;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"form-layout-title.Bbq05nMT.js","sources":["../../src/components/form-layout/form-layout.vue","../../src/components/form-layout/components/form-layout-field-tip/form-layout-tip.types.ts","../../src/components/form-layout/components/form-layout-field-tip/form-layout-field-tip.vue","../../src/components/form-layout/components/form-layout-group/form-layout-group.types.ts","../../src/components/form-layout/components/form-layout-group/form-layout-group.vue","../../src/components/form-layout/components/form-layout-title/form-layout-title.vue"],"sourcesContent":["<template>\n <component :is=\"formLayoutElement\" class=\"b-form-layout\" role=\"form\" @submit=\"emit('submit', $event)\">\n <bento-alert v-if=\"hasSlot('error-message')\" class=\"b-form-layout__error-message\" type=\"critical\">\n <template #description>\n <slot name=\"error-message\" />\n </template>\n </bento-alert>\n\n <slot />\n\n <div v-if=\"hasActions\" class=\"b-form-layout__actions-container\">\n <div class=\"b-form-layout__actions\">\n <slot name=\"actions-left\" />\n </div>\n\n <div class=\"b-form-layout__actions\">\n <slot name=\"actions-right\" />\n </div>\n </div>\n </component>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, provide, toRef, useSlots } from 'vue';\n import { BentoAlert } from '@/components/alert';\n import { useHasSlot } from '@/composables';\n import { FORM_LAYOUT_LOADING_INJECTION_KEY } from './form-layout.types';\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n\n const emit = defineEmits([\"submit\"]);\n\n const props = defineProps({\n /**\n * Renders the form layout as an HTML `form`\n */\n form: { type: Boolean, default: false },\n\n /**\n * Sets the state of the form and its fields to\n * a read only status.\n */\n loading: { type: Boolean, default: false },\n });\n\n const formLayoutElement = computed(() => (props.form ? 'form' : 'div'));\n const hasActions = computed(() => hasSlot('actions-left') || hasSlot('actions-right'));\n\n provide(FORM_LAYOUT_LOADING_INJECTION_KEY, toRef(props, 'loading'));\n</script>\n\n<script lang=\"ts\">\n /**\n * Form layout component is a pre-designed layout that serves\n * as a starting point for creating a form.\n *\n * It can include various common form components:\n * input field, dropdown, date picker, checkbox group, radio group,\n * textarea, etc.\n *\n * Form layout is context agnostic and can be dropped in different\n * places, for example in modals, side panels or pages.\n *\n * @example\n * import { BentoFormLayout, BentoFormLayoutFieldTip } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFormLayout, BentoFormLayoutFieldTip },\n * template: `\n * <bento-form-layout>\n * <template #error-message>There is an error. Correct the highlighted field.</template>\n *\n * <bento-input-field>Input field</bento-input-field>\n *\n * <bento-form-layout-field-tip>\n * <bento-dropdown label=\"Dropdown\" :items=\"dropdownItems\" placeholder=\"Select an animal\" />\n * <template #message>This is a small tip that can be used in small spaces</template>\n * </bento-form-layout-field-tip>\n *\n * <bento-form-layout-title subsection>\n * Section title\n * <template #description>Optional section description</template>\n * </bento-form-layout-title>\n * </bento-form-layout>\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./form-layout.scss\" />\n","import { type BentoAlertTypeOption } from '@/components/alert/alert.types';\n\nexport type BentoFormLayoutFieldTipTypeOption = `${BentoAlertTypeOption}`;\nexport const BentoFormLayoutFieldTipTypeOptions = ['warning', 'critical', 'highlight', 'success'];\n","<template>\n <div class=\"b-form-layout-field-tip\">\n <slot />\n <bento-alert v-if=\"hasSlot('message')\" :id=\"id\" variant=\"tip\" :type=\"type\">\n <template #description>\n <slot name=\"message\" />\n </template>\n </bento-alert>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { type PropType, useSlots } from 'vue';\n import {\n type BentoFormLayoutFieldTipTypeOption,\n BentoFormLayoutFieldTipTypeOptions,\n } from './form-layout-tip.types';\n import { BentoAlert } from '@/components/alert';\n import { useHasSlot } from '@/composables/use-has-slot/use-has-slot';\n\n defineProps({\n /**\n * Type of a alert; set a distinctive icon and color. Defaults to highlight.\n * @values highlight, success, critical, warning\n */\n type: {\n type: String as PropType<BentoFormLayoutFieldTipTypeOption>,\n default: 'highlight',\n validator: (value: BentoFormLayoutFieldTipTypeOption) => BentoFormLayoutFieldTipTypeOptions.includes(value),\n },\n /**\n * Unique identifier to the form field. Used for accessibility.\n */\n id: {\n type: String,\n default: undefined,\n },\n });\n\n const slots = useSlots();\n const hasSlot = useHasSlot(slots);\n</script>\n\n<script lang=\"ts\">\n /**\n * You can help users provide accurate and well formatted information\n * by using various elements that come with an input field.\n *\n * Use description/supporting text to add additional context to the\n * field or guidance how to format the input correctly.\n * Because description is always visible it should be the first\n * choice in providing guidance.\n *\n * @example\n * import { BentoFormLayoutFieldTip } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFormLayoutFieldTip },\n * template: `\n * <bento-form-layout-field-tip>\n * <bento-dropdown label=\"Dropdown\" :items=\"dropdownItems\" placeholder=\"Select an animal\" />\n *\n * <template #message>This is a small tip that can be used in small spaces</template>\n * </bento-form-layout-field-tip>\n * `\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./form-layout-field-tip.scss\" />\n","export type BentoLayoutGroupProportions =\n | '33-33-33'\n | '50-50'\n | '25-75'\n | '75-25'\n | '33-66'\n | '66-33'\n | '25'\n | '33'\n | '50'\n | '100';\n\nexport const BentoLayoutGroupProportions = [\n '100',\n '50',\n '33',\n '25',\n '66-33',\n '33-66',\n '75-25',\n '25-75',\n '50-50',\n '33-33-33',\n];\n","<template>\n <div class=\"b-form-layout-group\" :class=\"conditionalClasses\">\n <slot></slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, type PropType } from 'vue';\n import { BentoLayoutGroupProportions } from './form-layout-group.types';\n\n // Default proportion\n const DEFAULT_PROPORTION = 100;\n\n const props = defineProps({\n /**\n * The layout of the pair group of components.\n * This will render the components within the width of the proportions.\n * Only two colums are available.\n *\n * If only one value is entered, then it will assume there's only one child in the group.\n * If two values are entered, the first value will be use for the first child and the second\n * value for the second child.\n *\n * If the value entered is not listed in the example\n * list below it will use 100% by default.\n * @example\n * '33-33-33'\n * '50-50'\n * '25-75'\n * '75-25'\n * '33-66'\n * '66-33'\n * '25'\n * '33'\n * '50'\n * '100'\n */\n layout: {\n type: String as PropType<BentoLayoutGroupProportions>,\n default: '100',\n validator: (value: BentoLayoutGroupProportions) => BentoLayoutGroupProportions.includes(value),\n },\n });\n\n // Sets DEFAULT_PROPORTION by default if `layout` is not in the list\n const computedLayout = computed(() =>\n BentoLayoutGroupProportions.includes(props.layout) ? props.layout : DEFAULT_PROPORTION\n );\n\n const conditionalClasses = computed(() => ({\n // Transform into column if the layout is unsupported\n 'b-form-layout-group--column': !BentoLayoutGroupProportions.includes(props.layout),\n // Assings the correct layout class\n [`b-form-layout-group--${computedLayout.value}`]: true,\n }));\n</script>\n\n<script lang=\"ts\">\n /**\n * Use to provide horizontal layouts to build forms\n * with two fields per line.\n *\n * These can be used for field combinations,\n * such as post code and city or title and first name.\n *\n * @example\n * import { BentoFormLayoutGroup } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFormLayoutGroup },\n * template: `\n * <bento-form-layout-group>\n * <first-element />\n * <second-element />\n * </bento-form-layout-group>\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./form-layout-group.scss\" />\n","<template>\n <div class=\"b-form-layout-title\" :class=\"conditionalClasses\">\n <bento-typography :el=\"el\" variant=\"title\" :medium=\"isSection\">\n <slot />\n </bento-typography>\n\n <bento-typography v-if=\"hasSlot('description')\" class=\"b-form-layout-title__description\" el=\"span\" wide>\n <slot name=\"description\" />\n </bento-typography>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, useSlots } from 'vue';\n import { BentoTypography, BentoTypographyElement } from '@/components/typography';\n import { useHasSlot } from '@/composables';\n\n const slots = useSlots();\n\n const props = defineProps({\n /**\n * Defines if the Form Layout title is\n * a \"section\" or a \"subsection\".\n * Default is \"section\" (false). Turn into \"true\" for \"subsection\"\n */\n subsection: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the HTML DOM element.\n * @values h1, h2, h3, h4, h5, h6, div, p, span\n */\n el: {\n type: BentoTypography.props.el.type,\n required: true,\n validator: (value: BentoTypographyElement) => Object.values(BentoTypographyElement).includes(value),\n },\n });\n\n // Uses \"medium\" typography if it is a section title\n const isSection = computed(() => !props.subsection);\n const hasSlot = useHasSlot(slots);\n const conditionalClasses = computed(() => ({\n 'b-form-layout-title--subsection': props.subsection,\n }));\n</script>\n\n<script lang=\"ts\">\n /**\n * If you’re building a lengthy form, organize related\n * fields into sections and, if needed, subsections.\n *\n * A form can have a \"Section Title\" and multiple \"Subsection titles\".\n *\n * One of the values provided in @see BentoTypographyElement must always be provided as a string\n * to define correct HTML sementic from the application's context\n *\n * @example\n * import { BentoFormLayoutTitle } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoFormLayoutTitle },\n * template: `\n * <bento-form-layout-title subsection el=\"h2\">\n * Title\n * <template #description>Description text</template>\n * </bento-form-layout-title>\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./form-layout-title.scss\" />\n"],"names":["__default__$3","slots","useSlots","hasSlot","useHasSlot","formLayoutElement","computed","props","hasActions","provide","FORM_LAYOUT_LOADING_INJECTION_KEY","toRef","BentoFormLayoutFieldTipTypeOptions","__default__$2","BentoLayoutGroupProportions","__default__$1","DEFAULT_PROPORTION","computedLayout","conditionalClasses","__default__","isSection"],"mappings":";;;;;;;AAwFI,MAAAA,IAAA,CAAA;;;;;;;;;;;;;;;;iBA5DAC,IAAAC,EAAA,GACAC,IAAAC,EAAAH,CAAA,GAiBAI,IAAAC,EAAA,MAAAC,EAAA,OAAA,SAAA,KAAA,GACAC,IAAAF,EAAA,MAAAH,EAAA,cAAA,KAAAA,EAAA,eAAA,CAAA;AAEA,WAAAM,EAAAC,GAAAC,EAAAJ,GAAA,SAAA,CAAA;;;;;;;;;;;;;;;;;;qBC9CGK,IAAA,CAAA,WAAA,YAAA,aAAA,SAAA,GC+DHC,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;AA3BA,UAAAZ,IAAAC,EAAA,GACAC,IAAAC,EAAAH,CAAA;;;;;;;;;;;;;;;;;qBC5BGa,IAAA;AAAA,EAAoC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAEJ,GCuDIC,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAnEAC,IAAA,KAkCAC,IAAAX;AAAA,MAAuB,MAAAQ,EAAA,SAAAP,EAAA,MAAA,IAAAA,EAAA,SAAAS;AAAA,IACiD,GAGxEE,IAAAZ,EAAA,OAAA;AAAA;AAAA,MAA2C,+BAAA,CAAAQ,EAAA,SAAAP,EAAA,MAAA;AAAA;AAAA,MAE0C,CAAA,wBAAAU,EAAA,KAAA,EAAA,GAAA;AAAA,IAE/B,EAAA;;;;;;;;;;;;;;;qBCmBtDE,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;iBAvDAlB,IAAAC,EAAA,GAyBAkB,IAAAd,EAAA,MAAA,CAAAC,EAAA,UAAA,GACAJ,IAAAC,EAAAH,CAAA,GACAiB,IAAAZ,EAAA,OAAA;AAAA,MAA2C,mCAAAC,EAAA;AAAA,IACE,EAAA;;;;;;;;;;;;;;;;"}
|