bootstrap-vue-next 0.44.2 → 0.44.4
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/{BAccordion-CQIw-5xs.js → BAccordion-CJZMsvwP.js} +6 -6
- package/dist/{BAccordion-CQIw-5xs.js.map → BAccordion-CJZMsvwP.js.map} +1 -1
- package/dist/{BAccordion-BJcDjMYL.mjs → BAccordion-CNzV6f8e.mjs} +6 -6
- package/dist/{BAccordion-BJcDjMYL.mjs.map → BAccordion-CNzV6f8e.mjs.map} +1 -1
- package/dist/{BAlert-CVtoW2SX.js → BAlert-BnT7fF6B.js} +9 -9
- package/dist/{BAlert-CVtoW2SX.js.map → BAlert-BnT7fF6B.js.map} +1 -1
- package/dist/{BAlert-DaQxH8c1.mjs → BAlert-Qiyqq4rE.mjs} +9 -9
- package/dist/{BAlert-DaQxH8c1.mjs.map → BAlert-Qiyqq4rE.mjs.map} +1 -1
- package/dist/{BApp-CIu-zI8K.mjs → BApp-DJWC2mB8.mjs} +2 -2
- package/dist/{BApp-CIu-zI8K.mjs.map → BApp-DJWC2mB8.mjs.map} +1 -1
- package/dist/{BApp-cBKQc5Dd.js → BApp-DaM0UKIg.js} +2 -2
- package/dist/{BApp-cBKQc5Dd.js.map → BApp-DaM0UKIg.js.map} +1 -1
- package/dist/BAspect-BULTO240.js +50 -0
- package/dist/BAspect-BULTO240.js.map +1 -0
- package/dist/BAspect-CwokVvvn.mjs +44 -0
- package/dist/BAspect-CwokVvvn.mjs.map +1 -0
- package/dist/BAutocomplete-C7Odx4At.js +2342 -0
- package/dist/BAutocomplete-C7Odx4At.js.map +1 -0
- package/dist/BAutocomplete-Depalqe-.mjs +2336 -0
- package/dist/BAutocomplete-Depalqe-.mjs.map +1 -0
- package/dist/{BAvatar-C7Vc4wad.mjs → BAvatar-D7aFEXLH.mjs} +8 -8
- package/dist/{BAvatar-C7Vc4wad.mjs.map → BAvatar-D7aFEXLH.mjs.map} +1 -1
- package/dist/{BAvatar-BcQeFYZU.js → BAvatar-lefHkDuG.js} +8 -8
- package/dist/{BAvatar-BcQeFYZU.js.map → BAvatar-lefHkDuG.js.map} +1 -1
- package/dist/{BBadge-CKGGd4xB.js → BBadge-BBUcrujj.js} +5 -5
- package/dist/{BBadge-CKGGd4xB.js.map → BBadge-BBUcrujj.js.map} +1 -1
- package/dist/{BBadge-Dfkx4SMN.mjs → BBadge-D5ra3W5R.mjs} +5 -5
- package/dist/{BBadge-Dfkx4SMN.mjs.map → BBadge-D5ra3W5R.mjs.map} +1 -1
- package/dist/{BBreadcrumb-1Wxpf1iy.js → BBreadcrumb-BSsiwCNB.js} +4 -4
- package/dist/{BBreadcrumb-1Wxpf1iy.js.map → BBreadcrumb-BSsiwCNB.js.map} +1 -1
- package/dist/{BBreadcrumb-CR35-KcI.mjs → BBreadcrumb-amkzWyz6.mjs} +4 -4
- package/dist/{BBreadcrumb-CR35-KcI.mjs.map → BBreadcrumb-amkzWyz6.mjs.map} +1 -1
- package/dist/{BButton-1yV1UiT7.mjs → BButton-BRvIFnRm.mjs} +5 -5
- package/dist/{BButton-1yV1UiT7.mjs.map → BButton-BRvIFnRm.mjs.map} +1 -1
- package/dist/{BButton-BID3NrxE.js → BButton-DBRs8Pz_.js} +5 -5
- package/dist/{BButton-BID3NrxE.js.map → BButton-DBRs8Pz_.js.map} +1 -1
- package/dist/{BButton-BtCX70_2.mjs → BButton-DNmtqoqR.mjs} +5 -5
- package/dist/{BButton-BtCX70_2.mjs.map → BButton-DNmtqoqR.mjs.map} +1 -1
- package/dist/{BButton-C_bVBx8e.js → BButton-kykTWnBy.js} +5 -5
- package/dist/{BButton-C_bVBx8e.js.map → BButton-kykTWnBy.js.map} +1 -1
- package/dist/{BCard-Vf1haqo5.mjs → BCard-C1G8PO5k.mjs} +6 -6
- package/dist/{BCard-Vf1haqo5.mjs.map → BCard-C1G8PO5k.mjs.map} +1 -1
- package/dist/{BCard-CY6iY456.mjs → BCard-CJ822HyH.mjs} +3 -3
- package/dist/{BCard-CY6iY456.mjs.map → BCard-CJ822HyH.mjs.map} +1 -1
- package/dist/{BCard-D1J5OVRY.js → BCard-CSyEHz8Z.js} +3 -3
- package/dist/{BCard-D1J5OVRY.js.map → BCard-CSyEHz8Z.js.map} +1 -1
- package/dist/{BCard-BIQQg9Rx.js → BCard-CgbTFn3S.js} +6 -6
- package/dist/{BCard-BIQQg9Rx.js.map → BCard-CgbTFn3S.js.map} +1 -1
- package/dist/{BCarousel-BH6WIvJx.js → BCarousel-Be7z13f9.js} +10 -7
- package/dist/BCarousel-Be7z13f9.js.map +1 -0
- package/dist/{BCarousel-C3CA_wGV.mjs → BCarousel-D81alfFC.mjs} +10 -7
- package/dist/BCarousel-D81alfFC.mjs.map +1 -0
- package/dist/{BCloseButton-CgIVNv2g.js → BCloseButton-CN__Jjcj.js} +2 -2
- package/dist/{BCloseButton-CgIVNv2g.js.map → BCloseButton-CN__Jjcj.js.map} +1 -1
- package/dist/{BCloseButton-DrD0tpan.mjs → BCloseButton-CjgbR1Ec.mjs} +2 -2
- package/dist/{BCloseButton-DrD0tpan.mjs.map → BCloseButton-CjgbR1Ec.mjs.map} +1 -1
- package/dist/{BCol-GOE5drq_.js → BCol-0tZmpOme.js} +3 -3
- package/dist/{BCol-GOE5drq_.js.map → BCol-0tZmpOme.js.map} +1 -1
- package/dist/{BCol-BjC3q-su.mjs → BCol-C4v-TOX6.mjs} +3 -3
- package/dist/{BCol-BjC3q-su.mjs.map → BCol-C4v-TOX6.mjs.map} +1 -1
- package/dist/{BCollapse-DqeS5WyB.mjs → BCollapse-D-xTGkX_.mjs} +4 -4
- package/dist/{BCollapse-DqeS5WyB.mjs.map → BCollapse-D-xTGkX_.mjs.map} +1 -1
- package/dist/{BCollapse-BMSZfqqk.js → BCollapse-DZ1z2c8U.js} +4 -4
- package/dist/{BCollapse-BMSZfqqk.js.map → BCollapse-DZ1z2c8U.js.map} +1 -1
- package/dist/{BContainer-CdNYUb9S.js → BContainer-BZUI2qQv.js} +4 -4
- package/dist/{BContainer-CdNYUb9S.js.map → BContainer-BZUI2qQv.js.map} +1 -1
- package/dist/{BContainer-NRhwYcFj.mjs → BContainer-DjIGH6-y.mjs} +4 -4
- package/dist/{BContainer-NRhwYcFj.mjs.map → BContainer-DjIGH6-y.mjs.map} +1 -1
- package/dist/{BDateField-CRFFJ4Sj.mjs → BDateField-BJIq6gs9.mjs} +8 -6
- package/dist/{BDateField-CRFFJ4Sj.mjs.map → BDateField-BJIq6gs9.mjs.map} +1 -1
- package/dist/{BDateField-3Xb73vd-.js → BDateField-RWwEMIwd.js} +17 -15
- package/dist/{BDateField-3Xb73vd-.js.map → BDateField-RWwEMIwd.js.map} +1 -1
- package/dist/{BDatePicker-rdtRZlra.js → BDatePicker-BQN6qZXa.js} +74 -1556
- package/dist/BDatePicker-BQN6qZXa.js.map +1 -0
- package/dist/{BDatePicker-DPtAqGyV.mjs → BDatePicker-DfzZBWjU.mjs} +15 -1497
- package/dist/BDatePicker-DfzZBWjU.mjs.map +1 -0
- package/dist/{BDropdown-k-nulez8.mjs → BDropdown-BW_O8vPQ.mjs} +5 -5
- package/dist/{BDropdown-k-nulez8.mjs.map → BDropdown-BW_O8vPQ.mjs.map} +1 -1
- package/dist/{BDropdown-C2L69dLN.js → BDropdown-C1AxRj81.js} +15 -12
- package/dist/BDropdown-C1AxRj81.js.map +1 -0
- package/dist/{BDropdown-CrgX7oCn.js → BDropdown-CuVOxCzu.js} +5 -5
- package/dist/{BDropdown-CrgX7oCn.js.map → BDropdown-CuVOxCzu.js.map} +1 -1
- package/dist/{BDropdown-CKnx6hUH.mjs → BDropdown-DAHnN54Z.mjs} +15 -12
- package/dist/BDropdown-DAHnN54Z.mjs.map +1 -0
- package/dist/{BForm-B0YEolfQ.js → BForm-Bp7SFxiK.js} +2 -2
- package/dist/{BForm-B0YEolfQ.js.map → BForm-Bp7SFxiK.js.map} +1 -1
- package/dist/{BForm-ppPvhIuu.js → BForm-BqHUnHpU.js} +8 -7
- package/dist/{BForm-ppPvhIuu.js.map → BForm-BqHUnHpU.js.map} +1 -1
- package/dist/{BForm-DZW1uWD-.mjs → BForm-IL7Rf_27.mjs} +7 -6
- package/dist/{BForm-DZW1uWD-.mjs.map → BForm-IL7Rf_27.mjs.map} +1 -1
- package/dist/{BForm-CPHblWb2.mjs → BForm-Oh6PpdcD.mjs} +2 -2
- package/dist/{BForm-CPHblWb2.mjs.map → BForm-Oh6PpdcD.mjs.map} +1 -1
- package/dist/{BFormCheckbox-MEwee9Ij.js → BFormCheckbox-Bdk2rgVe.js} +6 -6
- package/dist/{BFormCheckbox-MEwee9Ij.js.map → BFormCheckbox-Bdk2rgVe.js.map} +1 -1
- package/dist/{BFormCheckbox-CsN1a4jm.mjs → BFormCheckbox-CcDK-lh1.mjs} +6 -6
- package/dist/{BFormCheckbox-CsN1a4jm.mjs.map → BFormCheckbox-CcDK-lh1.mjs.map} +1 -1
- package/dist/{BFormFile-BEHeBj6q.js → BFormFile-BWknj7fW.js} +5 -5
- package/dist/{BFormFile-BEHeBj6q.js.map → BFormFile-BWknj7fW.js.map} +1 -1
- package/dist/{BFormFile-CNtEA98J.mjs → BFormFile-Bf3GMYeX.mjs} +5 -5
- package/dist/{BFormFile-CNtEA98J.mjs.map → BFormFile-Bf3GMYeX.mjs.map} +1 -1
- package/dist/{BFormGroup-DBVGyJ-f.mjs → BFormGroup--38dFj0X.mjs} +9 -9
- package/dist/{BFormGroup-DBVGyJ-f.mjs.map → BFormGroup--38dFj0X.mjs.map} +1 -1
- package/dist/{BFormGroup-CGjb_pUi.js → BFormGroup-BwO1BZD1.js} +9 -9
- package/dist/{BFormGroup-CGjb_pUi.js.map → BFormGroup-BwO1BZD1.js.map} +1 -1
- package/dist/{BFormInput-4vCGzAoO.js → BFormInput-BuRSGYdY.js} +3 -3
- package/dist/{BFormInput-4vCGzAoO.js.map → BFormInput-BuRSGYdY.js.map} +1 -1
- package/dist/{BFormInput-DrZnHCLO.mjs → BFormInput-Dg9dbwHp.mjs} +3 -3
- package/dist/{BFormInput-DrZnHCLO.mjs.map → BFormInput-Dg9dbwHp.mjs.map} +1 -1
- package/dist/{BFormRadio-BXpiJTsS.mjs → BFormRadio-CRDbgMiR.mjs} +6 -6
- package/dist/{BFormRadio-BXpiJTsS.mjs.map → BFormRadio-CRDbgMiR.mjs.map} +1 -1
- package/dist/{BFormRadio-BzHsRe9X.js → BFormRadio-DuVYw-Vs.js} +6 -6
- package/dist/{BFormRadio-BzHsRe9X.js.map → BFormRadio-DuVYw-Vs.js.map} +1 -1
- package/dist/{BFormRating-Cq94zurU.mjs → BFormRating-Bb_ACp-9.mjs} +4 -4
- package/dist/{BFormRating-Cq94zurU.mjs.map → BFormRating-Bb_ACp-9.mjs.map} +1 -1
- package/dist/{BFormRating-_MVRGNOF.js → BFormRating-CNqf91vN.js} +4 -4
- package/dist/{BFormRating-_MVRGNOF.js.map → BFormRating-CNqf91vN.js.map} +1 -1
- package/dist/{BFormSelect-DbpJ_0j-.mjs → BFormSelect-Dg6OwMl-.mjs} +8 -7
- package/dist/{BFormSelect-DbpJ_0j-.mjs.map → BFormSelect-Dg6OwMl-.mjs.map} +1 -1
- package/dist/{BFormSelect-DFa1-5ez.js → BFormSelect-DqSojuY_.js} +10 -9
- package/dist/{BFormSelect-DFa1-5ez.js.map → BFormSelect-DqSojuY_.js.map} +1 -1
- package/dist/BFormSelectOption-BY4P8HOf.js +46 -0
- package/dist/BFormSelectOption-BY4P8HOf.js.map +1 -0
- package/dist/BFormSelectOption-O8cyyv3i.mjs +40 -0
- package/dist/BFormSelectOption-O8cyyv3i.mjs.map +1 -0
- package/dist/{BFormSpinbutton-DmzfRDeR.mjs → BFormSpinbutton-BLO0Yf36.mjs} +6 -6
- package/dist/{BFormSpinbutton-DmzfRDeR.mjs.map → BFormSpinbutton-BLO0Yf36.mjs.map} +1 -1
- package/dist/{BFormSpinbutton-DzJ071Gz.js → BFormSpinbutton-BaOTL1k1.js} +6 -6
- package/dist/{BFormSpinbutton-DzJ071Gz.js.map → BFormSpinbutton-BaOTL1k1.js.map} +1 -1
- package/dist/BFormTag-BUWEugEC.mjs +80 -0
- package/dist/BFormTag-BUWEugEC.mjs.map +1 -0
- package/dist/BFormTag-C7B-bX72.js +86 -0
- package/dist/BFormTag-C7B-bX72.js.map +1 -0
- package/dist/{BFormTags-pK9i3cOB.js → BFormTags-BFA6xbr3.js} +12 -88
- package/dist/BFormTags-BFA6xbr3.js.map +1 -0
- package/dist/{BFormTags-Cobh04P9.mjs → BFormTags-CJb4H67g.mjs} +13 -83
- package/dist/BFormTags-CJb4H67g.mjs.map +1 -0
- package/dist/{BFormTextarea-BtXarcjA.js → BFormTextarea-8c3B3kAI.js} +4 -4
- package/dist/{BFormTextarea-BtXarcjA.js.map → BFormTextarea-8c3B3kAI.js.map} +1 -1
- package/dist/{BFormTextarea-ClcoJrSM.mjs → BFormTextarea-BMk05ojJ.mjs} +4 -4
- package/dist/{BFormTextarea-ClcoJrSM.mjs.map → BFormTextarea-BMk05ojJ.mjs.map} +1 -1
- package/dist/{BFormValidFeedback-Ot8gdDST.js → BFormValidFeedback-DvTgwqSe.js} +3 -3
- package/dist/{BFormValidFeedback-Ot8gdDST.js.map → BFormValidFeedback-DvTgwqSe.js.map} +1 -1
- package/dist/{BFormValidFeedback-foz9BlkH.mjs → BFormValidFeedback-_Dgzm0Ag.mjs} +3 -3
- package/dist/{BFormValidFeedback-foz9BlkH.mjs.map → BFormValidFeedback-_Dgzm0Ag.mjs.map} +1 -1
- package/dist/{BImg-b_3eTiEq.mjs → BImg-BQqZfIM9.mjs} +5 -5
- package/dist/{BImg-b_3eTiEq.mjs.map → BImg-BQqZfIM9.mjs.map} +1 -1
- package/dist/{BImg-BrA0ZRS6.js → BImg-Dyy0N-WQ.js} +5 -5
- package/dist/{BImg-BrA0ZRS6.js.map → BImg-Dyy0N-WQ.js.map} +1 -1
- package/dist/BInputGroup-BScMw6Zr.js +31 -0
- package/dist/BInputGroup-BScMw6Zr.js.map +1 -0
- package/dist/BInputGroup-C7k0tS9j.mjs +25 -0
- package/dist/BInputGroup-C7k0tS9j.mjs.map +1 -0
- package/dist/{BInputGroup-B8fKBtip.mjs → BInputGroup-DpX10xwR.mjs} +4 -22
- package/dist/BInputGroup-DpX10xwR.mjs.map +1 -0
- package/dist/{BInputGroup-Cr0qLUds.js → BInputGroup-Duk6Jk0v.js} +2 -26
- package/dist/BInputGroup-Duk6Jk0v.js.map +1 -0
- package/dist/{BLink-DoYZ8dBl.mjs → BLink-Cz5YCsnv.mjs} +4 -4
- package/dist/{BLink-DoYZ8dBl.mjs.map → BLink-Cz5YCsnv.mjs.map} +1 -1
- package/dist/{BLink-DW7s8W_N.js → BLink-uemyYKst.js} +4 -4
- package/dist/{BLink-DW7s8W_N.js.map → BLink-uemyYKst.js.map} +1 -1
- package/dist/{BListGroup-ByYmtuCM.mjs → BListGroup-BmtN0xQ3.mjs} +3 -3
- package/dist/{BListGroup-ByYmtuCM.mjs.map → BListGroup-BmtN0xQ3.mjs.map} +1 -1
- package/dist/{BListGroup-clQNXk23.js → BListGroup-DuyMdAxJ.js} +3 -3
- package/dist/{BListGroup-clQNXk23.js.map → BListGroup-DuyMdAxJ.js.map} +1 -1
- package/dist/{BModal-TCXrZEZk.mjs → BModal-Br5xLT0-.mjs} +15 -12
- package/dist/BModal-Br5xLT0-.mjs.map +1 -0
- package/dist/{BModal-d3FKaKhA.js → BModal-D0LB339D.js} +15 -12
- package/dist/BModal-D0LB339D.js.map +1 -0
- package/dist/{BNav-BBr8213N.mjs → BNav-BRjdHsjC.mjs} +7 -7
- package/dist/{BNav-BBr8213N.mjs.map → BNav-BRjdHsjC.mjs.map} +1 -1
- package/dist/{BNav-BMAZcVDS.js → BNav-tYBwz1wU.js} +7 -7
- package/dist/{BNav-BMAZcVDS.js.map → BNav-tYBwz1wU.js.map} +1 -1
- package/dist/{BNavbar-BfYFzX1s.js → BNavbar-s9Ak5PnO.js} +6 -6
- package/dist/{BNavbar-BfYFzX1s.js.map → BNavbar-s9Ak5PnO.js.map} +1 -1
- package/dist/{BNavbar-DtgNmsyI.mjs → BNavbar-vN3_CMLn.mjs} +6 -6
- package/dist/{BNavbar-DtgNmsyI.mjs.map → BNavbar-vN3_CMLn.mjs.map} +1 -1
- package/dist/{BOffcanvas-YsVap-9w.js → BOffcanvas-D33pEfZe.js} +14 -11
- package/dist/BOffcanvas-D33pEfZe.js.map +1 -0
- package/dist/{BOffcanvas-BklEA-4x.mjs → BOffcanvas-jETHbtC3.mjs} +14 -11
- package/dist/BOffcanvas-jETHbtC3.mjs.map +1 -0
- package/dist/BOtpInput-CSCoKHP9.js +542 -0
- package/dist/BOtpInput-CSCoKHP9.js.map +1 -0
- package/dist/BOtpInput-Drfkt3x3.mjs +536 -0
- package/dist/BOtpInput-Drfkt3x3.mjs.map +1 -0
- package/dist/{BOverlay-Dg9YM7p1.js → BOverlay-B7vJAdHO.js} +6 -6
- package/dist/{BOverlay-Dg9YM7p1.js.map → BOverlay-B7vJAdHO.js.map} +1 -1
- package/dist/{BOverlay-DOfvBAZb.mjs → BOverlay-BGxH9JVy.mjs} +6 -6
- package/dist/{BOverlay-DOfvBAZb.mjs.map → BOverlay-BGxH9JVy.mjs.map} +1 -1
- package/dist/{BPagination-9P9Xh3cN.js → BPagination-C0-4NVzW.js} +6 -6
- package/dist/{BPagination-9P9Xh3cN.js.map → BPagination-C0-4NVzW.js.map} +1 -1
- package/dist/{BPagination-B868NBmG.mjs → BPagination-CvoSN1He.mjs} +6 -6
- package/dist/{BPagination-B868NBmG.mjs.map → BPagination-CvoSN1He.mjs.map} +1 -1
- package/dist/{BPlaceholder-7UJ3Nyb3.mjs → BPlaceholder-C4AOg29f.mjs} +6 -6
- package/dist/{BPlaceholder-7UJ3Nyb3.mjs.map → BPlaceholder-C4AOg29f.mjs.map} +1 -1
- package/dist/{BPlaceholder-DPEVmogO.js → BPlaceholder-DYYYuNgR.js} +6 -6
- package/dist/{BPlaceholder-DPEVmogO.js.map → BPlaceholder-DYYYuNgR.js.map} +1 -1
- package/dist/{BProgress-Bdf5AncM.mjs → BProgress-BIqo6vLh.mjs} +4 -4
- package/dist/{BProgress-Bdf5AncM.mjs.map → BProgress-BIqo6vLh.mjs.map} +1 -1
- package/dist/{BProgress-CeEIdt1a.js → BProgress-Bc3ZSkac.js} +4 -4
- package/dist/{BProgress-CeEIdt1a.js.map → BProgress-Bc3ZSkac.js.map} +1 -1
- package/dist/{BRow-NaXJzpS-.mjs → BRow-BCEK3fe6.mjs} +4 -4
- package/dist/{BRow-NaXJzpS-.mjs.map → BRow-BCEK3fe6.mjs.map} +1 -1
- package/dist/{BRow-DGi1WkB9.js → BRow-tqMEhkZS.js} +4 -4
- package/dist/{BRow-DGi1WkB9.js.map → BRow-tqMEhkZS.js.map} +1 -1
- package/dist/{BSpinner-Kska3Bsd.js → BSpinner-8UMAINYb.js} +3 -3
- package/dist/{BSpinner-Kska3Bsd.js.map → BSpinner-8UMAINYb.js.map} +1 -1
- package/dist/{BSpinner-DlLxrIkh.mjs → BSpinner-BpnwONvx.mjs} +3 -3
- package/dist/{BSpinner-DlLxrIkh.mjs.map → BSpinner-BpnwONvx.mjs.map} +1 -1
- package/dist/{BTable-BiNbXnsR.js → BTable-Btzu1IJ_.js} +9 -9
- package/dist/{BTable-BiNbXnsR.js.map → BTable-Btzu1IJ_.js.map} +1 -1
- package/dist/{BTable-C__GSYX2.mjs → BTable-CjHMx8Yv.mjs} +9 -9
- package/dist/{BTable-C__GSYX2.mjs.map → BTable-CjHMx8Yv.mjs.map} +1 -1
- package/dist/{BTableSimple-fwaF0Kws.js → BTableSimple-BcdizuDm.js} +5 -5
- package/dist/{BTableSimple-fwaF0Kws.js.map → BTableSimple-BcdizuDm.js.map} +1 -1
- package/dist/{BTableSimple-eebTf2L5.mjs → BTableSimple-C901Z5V9.mjs} +5 -5
- package/dist/{BTableSimple-eebTf2L5.mjs.map → BTableSimple-C901Z5V9.mjs.map} +1 -1
- package/dist/{BTabs-7IT0dhVr.mjs → BTabs-DZEF9kgT.mjs} +7 -7
- package/dist/{BTabs-7IT0dhVr.mjs.map → BTabs-DZEF9kgT.mjs.map} +1 -1
- package/dist/{BTabs-BxwRSBMv.js → BTabs-DiYaJi22.js} +7 -7
- package/dist/{BTabs-BxwRSBMv.js.map → BTabs-DiYaJi22.js.map} +1 -1
- package/dist/{BTimeField-CZw1_K7v.mjs → BTimeField-DSWZeGYP.mjs} +7 -5
- package/dist/{BTimeField-CZw1_K7v.mjs.map → BTimeField-DSWZeGYP.mjs.map} +1 -1
- package/dist/{BTimeField-CngB6NOW.js → BTimeField-VTrtxGkI.js} +18 -16
- package/dist/{BTimeField-CngB6NOW.js.map → BTimeField-VTrtxGkI.js.map} +1 -1
- package/dist/{BToast-IYBku5Nr.mjs → BToast-B2rFKhLD.mjs} +10 -10
- package/dist/{BToast-IYBku5Nr.mjs.map → BToast-B2rFKhLD.mjs.map} +1 -1
- package/dist/{BToast-BraVbf4N.js → BToast-DCSZYXIi.js} +10 -10
- package/dist/{BToast-BraVbf4N.js.map → BToast-DCSZYXIi.js.map} +1 -1
- package/dist/{BTooltip-B2hE5Q6m.js → BTooltip-CryTO-SM.js} +3 -3
- package/dist/{BTooltip-B2hE5Q6m.js.map → BTooltip-CryTO-SM.js.map} +1 -1
- package/dist/{BTooltip-BuK_zb1B.mjs → BTooltip-DtpjIEBu.mjs} +3 -3
- package/dist/{BTooltip-BuK_zb1B.mjs.map → BTooltip-DtpjIEBu.mjs.map} +1 -1
- package/dist/{BootstrapVueOptions-CVxLmDvx.js → BootstrapVueOptions-BC3f7hMU.js} +4 -1
- package/dist/BootstrapVueOptions-BC3f7hMU.js.map +1 -0
- package/dist/{BootstrapVueOptions-Dtdn7_AJ.mjs → BootstrapVueOptions-BU3rzYio.mjs} +4 -1
- package/dist/BootstrapVueOptions-BU3rzYio.mjs.map +1 -0
- package/dist/{ConditionalTeleport-BDWcebyD.js → ConditionalTeleport-BJZk6HAx.js} +1 -1
- package/dist/{ConditionalTeleport-BDWcebyD.js.map → ConditionalTeleport-BJZk6HAx.js.map} +1 -1
- package/dist/{ConditionalTeleport-B4KYZIM6.mjs → ConditionalTeleport-BNsziElf.mjs} +1 -1
- package/dist/{ConditionalTeleport-B4KYZIM6.mjs.map → ConditionalTeleport-BNsziElf.mjs.map} +1 -1
- package/dist/{ConditionalWrapper-ZqZKYsic.js → ConditionalWrapper-Cc7EIszd.js} +1 -1
- package/dist/{ConditionalWrapper-ZqZKYsic.js.map → ConditionalWrapper-Cc7EIszd.js.map} +1 -1
- package/dist/{ConditionalWrapper-BR9CKZNU.mjs → ConditionalWrapper-D9ovtbHB.mjs} +1 -1
- package/dist/{ConditionalWrapper-BR9CKZNU.mjs.map → ConditionalWrapper-D9ovtbHB.mjs.map} +1 -1
- package/dist/{DateRangeFieldInput-bXDqGVUe.js → DateRangeFieldInput-Ce7PM3PJ.js} +22 -20
- package/dist/{DateRangeFieldInput-bXDqGVUe.js.map → DateRangeFieldInput-Ce7PM3PJ.js.map} +1 -1
- package/dist/{DateRangeFieldInput-bA6IK9lx.mjs → DateRangeFieldInput-DiVuhf4Y.mjs} +5 -3
- package/dist/{DateRangeFieldInput-bA6IK9lx.mjs.map → DateRangeFieldInput-DiVuhf4Y.mjs.map} +1 -1
- package/dist/PopperContent-BTUvv6Tu.mjs +1431 -0
- package/dist/PopperContent-BTUvv6Tu.mjs.map +1 -0
- package/dist/PopperContent-CSwv2Fih.js +1515 -0
- package/dist/PopperContent-CSwv2Fih.js.map +1 -0
- package/dist/VisuallyHidden-Bbwok8oL.mjs +174 -0
- package/dist/VisuallyHidden-Bbwok8oL.mjs.map +1 -0
- package/dist/VisuallyHidden-DaN947I0.js +222 -0
- package/dist/VisuallyHidden-DaN947I0.js.map +1 -0
- package/dist/VisuallyHiddenInput-Biq4Qv5j.js +147 -0
- package/dist/VisuallyHiddenInput-Biq4Qv5j.js.map +1 -0
- package/dist/VisuallyHiddenInput-D1SjTCVH.mjs +141 -0
- package/dist/VisuallyHiddenInput-D1SjTCVH.mjs.map +1 -0
- package/dist/bootstrap-vue-next.css +147 -0
- package/dist/bootstrap-vue-next.mjs +62 -57
- package/dist/bootstrap-vue-next.umd.js +67 -59
- package/dist/{classes-D6JE1Dex.mjs → classes-B0E5Y78Y.mjs} +1 -1
- package/dist/{classes-D6JE1Dex.mjs.map → classes-B0E5Y78Y.mjs.map} +1 -1
- package/dist/{classes-vdSVs0gA.js → classes-D5wrmmVs.js} +1 -1
- package/dist/{classes-vdSVs0gA.js.map → classes-D5wrmmVs.js.map} +1 -1
- package/dist/components/BAccordion/BAccordionItem.vue.d.mts +1 -1
- package/dist/components/BAccordion/BAccordionItem.vue.d.ts +1 -1
- package/dist/components/BAspect/BAspect.vue.d.mts +21 -0
- package/dist/components/BAspect/BAspect.vue.d.ts +21 -0
- package/dist/components/BAspect/index.d.mts +1 -0
- package/dist/components/BAspect/index.d.ts +1 -0
- package/dist/components/BAutocomplete/BAutocomplete.vue.d.mts +65 -0
- package/dist/components/BAutocomplete/BAutocomplete.vue.d.ts +65 -0
- package/dist/components/BAutocomplete/index.d.mts +1 -0
- package/dist/components/BAutocomplete/index.d.ts +1 -0
- package/dist/components/BButton/BButtonGroup.vue.d.mts +1 -1
- package/dist/components/BButton/BButtonGroup.vue.d.ts +1 -1
- package/dist/components/BCard/BCard.vue.d.mts +1 -1
- package/dist/components/BCard/BCard.vue.d.ts +1 -1
- package/dist/components/BCard/BCardImg.vue.d.mts +1 -1
- package/dist/components/BCard/BCardImg.vue.d.ts +1 -1
- package/dist/components/BCollapse/BCollapse.vue.d.mts +1 -1
- package/dist/components/BCollapse/BCollapse.vue.d.ts +1 -1
- package/dist/components/BDateField/BDateField.vue.d.mts +1 -1
- package/dist/components/BDateField/BDateField.vue.d.ts +1 -1
- package/dist/components/BDateField/BDateRangeField.vue.d.mts +1 -1
- package/dist/components/BDateField/BDateRangeField.vue.d.ts +1 -1
- package/dist/components/BDateField/BTimeRangeField.vue.d.mts +4 -4
- package/dist/components/BDateField/BTimeRangeField.vue.d.ts +4 -4
- package/dist/components/BDatePicker/BDatePicker.vue.d.mts +4 -4
- package/dist/components/BDatePicker/BDatePicker.vue.d.ts +4 -4
- package/dist/components/BDatePicker/BDateRangePicker.vue.d.mts +4 -4
- package/dist/components/BDatePicker/BDateRangePicker.vue.d.ts +4 -4
- package/dist/components/BDropdown/BDropdown.vue.d.mts +2 -2
- package/dist/components/BDropdown/BDropdown.vue.d.ts +2 -2
- package/dist/components/BForm/BFormDatalistBase.vue.d.mts +5 -5
- package/dist/components/BForm/BFormDatalistBase.vue.d.ts +5 -5
- package/dist/components/BForm/BFormInvalidFeedback.vue.d.mts +1 -1
- package/dist/components/BForm/BFormInvalidFeedback.vue.d.ts +1 -1
- package/dist/components/BForm/BFormValidFeedback.vue.d.mts +1 -1
- package/dist/components/BForm/BFormValidFeedback.vue.d.ts +1 -1
- package/dist/components/BFormCheckbox/BFormCheckbox.vue.d.mts +1 -1
- package/dist/components/BFormCheckbox/BFormCheckbox.vue.d.ts +1 -1
- package/dist/components/BFormFile/BFormFile.vue.d.mts +1 -1
- package/dist/components/BFormFile/BFormFile.vue.d.ts +1 -1
- package/dist/components/BFormGroup/BFormGroup.vue.d.mts +1 -1
- package/dist/components/BFormGroup/BFormGroup.vue.d.ts +1 -1
- package/dist/components/BFormSelect/BFormSelectBase.vue.d.mts +4 -4
- package/dist/components/BFormSelect/BFormSelectBase.vue.d.ts +4 -4
- package/dist/components/BImg/BImg.vue.d.mts +1 -1
- package/dist/components/BImg/BImg.vue.d.ts +1 -1
- package/dist/components/BInputGroup/BInputGroup.vue.d.mts +1 -1
- package/dist/components/BInputGroup/BInputGroup.vue.d.ts +1 -1
- package/dist/components/BListGroup/BListGroup.vue.d.mts +1 -1
- package/dist/components/BListGroup/BListGroup.vue.d.ts +1 -1
- package/dist/components/BModal/BModal.vue.d.mts +1 -1
- package/dist/components/BModal/BModal.vue.d.ts +1 -1
- package/dist/components/BNav/BNav.vue.d.mts +1 -1
- package/dist/components/BNav/BNav.vue.d.ts +1 -1
- package/dist/components/BNav/BNavItemDropdown.vue.d.mts +13 -13
- package/dist/components/BNav/BNavItemDropdown.vue.d.ts +13 -13
- package/dist/components/BNavbar/BNavbar.vue.d.mts +1 -1
- package/dist/components/BNavbar/BNavbar.vue.d.ts +1 -1
- package/dist/components/BNavbar/BNavbarNav.vue.d.mts +1 -1
- package/dist/components/BNavbar/BNavbarNav.vue.d.ts +1 -1
- package/dist/components/BOffcanvas/BOffcanvas.vue.d.mts +1 -1
- package/dist/components/BOffcanvas/BOffcanvas.vue.d.ts +1 -1
- package/dist/components/BOtpInput/BOtpInput.vue.d.mts +32 -0
- package/dist/components/BOtpInput/BOtpInput.vue.d.ts +32 -0
- package/dist/components/BOtpInput/index.d.mts +1 -0
- package/dist/components/BOtpInput/index.d.ts +1 -0
- package/dist/components/BPlaceholder/BPlaceholder.vue.d.mts +1 -1
- package/dist/components/BPlaceholder/BPlaceholder.vue.d.ts +1 -1
- package/dist/components/BPlaceholder/BPlaceholderButton.vue.d.mts +1 -1
- package/dist/components/BPlaceholder/BPlaceholderButton.vue.d.ts +1 -1
- package/dist/components/BProgress/BProgress.vue.d.mts +1 -1
- package/dist/components/BProgress/BProgress.vue.d.ts +1 -1
- package/dist/components/BSpinner/BSpinner.vue.d.mts +2 -2
- package/dist/components/BSpinner/BSpinner.vue.d.ts +2 -2
- package/dist/components/BTable/BTable.vue.d.mts +3 -3
- package/dist/components/BTable/BTable.vue.d.ts +3 -3
- package/dist/components/BTabs/BTabs.vue.d.mts +1 -1
- package/dist/components/BTabs/BTabs.vue.d.ts +1 -1
- package/dist/components/BTimeField/BTimeField.vue.d.mts +1 -1
- package/dist/components/BTimeField/BTimeField.vue.d.ts +1 -1
- package/dist/components/index.d.mts +3 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/composables/useFormSelect.d.mts +10 -4
- package/dist/composables/useFormSelect.d.ts +10 -4
- package/dist/{constants-CQ8ucyPI.mjs → constants-BSIK14yA.mjs} +1 -1
- package/dist/{constants-CQ8ucyPI.mjs.map → constants-BSIK14yA.mjs.map} +1 -1
- package/dist/{constants-DMR5FAE3.js → constants-hccBP09R.js} +1 -1
- package/dist/{constants-DMR5FAE3.js.map → constants-hccBP09R.js.map} +1 -1
- package/dist/{debounce-BfDJWP7y.js → debounce-C-5Oukxb.js} +2 -2
- package/dist/{debounce-BfDJWP7y.js.map → debounce-C-5Oukxb.js.map} +1 -1
- package/dist/{debounce-BIVtU5ek.mjs → debounce-C_wjWVGH.mjs} +2 -2
- package/dist/{debounce-BIVtU5ek.mjs.map → debounce-C_wjWVGH.mjs.map} +1 -1
- package/dist/{dist-Dn5blevd.mjs → dist-B10a-gZ8.mjs} +34 -2
- package/dist/{dist-Dn5blevd.mjs.map → dist-B10a-gZ8.mjs.map} +1 -1
- package/dist/{dist-B_c893QG.js → dist-BJ15ThEs.js} +45 -1
- package/dist/{dist-B_c893QG.js.map → dist-BJ15ThEs.js.map} +1 -1
- package/dist/{flattenFragments-DfLb4YB2.js → flattenFragments-C1WWqm25.js} +1 -1
- package/dist/{flattenFragments-DfLb4YB2.js.map → flattenFragments-C1WWqm25.js.map} +1 -1
- package/dist/{flattenFragments-B1W_x5L2.mjs → flattenFragments-ClbLQGqR.mjs} +1 -1
- package/dist/{flattenFragments-B1W_x5L2.mjs.map → flattenFragments-ClbLQGqR.mjs.map} +1 -1
- package/dist/{floating-ui.vue-CcfLuVCZ.mjs → floating-ui.vue-CAMaNcqI.mjs} +1 -1
- package/dist/{floating-ui.vue-CcfLuVCZ.mjs.map → floating-ui.vue-CAMaNcqI.mjs.map} +1 -1
- package/dist/{floating-ui.vue-B09oeNTW.js → floating-ui.vue-GXIS2sFG.js} +1 -1
- package/dist/{floating-ui.vue-B09oeNTW.js.map → floating-ui.vue-GXIS2sFG.js.map} +1 -1
- package/dist/{floatingUi-BLlCKrbj.js → floatingUi-Cs4rDXmO.js} +8 -8
- package/dist/{floatingUi-BLlCKrbj.js.map → floatingUi-Cs4rDXmO.js.map} +1 -1
- package/dist/{floatingUi-9NcUa5r7.mjs → floatingUi-DHMrP__c.mjs} +8 -8
- package/dist/{floatingUi-9NcUa5r7.mjs.map → floatingUi-DHMrP__c.mjs.map} +1 -1
- package/dist/{functions-C6AToZGR.mjs → functions-BcMenQqL.mjs} +1 -1
- package/dist/functions-BcMenQqL.mjs.map +1 -0
- package/dist/{functions-DCQKr6wc.js → functions-Bx1HDqMv.js} +1 -1
- package/dist/functions-Bx1HDqMv.js.map +1 -0
- package/dist/{getClasses-_sZDgS-l.mjs → getClasses-DaWzwT2S.mjs} +1 -1
- package/dist/{getClasses-_sZDgS-l.mjs.map → getClasses-DaWzwT2S.mjs.map} +1 -1
- package/dist/{getClasses-BQLj0MHF.js → getClasses-qqI6x4f4.js} +1 -1
- package/dist/{getClasses-BQLj0MHF.js.map → getClasses-qqI6x4f4.js.map} +1 -1
- package/dist/{getElement-D5DvkPzw.mjs → getElement-0_htvrFw.mjs} +1 -1
- package/dist/{getElement-D5DvkPzw.mjs.map → getElement-0_htvrFw.mjs.map} +1 -1
- package/dist/{getElement-BXXYfxYW.js → getElement-CxWWOx3K.js} +1 -1
- package/dist/{getElement-BXXYfxYW.js.map → getElement-CxWWOx3K.js.map} +1 -1
- package/dist/{object-CPeShLVx.js → object-BN7QwMcz.js} +1 -1
- package/dist/{object-CPeShLVx.js.map → object-BN7QwMcz.js.map} +1 -1
- package/dist/{object-B9ZW1_9f.mjs → object-CHQkkner.mjs} +1 -1
- package/dist/{object-B9ZW1_9f.mjs.map → object-CHQkkner.mjs.map} +1 -1
- package/dist/{registryAccess-B4xlltdn.mjs → registryAccess-C1Ti_nxW.mjs} +1 -1
- package/dist/{registryAccess-B4xlltdn.mjs.map → registryAccess-C1Ti_nxW.mjs.map} +1 -1
- package/dist/{registryAccess-Be_uJ4EV.js → registryAccess-D-YxwQJq.js} +1 -1
- package/dist/{registryAccess-Be_uJ4EV.js.map → registryAccess-D-YxwQJq.js.map} +1 -1
- package/dist/src/components/BAccordion/index.mjs +1 -1
- package/dist/src/components/BAccordion/index.umd.js +1 -1
- package/dist/src/components/BAlert/index.mjs +1 -1
- package/dist/src/components/BAlert/index.umd.js +1 -1
- package/dist/src/components/BApp/index.mjs +1 -1
- package/dist/src/components/BApp/index.umd.js +1 -1
- package/dist/src/components/BAspect/index.mjs +2 -0
- package/dist/src/components/BAspect/index.umd.js +3 -0
- package/dist/src/components/BAutocomplete/index.mjs +2 -0
- package/dist/src/components/BAutocomplete/index.umd.js +3 -0
- package/dist/src/components/BAvatar/index.mjs +1 -1
- package/dist/src/components/BAvatar/index.umd.js +1 -1
- package/dist/src/components/BBadge/index.mjs +1 -1
- package/dist/src/components/BBadge/index.umd.js +1 -1
- package/dist/src/components/BBreadcrumb/index.mjs +1 -1
- package/dist/src/components/BBreadcrumb/index.umd.js +1 -1
- package/dist/src/components/BButton/index.mjs +3 -3
- package/dist/src/components/BButton/index.umd.js +3 -3
- package/dist/src/components/BCard/index.mjs +2 -2
- package/dist/src/components/BCard/index.umd.js +2 -2
- package/dist/src/components/BCarousel/index.mjs +1 -1
- package/dist/src/components/BCarousel/index.umd.js +1 -1
- package/dist/src/components/BCol/index.mjs +1 -1
- package/dist/src/components/BCol/index.umd.js +1 -1
- package/dist/src/components/BCollapse/index.mjs +1 -1
- package/dist/src/components/BCollapse/index.umd.js +1 -1
- package/dist/src/components/BContainer/index.mjs +3 -3
- package/dist/src/components/BContainer/index.umd.js +3 -3
- package/dist/src/components/BDateField/index.mjs +1 -1
- package/dist/src/components/BDateField/index.umd.js +1 -1
- package/dist/src/components/BDatePicker/index.mjs +1 -1
- package/dist/src/components/BDatePicker/index.umd.js +1 -1
- package/dist/src/components/BDropdown/index.mjs +2 -2
- package/dist/src/components/BDropdown/index.umd.js +2 -2
- package/dist/src/components/BForm/index.mjs +3 -3
- package/dist/src/components/BForm/index.umd.js +3 -3
- package/dist/src/components/BFormCheckbox/index.mjs +1 -1
- package/dist/src/components/BFormCheckbox/index.umd.js +1 -1
- package/dist/src/components/BFormFile/index.mjs +1 -1
- package/dist/src/components/BFormFile/index.umd.js +1 -1
- package/dist/src/components/BFormGroup/index.mjs +1 -1
- package/dist/src/components/BFormGroup/index.umd.js +1 -1
- package/dist/src/components/BFormInput/index.mjs +1 -1
- package/dist/src/components/BFormInput/index.umd.js +1 -1
- package/dist/src/components/BFormRadio/index.mjs +1 -1
- package/dist/src/components/BFormRadio/index.umd.js +1 -1
- package/dist/src/components/BFormRating/index.mjs +1 -1
- package/dist/src/components/BFormRating/index.umd.js +1 -1
- package/dist/src/components/BFormSelect/index.mjs +2 -2
- package/dist/src/components/BFormSelect/index.umd.js +3 -3
- package/dist/src/components/BFormSpinbutton/index.mjs +1 -1
- package/dist/src/components/BFormSpinbutton/index.umd.js +1 -1
- package/dist/src/components/BFormTags/index.mjs +2 -1
- package/dist/src/components/BFormTags/index.umd.js +3 -2
- package/dist/src/components/BFormTextarea/index.mjs +1 -1
- package/dist/src/components/BFormTextarea/index.umd.js +1 -1
- package/dist/src/components/BImg/index.mjs +1 -1
- package/dist/src/components/BImg/index.umd.js +1 -1
- package/dist/src/components/BInputGroup/index.mjs +2 -1
- package/dist/src/components/BInputGroup/index.umd.js +3 -2
- package/dist/src/components/BLink/index.mjs +1 -1
- package/dist/src/components/BLink/index.umd.js +1 -1
- package/dist/src/components/BListGroup/index.mjs +1 -1
- package/dist/src/components/BListGroup/index.umd.js +1 -1
- package/dist/src/components/BModal/index.mjs +1 -1
- package/dist/src/components/BModal/index.umd.js +1 -1
- package/dist/src/components/BNav/index.mjs +1 -1
- package/dist/src/components/BNav/index.umd.js +1 -1
- package/dist/src/components/BNavbar/index.mjs +1 -1
- package/dist/src/components/BNavbar/index.umd.js +1 -1
- package/dist/src/components/BOffcanvas/index.mjs +1 -1
- package/dist/src/components/BOffcanvas/index.umd.js +1 -1
- package/dist/src/components/BOtpInput/index.mjs +2 -0
- package/dist/src/components/BOtpInput/index.umd.js +3 -0
- package/dist/src/components/BOverlay/index.mjs +1 -1
- package/dist/src/components/BOverlay/index.umd.js +1 -1
- package/dist/src/components/BPagination/index.mjs +1 -1
- package/dist/src/components/BPagination/index.umd.js +1 -1
- package/dist/src/components/BPlaceholder/index.mjs +1 -1
- package/dist/src/components/BPlaceholder/index.umd.js +1 -1
- package/dist/src/components/BPopover/index.mjs +1 -1
- package/dist/src/components/BPopover/index.umd.js +1 -1
- package/dist/src/components/BProgress/index.mjs +1 -1
- package/dist/src/components/BProgress/index.umd.js +1 -1
- package/dist/src/components/BRow/index.mjs +1 -1
- package/dist/src/components/BRow/index.umd.js +1 -1
- package/dist/src/components/BSpinner/index.mjs +1 -1
- package/dist/src/components/BSpinner/index.umd.js +1 -1
- package/dist/src/components/BTable/index.mjs +2 -2
- package/dist/src/components/BTable/index.umd.js +2 -2
- package/dist/src/components/BTabs/index.mjs +1 -1
- package/dist/src/components/BTabs/index.umd.js +1 -1
- package/dist/src/components/BTimeField/index.mjs +1 -1
- package/dist/src/components/BTimeField/index.umd.js +1 -1
- package/dist/src/components/BToast/index.mjs +1 -1
- package/dist/src/components/BToast/index.umd.js +1 -1
- package/dist/src/components/BTooltip/index.mjs +1 -1
- package/dist/src/components/BTooltip/index.umd.js +1 -1
- package/dist/src/components/index.mjs +64 -55
- package/dist/src/components/index.mjs.map +1 -1
- package/dist/src/components/index.umd.js +72 -60
- package/dist/src/components/index.umd.js.map +1 -1
- package/dist/src/composables/useColorMode/index.mjs +1 -1
- package/dist/src/composables/useColorMode/index.umd.js +1 -1
- package/dist/src/composables/useModal/index.mjs +1 -1
- package/dist/src/composables/useModal/index.umd.js +1 -1
- package/dist/src/composables/usePopover/index.mjs +2 -2
- package/dist/src/composables/usePopover/index.umd.js +2 -2
- package/dist/src/composables/useScrollLock/index.mjs +1 -1
- package/dist/src/composables/useScrollLock/index.umd.js +1 -1
- package/dist/src/composables/useScrollspy/index.mjs +2 -2
- package/dist/src/composables/useScrollspy/index.umd.js +2 -2
- package/dist/src/composables/useToast/index.mjs +1 -1
- package/dist/src/composables/useToast/index.umd.js +1 -1
- package/dist/src/composables/useToggle/index.mjs +1 -1
- package/dist/src/composables/useToggle/index.umd.js +1 -1
- package/dist/src/directives/BPopover/index.mjs +2 -2
- package/dist/src/directives/BPopover/index.umd.js +2 -2
- package/dist/src/directives/BScrollspy/index.mjs +2 -2
- package/dist/src/directives/BScrollspy/index.umd.js +2 -2
- package/dist/src/directives/BToggle/index.mjs +3 -3
- package/dist/src/directives/BToggle/index.umd.js +3 -3
- package/dist/src/directives/BTooltip/index.mjs +2 -2
- package/dist/src/directives/BTooltip/index.umd.js +2 -2
- package/dist/src/resolvers/index.mjs +1 -1
- package/dist/src/resolvers/index.umd.js +1 -1
- package/dist/src/types/index.mjs +1 -1
- package/dist/src/types/index.umd.js +1 -1
- package/dist/src/utils/index.mjs +1 -1
- package/dist/src/utils/index.umd.js +1 -1
- package/dist/{stringUtils-hUreqC0N.js → stringUtils-BwKOASdU.js} +2 -2
- package/dist/{stringUtils-hUreqC0N.js.map → stringUtils-BwKOASdU.js.map} +1 -1
- package/dist/{stringUtils-BP8rZgjn.mjs → stringUtils-CslYpDTt.mjs} +2 -2
- package/dist/{stringUtils-BP8rZgjn.mjs.map → stringUtils-CslYpDTt.mjs.map} +1 -1
- package/dist/types/BootstrapVueOptions.d.mts +7 -1
- package/dist/types/BootstrapVueOptions.d.ts +7 -1
- package/dist/types/ComponentProps.d.mts +63 -3
- package/dist/types/ComponentProps.d.ts +63 -3
- package/dist/types/ComponentSlots.d.mts +17 -0
- package/dist/types/ComponentSlots.d.ts +17 -0
- package/dist/{useAlignment-CwuLc9mf.mjs → useAlignment-BiCREohQ.mjs} +1 -1
- package/dist/{useAlignment-CwuLc9mf.mjs.map → useAlignment-BiCREohQ.mjs.map} +1 -1
- package/dist/{useAlignment-CY-mnB2p.js → useAlignment-D5xKBRez.js} +1 -1
- package/dist/{useAlignment-CY-mnB2p.js.map → useAlignment-D5xKBRez.js.map} +1 -1
- package/dist/{useAriaInvalid-BYMq9BBX.js → useAriaInvalid-CHHPHNLU.js} +1 -1
- package/dist/{useAriaInvalid-BYMq9BBX.js.map → useAriaInvalid-CHHPHNLU.js.map} +1 -1
- package/dist/{useAriaInvalid-01Dd60GC.mjs → useAriaInvalid-apOwgexm.mjs} +1 -1
- package/dist/{useAriaInvalid-01Dd60GC.mjs.map → useAriaInvalid-apOwgexm.mjs.map} +1 -1
- package/dist/{useColorVariantClasses-GuDw8a_O.mjs → useColorVariantClasses-B6Me_Kx6.mjs} +1 -1
- package/dist/{useColorVariantClasses-GuDw8a_O.mjs.map → useColorVariantClasses-B6Me_Kx6.mjs.map} +1 -1
- package/dist/{useColorVariantClasses-DVaQDVQC.js → useColorVariantClasses-CEfOwjPv.js} +1 -1
- package/dist/{useColorVariantClasses-DVaQDVQC.js.map → useColorVariantClasses-CEfOwjPv.js.map} +1 -1
- package/dist/{useCountdownHover-CaF8_TRT.js → useCountdownHover-8bwLWYoN.js} +2 -2
- package/dist/{useCountdownHover-CaF8_TRT.js.map → useCountdownHover-8bwLWYoN.js.map} +1 -1
- package/dist/{useCountdownHover-CTM7QEJ-.mjs → useCountdownHover-t9O7DHoK.mjs} +2 -2
- package/dist/{useCountdownHover-CTM7QEJ-.mjs.map → useCountdownHover-t9O7DHoK.mjs.map} +1 -1
- package/dist/{useDateField-qsRHISMn.js → useDateField-COTiu3aN.js} +8 -321
- package/dist/useDateField-COTiu3aN.js.map +1 -0
- package/dist/{useDateField-PQjSLAVI.mjs → useDateField-DmmXa0_5.mjs} +5 -258
- package/dist/useDateField-DmmXa0_5.mjs.map +1 -0
- package/dist/{useDefaults-CCWS15M8.mjs → useDefaults-BKgBaqOV.mjs} +1 -1
- package/dist/{useDefaults-CCWS15M8.mjs.map → useDefaults-BKgBaqOV.mjs.map} +1 -1
- package/dist/{useDefaults-DK6Y9lar.js → useDefaults-DsLf4iRY.js} +1 -1
- package/dist/{useDefaults-DK6Y9lar.js.map → useDefaults-DsLf4iRY.js.map} +1 -1
- package/dist/{useFormCheck-TOhpqkZ9.mjs → useFormCheck-CJvIDxcO.mjs} +3 -3
- package/dist/{useFormCheck-TOhpqkZ9.mjs.map → useFormCheck-CJvIDxcO.mjs.map} +1 -1
- package/dist/{useFormCheck-DXM9Wj2i.js → useFormCheck-UHNy_iZ0.js} +3 -3
- package/dist/{useFormCheck-DXM9Wj2i.js.map → useFormCheck-UHNy_iZ0.js.map} +1 -1
- package/dist/{useFormInput-DeJGz9t9.mjs → useFormInput-BgJCT9k_.mjs} +6 -6
- package/dist/{useFormInput-DeJGz9t9.mjs.map → useFormInput-BgJCT9k_.mjs.map} +1 -1
- package/dist/{useFormInput-AX7ikSmn.js → useFormInput-CsR38QR6.js} +6 -6
- package/dist/{useFormInput-AX7ikSmn.js.map → useFormInput-CsR38QR6.js.map} +1 -1
- package/dist/useFormSelect-CANw3ZJG.mjs +45 -0
- package/dist/useFormSelect-CANw3ZJG.mjs.map +1 -0
- package/dist/useFormSelect-nQbGZSi8.js +51 -0
- package/dist/useFormSelect-nQbGZSi8.js.map +1 -0
- package/dist/useForwardExpose-4OUimdPL.mjs +68 -0
- package/dist/useForwardExpose-4OUimdPL.mjs.map +1 -0
- package/dist/useForwardExpose-DrJOy0jY.js +80 -0
- package/dist/useForwardExpose-DrJOy0jY.js.map +1 -0
- package/dist/{useId-CCwnEmGh.mjs → useId-BKZFSYm8.mjs} +1 -1
- package/dist/{useId-CCwnEmGh.mjs.map → useId-BKZFSYm8.mjs.map} +1 -1
- package/dist/{useId-DTrBK9CE.js → useId-DHrBgM7P.js} +1 -1
- package/dist/{useId-DTrBK9CE.js.map → useId-DHrBgM7P.js.map} +1 -1
- package/dist/useKbd-IZRktImL.mjs +88 -0
- package/dist/useKbd-IZRktImL.mjs.map +1 -0
- package/dist/useKbd-ZZushx7D.js +105 -0
- package/dist/useKbd-ZZushx7D.js.map +1 -0
- package/dist/{useNumberishToStyle-uj-NwKpF.mjs → useNumberishToStyle-DEqGK1UH.mjs} +2 -2
- package/dist/{useNumberishToStyle-uj-NwKpF.mjs.map → useNumberishToStyle-DEqGK1UH.mjs.map} +1 -1
- package/dist/{useNumberishToStyle-CluQ-WT4.js → useNumberishToStyle-DFf9fokb.js} +2 -2
- package/dist/{useNumberishToStyle-CluQ-WT4.js.map → useNumberishToStyle-DFf9fokb.js.map} +1 -1
- package/dist/{useRadiusElementClasses-CyDq8RO7.mjs → useRadiusElementClasses-BlrN-T6U.mjs} +1 -1
- package/dist/{useRadiusElementClasses-CyDq8RO7.mjs.map → useRadiusElementClasses-BlrN-T6U.mjs.map} +1 -1
- package/dist/{useRadiusElementClasses-D6FwziNh.js → useRadiusElementClasses-C13_PhPM.js} +1 -1
- package/dist/{useRadiusElementClasses-D6FwziNh.js.map → useRadiusElementClasses-C13_PhPM.js.map} +1 -1
- package/dist/{useRtl-BlPLBmTe.js → useRtl-DXAooTrl.js} +1 -1
- package/dist/{useRtl-BlPLBmTe.js.map → useRtl-DXAooTrl.js.map} +1 -1
- package/dist/{useRtl-DQ5v5L9s.mjs → useRtl-DpwU_RM8.mjs} +1 -1
- package/dist/{useRtl-DQ5v5L9s.mjs.map → useRtl-DpwU_RM8.mjs.map} +1 -1
- package/dist/{useSafeScrollLock-CP2B7aXF.js → useSafeScrollLock-Bm9RxDoY.js} +2 -2
- package/dist/{useSafeScrollLock-CP2B7aXF.js.map → useSafeScrollLock-Bm9RxDoY.js.map} +1 -1
- package/dist/{useSafeScrollLock-C9UxwgUo.mjs → useSafeScrollLock-D62o8jto.mjs} +2 -2
- package/dist/{useSafeScrollLock-C9UxwgUo.mjs.map → useSafeScrollLock-D62o8jto.mjs.map} +1 -1
- package/dist/{useShowHide-BFr32vgn.js → useShowHide-BTCaeU5j.js} +5 -5
- package/dist/useShowHide-BTCaeU5j.js.map +1 -0
- package/dist/{useShowHide-wBe7O9iE.mjs → useShowHide-yAK5dhPT.mjs} +5 -5
- package/dist/useShowHide-yAK5dhPT.mjs.map +1 -0
- package/dist/{useStateClass-Cnvy2Hnm.js → useStateClass-CJ24hpkn.js} +1 -1
- package/dist/{useStateClass-Cnvy2Hnm.js.map → useStateClass-CJ24hpkn.js.map} +1 -1
- package/dist/{useStateClass-DKjpw1Pn.mjs → useStateClass-CdmlbrGn.mjs} +1 -1
- package/dist/{useStateClass-DKjpw1Pn.mjs.map → useStateClass-CdmlbrGn.mjs.map} +1 -1
- package/dist/{utils-CY6CnVNO.js → utils-CaC78Zdk.js} +2 -2
- package/dist/{utils-CY6CnVNO.js.map → utils-CaC78Zdk.js.map} +1 -1
- package/dist/{utils-C-oJqlar.mjs → utils-CgwCsk6U.mjs} +2 -2
- package/dist/{utils-C-oJqlar.mjs.map → utils-CgwCsk6U.mjs.map} +1 -1
- package/package.json +9 -1
- package/src/components/BAutocomplete/_autocomplete.scss +136 -0
- package/src/components/BOtpInput/_otp-input.scss +29 -0
- package/src/styles/styles.scss +2 -0
- package/dist/BCarousel-BH6WIvJx.js.map +0 -1
- package/dist/BCarousel-C3CA_wGV.mjs.map +0 -1
- package/dist/BDatePicker-DPtAqGyV.mjs.map +0 -1
- package/dist/BDatePicker-rdtRZlra.js.map +0 -1
- package/dist/BDropdown-C2L69dLN.js.map +0 -1
- package/dist/BDropdown-CKnx6hUH.mjs.map +0 -1
- package/dist/BFormTags-Cobh04P9.mjs.map +0 -1
- package/dist/BFormTags-pK9i3cOB.js.map +0 -1
- package/dist/BInputGroup-B8fKBtip.mjs.map +0 -1
- package/dist/BInputGroup-Cr0qLUds.js.map +0 -1
- package/dist/BModal-TCXrZEZk.mjs.map +0 -1
- package/dist/BModal-d3FKaKhA.js.map +0 -1
- package/dist/BOffcanvas-BklEA-4x.mjs.map +0 -1
- package/dist/BOffcanvas-YsVap-9w.js.map +0 -1
- package/dist/BootstrapVueOptions-CVxLmDvx.js.map +0 -1
- package/dist/BootstrapVueOptions-Dtdn7_AJ.mjs.map +0 -1
- package/dist/functions-C6AToZGR.mjs.map +0 -1
- package/dist/functions-DCQKr6wc.js.map +0 -1
- package/dist/useDateField-PQjSLAVI.mjs.map +0 -1
- package/dist/useDateField-qsRHISMn.js.map +0 -1
- package/dist/useFormSelect-DCThI8EA.js +0 -92
- package/dist/useFormSelect-DCThI8EA.js.map +0 -1
- package/dist/useFormSelect-_-ln6FKQ.mjs +0 -80
- package/dist/useFormSelect-_-ln6FKQ.mjs.map +0 -1
- package/dist/useShowHide-BFr32vgn.js.map +0 -1
- package/dist/useShowHide-wBe7O9iE.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BDropdown-C2L69dLN.js","names":[],"sources":["../src/components/BDropdown/BDropdown.vue","../src/components/BDropdown/BDropdown.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :icon=\"props.icon\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles, {display: showRef || isActive ? 'block' : 'none'}]\"\n class=\"dropdown-menu overflow-auto b-floating-size\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot\n v-if=\"contentShowing\"\n :id=\"computedId\"\n :hide=\"hide\"\n :show=\"show\"\n :visible=\"showRef\"\n :click=\"onClickInside\"\n :toggle=\"onButtonClick\"\n :active=\"showRef\"\n />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type ReferenceElement,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type ComputedRef,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n readonly,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\nimport type {BDropdownSlots, BDropdownEmits, BDropdownProps} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n icon: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\nconst emit = defineEmits<BDropdownEmits>()\ndefineSlots<BDropdownSlots>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : Number.NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floatingElement = useTemplateRef<HTMLUListElement | null>('_floating')\nconst button = useTemplateRef<HTMLElement | null>('_button')\nconst splitButton = useTemplateRef<HTMLElement | null>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referenceElement = computed(() => (!props.split ? splitButton.value : button.value))\nlet cleanup: ReturnType<typeof autoUpdate> | undefined\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n isActive,\n} = useShowHide(modelValue, props, emit as EmitFn, referenceElement, computedId, {\n showFn: () => {\n update()\n nextTick(() => {\n cleanup = autoUpdate(\n referenceElement.value as ReferenceElement,\n floatingElement.value as HTMLElement,\n update,\n {\n animationFrame: false,\n }\n )\n })\n },\n hideFn: () => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n },\n})\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: referenceElement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: floatingElement}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floatingElement.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floatingElement.value?.querySelectorAll(\n '.dropdown-item:not(.disabled):not(:disabled)'\n )\n const doc = getSafeDocument()\n if (!list || !doc) return\n if (floatingElement.value?.contains(doc.activeElement)) {\n const active = floatingElement.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referenceElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referenceElement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floatingElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floatingElement})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<readonly Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n '--bv-floating-max-height':\n availableHeight >= (floatingElement.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n '--bv-floating-max-width':\n availableWidth >= (floatingElement.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referenceElement, floatingElement, {\n placement: () => props.placement,\n middleware: floatingMiddleware as ComputedRef<Middleware[]>,\n strategy: toRef(() => props.strategy),\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floatingElement,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n</script>\n","<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :icon=\"props.icon\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles, {display: showRef || isActive ? 'block' : 'none'}]\"\n class=\"dropdown-menu overflow-auto b-floating-size\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot\n v-if=\"contentShowing\"\n :id=\"computedId\"\n :hide=\"hide\"\n :show=\"show\"\n :visible=\"showRef\"\n :click=\"onClickInside\"\n :toggle=\"onButtonClick\"\n :active=\"showRef\"\n />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type ReferenceElement,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type ComputedRef,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n readonly,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\nimport type {BDropdownSlots, BDropdownEmits, BDropdownProps} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n icon: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\nconst emit = defineEmits<BDropdownEmits>()\ndefineSlots<BDropdownSlots>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : Number.NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floatingElement = useTemplateRef<HTMLUListElement | null>('_floating')\nconst button = useTemplateRef<HTMLElement | null>('_button')\nconst splitButton = useTemplateRef<HTMLElement | null>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referenceElement = computed(() => (!props.split ? splitButton.value : button.value))\nlet cleanup: ReturnType<typeof autoUpdate> | undefined\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n isActive,\n} = useShowHide(modelValue, props, emit as EmitFn, referenceElement, computedId, {\n showFn: () => {\n update()\n nextTick(() => {\n cleanup = autoUpdate(\n referenceElement.value as ReferenceElement,\n floatingElement.value as HTMLElement,\n update,\n {\n animationFrame: false,\n }\n )\n })\n },\n hideFn: () => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n },\n})\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: referenceElement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: floatingElement}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floatingElement.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floatingElement.value?.querySelectorAll(\n '.dropdown-item:not(.disabled):not(:disabled)'\n )\n const doc = getSafeDocument()\n if (!list || !doc) return\n if (floatingElement.value?.contains(doc.activeElement)) {\n const active = floatingElement.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referenceElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referenceElement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floatingElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floatingElement})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<readonly Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n '--bv-floating-max-height':\n availableHeight >= (floatingElement.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n '--bv-floating-max-width':\n availableWidth >= (floatingElement.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referenceElement, floatingElement, {\n placement: () => props.placement,\n middleware: floatingMiddleware as ComputedRef<Middleware[]>,\n strategy: toRef(() => props.strategy),\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floatingElement,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkKA,MAAM,QAAQ,oBAAA,YA3CC,SA2CmB,YAAW;EAC7C,MAAM,OAAO;EAGb,MAAM,aAAa,cAAA,YAAY,MAAM,IAAI,WAAU;EAEnD,MAAM,cAAA,GAAA,IAAA,UAA0E,SAAA,aAAiB;EAEjG,MAAM,gBAAA,GAAA,IAAA,QAAsB,aAAA,eAAe,MAAK;EAChD,MAAM,iBAAA,GAAA,IAAA,QAAuB,aAAA,gBAAgB,MAAK;EAKlD,MAAM,iBAAiB,aAAA,aAAA,GAAA,IAAA,gBAFrB,OAAO,MAAM,WAAW,YAAY,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS,IACxF,CACiD;EAEjD,MAAM,mBAAA,GAAA,IAAA,gBAA0D,YAAW;EAC3E,MAAM,UAAA,GAAA,IAAA,gBAA4C,UAAS;EAC3D,MAAM,eAAA,GAAA,IAAA,gBAAiD,eAAc;EAErE,MAAM,YAAA,GAAA,IAAA,gBACJ,mBAAA,WAAW,MAAM,SAAS,GAAG,MAAM,WAAW,KAAA,EAChD;EACA,MAAM,gBAAA,GAAA,IAAA,gBACJ,mBAAA,eAAe,MAAM,SAAS,GAAG,MAAM,WAAW,KAAA,EACpD;EAEA,MAAM,oBAAA,GAAA,IAAA,gBAAmC,CAAC,MAAM,QAAQ,YAAY,QAAQ,OAAO,MAAM;EACzF,IAAI;EAEJ,MAAM,EACJ,SACA,WACA,MACA,MACA,QACA,qBACA,iBACA,gBACA,WACA,aACE,oBAAA,YAAY,YAAY,OAAO,MAAgB,kBAAkB,YAAY;GAC/E,cAAc;AACZ,YAAO;AACP,KAAA,GAAA,IAAA,gBAAe;AACb,eAAU,wBAAA,WACR,iBAAiB,OACjB,gBAAgB,OAChB,QACA,EACE,gBAAgB,OAClB,CACF;MACD;;GAEH,cAAc;AACZ,QAAI,SAAS;AACX,cAAQ;AACR,eAAU,KAAA;;;GAGf,CAAA;EAED,MAAM,uBAAA,GAAA,IAAA,gBAAqC,CACzC;GACE,MAAM,UAAU;GAChB,MAAM,CAAC,oBAAoB;GAC5B,CACF,CAAA;AAED,eAAA,YACE,gBACM;AACJ,SAAK;AACL,sBAAA,WAAW,iBAAiB,MAAM,EAAE,OAAM;KAE5C,EAAC,QAAQ,kBAAgB,CAC3B;AACA,eAAA,YACE,gBACM;AACJ,SAAK;AACL,sBAAA,WAAW,iBAAiB,MAAM,EAAE,OAAM;KAE5C,EAAC,QAAQ,iBAAe,CAC1B;EAEA,MAAM,UAAU,GAAoB,MAAc;AAChD,OAAI,gBAAgB,OAAO,SAAU,EAAE,QAAwB,QAAQ,OAAO,CAAC,CAAE;AACjF,OAAI,qCAAqC,KAAM,EAAE,QAAwB,QAAQ,CAAE;AACnF,KAAE,gBAAe;AACjB,OAAI,CAAC,QAAQ,OAAO;AAClB,UAAK;IACL,MAAM,OAAO,kBAAkB;AAC7B,SAAI,UAAU,OAAO;AACnB,oBAAc,KAAI;AAClB,OAAA,GAAA,IAAA,gBAAe,OAAO,GAAG,EAAE,CAAA;;OAE5B,GAAE;AACL;;GAEF,MAAM,OAAO,gBAAgB,OAAO,iBAClC,+CACF;GACA,MAAM,MAAM,YAAA,iBAAgB;AAC5B,OAAI,CAAC,QAAQ,CAAC,IAAK;AACnB,OAAI,gBAAgB,OAAO,SAAS,IAAI,cAAc,EAAE;IACtD,MAAM,SAAS,gBAAgB,MAAM,cAAc,uBAAsB;IACzE,MAAM,QAAQ,MAAM,UAAU,QAAQ,KAAK,MAAM,OAAO,GAAG;AAC3D,QAAI,SAAS,KAAK,QAAQ,MAAM,OAAS,MAAK,QAAwB,OAAM;SAE1E,MAAK,MAAM,KAAK,KAAK,SAAS,IAAI,IAAoB,OAAM;;AAIlE,eAAA,YAAY,YAAY,MAAM,OAAO,GAAG,GAAG,EAAE,EAAC,QAAQ,kBAAiB,CAAA;AACvE,eAAA,YAAY,cAAc,MAAM,OAAO,GAAG,EAAE,EAAE,EAAC,QAAQ,kBAAiB,CAAA;AACxE,eAAA,YAAY,YAAY,MAAM,OAAO,GAAG,GAAG,EAAE,EAAC,QAAQ,iBAAgB,CAAA;AACtE,eAAA,YAAY,cAAc,MAAM,OAAO,GAAG,EAAE,EAAE,EAAC,QAAQ,iBAAgB,CAAA;EAEvE,MAAM,cAAA,GAAA,IAAA,KAAgC,EAAE,CAAA;EAuDxC,MAAM,EAAC,QAAQ,mBAAkB,wBAAA,YAAY,kBAAkB,iBAAiB;GAC9E,iBAAiB,MAAM;GACvB,aAAA,GAAA,IAAA,gBAxD+D;AAC/D,QAAI,MAAM,uBAAuB,KAAA,EAC/B,QAAO,MAAM;IAMf,MAAM,MAAoB,CAAC,wBAAA,OAHzB,OAAO,MAAM,WAAW,YAAY,OAAO,MAAM,WAAW,WACxD,eAAe,QACf,MAAM,OAC4C,CAAA;AACxD,QAAI,MAAM,WAAW,MACnB,KAAI,KACF,wBAAA,KAAK;KACH,UAAU,SAAS;KACnB,cAAc,aAAa;KAC3B,SAAS,MAAM;KAChB,CAAA,CACH;AAEF,QAAI,MAAM,YAAY,MACpB,KAAI,KACF,wBAAA,MAAM;KACJ,UAAU,SAAS;KACnB,cAAc,aAAa;KAC3B,SAAS,MAAM;KAChB,CAAA,CACH;AAEF,QAAI,MAAM,WAAW,MACnB,KAAI,KACF,wBAAA,KAAe;KACb,UAAU,SAAS;KACnB,cAAc,aAAa;KAC3B,SAAS,MAAM;KACf,MAAM,EAAC,gBAAgB,mBAAkB;AACvC,iBAAW,QAAQ;OACjB,4BACE,oBAAoB,gBAAgB,OAAO,gBAAgB,KACvD,KAAA,IACA,kBACE,GAAG,KAAK,IAAI,GAAG,gBAAgB,CAAC,MAChC,KAAA;OACR,2BACE,mBAAmB,gBAAgB,OAAO,eAAe,KACrD,KAAA,IACA,iBACE,GAAG,KAAK,IAAI,GAAG,eAAe,CAAC,MAC/B,KAAA;OACV;;KAEH,CAAA,CACH;AAEF,WAAO;KACR;GAIC,WAAA,GAAA,IAAA,aAAsB,MAAM,SAAA;GAC7B,CAAA;EAED,MAAM,0BAA0B,gBAC5B;GACE,OAAO;GACP,MAAM;GACR,GACA,KAAA;EAEJ,MAAM,mBAAA,GAAA,IAAA,gBAAiC;GACrC,yBAAyB;GACzB,MAAM;GACN;IACE,aAAa,CAAC,MAAM,gBAAgB,MAAM;KACzC,OAAO,mBAAA,sBAAsB,MAAM,UAAU,KAAK,CAAC,MAAM;IAC1D,mBAAmB,MAAM,aAAa,uBAAuB,CAAC,MAAM;;GAEvE,CAAA;EAED,MAAM,iBAAA,GAAA,IAAA,gBAA+B,CACnC,MAAM,QAAQ,MAAM,aAAa,MAAM,aACvC;GACE,YAAY,MAAM;GAClB,mBAAmB,CAAC,MAAM;GAC1B,4BAA4B,MAAM,WAAW,CAAC,MAAM;GACpD,QAAQ,MAAM,QAAQ,KAAA,IAAY,QAAQ;GAC3C,CACF,CAAA;EAED,MAAM,sBAAsB;AAC1B,WAAO;;EAGT,MAAM,gBAAgB,UAAgC;AACpD,OAAI,MAAM,OAAO;AACf,SAAK,eAAe,MAAK;AACzB;;AAEF,kBAAc;;AAGhB,eAAA,eACE,uBACM;AACJ,OAAI,QAAQ,UAAU,MAAM,cAAc,QAAQ,MAAM,cAAc,WACpE,OAAK;KAGT,EAAC,QAAQ,CAAC,QAAQ,YAAY,EAAA,CAChC;EACA,MAAM,sBAAsB;AAC1B,OAAI,QAAQ,UAAU,MAAM,cAAc,QAAQ,MAAM,cAAc,UACpE,OAAK;;AAIT,GAAA,GAAA,IAAA,OAAM,iBAAiB;AACrB,WAAO;IACR;AAED,WAAa;GACX;GACA;GACA;GACD,CAAA;AAED,GAAA,GAAA,IAAA,SAAQ,aAAA,sBAAsB;GAC5B,IAAI;GACJ;GACA;GACA;GACA,UAAA,GAAA,IAAA,UAAkB,QAAQ;GAC1B,QAAA,GAAA,IAAA,aAAmB,MAAM,MAAA;GAC1B,CAAA;;qDAlVsB,2BAAA,4BAAA;IA1ElB,OAAA,GAAA,IAAA,OAAM,aAAY,KAAA,GAAA,IAAA,OAAI,MAAK,CAAC;IAC5B,QAAA,GAAA,IAAA,gBAAO,gBAAA,MAAe;IACtB,OAAA,GAAA,IAAA,OAAM,wBAAuB,EAAE;;oCAmBtB;0BAAA,gBAAA,iBAAA;MAhBP,KAAA,GAAA,IAAA,OAAI,WAAU;MACf,KAAI;MACH,UAAA,GAAA,IAAA,OAAS,MAAK,CAAC,iBAAA,GAAA,IAAA,OAAgB,MAAK,CAAC;MACrC,OAAA,GAAA,IAAA,OAAM,MAAK,CAAC;MACZ,QAAA,GAAA,IAAA,gBAAO,cAAA,MAAa;MACpB,WAAA,GAAA,IAAA,OAAU,MAAK,CAAC,kBAAA,GAAA,IAAA,OAAiB,MAAK,CAAC;MACvC,OAAA,GAAA,IAAA,OAAM,MAAK,CAAC;MACZ,eAAA,GAAA,IAAA,OAAY,MAAK,CAAC;MAClB,kBAAA,GAAA,IAAA,OAAe,MAAK,CAAC,QAAQ,KAAA,KAAA,GAAA,IAAA,OAAY,QAAO;MAChD,kBAAA,GAAA,IAAA,OAAe,MAAK,CAAC,QAAQ,KAAA,IAAS;MACtC,OAAA,GAAA,IAAA,OAAM,MAAK,CAAC,SAAA,GAAA,IAAA,OAAQ,MAAK,CAAC,YAAY,KAAA;MACtC,OAAA,GAAA,IAAA,OAAM,MAAK,CAAC;MACZ,KAAA,GAAA,IAAA,OAAI,MAAK,CAAC,UAAA,GAAA,IAAA,OAAS,MAAK,CAAC,WAAA,GAAA,IAAA,OAAU,MAAK,CAAC,UAAU,KAAA;MACnD,SAAO;;sCAE6C,EAAA,GAAA,IAAA,YAAA,KAAA,QAAA,kBAAA,EAAA,QAAA,EAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,OAArB,MAAK,CAAC,KAAI,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;oBAGpC,MAAK,CAAC,UAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aAiBJ,gBAAA,iBAAA;;MAhBP,KAAA,GAAA,IAAA,OAAI,WAAU,GAAA;MACf,KAAI;MACH,UAAA,GAAA,IAAA,OAAS,MAAK,CAAC;MACf,OAAA,GAAA,IAAA,OAAM,MAAK,CAAC;MACZ,WAAA,GAAA,IAAA,OAAU,MAAK,CAAC;MAChB,QAAA,GAAA,IAAA,gBAAK,CAAA,EAAA,GAAA,IAAA,OAAG,MAAK,CAAC,aAAW,EAAA,OAAA,GAAA,IAAA,OAAS,QAAO,EAAA,CAAA,EACpC,wCAAuC,CAAA;MAC5C,kBAAA,GAAA,IAAA,OAAe,QAAO;MACvB,iBAAc;MACb,SAAO;;sCAMD,EAAA,GAAA,IAAA,oBAAA,QAJP,YAIO,EAAA,GAAA,IAAA,YADE,KAAA,QAAA,eAAA,EAAA,QAAA,EAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,OADF,MAAK,CAAC,WAAU,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;0BAoCH,4BAAA,6BAAA;MA/BnB,KAAA,GAAA,IAAA,OAAI,MAAK,CAAC;MACV,UAAQ,EAAA,GAAA,IAAA,OAAG,MAAK,CAAC,eAAA,GAAA,IAAA,OAAc,MAAK,CAAC;;sCA6BzB,EAAA,GAAA,IAAA,OA1BL,UAAS,KAAA,GAAA,IAAA,OAAI,eAAc,KAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aA0BtB,IAAA,aAAA,GAAA,IAAA,YAAA,EAAA,KAAA,GAAA,GAAA,GAAA,IAAA,OAzBH,gBAAe,EAAA,EACtB,QAAQ,WAAA,UAAA,GAAA,IAAA,OAAc,MAAK,CAAC,SAAA,CAAA,EAAA;uCAuBxB,EAAA,GAAA,IAAA,iBAAA,GAAA,IAAA,oBAAA,MAAA;QAnBF,KAAA,GAAA,IAAA,OAAI,WAAU,GAAA;QACf,KAAI;QACH,QAAA,GAAA,IAAA,gBAAK;wBAAG,eAAc;SAAE,WAAA;SAAU,EAAA,UAAA,GAAA,IAAA,OAAY,QAAO,KAAA,GAAA,IAAA,OAAI,SAAQ,GAAA,UAAA,QAAA;SAAA,CAAA;QAClE,QAAA,GAAA,IAAA,gBAAK,CAAC,+CAA6C,EAAA,GAAA,IAAA,OAC1C,MAAK,CAAC,WAAW,oBAAA,MAAmB,CAAA,CAAA;QAC5C,oBAAA,GAAA,IAAA,OAAiB,WAAU;QAC3B,OAAA,GAAA,IAAA,OAAM,MAAK,CAAC;QACZ,SAAO;0BAGA,eAAc,IAAA,GAAA,IAAA,YAQpB,KAAA,QAAA,WAAA;;QAPC,KAAA,GAAA,IAAA,OAAI,WAAU;QACd,OAAA,GAAA,IAAA,OAAM,KAAI;QACV,OAAA,GAAA,IAAA,OAAM,KAAI;QACV,UAAA,GAAA,IAAA,OAAS,QAAO;QAChB,OAAO;QACP,QAAQ;QACR,SAAA,GAAA,IAAA,OAAQ,QAAA;iGAlBH,QAAO,CAAA,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BDropdown-CKnx6hUH.mjs","names":[],"sources":["../src/components/BDropdown/BDropdown.vue","../src/components/BDropdown/BDropdown.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :icon=\"props.icon\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles, {display: showRef || isActive ? 'block' : 'none'}]\"\n class=\"dropdown-menu overflow-auto b-floating-size\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot\n v-if=\"contentShowing\"\n :id=\"computedId\"\n :hide=\"hide\"\n :show=\"show\"\n :visible=\"showRef\"\n :click=\"onClickInside\"\n :toggle=\"onButtonClick\"\n :active=\"showRef\"\n />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type ReferenceElement,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type ComputedRef,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n readonly,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\nimport type {BDropdownSlots, BDropdownEmits, BDropdownProps} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n icon: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\nconst emit = defineEmits<BDropdownEmits>()\ndefineSlots<BDropdownSlots>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : Number.NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floatingElement = useTemplateRef<HTMLUListElement | null>('_floating')\nconst button = useTemplateRef<HTMLElement | null>('_button')\nconst splitButton = useTemplateRef<HTMLElement | null>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referenceElement = computed(() => (!props.split ? splitButton.value : button.value))\nlet cleanup: ReturnType<typeof autoUpdate> | undefined\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n isActive,\n} = useShowHide(modelValue, props, emit as EmitFn, referenceElement, computedId, {\n showFn: () => {\n update()\n nextTick(() => {\n cleanup = autoUpdate(\n referenceElement.value as ReferenceElement,\n floatingElement.value as HTMLElement,\n update,\n {\n animationFrame: false,\n }\n )\n })\n },\n hideFn: () => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n },\n})\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: referenceElement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: floatingElement}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floatingElement.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floatingElement.value?.querySelectorAll(\n '.dropdown-item:not(.disabled):not(:disabled)'\n )\n const doc = getSafeDocument()\n if (!list || !doc) return\n if (floatingElement.value?.contains(doc.activeElement)) {\n const active = floatingElement.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referenceElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referenceElement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floatingElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floatingElement})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<readonly Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n '--bv-floating-max-height':\n availableHeight >= (floatingElement.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n '--bv-floating-max-width':\n availableWidth >= (floatingElement.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referenceElement, floatingElement, {\n placement: () => props.placement,\n middleware: floatingMiddleware as ComputedRef<Middleware[]>,\n strategy: toRef(() => props.strategy),\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floatingElement,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n</script>\n","<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :icon=\"props.icon\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles, {display: showRef || isActive ? 'block' : 'none'}]\"\n class=\"dropdown-menu overflow-auto b-floating-size\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot\n v-if=\"contentShowing\"\n :id=\"computedId\"\n :hide=\"hide\"\n :show=\"show\"\n :visible=\"showRef\"\n :click=\"onClickInside\"\n :toggle=\"onButtonClick\"\n :active=\"showRef\"\n />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type ReferenceElement,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type ComputedRef,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n readonly,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {useShowHide} from '../../composables/useShowHide'\nimport type {BDropdownSlots, BDropdownEmits, BDropdownProps} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n icon: false,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\nconst emit = defineEmits<BDropdownEmits>()\ndefineSlots<BDropdownSlots>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : Number.NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floatingElement = useTemplateRef<HTMLUListElement | null>('_floating')\nconst button = useTemplateRef<HTMLElement | null>('_button')\nconst splitButton = useTemplateRef<HTMLElement | null>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referenceElement = computed(() => (!props.split ? splitButton.value : button.value))\nlet cleanup: ReturnType<typeof autoUpdate> | undefined\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n isActive,\n} = useShowHide(modelValue, props, emit as EmitFn, referenceElement, computedId, {\n showFn: () => {\n update()\n nextTick(() => {\n cleanup = autoUpdate(\n referenceElement.value as ReferenceElement,\n floatingElement.value as HTMLElement,\n update,\n {\n animationFrame: false,\n }\n )\n })\n },\n hideFn: () => {\n if (cleanup) {\n cleanup()\n cleanup = undefined\n }\n },\n})\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: referenceElement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referenceElement.value)?.focus()\n },\n {target: floatingElement}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floatingElement.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floatingElement.value?.querySelectorAll(\n '.dropdown-item:not(.disabled):not(:disabled)'\n )\n const doc = getSafeDocument()\n if (!list || !doc) return\n if (floatingElement.value?.contains(doc.activeElement)) {\n const active = floatingElement.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referenceElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referenceElement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floatingElement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floatingElement})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<readonly Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n '--bv-floating-max-height':\n availableHeight >= (floatingElement.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n '--bv-floating-max-width':\n availableWidth >= (floatingElement.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referenceElement, floatingElement, {\n placement: () => props.placement,\n middleware: floatingMiddleware as ComputedRef<Middleware[]>,\n strategy: toRef(() => props.strategy),\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floatingElement,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: readonly(showRef),\n isNav: toRef(() => props.isNav),\n})\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BFormTags-Cobh04P9.mjs","names":[],"sources":["../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTags.vue","../src/components/BFormTags/BFormTags.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BFormTagEmits, BFormTagSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\nconst emit = defineEmits<BFormTagEmits>()\nconst slots = defineSlots<BFormTagSlots>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BFormTagEmits, BFormTagSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\nconst emit = defineEmits<BFormTagEmits>()\nconst slots = defineSlots<BFormTagSlots>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <div\n :id=\"computedId\"\n class=\"b-form-tags form-control h-auto\"\n :class=\"computedClasses\"\n role=\"group\"\n tabindex=\"-1\"\n @click=\"onClick\"\n @focusin=\"onFocusin\"\n @focusout=\"emit('focusout', $event)\"\n >\n <output\n :id=\"`${computedId}selected_tags__`\"\n class=\"visually-hidden\"\n :for=\"_inputId\"\n :aria-live=\"focused ? 'polite' : 'off'\"\n aria-atomic=\"true\"\n aria-relevant=\"additions text\"\n >{{ tags.join(', ') }}</output\n >\n <div\n :id=\"`${computedId}removed_tags__`\"\n role=\"status\"\n :aria-live=\"focused ? 'assertive' : 'off'\"\n aria-atomic=\"true\"\n class=\"visually-hidden\"\n >\n ({{ props.tagRemovedLabel }}) {{ lastRemovedTag }}\n </div>\n\n <slot\n :add-button-text=\"props.addButtonText\"\n :add-button-variant=\"props.addButtonVariant\"\n :add-tag\n :disable-add-button=\"disableAddButton\"\n :disabled=\"props.disabled\"\n :duplicate-tag-text=\"props.duplicateTagText\"\n :duplicate-tags=\"duplicateTags\"\n :form=\"props.form\"\n :input-attrs=\"{\n ...props.inputAttrs,\n disabled: props.disabled,\n form: props.form,\n id: _inputId,\n value: inputValue,\n }\"\n :input-class=\"props.inputClass\"\n :input-handlers=\"{\n input: onInput,\n keydown: onKeydown,\n change: onChange,\n }\"\n :input-id=\"_inputId\"\n :input-type=\"props.inputType\"\n :invalid-tag-text=\"props.invalidTagText\"\n :invalid-tags\n :is-duplicate\n :is-invalid\n :is-limit-reached=\"isLimitReached\"\n :limit-tags-text=\"props.limitTagsText\"\n :limit=\"limitNumber\"\n :no-tag-remove=\"props.noTagRemove\"\n :placeholder=\"props.placeholder\"\n :remove-tag\n :required=\"props.required\"\n :separator=\"props.separator\"\n :size=\"props.size\"\n :state=\"props.state\"\n :tag-class=\"props.tagClass\"\n :tag-pills=\"props.tagPills\"\n :tag-remove-label=\"props.tagRemoveLabel\"\n :tag-variant=\"props.tagVariant\"\n :tags\n >\n <ul\n :id=\"`${computedId}tag_list__`\"\n class=\"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center\"\n >\n <template v-for=\"(tag, index) in tags\" :key=\"index\">\n <slot\n name=\"tag\"\n :tag=\"tag\"\n :tag-class=\"props.tagClass\"\n :tag-variant=\"props.tagVariant\"\n :tag-pills=\"props.tagPills\"\n :remove-tag=\"removeTag\"\n >\n <BFormTag\n :key=\"tag\"\n :class=\"props.tagClass\"\n tag=\"li\"\n :variant=\"props.tagVariant\"\n :pill=\"props.tagPills\"\n :no-remove=\"props.noTagRemove\"\n :disabled=\"props.disabled\"\n @remove=\"removeTag\"\n >{{ tag }}</BFormTag\n >\n </slot>\n </template>\n <li\n role=\"none\"\n aria-live=\"off\"\n class=\"b-from-tags-field flex-grow-1\"\n :aria-controls=\"`${computedId}tag_list__`\"\n >\n <div role=\"group\" class=\"d-flex\">\n <input\n :id=\"_inputId\"\n ref=\"_input\"\n :disabled=\"props.disabled\"\n :value=\"inputValue\"\n :type=\"props.inputType\"\n :placeholder=\"props.placeholder\"\n class=\"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0\"\n style=\"outline: currentcolor none 0px; min-width: 5rem\"\n v-bind=\"props.inputAttrs\"\n :form=\"props.form\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n <button\n v-if=\"disableAddButton\"\n type=\"button\"\n class=\"btn b-form-tags-button py-0\"\n :class=\"[\n inputClass,\n {\n [`btn-${props.addButtonVariant}`]: props.addButtonVariant !== null,\n 'disabled invisible': inputValue.length === 0,\n },\n ]\"\n style=\"font-size: 90%\"\n :disabled=\"props.disabled || inputValue.length === 0 || isLimitReached\"\n @click=\"addTag(inputValue)\"\n >\n <slot name=\"add-button-text\">{{ props.addButtonText }}</slot>\n </button>\n </div>\n </li>\n </ul>\n <div :aria-live=\"props.feedbackAriaLive\" aria-atomic=\"true\">\n <div v-if=\"isInvalid\" class=\"d-block invalid-feedback\">\n {{ props.invalidTagText }}: {{ inputValue }}\n </div>\n <small v-if=\"isDuplicate\" class=\"form-text text-body-secondary\"\n >{{ props.duplicateTagText }}: {{ inputValue }}</small\n >\n <small v-if=\"tags.length === props.limit\" class=\"form-text text-body-secondary\">\n {{ props.limitTagsText }}</small\n >\n </div>\n </slot>\n <template v-if=\"props.name\">\n <input\n v-for=\"(tag, index) in tags\"\n :key=\"index\"\n type=\"hidden\"\n :name=\"props.name\"\n :value=\"tag\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, syncRef, useFocus, useToNumber} from '@vueuse/core'\nimport {computed, ref, useTemplateRef} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormTagsProps} from '../../types/ComponentProps'\nimport {escapeRegExpChars} from '../../utils/stringUtils'\nimport BFormTag from './BFormTag.vue'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport type {BFormTagsEmits, BFormTagsSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormTagsProps, 'modelValue'>>(), {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n addOnChange: false,\n autofocus: false,\n disabled: false,\n duplicateTagText: 'Duplicate tag(s)',\n feedbackAriaLive: 'assertive',\n form: undefined,\n ignoreInputFocusSelector: () => ['.b-form-tag', 'button', 'input', 'select'],\n inputAttrs: undefined,\n inputClass: undefined,\n inputId: undefined,\n inputType: 'text',\n invalidTagText: 'Invalid tag(s)',\n limit: undefined,\n limitTagsText: 'Tag limit reached',\n name: undefined,\n noAddOnEnter: false,\n noOuterFocus: false,\n noTagRemove: false,\n placeholder: 'Add tag...',\n removeOnDelete: false,\n required: false,\n separator: undefined,\n size: 'md',\n state: null,\n tagClass: undefined,\n tagPills: false,\n tagRemoveLabel: undefined,\n tagRemovedLabel: 'Tag removed',\n tagValidator: () => true,\n tagVariant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTags')\nconst emit = defineEmits<BFormTagsEmits>()\ndefineSlots<BFormTagsSlots>()\n\nconst modelValue = defineModel<Exclude<BFormTagsProps['modelValue'], undefined>>({\n default: () => [],\n})\n\nconst computedId = useId()\n\nconst limitNumber = useToNumber(() => props.limit ?? Number.NaN)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst _inputId = computed(() => props.inputId || `${computedId.value}input__`)\nconst tags = ref<string[]>([...modelValue.value])\nconst inputValue = ref<string>('')\nconst shouldRemoveOnDelete = ref<boolean>(modelValue.value.length > 0)\nconst lastRemovedTag = ref<string>('')\nconst validTags = ref<string[]>([])\nconst invalidTags = ref<string[]>([])\nconst duplicateTags = ref<string[]>([])\n\nsyncRef(modelValue, tags, {\n direction: 'ltr',\n transform: {\n ltr: (v) => [...v],\n },\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n [`form-control-${props.size}`]: props.size !== 'md',\n disabled: props.disabled,\n focus: focused.value,\n },\n])\n\nconst isDuplicate = computed(() => tags.value.includes(inputValue.value))\nconst isInvalid = computed(() =>\n inputValue.value === '' ? false : !props.tagValidator(inputValue.value)\n)\nconst isLimitReached = computed(() => tags.value.length === limitNumber.value)\nconst disableAddButton = computed(() => !isInvalid.value && !isDuplicate.value)\n\nconst onFocusin = (e: Readonly<FocusEvent>): void => {\n if (props.disabled) {\n const target = e.target as HTMLDivElement\n target.blur()\n return\n }\n\n emit('focusin', e)\n}\n\nconst onClick = (e: Readonly<MouseEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n const {target} = e\n const ignoreSelectors = props.ignoreInputFocusSelector\n if (ignoreSelectors && target instanceof Element) {\n const selector =\n typeof ignoreSelectors === 'string' ? ignoreSelectors : ignoreSelectors.join(',')\n\n if (selector && target.closest(selector)) {\n return\n }\n }\n\n focused.value = true\n}\n\nconst onFocus = (e: Readonly<FocusEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n focused.value = true\n emit('focus', e)\n}\n\nconst onBlur = (e: Readonly<FocusEvent>): void => {\n focused.value = false\n emit('blur', e)\n}\n\nconst onInput = (e: Readonly<Event> | string): void => {\n const value = typeof e === 'string' ? e : (e.target as HTMLInputElement).value\n\n shouldRemoveOnDelete.value = false\n\n if (props.separator?.includes(value.charAt(0)) && value.length > 0) {\n if (input.value) {\n input.value.value = ''\n }\n return\n }\n\n inputValue.value = value\n\n if (props.separator?.includes(value.charAt(value.length - 1))) {\n addTag(value.slice(0, value.length - 1))\n return\n }\n\n validTags.value = props.tagValidator(value) && !isDuplicate.value ? [value] : []\n invalidTags.value = props.tagValidator(value) ? [] : [value]\n duplicateTags.value = isDuplicate.value ? [value] : []\n\n emit('tag-state', validTags.value, invalidTags.value, duplicateTags.value)\n}\n\nconst onChange = (e: Readonly<Event>): void => {\n if (props.addOnChange) {\n onInput(e)\n\n if (!isDuplicate.value) {\n addTag(inputValue.value)\n }\n }\n}\n\nconst onKeydown = (e: Readonly<KeyboardEvent>): void => {\n if ((e.key === 'Enter' || e.code === 'NumpadEnter') && !props.noAddOnEnter) {\n addTag(inputValue.value)\n return\n }\n\n if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n props.removeOnDelete &&\n inputValue.value === '' &&\n shouldRemoveOnDelete.value &&\n tags.value.length > 0\n ) {\n removeTag(tags.value[tags.value.length - 1])\n } else {\n shouldRemoveOnDelete.value = true\n }\n}\n\nonKeyStroke(onKeydown, {target: input})\n\nconst separator = computed(() => {\n if (!props.separator) {\n return\n }\n\n return typeof props.separator === 'string' ? props.separator : props.separator.join('')\n})\n\nconst separatorRegExp = computed(() => {\n if (!separator.value) {\n return\n }\n\n return new RegExp(`[${escapeRegExpChars(separator.value)}]+`)\n})\n\nconst addTag = (tag?: string): void => {\n tag = (tag ?? inputValue.value).trim()\n\n const newTags = separatorRegExp.value\n ? tag.split(separatorRegExp.value).map((t) => t.trim())\n : [tag]\n const validTags: string[] = []\n\n for (const newTag of newTags) {\n if (newTag === '' || isDuplicate.value || !props.tagValidator(newTag)) {\n continue\n }\n\n if (limitNumber.value && isLimitReached.value) {\n break\n }\n\n validTags.push(newTag)\n }\n\n const newValue = [...modelValue.value, ...validTags]\n inputValue.value = ''\n shouldRemoveOnDelete.value = true\n modelValue.value = newValue\n focused.value = true\n}\n\nconst removeTag = (tag?: string): void => {\n const tagIndex = tags.value.indexOf(tag?.toString() ?? '')\n if (tagIndex === -1) return\n lastRemovedTag.value = tags.value.splice(tagIndex, 1).toString()\n modelValue.value = tags.value\n}\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n inputValue,\n})\n</script>\n","<template>\n <div\n :id=\"computedId\"\n class=\"b-form-tags form-control h-auto\"\n :class=\"computedClasses\"\n role=\"group\"\n tabindex=\"-1\"\n @click=\"onClick\"\n @focusin=\"onFocusin\"\n @focusout=\"emit('focusout', $event)\"\n >\n <output\n :id=\"`${computedId}selected_tags__`\"\n class=\"visually-hidden\"\n :for=\"_inputId\"\n :aria-live=\"focused ? 'polite' : 'off'\"\n aria-atomic=\"true\"\n aria-relevant=\"additions text\"\n >{{ tags.join(', ') }}</output\n >\n <div\n :id=\"`${computedId}removed_tags__`\"\n role=\"status\"\n :aria-live=\"focused ? 'assertive' : 'off'\"\n aria-atomic=\"true\"\n class=\"visually-hidden\"\n >\n ({{ props.tagRemovedLabel }}) {{ lastRemovedTag }}\n </div>\n\n <slot\n :add-button-text=\"props.addButtonText\"\n :add-button-variant=\"props.addButtonVariant\"\n :add-tag\n :disable-add-button=\"disableAddButton\"\n :disabled=\"props.disabled\"\n :duplicate-tag-text=\"props.duplicateTagText\"\n :duplicate-tags=\"duplicateTags\"\n :form=\"props.form\"\n :input-attrs=\"{\n ...props.inputAttrs,\n disabled: props.disabled,\n form: props.form,\n id: _inputId,\n value: inputValue,\n }\"\n :input-class=\"props.inputClass\"\n :input-handlers=\"{\n input: onInput,\n keydown: onKeydown,\n change: onChange,\n }\"\n :input-id=\"_inputId\"\n :input-type=\"props.inputType\"\n :invalid-tag-text=\"props.invalidTagText\"\n :invalid-tags\n :is-duplicate\n :is-invalid\n :is-limit-reached=\"isLimitReached\"\n :limit-tags-text=\"props.limitTagsText\"\n :limit=\"limitNumber\"\n :no-tag-remove=\"props.noTagRemove\"\n :placeholder=\"props.placeholder\"\n :remove-tag\n :required=\"props.required\"\n :separator=\"props.separator\"\n :size=\"props.size\"\n :state=\"props.state\"\n :tag-class=\"props.tagClass\"\n :tag-pills=\"props.tagPills\"\n :tag-remove-label=\"props.tagRemoveLabel\"\n :tag-variant=\"props.tagVariant\"\n :tags\n >\n <ul\n :id=\"`${computedId}tag_list__`\"\n class=\"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center\"\n >\n <template v-for=\"(tag, index) in tags\" :key=\"index\">\n <slot\n name=\"tag\"\n :tag=\"tag\"\n :tag-class=\"props.tagClass\"\n :tag-variant=\"props.tagVariant\"\n :tag-pills=\"props.tagPills\"\n :remove-tag=\"removeTag\"\n >\n <BFormTag\n :key=\"tag\"\n :class=\"props.tagClass\"\n tag=\"li\"\n :variant=\"props.tagVariant\"\n :pill=\"props.tagPills\"\n :no-remove=\"props.noTagRemove\"\n :disabled=\"props.disabled\"\n @remove=\"removeTag\"\n >{{ tag }}</BFormTag\n >\n </slot>\n </template>\n <li\n role=\"none\"\n aria-live=\"off\"\n class=\"b-from-tags-field flex-grow-1\"\n :aria-controls=\"`${computedId}tag_list__`\"\n >\n <div role=\"group\" class=\"d-flex\">\n <input\n :id=\"_inputId\"\n ref=\"_input\"\n :disabled=\"props.disabled\"\n :value=\"inputValue\"\n :type=\"props.inputType\"\n :placeholder=\"props.placeholder\"\n class=\"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0\"\n style=\"outline: currentcolor none 0px; min-width: 5rem\"\n v-bind=\"props.inputAttrs\"\n :form=\"props.form\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n <button\n v-if=\"disableAddButton\"\n type=\"button\"\n class=\"btn b-form-tags-button py-0\"\n :class=\"[\n inputClass,\n {\n [`btn-${props.addButtonVariant}`]: props.addButtonVariant !== null,\n 'disabled invisible': inputValue.length === 0,\n },\n ]\"\n style=\"font-size: 90%\"\n :disabled=\"props.disabled || inputValue.length === 0 || isLimitReached\"\n @click=\"addTag(inputValue)\"\n >\n <slot name=\"add-button-text\">{{ props.addButtonText }}</slot>\n </button>\n </div>\n </li>\n </ul>\n <div :aria-live=\"props.feedbackAriaLive\" aria-atomic=\"true\">\n <div v-if=\"isInvalid\" class=\"d-block invalid-feedback\">\n {{ props.invalidTagText }}: {{ inputValue }}\n </div>\n <small v-if=\"isDuplicate\" class=\"form-text text-body-secondary\"\n >{{ props.duplicateTagText }}: {{ inputValue }}</small\n >\n <small v-if=\"tags.length === props.limit\" class=\"form-text text-body-secondary\">\n {{ props.limitTagsText }}</small\n >\n </div>\n </slot>\n <template v-if=\"props.name\">\n <input\n v-for=\"(tag, index) in tags\"\n :key=\"index\"\n type=\"hidden\"\n :name=\"props.name\"\n :value=\"tag\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, syncRef, useFocus, useToNumber} from '@vueuse/core'\nimport {computed, ref, useTemplateRef} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormTagsProps} from '../../types/ComponentProps'\nimport {escapeRegExpChars} from '../../utils/stringUtils'\nimport BFormTag from './BFormTag.vue'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport type {BFormTagsEmits, BFormTagsSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormTagsProps, 'modelValue'>>(), {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n addOnChange: false,\n autofocus: false,\n disabled: false,\n duplicateTagText: 'Duplicate tag(s)',\n feedbackAriaLive: 'assertive',\n form: undefined,\n ignoreInputFocusSelector: () => ['.b-form-tag', 'button', 'input', 'select'],\n inputAttrs: undefined,\n inputClass: undefined,\n inputId: undefined,\n inputType: 'text',\n invalidTagText: 'Invalid tag(s)',\n limit: undefined,\n limitTagsText: 'Tag limit reached',\n name: undefined,\n noAddOnEnter: false,\n noOuterFocus: false,\n noTagRemove: false,\n placeholder: 'Add tag...',\n removeOnDelete: false,\n required: false,\n separator: undefined,\n size: 'md',\n state: null,\n tagClass: undefined,\n tagPills: false,\n tagRemoveLabel: undefined,\n tagRemovedLabel: 'Tag removed',\n tagValidator: () => true,\n tagVariant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTags')\nconst emit = defineEmits<BFormTagsEmits>()\ndefineSlots<BFormTagsSlots>()\n\nconst modelValue = defineModel<Exclude<BFormTagsProps['modelValue'], undefined>>({\n default: () => [],\n})\n\nconst computedId = useId()\n\nconst limitNumber = useToNumber(() => props.limit ?? Number.NaN)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst _inputId = computed(() => props.inputId || `${computedId.value}input__`)\nconst tags = ref<string[]>([...modelValue.value])\nconst inputValue = ref<string>('')\nconst shouldRemoveOnDelete = ref<boolean>(modelValue.value.length > 0)\nconst lastRemovedTag = ref<string>('')\nconst validTags = ref<string[]>([])\nconst invalidTags = ref<string[]>([])\nconst duplicateTags = ref<string[]>([])\n\nsyncRef(modelValue, tags, {\n direction: 'ltr',\n transform: {\n ltr: (v) => [...v],\n },\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n [`form-control-${props.size}`]: props.size !== 'md',\n disabled: props.disabled,\n focus: focused.value,\n },\n])\n\nconst isDuplicate = computed(() => tags.value.includes(inputValue.value))\nconst isInvalid = computed(() =>\n inputValue.value === '' ? false : !props.tagValidator(inputValue.value)\n)\nconst isLimitReached = computed(() => tags.value.length === limitNumber.value)\nconst disableAddButton = computed(() => !isInvalid.value && !isDuplicate.value)\n\nconst onFocusin = (e: Readonly<FocusEvent>): void => {\n if (props.disabled) {\n const target = e.target as HTMLDivElement\n target.blur()\n return\n }\n\n emit('focusin', e)\n}\n\nconst onClick = (e: Readonly<MouseEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n const {target} = e\n const ignoreSelectors = props.ignoreInputFocusSelector\n if (ignoreSelectors && target instanceof Element) {\n const selector =\n typeof ignoreSelectors === 'string' ? ignoreSelectors : ignoreSelectors.join(',')\n\n if (selector && target.closest(selector)) {\n return\n }\n }\n\n focused.value = true\n}\n\nconst onFocus = (e: Readonly<FocusEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n focused.value = true\n emit('focus', e)\n}\n\nconst onBlur = (e: Readonly<FocusEvent>): void => {\n focused.value = false\n emit('blur', e)\n}\n\nconst onInput = (e: Readonly<Event> | string): void => {\n const value = typeof e === 'string' ? e : (e.target as HTMLInputElement).value\n\n shouldRemoveOnDelete.value = false\n\n if (props.separator?.includes(value.charAt(0)) && value.length > 0) {\n if (input.value) {\n input.value.value = ''\n }\n return\n }\n\n inputValue.value = value\n\n if (props.separator?.includes(value.charAt(value.length - 1))) {\n addTag(value.slice(0, value.length - 1))\n return\n }\n\n validTags.value = props.tagValidator(value) && !isDuplicate.value ? [value] : []\n invalidTags.value = props.tagValidator(value) ? [] : [value]\n duplicateTags.value = isDuplicate.value ? [value] : []\n\n emit('tag-state', validTags.value, invalidTags.value, duplicateTags.value)\n}\n\nconst onChange = (e: Readonly<Event>): void => {\n if (props.addOnChange) {\n onInput(e)\n\n if (!isDuplicate.value) {\n addTag(inputValue.value)\n }\n }\n}\n\nconst onKeydown = (e: Readonly<KeyboardEvent>): void => {\n if ((e.key === 'Enter' || e.code === 'NumpadEnter') && !props.noAddOnEnter) {\n addTag(inputValue.value)\n return\n }\n\n if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n props.removeOnDelete &&\n inputValue.value === '' &&\n shouldRemoveOnDelete.value &&\n tags.value.length > 0\n ) {\n removeTag(tags.value[tags.value.length - 1])\n } else {\n shouldRemoveOnDelete.value = true\n }\n}\n\nonKeyStroke(onKeydown, {target: input})\n\nconst separator = computed(() => {\n if (!props.separator) {\n return\n }\n\n return typeof props.separator === 'string' ? props.separator : props.separator.join('')\n})\n\nconst separatorRegExp = computed(() => {\n if (!separator.value) {\n return\n }\n\n return new RegExp(`[${escapeRegExpChars(separator.value)}]+`)\n})\n\nconst addTag = (tag?: string): void => {\n tag = (tag ?? inputValue.value).trim()\n\n const newTags = separatorRegExp.value\n ? tag.split(separatorRegExp.value).map((t) => t.trim())\n : [tag]\n const validTags: string[] = []\n\n for (const newTag of newTags) {\n if (newTag === '' || isDuplicate.value || !props.tagValidator(newTag)) {\n continue\n }\n\n if (limitNumber.value && isLimitReached.value) {\n break\n }\n\n validTags.push(newTag)\n }\n\n const newValue = [...modelValue.value, ...validTags]\n inputValue.value = ''\n shouldRemoveOnDelete.value = true\n modelValue.value = newValue\n focused.value = true\n}\n\nconst removeTag = (tag?: string): void => {\n const tagIndex = tags.value.indexOf(tag?.toString() ?? '')\n if (tagIndex === -1) return\n lastRemovedTag.value = tags.value.splice(tagIndex, 1).toString()\n modelValue.value = tags.value\n}\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n inputValue,\n})\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BFormTags-pK9i3cOB.js","names":[],"sources":["../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTags.vue","../src/components/BFormTags/BFormTags.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BFormTagEmits, BFormTagSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\nconst emit = defineEmits<BFormTagEmits>()\nconst slots = defineSlots<BFormTagSlots>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BFormTagEmits, BFormTagSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\nconst emit = defineEmits<BFormTagEmits>()\nconst slots = defineSlots<BFormTagSlots>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <div\n :id=\"computedId\"\n class=\"b-form-tags form-control h-auto\"\n :class=\"computedClasses\"\n role=\"group\"\n tabindex=\"-1\"\n @click=\"onClick\"\n @focusin=\"onFocusin\"\n @focusout=\"emit('focusout', $event)\"\n >\n <output\n :id=\"`${computedId}selected_tags__`\"\n class=\"visually-hidden\"\n :for=\"_inputId\"\n :aria-live=\"focused ? 'polite' : 'off'\"\n aria-atomic=\"true\"\n aria-relevant=\"additions text\"\n >{{ tags.join(', ') }}</output\n >\n <div\n :id=\"`${computedId}removed_tags__`\"\n role=\"status\"\n :aria-live=\"focused ? 'assertive' : 'off'\"\n aria-atomic=\"true\"\n class=\"visually-hidden\"\n >\n ({{ props.tagRemovedLabel }}) {{ lastRemovedTag }}\n </div>\n\n <slot\n :add-button-text=\"props.addButtonText\"\n :add-button-variant=\"props.addButtonVariant\"\n :add-tag\n :disable-add-button=\"disableAddButton\"\n :disabled=\"props.disabled\"\n :duplicate-tag-text=\"props.duplicateTagText\"\n :duplicate-tags=\"duplicateTags\"\n :form=\"props.form\"\n :input-attrs=\"{\n ...props.inputAttrs,\n disabled: props.disabled,\n form: props.form,\n id: _inputId,\n value: inputValue,\n }\"\n :input-class=\"props.inputClass\"\n :input-handlers=\"{\n input: onInput,\n keydown: onKeydown,\n change: onChange,\n }\"\n :input-id=\"_inputId\"\n :input-type=\"props.inputType\"\n :invalid-tag-text=\"props.invalidTagText\"\n :invalid-tags\n :is-duplicate\n :is-invalid\n :is-limit-reached=\"isLimitReached\"\n :limit-tags-text=\"props.limitTagsText\"\n :limit=\"limitNumber\"\n :no-tag-remove=\"props.noTagRemove\"\n :placeholder=\"props.placeholder\"\n :remove-tag\n :required=\"props.required\"\n :separator=\"props.separator\"\n :size=\"props.size\"\n :state=\"props.state\"\n :tag-class=\"props.tagClass\"\n :tag-pills=\"props.tagPills\"\n :tag-remove-label=\"props.tagRemoveLabel\"\n :tag-variant=\"props.tagVariant\"\n :tags\n >\n <ul\n :id=\"`${computedId}tag_list__`\"\n class=\"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center\"\n >\n <template v-for=\"(tag, index) in tags\" :key=\"index\">\n <slot\n name=\"tag\"\n :tag=\"tag\"\n :tag-class=\"props.tagClass\"\n :tag-variant=\"props.tagVariant\"\n :tag-pills=\"props.tagPills\"\n :remove-tag=\"removeTag\"\n >\n <BFormTag\n :key=\"tag\"\n :class=\"props.tagClass\"\n tag=\"li\"\n :variant=\"props.tagVariant\"\n :pill=\"props.tagPills\"\n :no-remove=\"props.noTagRemove\"\n :disabled=\"props.disabled\"\n @remove=\"removeTag\"\n >{{ tag }}</BFormTag\n >\n </slot>\n </template>\n <li\n role=\"none\"\n aria-live=\"off\"\n class=\"b-from-tags-field flex-grow-1\"\n :aria-controls=\"`${computedId}tag_list__`\"\n >\n <div role=\"group\" class=\"d-flex\">\n <input\n :id=\"_inputId\"\n ref=\"_input\"\n :disabled=\"props.disabled\"\n :value=\"inputValue\"\n :type=\"props.inputType\"\n :placeholder=\"props.placeholder\"\n class=\"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0\"\n style=\"outline: currentcolor none 0px; min-width: 5rem\"\n v-bind=\"props.inputAttrs\"\n :form=\"props.form\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n <button\n v-if=\"disableAddButton\"\n type=\"button\"\n class=\"btn b-form-tags-button py-0\"\n :class=\"[\n inputClass,\n {\n [`btn-${props.addButtonVariant}`]: props.addButtonVariant !== null,\n 'disabled invisible': inputValue.length === 0,\n },\n ]\"\n style=\"font-size: 90%\"\n :disabled=\"props.disabled || inputValue.length === 0 || isLimitReached\"\n @click=\"addTag(inputValue)\"\n >\n <slot name=\"add-button-text\">{{ props.addButtonText }}</slot>\n </button>\n </div>\n </li>\n </ul>\n <div :aria-live=\"props.feedbackAriaLive\" aria-atomic=\"true\">\n <div v-if=\"isInvalid\" class=\"d-block invalid-feedback\">\n {{ props.invalidTagText }}: {{ inputValue }}\n </div>\n <small v-if=\"isDuplicate\" class=\"form-text text-body-secondary\"\n >{{ props.duplicateTagText }}: {{ inputValue }}</small\n >\n <small v-if=\"tags.length === props.limit\" class=\"form-text text-body-secondary\">\n {{ props.limitTagsText }}</small\n >\n </div>\n </slot>\n <template v-if=\"props.name\">\n <input\n v-for=\"(tag, index) in tags\"\n :key=\"index\"\n type=\"hidden\"\n :name=\"props.name\"\n :value=\"tag\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, syncRef, useFocus, useToNumber} from '@vueuse/core'\nimport {computed, ref, useTemplateRef} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormTagsProps} from '../../types/ComponentProps'\nimport {escapeRegExpChars} from '../../utils/stringUtils'\nimport BFormTag from './BFormTag.vue'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport type {BFormTagsEmits, BFormTagsSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormTagsProps, 'modelValue'>>(), {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n addOnChange: false,\n autofocus: false,\n disabled: false,\n duplicateTagText: 'Duplicate tag(s)',\n feedbackAriaLive: 'assertive',\n form: undefined,\n ignoreInputFocusSelector: () => ['.b-form-tag', 'button', 'input', 'select'],\n inputAttrs: undefined,\n inputClass: undefined,\n inputId: undefined,\n inputType: 'text',\n invalidTagText: 'Invalid tag(s)',\n limit: undefined,\n limitTagsText: 'Tag limit reached',\n name: undefined,\n noAddOnEnter: false,\n noOuterFocus: false,\n noTagRemove: false,\n placeholder: 'Add tag...',\n removeOnDelete: false,\n required: false,\n separator: undefined,\n size: 'md',\n state: null,\n tagClass: undefined,\n tagPills: false,\n tagRemoveLabel: undefined,\n tagRemovedLabel: 'Tag removed',\n tagValidator: () => true,\n tagVariant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTags')\nconst emit = defineEmits<BFormTagsEmits>()\ndefineSlots<BFormTagsSlots>()\n\nconst modelValue = defineModel<Exclude<BFormTagsProps['modelValue'], undefined>>({\n default: () => [],\n})\n\nconst computedId = useId()\n\nconst limitNumber = useToNumber(() => props.limit ?? Number.NaN)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst _inputId = computed(() => props.inputId || `${computedId.value}input__`)\nconst tags = ref<string[]>([...modelValue.value])\nconst inputValue = ref<string>('')\nconst shouldRemoveOnDelete = ref<boolean>(modelValue.value.length > 0)\nconst lastRemovedTag = ref<string>('')\nconst validTags = ref<string[]>([])\nconst invalidTags = ref<string[]>([])\nconst duplicateTags = ref<string[]>([])\n\nsyncRef(modelValue, tags, {\n direction: 'ltr',\n transform: {\n ltr: (v) => [...v],\n },\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n [`form-control-${props.size}`]: props.size !== 'md',\n disabled: props.disabled,\n focus: focused.value,\n },\n])\n\nconst isDuplicate = computed(() => tags.value.includes(inputValue.value))\nconst isInvalid = computed(() =>\n inputValue.value === '' ? false : !props.tagValidator(inputValue.value)\n)\nconst isLimitReached = computed(() => tags.value.length === limitNumber.value)\nconst disableAddButton = computed(() => !isInvalid.value && !isDuplicate.value)\n\nconst onFocusin = (e: Readonly<FocusEvent>): void => {\n if (props.disabled) {\n const target = e.target as HTMLDivElement\n target.blur()\n return\n }\n\n emit('focusin', e)\n}\n\nconst onClick = (e: Readonly<MouseEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n const {target} = e\n const ignoreSelectors = props.ignoreInputFocusSelector\n if (ignoreSelectors && target instanceof Element) {\n const selector =\n typeof ignoreSelectors === 'string' ? ignoreSelectors : ignoreSelectors.join(',')\n\n if (selector && target.closest(selector)) {\n return\n }\n }\n\n focused.value = true\n}\n\nconst onFocus = (e: Readonly<FocusEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n focused.value = true\n emit('focus', e)\n}\n\nconst onBlur = (e: Readonly<FocusEvent>): void => {\n focused.value = false\n emit('blur', e)\n}\n\nconst onInput = (e: Readonly<Event> | string): void => {\n const value = typeof e === 'string' ? e : (e.target as HTMLInputElement).value\n\n shouldRemoveOnDelete.value = false\n\n if (props.separator?.includes(value.charAt(0)) && value.length > 0) {\n if (input.value) {\n input.value.value = ''\n }\n return\n }\n\n inputValue.value = value\n\n if (props.separator?.includes(value.charAt(value.length - 1))) {\n addTag(value.slice(0, value.length - 1))\n return\n }\n\n validTags.value = props.tagValidator(value) && !isDuplicate.value ? [value] : []\n invalidTags.value = props.tagValidator(value) ? [] : [value]\n duplicateTags.value = isDuplicate.value ? [value] : []\n\n emit('tag-state', validTags.value, invalidTags.value, duplicateTags.value)\n}\n\nconst onChange = (e: Readonly<Event>): void => {\n if (props.addOnChange) {\n onInput(e)\n\n if (!isDuplicate.value) {\n addTag(inputValue.value)\n }\n }\n}\n\nconst onKeydown = (e: Readonly<KeyboardEvent>): void => {\n if ((e.key === 'Enter' || e.code === 'NumpadEnter') && !props.noAddOnEnter) {\n addTag(inputValue.value)\n return\n }\n\n if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n props.removeOnDelete &&\n inputValue.value === '' &&\n shouldRemoveOnDelete.value &&\n tags.value.length > 0\n ) {\n removeTag(tags.value[tags.value.length - 1])\n } else {\n shouldRemoveOnDelete.value = true\n }\n}\n\nonKeyStroke(onKeydown, {target: input})\n\nconst separator = computed(() => {\n if (!props.separator) {\n return\n }\n\n return typeof props.separator === 'string' ? props.separator : props.separator.join('')\n})\n\nconst separatorRegExp = computed(() => {\n if (!separator.value) {\n return\n }\n\n return new RegExp(`[${escapeRegExpChars(separator.value)}]+`)\n})\n\nconst addTag = (tag?: string): void => {\n tag = (tag ?? inputValue.value).trim()\n\n const newTags = separatorRegExp.value\n ? tag.split(separatorRegExp.value).map((t) => t.trim())\n : [tag]\n const validTags: string[] = []\n\n for (const newTag of newTags) {\n if (newTag === '' || isDuplicate.value || !props.tagValidator(newTag)) {\n continue\n }\n\n if (limitNumber.value && isLimitReached.value) {\n break\n }\n\n validTags.push(newTag)\n }\n\n const newValue = [...modelValue.value, ...validTags]\n inputValue.value = ''\n shouldRemoveOnDelete.value = true\n modelValue.value = newValue\n focused.value = true\n}\n\nconst removeTag = (tag?: string): void => {\n const tagIndex = tags.value.indexOf(tag?.toString() ?? '')\n if (tagIndex === -1) return\n lastRemovedTag.value = tags.value.splice(tagIndex, 1).toString()\n modelValue.value = tags.value\n}\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n inputValue,\n})\n</script>\n","<template>\n <div\n :id=\"computedId\"\n class=\"b-form-tags form-control h-auto\"\n :class=\"computedClasses\"\n role=\"group\"\n tabindex=\"-1\"\n @click=\"onClick\"\n @focusin=\"onFocusin\"\n @focusout=\"emit('focusout', $event)\"\n >\n <output\n :id=\"`${computedId}selected_tags__`\"\n class=\"visually-hidden\"\n :for=\"_inputId\"\n :aria-live=\"focused ? 'polite' : 'off'\"\n aria-atomic=\"true\"\n aria-relevant=\"additions text\"\n >{{ tags.join(', ') }}</output\n >\n <div\n :id=\"`${computedId}removed_tags__`\"\n role=\"status\"\n :aria-live=\"focused ? 'assertive' : 'off'\"\n aria-atomic=\"true\"\n class=\"visually-hidden\"\n >\n ({{ props.tagRemovedLabel }}) {{ lastRemovedTag }}\n </div>\n\n <slot\n :add-button-text=\"props.addButtonText\"\n :add-button-variant=\"props.addButtonVariant\"\n :add-tag\n :disable-add-button=\"disableAddButton\"\n :disabled=\"props.disabled\"\n :duplicate-tag-text=\"props.duplicateTagText\"\n :duplicate-tags=\"duplicateTags\"\n :form=\"props.form\"\n :input-attrs=\"{\n ...props.inputAttrs,\n disabled: props.disabled,\n form: props.form,\n id: _inputId,\n value: inputValue,\n }\"\n :input-class=\"props.inputClass\"\n :input-handlers=\"{\n input: onInput,\n keydown: onKeydown,\n change: onChange,\n }\"\n :input-id=\"_inputId\"\n :input-type=\"props.inputType\"\n :invalid-tag-text=\"props.invalidTagText\"\n :invalid-tags\n :is-duplicate\n :is-invalid\n :is-limit-reached=\"isLimitReached\"\n :limit-tags-text=\"props.limitTagsText\"\n :limit=\"limitNumber\"\n :no-tag-remove=\"props.noTagRemove\"\n :placeholder=\"props.placeholder\"\n :remove-tag\n :required=\"props.required\"\n :separator=\"props.separator\"\n :size=\"props.size\"\n :state=\"props.state\"\n :tag-class=\"props.tagClass\"\n :tag-pills=\"props.tagPills\"\n :tag-remove-label=\"props.tagRemoveLabel\"\n :tag-variant=\"props.tagVariant\"\n :tags\n >\n <ul\n :id=\"`${computedId}tag_list__`\"\n class=\"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center\"\n >\n <template v-for=\"(tag, index) in tags\" :key=\"index\">\n <slot\n name=\"tag\"\n :tag=\"tag\"\n :tag-class=\"props.tagClass\"\n :tag-variant=\"props.tagVariant\"\n :tag-pills=\"props.tagPills\"\n :remove-tag=\"removeTag\"\n >\n <BFormTag\n :key=\"tag\"\n :class=\"props.tagClass\"\n tag=\"li\"\n :variant=\"props.tagVariant\"\n :pill=\"props.tagPills\"\n :no-remove=\"props.noTagRemove\"\n :disabled=\"props.disabled\"\n @remove=\"removeTag\"\n >{{ tag }}</BFormTag\n >\n </slot>\n </template>\n <li\n role=\"none\"\n aria-live=\"off\"\n class=\"b-from-tags-field flex-grow-1\"\n :aria-controls=\"`${computedId}tag_list__`\"\n >\n <div role=\"group\" class=\"d-flex\">\n <input\n :id=\"_inputId\"\n ref=\"_input\"\n :disabled=\"props.disabled\"\n :value=\"inputValue\"\n :type=\"props.inputType\"\n :placeholder=\"props.placeholder\"\n class=\"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0\"\n style=\"outline: currentcolor none 0px; min-width: 5rem\"\n v-bind=\"props.inputAttrs\"\n :form=\"props.form\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n @input=\"onInput\"\n @change=\"onChange\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n />\n <button\n v-if=\"disableAddButton\"\n type=\"button\"\n class=\"btn b-form-tags-button py-0\"\n :class=\"[\n inputClass,\n {\n [`btn-${props.addButtonVariant}`]: props.addButtonVariant !== null,\n 'disabled invisible': inputValue.length === 0,\n },\n ]\"\n style=\"font-size: 90%\"\n :disabled=\"props.disabled || inputValue.length === 0 || isLimitReached\"\n @click=\"addTag(inputValue)\"\n >\n <slot name=\"add-button-text\">{{ props.addButtonText }}</slot>\n </button>\n </div>\n </li>\n </ul>\n <div :aria-live=\"props.feedbackAriaLive\" aria-atomic=\"true\">\n <div v-if=\"isInvalid\" class=\"d-block invalid-feedback\">\n {{ props.invalidTagText }}: {{ inputValue }}\n </div>\n <small v-if=\"isDuplicate\" class=\"form-text text-body-secondary\"\n >{{ props.duplicateTagText }}: {{ inputValue }}</small\n >\n <small v-if=\"tags.length === props.limit\" class=\"form-text text-body-secondary\">\n {{ props.limitTagsText }}</small\n >\n </div>\n </slot>\n <template v-if=\"props.name\">\n <input\n v-for=\"(tag, index) in tags\"\n :key=\"index\"\n type=\"hidden\"\n :name=\"props.name\"\n :value=\"tag\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, syncRef, useFocus, useToNumber} from '@vueuse/core'\nimport {computed, ref, useTemplateRef} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormTagsProps} from '../../types/ComponentProps'\nimport {escapeRegExpChars} from '../../utils/stringUtils'\nimport BFormTag from './BFormTag.vue'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport type {BFormTagsEmits, BFormTagsSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormTagsProps, 'modelValue'>>(), {\n addButtonText: 'Add',\n addButtonVariant: 'outline-secondary',\n addOnChange: false,\n autofocus: false,\n disabled: false,\n duplicateTagText: 'Duplicate tag(s)',\n feedbackAriaLive: 'assertive',\n form: undefined,\n ignoreInputFocusSelector: () => ['.b-form-tag', 'button', 'input', 'select'],\n inputAttrs: undefined,\n inputClass: undefined,\n inputId: undefined,\n inputType: 'text',\n invalidTagText: 'Invalid tag(s)',\n limit: undefined,\n limitTagsText: 'Tag limit reached',\n name: undefined,\n noAddOnEnter: false,\n noOuterFocus: false,\n noTagRemove: false,\n placeholder: 'Add tag...',\n removeOnDelete: false,\n required: false,\n separator: undefined,\n size: 'md',\n state: null,\n tagClass: undefined,\n tagPills: false,\n tagRemoveLabel: undefined,\n tagRemovedLabel: 'Tag removed',\n tagValidator: () => true,\n tagVariant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTags')\nconst emit = defineEmits<BFormTagsEmits>()\ndefineSlots<BFormTagsSlots>()\n\nconst modelValue = defineModel<Exclude<BFormTagsProps['modelValue'], undefined>>({\n default: () => [],\n})\n\nconst computedId = useId()\n\nconst limitNumber = useToNumber(() => props.limit ?? Number.NaN)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst _inputId = computed(() => props.inputId || `${computedId.value}input__`)\nconst tags = ref<string[]>([...modelValue.value])\nconst inputValue = ref<string>('')\nconst shouldRemoveOnDelete = ref<boolean>(modelValue.value.length > 0)\nconst lastRemovedTag = ref<string>('')\nconst validTags = ref<string[]>([])\nconst invalidTags = ref<string[]>([])\nconst duplicateTags = ref<string[]>([])\n\nsyncRef(modelValue, tags, {\n direction: 'ltr',\n transform: {\n ltr: (v) => [...v],\n },\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n [`form-control-${props.size}`]: props.size !== 'md',\n disabled: props.disabled,\n focus: focused.value,\n },\n])\n\nconst isDuplicate = computed(() => tags.value.includes(inputValue.value))\nconst isInvalid = computed(() =>\n inputValue.value === '' ? false : !props.tagValidator(inputValue.value)\n)\nconst isLimitReached = computed(() => tags.value.length === limitNumber.value)\nconst disableAddButton = computed(() => !isInvalid.value && !isDuplicate.value)\n\nconst onFocusin = (e: Readonly<FocusEvent>): void => {\n if (props.disabled) {\n const target = e.target as HTMLDivElement\n target.blur()\n return\n }\n\n emit('focusin', e)\n}\n\nconst onClick = (e: Readonly<MouseEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n const {target} = e\n const ignoreSelectors = props.ignoreInputFocusSelector\n if (ignoreSelectors && target instanceof Element) {\n const selector =\n typeof ignoreSelectors === 'string' ? ignoreSelectors : ignoreSelectors.join(',')\n\n if (selector && target.closest(selector)) {\n return\n }\n }\n\n focused.value = true\n}\n\nconst onFocus = (e: Readonly<FocusEvent>): void => {\n if (props.disabled || props.noOuterFocus) {\n return\n }\n\n focused.value = true\n emit('focus', e)\n}\n\nconst onBlur = (e: Readonly<FocusEvent>): void => {\n focused.value = false\n emit('blur', e)\n}\n\nconst onInput = (e: Readonly<Event> | string): void => {\n const value = typeof e === 'string' ? e : (e.target as HTMLInputElement).value\n\n shouldRemoveOnDelete.value = false\n\n if (props.separator?.includes(value.charAt(0)) && value.length > 0) {\n if (input.value) {\n input.value.value = ''\n }\n return\n }\n\n inputValue.value = value\n\n if (props.separator?.includes(value.charAt(value.length - 1))) {\n addTag(value.slice(0, value.length - 1))\n return\n }\n\n validTags.value = props.tagValidator(value) && !isDuplicate.value ? [value] : []\n invalidTags.value = props.tagValidator(value) ? [] : [value]\n duplicateTags.value = isDuplicate.value ? [value] : []\n\n emit('tag-state', validTags.value, invalidTags.value, duplicateTags.value)\n}\n\nconst onChange = (e: Readonly<Event>): void => {\n if (props.addOnChange) {\n onInput(e)\n\n if (!isDuplicate.value) {\n addTag(inputValue.value)\n }\n }\n}\n\nconst onKeydown = (e: Readonly<KeyboardEvent>): void => {\n if ((e.key === 'Enter' || e.code === 'NumpadEnter') && !props.noAddOnEnter) {\n addTag(inputValue.value)\n return\n }\n\n if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n props.removeOnDelete &&\n inputValue.value === '' &&\n shouldRemoveOnDelete.value &&\n tags.value.length > 0\n ) {\n removeTag(tags.value[tags.value.length - 1])\n } else {\n shouldRemoveOnDelete.value = true\n }\n}\n\nonKeyStroke(onKeydown, {target: input})\n\nconst separator = computed(() => {\n if (!props.separator) {\n return\n }\n\n return typeof props.separator === 'string' ? props.separator : props.separator.join('')\n})\n\nconst separatorRegExp = computed(() => {\n if (!separator.value) {\n return\n }\n\n return new RegExp(`[${escapeRegExpChars(separator.value)}]+`)\n})\n\nconst addTag = (tag?: string): void => {\n tag = (tag ?? inputValue.value).trim()\n\n const newTags = separatorRegExp.value\n ? tag.split(separatorRegExp.value).map((t) => t.trim())\n : [tag]\n const validTags: string[] = []\n\n for (const newTag of newTags) {\n if (newTag === '' || isDuplicate.value || !props.tagValidator(newTag)) {\n continue\n }\n\n if (limitNumber.value && isLimitReached.value) {\n break\n }\n\n validTags.push(newTag)\n }\n\n const newValue = [...modelValue.value, ...validTags]\n inputValue.value = ''\n shouldRemoveOnDelete.value = true\n modelValue.value = newValue\n focused.value = true\n}\n\nconst removeTag = (tag?: string): void => {\n const tagIndex = tags.value.indexOf(tag?.toString() ?? '')\n if (tagIndex === -1) return\n lastRemovedTag.value = tags.value.splice(tagIndex, 1).toString()\n modelValue.value = tags.value\n}\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n inputValue,\n})\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BInputGroup-B8fKBtip.mjs","names":[],"sources":["../src/components/BInputGroup/BInputGroup.vue","../src/components/BInputGroup/BInputGroup.vue","../src/components/BInputGroup/BInputGroupText.vue","../src/components/BInputGroup/BInputGroupText.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"props.id\"\n class=\"input-group\"\n :class=\"computedClasses\"\n role=\"group\"\n >\n <slot name=\"prepend\">\n <span v-if=\"hasPrepend\" class=\"input-group-text\">\n <span>{{ props.prepend }}</span>\n </span>\n </slot>\n <slot />\n <slot name=\"append\">\n <span v-if=\"hasAppend\" class=\"input-group-text\">\n <span>{{ props.append }}</span>\n </span>\n </slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BInputGroupProps} from '../../types/ComponentProps'\nimport {computed, provide} from 'vue'\nimport {inputGroupKey} from '../../utils/keys'\nimport type {BInputGroupSlots} from '../../types'\n\nprovide(inputGroupKey, true)\n\nconst _props = withDefaults(defineProps<BInputGroupProps>(), {\n append: undefined,\n id: undefined,\n prepend: undefined,\n size: 'md',\n tag: 'div',\n})\nconst props = useDefaults(_props, 'BInputGroup')\ndefineSlots<BInputGroupSlots>()\n\nconst computedClasses = computed(() => ({\n [`input-group-${props.size}`]: props.size !== 'md',\n}))\nconst hasAppend = computed(() => !!props.append)\nconst hasPrepend = computed(() => !!props.prepend)\n</script>\n","<template>\n <component\n :is=\"props.tag\"\n :id=\"props.id\"\n class=\"input-group\"\n :class=\"computedClasses\"\n role=\"group\"\n >\n <slot name=\"prepend\">\n <span v-if=\"hasPrepend\" class=\"input-group-text\">\n <span>{{ props.prepend }}</span>\n </span>\n </slot>\n <slot />\n <slot name=\"append\">\n <span v-if=\"hasAppend\" class=\"input-group-text\">\n <span>{{ props.append }}</span>\n </span>\n </slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BInputGroupProps} from '../../types/ComponentProps'\nimport {computed, provide} from 'vue'\nimport {inputGroupKey} from '../../utils/keys'\nimport type {BInputGroupSlots} from '../../types'\n\nprovide(inputGroupKey, true)\n\nconst _props = withDefaults(defineProps<BInputGroupProps>(), {\n append: undefined,\n id: undefined,\n prepend: undefined,\n size: 'md',\n tag: 'div',\n})\nconst props = useDefaults(_props, 'BInputGroup')\ndefineSlots<BInputGroupSlots>()\n\nconst computedClasses = computed(() => ({\n [`input-group-${props.size}`]: props.size !== 'md',\n}))\nconst hasAppend = computed(() => !!props.append)\nconst hasPrepend = computed(() => !!props.prepend)\n</script>\n","<template>\n <component :is=\"props.tag\" class=\"input-group-text\">\n <slot>\n {{ props.text }}\n </slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BInputGroupTextSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BInputGroupTextProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BInputGroupTextProps>(), {\n tag: 'div',\n text: undefined,\n})\nconst props = useDefaults(_props, 'BInputGroupText')\ndefineSlots<BInputGroupTextSlots>()\n</script>\n","<template>\n <component :is=\"props.tag\" class=\"input-group-text\">\n <slot>\n {{ props.text }}\n </slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BInputGroupTextSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BInputGroupTextProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BInputGroupTextProps>(), {\n tag: 'div',\n text: undefined,\n})\nconst props = useDefaults(_props, 'BInputGroupText')\ndefineSlots<BInputGroupTextSlots>()\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA6BA,UAAQ,eAAe,KAAI;EAS3B,MAAM,QAAQ,YAPC,SAOmB,cAAa;EAG/C,MAAM,kBAAkB,gBAAgB,GACrC,eAAe,MAAM,SAAS,MAAM,SAAS,MAC/C,EAAC;EACF,MAAM,YAAY,eAAe,CAAC,CAAC,MAAM,OAAM;EAC/C,MAAM,aAAa,eAAe,CAAC,CAAC,MAAM,QAAO;;uBA5C/C,YAkBY,wBAjBL,MAAA,MAAK,CAAC,IAAG,EAAA;IACb,IAAI,MAAA,MAAK,CAAC;IACX,OAAK,eAAA,CAAC,eACE,gBAAA,MAAe,CAAA;IACvB,MAAK;;2BAME;KAJP,WAIO,KAAA,QAAA,WAAA,EAAA,QAAA,CAHO,WAAA,SAAA,WAAA,EAAZ,mBAEO,QAFP,YAEO,CADL,mBAAgC,QAAA,MAAA,gBAAvB,MAAA,MAAK,CAAC,QAAO,EAAA,EAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA;KAG1B,WAAQ,KAAA,QAAA,UAAA;KACR,WAIO,KAAA,QAAA,UAAA,EAAA,QAAA,CAHO,UAAA,SAAA,WAAA,EAAZ,mBAEO,QAFP,YAEO,CADL,mBAA+B,QAAA,MAAA,gBAAtB,MAAA,MAAK,CAAC,OAAM,EAAA,EAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;;EEC7B,MAAM,QAAQ,YAJC,SAImB,kBAAiB;;uBAhBjD,YAIY,wBAJI,MAAA,MAAK,CAAC,IAAG,EAAA,EAAE,OAAM,oBAAkB,EAAA;2BAG1C,CAFP,WAEO,KAAA,QAAA,WAAA,EAAA,QAAA,CAAA,gBAAA,gBADF,MAAA,MAAK,CAAC,KAAI,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BInputGroup-Cr0qLUds.js","names":[],"sources":["../src/components/BInputGroup/BInputGroup.vue","../src/components/BInputGroup/BInputGroup.vue","../src/components/BInputGroup/BInputGroupText.vue","../src/components/BInputGroup/BInputGroupText.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"props.id\"\n class=\"input-group\"\n :class=\"computedClasses\"\n role=\"group\"\n >\n <slot name=\"prepend\">\n <span v-if=\"hasPrepend\" class=\"input-group-text\">\n <span>{{ props.prepend }}</span>\n </span>\n </slot>\n <slot />\n <slot name=\"append\">\n <span v-if=\"hasAppend\" class=\"input-group-text\">\n <span>{{ props.append }}</span>\n </span>\n </slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BInputGroupProps} from '../../types/ComponentProps'\nimport {computed, provide} from 'vue'\nimport {inputGroupKey} from '../../utils/keys'\nimport type {BInputGroupSlots} from '../../types'\n\nprovide(inputGroupKey, true)\n\nconst _props = withDefaults(defineProps<BInputGroupProps>(), {\n append: undefined,\n id: undefined,\n prepend: undefined,\n size: 'md',\n tag: 'div',\n})\nconst props = useDefaults(_props, 'BInputGroup')\ndefineSlots<BInputGroupSlots>()\n\nconst computedClasses = computed(() => ({\n [`input-group-${props.size}`]: props.size !== 'md',\n}))\nconst hasAppend = computed(() => !!props.append)\nconst hasPrepend = computed(() => !!props.prepend)\n</script>\n","<template>\n <component\n :is=\"props.tag\"\n :id=\"props.id\"\n class=\"input-group\"\n :class=\"computedClasses\"\n role=\"group\"\n >\n <slot name=\"prepend\">\n <span v-if=\"hasPrepend\" class=\"input-group-text\">\n <span>{{ props.prepend }}</span>\n </span>\n </slot>\n <slot />\n <slot name=\"append\">\n <span v-if=\"hasAppend\" class=\"input-group-text\">\n <span>{{ props.append }}</span>\n </span>\n </slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BInputGroupProps} from '../../types/ComponentProps'\nimport {computed, provide} from 'vue'\nimport {inputGroupKey} from '../../utils/keys'\nimport type {BInputGroupSlots} from '../../types'\n\nprovide(inputGroupKey, true)\n\nconst _props = withDefaults(defineProps<BInputGroupProps>(), {\n append: undefined,\n id: undefined,\n prepend: undefined,\n size: 'md',\n tag: 'div',\n})\nconst props = useDefaults(_props, 'BInputGroup')\ndefineSlots<BInputGroupSlots>()\n\nconst computedClasses = computed(() => ({\n [`input-group-${props.size}`]: props.size !== 'md',\n}))\nconst hasAppend = computed(() => !!props.append)\nconst hasPrepend = computed(() => !!props.prepend)\n</script>\n","<template>\n <component :is=\"props.tag\" class=\"input-group-text\">\n <slot>\n {{ props.text }}\n </slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BInputGroupTextSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BInputGroupTextProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BInputGroupTextProps>(), {\n tag: 'div',\n text: undefined,\n})\nconst props = useDefaults(_props, 'BInputGroupText')\ndefineSlots<BInputGroupTextSlots>()\n</script>\n","<template>\n <component :is=\"props.tag\" class=\"input-group-text\">\n <slot>\n {{ props.text }}\n </slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BInputGroupTextSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BInputGroupTextProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BInputGroupTextProps>(), {\n tag: 'div',\n text: undefined,\n})\nconst props = useDefaults(_props, 'BInputGroupText')\ndefineSlots<BInputGroupTextSlots>()\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,GAAA,GAAA,IAAA,SAAQ,aAAA,eAAe,KAAI;EAS3B,MAAM,QAAQ,oBAAA,YAPC,SAOmB,cAAa;EAG/C,MAAM,mBAAA,GAAA,IAAA,iBAAkC,GACrC,eAAe,MAAM,SAAS,MAAM,SAAS,MAC/C,EAAC;EACF,MAAM,aAAA,GAAA,IAAA,gBAA2B,CAAC,CAAC,MAAM,OAAM;EAC/C,MAAM,cAAA,GAAA,IAAA,gBAA4B,CAAC,CAAC,MAAM,QAAO;;qGA3CxC,MAAK,CAAC,IAAG,EAAA;IACb,KAAA,GAAA,IAAA,OAAI,MAAK,CAAC;IACX,QAAA,GAAA,IAAA,gBAAK,CAAC,eACE,gBAAA,MAAe,CAAA;IACvB,MAAK;;oCAME;yBAAA,KAAA,QAAA,WAAA,EAAA,QAAA,CAHO,WAAA,UAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,oBAEL,QAFP,YAEO,EAAA,GAAA,IAAA,oBAD2B,QAAA,OAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,OAAvB,MAAK,CAAC,QAAO,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,IAAA,oBAAA,IAAA,KAAA,CAAA,CAAA;yBAGlB,KAAA,QAAA,UAAA;yBAKD,KAAA,QAAA,UAAA,EAAA,QAAA,CAHO,UAAA,UAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,oBAEL,QAFP,YAEO,EAAA,GAAA,IAAA,oBAD0B,QAAA,OAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,OAAtB,MAAK,CAAC,OAAM,EAAA,EAAA,CAAA,CAAA,KAAA,GAAA,IAAA,oBAAA,IAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;;EEC7B,MAAM,QAAQ,oBAAA,YAJC,SAImB,kBAAiB;;qGAhBjC,MAAK,CAAC,IAAG,EAAA,EAAE,OAAM,oBAAkB,EAAA;oCAG1C,EAAA,GAAA,IAAA,YAAA,KAAA,QAAA,WAAA,EAAA,QAAA,EAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,OADF,MAAK,CAAC,KAAI,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BModal-TCXrZEZk.mjs","names":["$attrs"],"sources":["../src/composables/useModalManager.ts","../src/components/BModal/BModal.vue","../src/components/BModal/BModal.vue"],"sourcesContent":["import {getSSRHandler, tryOnScopeDispose, unrefElement} from '@vueuse/core'\nimport {\n type ComponentInternalInstance,\n computed,\n getCurrentInstance,\n inject,\n type Ref,\n toValue,\n watch,\n} from 'vue'\nimport {modalManagerKey} from '../utils/keys'\nimport {getSafeDocument} from '../utils/dom'\n\nconst modalOpenClassName = 'modal-open'\n\nexport const useSharedModalStack = () => {\n const modalManagerPlugin = inject(modalManagerKey, null)\n\n /**\n * Removes an item from both the stack and registry\n */\n const dispose = (modal: Readonly<ComponentInternalInstance>): void => {\n modalManagerPlugin?.removeStack(modal)\n modalManagerPlugin?.removeRegistry(modal)\n }\n\n const updateHTMLAttrs = getSSRHandler('updateHTMLAttrs', (selector, attribute, value) => {\n const el =\n typeof selector !== 'string'\n ? unrefElement(selector)\n : selector\n ? getSafeDocument()?.querySelector(selector)\n : undefined\n if (!el) return\n\n if (attribute === 'class') {\n el.classList.toggle(modalOpenClassName, value === modalOpenClassName)\n } else {\n el.setAttribute(attribute, value)\n }\n })\n\n tryOnScopeDispose(() => {\n if (modalManagerPlugin?.countStack.value === 0) {\n updateHTMLAttrs('body', 'class', '')\n }\n })\n\n watch(\n () => modalManagerPlugin?.countStack.value,\n (newValue) => {\n if (newValue === undefined) return\n updateHTMLAttrs('body', 'class', newValue > 0 ? modalOpenClassName : '')\n }\n )\n\n return {\n ...modalManagerPlugin,\n dispose,\n }\n}\n\nexport const useModalManager = (modalOpen: Readonly<Ref<boolean>>, initialValue: boolean) => {\n const {pushRegistry, pushStack, removeStack, stack, dispose, countStack} = useSharedModalStack()\n\n const currentModal = getCurrentInstance()\n\n if (!currentModal || currentModal.type.__name !== 'BModal') {\n throw new Error('useModalManager must only use in BModal component')\n }\n\n pushRegistry?.(currentModal)\n\n tryOnScopeDispose(() => {\n dispose(currentModal)\n })\n\n const setInStack = (newValue: boolean, oldValue: boolean) => {\n if (newValue) {\n pushStack?.(currentModal)\n } else if (oldValue && !newValue) {\n removeStack?.(currentModal)\n }\n }\n\n // (initialValue, initialValue) is meant to always only ever trigger the first `if (newValue) {` block. The other block is skipped _always_\n setInStack(initialValue, initialValue)\n\n watch(modalOpen, setInStack)\n\n return {\n activePosition: computed(() =>\n stack?.value.findIndex((el) => toValue(el.exposed?.id) === toValue(currentModal.exposed?.id))\n ),\n activeModalCount: countStack,\n stackWithoutSelf: computed(\n () =>\n stack?.value.filter(\n (el) => toValue(el.exposed?.id) !== toValue(currentModal.exposed?.id)\n ) ?? []\n ),\n }\n}\n","<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <div\n v-show=\"showRef && ((backdropReady && props.backdropFirst) || !props.backdropFirst)\"\n :id=\"computedId\"\n ref=\"_element\"\n class=\"modal\"\n :class=\"[\n props.modalClass,\n {\n fade: !computedNoAnimation,\n show: isVisible,\n ...sharedClasses,\n },\n ]\"\n role=\"dialog\"\n :aria-labelledby=\"!props.noHeader ? `${computedId}-label` : undefined\"\n :aria-describedby=\"`${computedId}-body`\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :style=\"computedZIndex\"\n style=\"display: block\"\n @mousedown.left.self=\"hide('backdrop')\"\n >\n <div class=\"modal-dialog\" :class=\"modalDialogClasses\">\n <div v-if=\"contentShowing\" class=\"modal-content\" :class=\"props.contentClass\">\n <div\n v-if=\"!props.noHeader\"\n class=\"modal-header\"\n :class=\"headerClasses\"\n v-bind=\"props.headerAttrs\"\n >\n <slot name=\"header\" v-bind=\"sharedSlots\">\n <component\n :is=\"props.titleTag\"\n :id=\"`${computedId}-label`\"\n class=\"modal-title\"\n :class=\"titleClasses\"\n >\n <slot name=\"title\" v-bind=\"sharedSlots\">\n {{ props.title }}\n </slot>\n </component>\n <template v-if=\"!props.noHeaderClose\">\n <BButton\n v-if=\"hasHeaderCloseSlot\"\n ref=\"_closeButton\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hide('close')\"\n >\n <slot name=\"header-close\" v-bind=\"sharedSlots\" />\n </BButton>\n <BCloseButton\n v-else\n ref=\"_closeButton\"\n :aria-label=\"props.headerCloseLabel\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hide('close')\"\n />\n </template>\n </slot>\n </div>\n <div\n :id=\"`${computedId}-body`\"\n class=\"modal-body\"\n :class=\"bodyClasses\"\n v-bind=\"props.bodyAttrs\"\n >\n <slot v-bind=\"sharedSlots\">\n {{ props.body }}\n </slot>\n </div>\n <div v-if=\"!props.noFooter\" class=\"modal-footer\" :class=\"footerClasses\">\n <slot name=\"footer\" v-bind=\"sharedSlots\">\n <slot name=\"cancel\" v-bind=\"sharedSlots\">\n <BButton\n v-if=\"!props.okOnly\"\n ref=\"_cancelButton\"\n :disabled=\"disableCancel\"\n :size=\"props.buttonSize\"\n :variant=\"props.cancelVariant\"\n :class=\"props.cancelClass\"\n @click=\"hide('cancel')\"\n >\n {{ props.cancelTitle }}\n </BButton>\n </slot>\n <slot name=\"ok\" v-bind=\"sharedSlots\">\n <BButton\n ref=\"_okButton\"\n :disabled=\"disableOk\"\n :size=\"props.buttonSize\"\n :variant=\"props.okVariant\"\n :class=\"props.okClass\"\n @click=\"hide('ok')\"\n >\n {{ props.okTitle }}\n </BButton>\n </slot>\n </slot>\n </div>\n </div>\n </div>\n <div\n v-if=\"needsFallback\"\n ref=\"_fallbackFocusElement\"\n :class=\"fallbackClassSelector\"\n tabindex=\"0\"\n style=\"width: 0; height: 0; overflow: hidden\"\n />\n </div>\n </Transition>\n <slot v-if=\"!props.noBackdrop\" name=\"backdrop\" v-bind=\"sharedSlots\">\n <Transition v-if=\"renderBackdropRef\" v-bind=\"backdropTransitionProps\">\n <div\n v-show=\"showRef || (isLeaving && props.backdropFirst && !computedNoAnimation)\"\n class=\"modal-backdrop\"\n :style=\"computedZIndexBackdrop\"\n :class=\"{\n fade: !computedNoAnimation,\n show: backdropVisible || computedNoAnimation,\n ...sharedClasses,\n }\"\n @click=\"hide('backdrop')\"\n />\n </Transition>\n </slot>\n </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, unrefElement} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {\n computed,\n type CSSProperties,\n type EmitFn,\n nextTick,\n onMounted,\n ref,\n useTemplateRef,\n watch,\n} from 'vue'\nimport type {BModalSlots, BModalSlotsData, BModalEmits, BModalProps} from '../../types'\n\nimport BButton from '../BButton/BButton.vue'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {getModalZIndex, getSafeDocument, isEmptySlot} from '../../utils/dom'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useModalManager} from '../../composables/useModalManager'\nimport {useShowHide} from '../../composables/useShowHide'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {getElement} from '../../utils/getElement'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BModalProps, 'modelValue'>>(), {\n focus: undefined,\n backdropFirst: false,\n body: undefined,\n bodyBgVariant: null,\n bodyAttrs: undefined,\n bodyClass: null,\n bodyScrolling: false,\n bodyTextVariant: null,\n bodyVariant: null,\n busy: false,\n buttonSize: 'md',\n cancelClass: undefined,\n cancelDisabled: false,\n cancelTitle: 'Cancel',\n cancelVariant: 'secondary',\n centered: false,\n contentClass: undefined,\n dialogClass: undefined,\n footerBgVariant: null,\n footerBorderVariant: null,\n footerClass: undefined,\n footerTextVariant: null,\n footerVariant: null,\n fullscreen: false,\n headerAttrs: undefined,\n headerBgVariant: null,\n headerBorderVariant: null,\n headerClass: undefined,\n headerCloseClass: undefined,\n headerCloseLabel: 'Close',\n headerCloseVariant: 'secondary',\n headerTextVariant: null,\n headerVariant: null,\n noFooter: false,\n noHeader: false,\n noHeaderClose: false,\n id: undefined,\n initialAnimation: false,\n lazy: false,\n modalClass: undefined,\n noBackdrop: false,\n noCloseOnBackdrop: false,\n noCloseOnEsc: false,\n noFade: false,\n noTrap: false,\n okClass: undefined,\n okDisabled: false,\n okOnly: false,\n okTitle: 'OK',\n okVariant: 'primary',\n unmountLazy: false,\n scrollable: false,\n size: 'md',\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n titleClass: undefined,\n titleVisuallyHidden: false,\n titleTag: 'h5',\n show: false,\n transProps: undefined,\n visible: false,\n})\nconst props = useDefaults(_props, 'BModal')\nconst emit = defineEmits<BModalEmits>()\nconst slots = defineSlots<BModalSlots>()\n\nconst computedId = useId(() => props.id, 'modal')\n// Note: passive: true will sync an internal ref... This is required for useModalManager to exit,\n// Since the modelValue that's passed from that composable is not reactive, this internal ref _is_ and thus it will trigger closing the modal\nconst modelValue = defineModel<Exclude<BModalProps['modelValue'], undefined>>({default: false})\n\nconst element = useTemplateRef<HTMLElement | null>('_element')\nconst fallbackFocusElement = useTemplateRef<HTMLElement | null>('_fallbackFocusElement')\nconst okButton = useTemplateRef<HTMLElement | null>('_okButton')\nconst cancelButton = useTemplateRef<HTMLElement | null>('_cancelButton')\nconst closeButton = useTemplateRef<HTMLElement | null>('_closeButton')\n\nconst pickFocusItem = () => {\n if (props.focus && typeof props.focus !== 'boolean') {\n if (props.focus === 'ok') {\n return okButton\n } else if (props.focus === 'close') {\n return closeButton\n } else if (props.focus === 'cancel') {\n return cancelButton\n }\n return getElement(props.focus, element.value ?? undefined) ?? element.value\n }\n return element\n}\n\nlet activeElement: HTMLElement | null = null\nconst onAfterEnter = () => {\n const doc = getSafeDocument()\n if (props.noTrap && props.focus !== false && doc) {\n // Hypothetically this could be an issue\n activeElement = doc.activeElement as HTMLElement\n if (activeElement === element.value) {\n activeElement = null\n }\n const el = unrefElement(pickFocusItem())\n if (!el) return\n el?.focus()\n if (\n el.tagName &&\n el.tagName.toLowerCase() === 'input' &&\n typeof (el as HTMLInputElement).select === 'function'\n ) {\n ;(el as HTMLInputElement).select()\n }\n }\n}\n\nconst onAfterLeave = () => {\n if (props.noTrap && props.focus !== false && activeElement) {\n activeElement?.focus()\n activeElement = null\n }\n}\n\nconst {\n showRef,\n renderRef,\n renderBackdropRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n backdropTransitionProps,\n isLeaving,\n isVisible,\n trapActive,\n contentShowing,\n backdropReady,\n backdropVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, element, computedId, {\n // addShowClass: false,\n transitionProps: {\n onAfterEnter,\n onAfterLeave,\n },\n})\n\nconst fallbackClassSelector = 'modal-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive: trapActive,\n noTrap: () => props.noTrap,\n fallbackFocus: {\n ref: fallbackFocusElement,\n classSelector: fallbackClassSelector,\n },\n focus: () => (props.focus === false ? false : (unrefElement(pickFocusItem()) ?? undefined)),\n // () => (typeof focus === 'boolean' ? focus : (unrefElement(focus) ?? undefined)),\n})\n\nonKeyStroke(\n 'Escape',\n () => {\n hide('esc')\n },\n {target: element}\n)\nuseSafeScrollLock(showRef, () => props.bodyScrolling)\n\nconst hasHeaderCloseSlot = computed(() => !isEmptySlot(slots['header-close']))\n\nconst modalDialogClasses = computed(() => [\n props.dialogClass,\n {\n 'modal-fullscreen': props.fullscreen === true,\n [`modal-fullscreen-${props.fullscreen}-down`]: typeof props.fullscreen === 'string',\n [`modal-${props.size}`]: props.size !== 'md',\n 'modal-dialog-centered': props.centered,\n 'modal-dialog-scrollable': props.scrollable,\n },\n])\n\nconst bodyColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.bodyBgVariant,\n textVariant: props.bodyTextVariant,\n variant: props.bodyVariant,\n}))\nconst bodyClasses = computed(() => [props.bodyClass, bodyColorClasses.value])\n\nconst headerColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.headerBgVariant,\n textVariant: props.headerTextVariant,\n variant: props.headerVariant,\n borderVariant: props.headerBorderVariant,\n}))\nconst headerClasses = computed(() => [props.headerClass, headerColorClasses.value])\n\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: props.headerCloseClass,\n}))\n\nconst footerColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.footerBgVariant,\n textVariant: props.footerTextVariant,\n variant: props.footerVariant,\n borderVariant: props.footerBorderVariant,\n}))\nconst footerClasses = computed(() => [props.footerClass, footerColorClasses.value])\n\nconst titleClasses = computed(() => [\n props.titleClass,\n {\n ['visually-hidden']: props.titleVisuallyHidden,\n },\n])\n\nconst disableCancel = computed(() => props.cancelDisabled || props.busy)\nconst disableOk = computed(() => props.okDisabled || props.busy)\n\nconst {activePosition, activeModalCount, stackWithoutSelf} = useModalManager(\n showRef,\n modelValue.value\n)\n\nconst sharedClasses = computed(() => ({\n [`stack-position-${activePosition?.value ?? 0}`]: true,\n [`stack-inverse-position-${(activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0)}`]: true,\n}))\n\nwatch(stackWithoutSelf, (newValue, oldValue) => {\n if (newValue.length > oldValue.length && showRef.value === true && props.noStacking) hide()\n})\n\nconst defaultModalDialogZIndex = ref(getModalZIndex(element.value ?? getSafeDocument()?.body))\n\nonMounted(() => {\n watch(\n renderRef,\n (v) => {\n if (!v) return\n nextTick(() => {\n if (!element.value) return\n defaultModalDialogZIndex.value = getModalZIndex(element.value)\n })\n },\n {immediate: true}\n )\n})\n\nconst computedZIndexNumber = computed<number>(() =>\n // Make sure that newly opened modals have a higher z-index than currently active ones.\n // All active modals have a z-index of ('defaultZIndex' - 'stackSize' - 'positionInStack').\n //\n // This means inactive modals will already be higher than active ones when opened.\n\n showRef.value || isLeaving.value\n ? // Just for reference there is a single frame in which the modal is not active but still has a higher z-index than the active ones due to _when_ it calculates its position. It's a small visual effect\n defaultModalDialogZIndex.value -\n ((activeModalCount?.value ?? 0) * 2 - (activePosition?.value ?? 0) * 2)\n : defaultModalDialogZIndex.value\n)\nconst computedZIndex = computed<CSSProperties>(() => ({\n 'z-index': computedZIndexNumber.value,\n '--b-position': activePosition?.value ?? 0,\n '--b-inverse-position': (activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0),\n '--b-count': activeModalCount?.value ?? 0,\n}))\nconst computedZIndexBackdrop = computed<CSSProperties>(() => ({\n 'z-index': computedZIndexNumber.value - 1,\n '--b-position': activePosition?.value ?? 0,\n '--b-inverse-position': (activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0),\n '--b-count': activeModalCount?.value ?? 0,\n}))\n\nconst sharedSlots = computed<BModalSlotsData>(() => ({\n id: computedId.value,\n cancel: () => {\n hide('cancel')\n },\n close: () => {\n hide('close')\n },\n hide,\n show,\n toggle,\n ok: () => {\n hide('ok')\n },\n active: showRef.value,\n visible: showRef.value,\n}))\n\ndefineExpose({\n hide,\n id: computedId,\n show,\n toggle,\n visible: showRef,\n})\n</script>\n","<template>\n <ConditionalTeleport :to=\"props.teleportTo\" :disabled=\"props.teleportDisabled\">\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <div\n v-show=\"showRef && ((backdropReady && props.backdropFirst) || !props.backdropFirst)\"\n :id=\"computedId\"\n ref=\"_element\"\n class=\"modal\"\n :class=\"[\n props.modalClass,\n {\n fade: !computedNoAnimation,\n show: isVisible,\n ...sharedClasses,\n },\n ]\"\n role=\"dialog\"\n :aria-labelledby=\"!props.noHeader ? `${computedId}-label` : undefined\"\n :aria-describedby=\"`${computedId}-body`\"\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n :style=\"computedZIndex\"\n style=\"display: block\"\n @mousedown.left.self=\"hide('backdrop')\"\n >\n <div class=\"modal-dialog\" :class=\"modalDialogClasses\">\n <div v-if=\"contentShowing\" class=\"modal-content\" :class=\"props.contentClass\">\n <div\n v-if=\"!props.noHeader\"\n class=\"modal-header\"\n :class=\"headerClasses\"\n v-bind=\"props.headerAttrs\"\n >\n <slot name=\"header\" v-bind=\"sharedSlots\">\n <component\n :is=\"props.titleTag\"\n :id=\"`${computedId}-label`\"\n class=\"modal-title\"\n :class=\"titleClasses\"\n >\n <slot name=\"title\" v-bind=\"sharedSlots\">\n {{ props.title }}\n </slot>\n </component>\n <template v-if=\"!props.noHeaderClose\">\n <BButton\n v-if=\"hasHeaderCloseSlot\"\n ref=\"_closeButton\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hide('close')\"\n >\n <slot name=\"header-close\" v-bind=\"sharedSlots\" />\n </BButton>\n <BCloseButton\n v-else\n ref=\"_closeButton\"\n :aria-label=\"props.headerCloseLabel\"\n v-bind=\"headerCloseAttrs\"\n @click=\"hide('close')\"\n />\n </template>\n </slot>\n </div>\n <div\n :id=\"`${computedId}-body`\"\n class=\"modal-body\"\n :class=\"bodyClasses\"\n v-bind=\"props.bodyAttrs\"\n >\n <slot v-bind=\"sharedSlots\">\n {{ props.body }}\n </slot>\n </div>\n <div v-if=\"!props.noFooter\" class=\"modal-footer\" :class=\"footerClasses\">\n <slot name=\"footer\" v-bind=\"sharedSlots\">\n <slot name=\"cancel\" v-bind=\"sharedSlots\">\n <BButton\n v-if=\"!props.okOnly\"\n ref=\"_cancelButton\"\n :disabled=\"disableCancel\"\n :size=\"props.buttonSize\"\n :variant=\"props.cancelVariant\"\n :class=\"props.cancelClass\"\n @click=\"hide('cancel')\"\n >\n {{ props.cancelTitle }}\n </BButton>\n </slot>\n <slot name=\"ok\" v-bind=\"sharedSlots\">\n <BButton\n ref=\"_okButton\"\n :disabled=\"disableOk\"\n :size=\"props.buttonSize\"\n :variant=\"props.okVariant\"\n :class=\"props.okClass\"\n @click=\"hide('ok')\"\n >\n {{ props.okTitle }}\n </BButton>\n </slot>\n </slot>\n </div>\n </div>\n </div>\n <div\n v-if=\"needsFallback\"\n ref=\"_fallbackFocusElement\"\n :class=\"fallbackClassSelector\"\n tabindex=\"0\"\n style=\"width: 0; height: 0; overflow: hidden\"\n />\n </div>\n </Transition>\n <slot v-if=\"!props.noBackdrop\" name=\"backdrop\" v-bind=\"sharedSlots\">\n <Transition v-if=\"renderBackdropRef\" v-bind=\"backdropTransitionProps\">\n <div\n v-show=\"showRef || (isLeaving && props.backdropFirst && !computedNoAnimation)\"\n class=\"modal-backdrop\"\n :style=\"computedZIndexBackdrop\"\n :class=\"{\n fade: !computedNoAnimation,\n show: backdropVisible || computedNoAnimation,\n ...sharedClasses,\n }\"\n @click=\"hide('backdrop')\"\n />\n </Transition>\n </slot>\n </ConditionalTeleport>\n</template>\n\n<script setup lang=\"ts\">\nimport {onKeyStroke, unrefElement} from '@vueuse/core'\nimport {useActivatedFocusTrap} from '../../composables/useActivatedFocusTrap'\nimport {\n computed,\n type CSSProperties,\n type EmitFn,\n nextTick,\n onMounted,\n ref,\n useTemplateRef,\n watch,\n} from 'vue'\nimport type {BModalSlots, BModalSlotsData, BModalEmits, BModalProps} from '../../types'\n\nimport BButton from '../BButton/BButton.vue'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useSafeScrollLock} from '../../composables/useSafeScrollLock'\nimport {getModalZIndex, getSafeDocument, isEmptySlot} from '../../utils/dom'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport {useModalManager} from '../../composables/useModalManager'\nimport {useShowHide} from '../../composables/useShowHide'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {getElement} from '../../utils/getElement'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BModalProps, 'modelValue'>>(), {\n focus: undefined,\n backdropFirst: false,\n body: undefined,\n bodyBgVariant: null,\n bodyAttrs: undefined,\n bodyClass: null,\n bodyScrolling: false,\n bodyTextVariant: null,\n bodyVariant: null,\n busy: false,\n buttonSize: 'md',\n cancelClass: undefined,\n cancelDisabled: false,\n cancelTitle: 'Cancel',\n cancelVariant: 'secondary',\n centered: false,\n contentClass: undefined,\n dialogClass: undefined,\n footerBgVariant: null,\n footerBorderVariant: null,\n footerClass: undefined,\n footerTextVariant: null,\n footerVariant: null,\n fullscreen: false,\n headerAttrs: undefined,\n headerBgVariant: null,\n headerBorderVariant: null,\n headerClass: undefined,\n headerCloseClass: undefined,\n headerCloseLabel: 'Close',\n headerCloseVariant: 'secondary',\n headerTextVariant: null,\n headerVariant: null,\n noFooter: false,\n noHeader: false,\n noHeaderClose: false,\n id: undefined,\n initialAnimation: false,\n lazy: false,\n modalClass: undefined,\n noBackdrop: false,\n noCloseOnBackdrop: false,\n noCloseOnEsc: false,\n noFade: false,\n noTrap: false,\n okClass: undefined,\n okDisabled: false,\n okOnly: false,\n okTitle: 'OK',\n okVariant: 'primary',\n unmountLazy: false,\n scrollable: false,\n size: 'md',\n teleportDisabled: false,\n teleportTo: 'body',\n title: undefined,\n titleClass: undefined,\n titleVisuallyHidden: false,\n titleTag: 'h5',\n show: false,\n transProps: undefined,\n visible: false,\n})\nconst props = useDefaults(_props, 'BModal')\nconst emit = defineEmits<BModalEmits>()\nconst slots = defineSlots<BModalSlots>()\n\nconst computedId = useId(() => props.id, 'modal')\n// Note: passive: true will sync an internal ref... This is required for useModalManager to exit,\n// Since the modelValue that's passed from that composable is not reactive, this internal ref _is_ and thus it will trigger closing the modal\nconst modelValue = defineModel<Exclude<BModalProps['modelValue'], undefined>>({default: false})\n\nconst element = useTemplateRef<HTMLElement | null>('_element')\nconst fallbackFocusElement = useTemplateRef<HTMLElement | null>('_fallbackFocusElement')\nconst okButton = useTemplateRef<HTMLElement | null>('_okButton')\nconst cancelButton = useTemplateRef<HTMLElement | null>('_cancelButton')\nconst closeButton = useTemplateRef<HTMLElement | null>('_closeButton')\n\nconst pickFocusItem = () => {\n if (props.focus && typeof props.focus !== 'boolean') {\n if (props.focus === 'ok') {\n return okButton\n } else if (props.focus === 'close') {\n return closeButton\n } else if (props.focus === 'cancel') {\n return cancelButton\n }\n return getElement(props.focus, element.value ?? undefined) ?? element.value\n }\n return element\n}\n\nlet activeElement: HTMLElement | null = null\nconst onAfterEnter = () => {\n const doc = getSafeDocument()\n if (props.noTrap && props.focus !== false && doc) {\n // Hypothetically this could be an issue\n activeElement = doc.activeElement as HTMLElement\n if (activeElement === element.value) {\n activeElement = null\n }\n const el = unrefElement(pickFocusItem())\n if (!el) return\n el?.focus()\n if (\n el.tagName &&\n el.tagName.toLowerCase() === 'input' &&\n typeof (el as HTMLInputElement).select === 'function'\n ) {\n ;(el as HTMLInputElement).select()\n }\n }\n}\n\nconst onAfterLeave = () => {\n if (props.noTrap && props.focus !== false && activeElement) {\n activeElement?.focus()\n activeElement = null\n }\n}\n\nconst {\n showRef,\n renderRef,\n renderBackdropRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n backdropTransitionProps,\n isLeaving,\n isVisible,\n trapActive,\n contentShowing,\n backdropReady,\n backdropVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, element, computedId, {\n // addShowClass: false,\n transitionProps: {\n onAfterEnter,\n onAfterLeave,\n },\n})\n\nconst fallbackClassSelector = 'modal-fallback-focus'\nconst {needsFallback} = useActivatedFocusTrap({\n element,\n isActive: trapActive,\n noTrap: () => props.noTrap,\n fallbackFocus: {\n ref: fallbackFocusElement,\n classSelector: fallbackClassSelector,\n },\n focus: () => (props.focus === false ? false : (unrefElement(pickFocusItem()) ?? undefined)),\n // () => (typeof focus === 'boolean' ? focus : (unrefElement(focus) ?? undefined)),\n})\n\nonKeyStroke(\n 'Escape',\n () => {\n hide('esc')\n },\n {target: element}\n)\nuseSafeScrollLock(showRef, () => props.bodyScrolling)\n\nconst hasHeaderCloseSlot = computed(() => !isEmptySlot(slots['header-close']))\n\nconst modalDialogClasses = computed(() => [\n props.dialogClass,\n {\n 'modal-fullscreen': props.fullscreen === true,\n [`modal-fullscreen-${props.fullscreen}-down`]: typeof props.fullscreen === 'string',\n [`modal-${props.size}`]: props.size !== 'md',\n 'modal-dialog-centered': props.centered,\n 'modal-dialog-scrollable': props.scrollable,\n },\n])\n\nconst bodyColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.bodyBgVariant,\n textVariant: props.bodyTextVariant,\n variant: props.bodyVariant,\n}))\nconst bodyClasses = computed(() => [props.bodyClass, bodyColorClasses.value])\n\nconst headerColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.headerBgVariant,\n textVariant: props.headerTextVariant,\n variant: props.headerVariant,\n borderVariant: props.headerBorderVariant,\n}))\nconst headerClasses = computed(() => [props.headerClass, headerColorClasses.value])\n\nconst headerCloseAttrs = computed(() => ({\n variant: hasHeaderCloseSlot.value ? props.headerCloseVariant : undefined,\n class: props.headerCloseClass,\n}))\n\nconst footerColorClasses = useColorVariantClasses(() => ({\n bgVariant: props.footerBgVariant,\n textVariant: props.footerTextVariant,\n variant: props.footerVariant,\n borderVariant: props.footerBorderVariant,\n}))\nconst footerClasses = computed(() => [props.footerClass, footerColorClasses.value])\n\nconst titleClasses = computed(() => [\n props.titleClass,\n {\n ['visually-hidden']: props.titleVisuallyHidden,\n },\n])\n\nconst disableCancel = computed(() => props.cancelDisabled || props.busy)\nconst disableOk = computed(() => props.okDisabled || props.busy)\n\nconst {activePosition, activeModalCount, stackWithoutSelf} = useModalManager(\n showRef,\n modelValue.value\n)\n\nconst sharedClasses = computed(() => ({\n [`stack-position-${activePosition?.value ?? 0}`]: true,\n [`stack-inverse-position-${(activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0)}`]: true,\n}))\n\nwatch(stackWithoutSelf, (newValue, oldValue) => {\n if (newValue.length > oldValue.length && showRef.value === true && props.noStacking) hide()\n})\n\nconst defaultModalDialogZIndex = ref(getModalZIndex(element.value ?? getSafeDocument()?.body))\n\nonMounted(() => {\n watch(\n renderRef,\n (v) => {\n if (!v) return\n nextTick(() => {\n if (!element.value) return\n defaultModalDialogZIndex.value = getModalZIndex(element.value)\n })\n },\n {immediate: true}\n )\n})\n\nconst computedZIndexNumber = computed<number>(() =>\n // Make sure that newly opened modals have a higher z-index than currently active ones.\n // All active modals have a z-index of ('defaultZIndex' - 'stackSize' - 'positionInStack').\n //\n // This means inactive modals will already be higher than active ones when opened.\n\n showRef.value || isLeaving.value\n ? // Just for reference there is a single frame in which the modal is not active but still has a higher z-index than the active ones due to _when_ it calculates its position. It's a small visual effect\n defaultModalDialogZIndex.value -\n ((activeModalCount?.value ?? 0) * 2 - (activePosition?.value ?? 0) * 2)\n : defaultModalDialogZIndex.value\n)\nconst computedZIndex = computed<CSSProperties>(() => ({\n 'z-index': computedZIndexNumber.value,\n '--b-position': activePosition?.value ?? 0,\n '--b-inverse-position': (activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0),\n '--b-count': activeModalCount?.value ?? 0,\n}))\nconst computedZIndexBackdrop = computed<CSSProperties>(() => ({\n 'z-index': computedZIndexNumber.value - 1,\n '--b-position': activePosition?.value ?? 0,\n '--b-inverse-position': (activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0),\n '--b-count': activeModalCount?.value ?? 0,\n}))\n\nconst sharedSlots = computed<BModalSlotsData>(() => ({\n id: computedId.value,\n cancel: () => {\n hide('cancel')\n },\n close: () => {\n hide('close')\n },\n hide,\n show,\n toggle,\n ok: () => {\n hide('ok')\n },\n active: showRef.value,\n visible: showRef.value,\n}))\n\ndefineExpose({\n hide,\n id: computedId,\n show,\n toggle,\n visible: showRef,\n})\n</script>\n"],"mappings":"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"}
|