bootstrap-vue-next 0.45.9 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.vue.d.mts +2 -1
- package/dist/App.vue.d.ts +2 -1
- package/dist/{BAccordion-D51b9HVD.mjs → BAccordion-FuQ6sMFy.js} +33 -31
- package/dist/BAccordion-FuQ6sMFy.js.map +1 -0
- package/dist/{BAlert-Ce2uxrJi.mjs → BAlert-C9Mi4RDx.js} +20 -13
- package/dist/BAlert-C9Mi4RDx.js.map +1 -0
- package/dist/{BApp-B-fUrnpK.mjs → BApp-GXR1wS6K.js} +53 -51
- package/dist/BApp-GXR1wS6K.js.map +1 -0
- package/dist/{BAspect-wfiXM4KA.mjs → BAspect-BPR6DH5W.js} +2 -2
- package/dist/{BAspect-CUIU48Ck.js.map → BAspect-BPR6DH5W.js.map} +1 -1
- package/dist/{BAutocomplete-CH-bQzME.mjs → BAutocomplete-DGvKY7-D.js} +195 -101
- package/dist/BAutocomplete-DGvKY7-D.js.map +1 -0
- package/dist/{BAvatar-iALHbqVk.mjs → BAvatar-BsStQrBF.js} +13 -13
- package/dist/BAvatar-BsStQrBF.js.map +1 -0
- package/dist/{BBadge-Cx_CdauK.mjs → BBadge-BaZ13wE_.js} +5 -5
- package/dist/{BBadge-Db6SEnzy.js.map → BBadge-BaZ13wE_.js.map} +1 -1
- package/dist/{BBreadcrumb-BxADbg0O.mjs → BBreadcrumb-C-SsS3hM.js} +4 -4
- package/dist/{BBreadcrumb-B9ra7vg2.js.map → BBreadcrumb-C-SsS3hM.js.map} +1 -1
- package/dist/{BButton-BSa7LfL5.mjs → BButton-Cc2gd95Z.js} +5 -7
- package/dist/{BButton-DRRlzkyK.js.map → BButton-Cc2gd95Z.js.map} +1 -1
- package/dist/{BButton-PY7AANXJ.mjs → BButton-KZu5jczf.js} +9 -9
- package/dist/{BButton-aYtMnyHu.js.map → BButton-KZu5jczf.js.map} +1 -1
- package/dist/{BCard-BWoruisp.mjs → BCard-D2GEiXan.js} +2 -3
- package/dist/{BCard-Bh8RLMo_.js.map → BCard-D2GEiXan.js.map} +1 -1
- package/dist/{BCard-CHbKv2OR.mjs → BCard-nRj1JWtQ.js} +9 -9
- package/dist/{BCard-DwNYhVmg.js.map → BCard-nRj1JWtQ.js.map} +1 -1
- package/dist/{BCarousel-B6_bgQpl.mjs → BCarousel-DQgfW4DN.js} +11 -10
- package/dist/{BCarousel-2JB21Pcu.js.map → BCarousel-DQgfW4DN.js.map} +1 -1
- package/dist/{BCloseButton-CKTKr4PS.mjs → BCloseButton-B3-IdpNp.js} +2 -2
- package/dist/{BCloseButton-D42zHRLP.js.map → BCloseButton-B3-IdpNp.js.map} +1 -1
- package/dist/{BCol-B3VeEk9z.mjs → BCol-DiZFbqU5.js} +3 -3
- package/dist/{BCol-Ck9VydHj.js.map → BCol-DiZFbqU5.js.map} +1 -1
- package/dist/{BCollapse-kqhe4AmL.mjs → BCollapse-B9fnWSzA.js} +15 -9
- package/dist/BCollapse-B9fnWSzA.js.map +1 -0
- package/dist/{BContainer-ATfhaxTc.mjs → BContainer-D-bZVPwa.js} +2 -4
- package/dist/{BContainer-CcF6dgtI.js.map → BContainer-D-bZVPwa.js.map} +1 -1
- package/dist/{BDateField-CccP3H1R.mjs → BDateField-Bj-Jz7u4.js} +27 -22
- package/dist/BDateField-Bj-Jz7u4.js.map +1 -0
- package/dist/{BDatePicker-BnwnSkBg.mjs → BDatePicker-AVTYcVLy.js} +232 -148
- package/dist/BDatePicker-AVTYcVLy.js.map +1 -0
- package/dist/{BDropdown-B1DbvVzm.mjs → BDropdown-CnxUzs42.js} +55 -46
- package/dist/BDropdown-CnxUzs42.js.map +1 -0
- package/dist/{BDropdown-0E8x5kk6.mjs → BDropdown-D4VSJJxu.js} +5 -6
- package/dist/{BDropdown-DKCgBzYS.js.map → BDropdown-D4VSJJxu.js.map} +1 -1
- package/dist/{BForm-BVfW08s5.mjs → BForm-BOoX6AAr.js} +2 -2
- package/dist/{BForm-cnRpggt9.js.map → BForm-BOoX6AAr.js.map} +1 -1
- package/dist/{BForm-DJu2hDV_.mjs → BForm-C5PR2ust.js} +7 -8
- package/dist/{BForm-6JlWdQMO.js.map → BForm-C5PR2ust.js.map} +1 -1
- package/dist/{BFormCheckbox-Baf_9BSc.mjs → BFormCheckbox-BMhyR-J5.js} +12 -13
- package/dist/BFormCheckbox-BMhyR-J5.js.map +1 -0
- package/dist/{BFormFile-CZebm0Cp.mjs → BFormFile-BVrDprWL.js} +8 -8
- package/dist/{BFormFile-MISLntyJ.js.map → BFormFile-BVrDprWL.js.map} +1 -1
- package/dist/{BFormGroup-vysRPb99.mjs → BFormGroup-BE5tGz_g.js} +40 -24
- package/dist/BFormGroup-BE5tGz_g.js.map +1 -0
- package/dist/{BFormInput-sEfU3CuN.mjs → BFormInput-BwvdFGDu.js} +5 -5
- package/dist/{BFormInput-CBwwDjfC.js.map → BFormInput-BwvdFGDu.js.map} +1 -1
- package/dist/{BFormOtp-C8X3u1od.mjs → BFormOtp-I1t8dqPS.js} +63 -22
- package/dist/BFormOtp-I1t8dqPS.js.map +1 -0
- package/dist/{BFormRadio-COc_IbxC.mjs → BFormRadio-DRViMh6V.js} +24 -13
- package/dist/BFormRadio-DRViMh6V.js.map +1 -0
- package/dist/{BFormRating-CIgPVsH_.mjs → BFormRating-AEiF8K8T.js} +23 -17
- package/dist/BFormRating-AEiF8K8T.js.map +1 -0
- package/dist/{BFormSelect-P-InkOm-.mjs → BFormSelect-DdjH8482.js} +23 -12
- package/dist/BFormSelect-DdjH8482.js.map +1 -0
- package/dist/{BFormSelectOption-DFN4lPRh.mjs → BFormSelectOption-C8orMj24.js} +3 -3
- package/dist/{BFormSelectOption-DrwJucNf.js.map → BFormSelectOption-C8orMj24.js.map} +1 -1
- package/dist/{BFormSpinbutton-6qkTBF_4.mjs → BFormSpinbutton-Bt590uT6.js} +10 -9
- package/dist/{BFormSpinbutton-1gTz4nTo.js.map → BFormSpinbutton-Bt590uT6.js.map} +1 -1
- package/dist/{BFormTag-CnzI39y9.mjs → BFormTag-DGSUfz7A.js} +5 -5
- package/dist/{BFormTag-CeV0MSRC.js.map → BFormTag-DGSUfz7A.js.map} +1 -1
- package/dist/{BFormTags-BMltSaKL.mjs → BFormTags-CUcyRTCK.js} +23 -27
- package/dist/BFormTags-CUcyRTCK.js.map +1 -0
- package/dist/{BFormTextarea-DN1gAfSo.mjs → BFormTextarea-DlDe26DL.js} +6 -6
- package/dist/{BFormTextarea-C3Cj0DWj.js.map → BFormTextarea-DlDe26DL.js.map} +1 -1
- package/dist/{BFormValidFeedback-CBYxQLDz.mjs → BFormValidFeedback-ClqLRxtH.js} +4 -4
- package/dist/{BFormValidFeedback-Kwxh798d.js.map → BFormValidFeedback-ClqLRxtH.js.map} +1 -1
- package/dist/{BImg-QBS2ECBc.mjs → BImg-knz2UZQE.js} +5 -5
- package/dist/{BImg-JKJLgYYT.js.map → BImg-knz2UZQE.js.map} +1 -1
- package/dist/{BInputGroup-DiTSexkT.mjs → BInputGroup-Bjh7zXyI.js} +2 -3
- package/dist/{BInputGroup-D4fW324B.js.map → BInputGroup-Bjh7zXyI.js.map} +1 -1
- package/dist/{BInputGroup-X2Z53RJx.mjs → BInputGroup-DdoeSICR.js} +3 -3
- package/dist/{BInputGroup-Bvlfv6VD.js.map → BInputGroup-DdoeSICR.js.map} +1 -1
- package/dist/{BLink-Dfgte6dQ.mjs → BLink-mdwZsC7b.js} +5 -5
- package/dist/{BLink-kLEjleB1.js.map → BLink-mdwZsC7b.js.map} +1 -1
- package/dist/{BListGroup-DwTLpNiD.mjs → BListGroup-CQedMbI8.js} +4 -4
- package/dist/{BListGroup-C8JOzHTz.js.map → BListGroup-CQedMbI8.js.map} +1 -1
- package/dist/{BModal-C-ZCau2E.mjs → BModal-NPsCBNo7.js} +25 -18
- package/dist/BModal-NPsCBNo7.js.map +1 -0
- package/dist/{BNav-DfYvjfRK.mjs → BNav-CjXS9tQ5.js} +9 -9
- package/dist/{BNav-DCLambmM.js.map → BNav-CjXS9tQ5.js.map} +1 -1
- package/dist/{BNavbar-xYaikQVY.mjs → BNavbar-DRqkdxTk.js} +12 -9
- package/dist/{BNavbar-BLWaZJRP.js.map → BNavbar-DRqkdxTk.js.map} +1 -1
- package/dist/{BOffcanvas-CF-dWeez.mjs → BOffcanvas-BndaBJoP.js} +22 -16
- package/dist/BOffcanvas-BndaBJoP.js.map +1 -0
- package/dist/{BOverlay-Bh2PIN_q.mjs → BOverlay-CJfy_f6O.js} +6 -6
- package/dist/{BOverlay-Bh4ldxgt.js.map → BOverlay-CJfy_f6O.js.map} +1 -1
- package/dist/{BPagination-D75q-ZNg.mjs → BPagination-D_Hfk6OF.js} +29 -27
- package/dist/{BPagination-fbjFAtxu.js.map → BPagination-D_Hfk6OF.js.map} +1 -1
- package/dist/{BPlaceholder-DPQ6mCLN.mjs → BPlaceholder-DvOCnqDh.js} +11 -11
- package/dist/{BPlaceholder-B3rs_39w.js.map → BPlaceholder-DvOCnqDh.js.map} +1 -1
- package/dist/{BProgress-BZlrPYhA.mjs → BProgress-BNxYppi-.js} +5 -5
- package/dist/{BProgress-th0-eZWo.js.map → BProgress-BNxYppi-.js.map} +1 -1
- package/dist/{BRow-eGSUYGCW.mjs → BRow-CoBI89xF.js} +4 -4
- package/dist/{BRow-7AOuFiSy.js.map → BRow-CoBI89xF.js.map} +1 -1
- package/dist/{BSpinner-CUfGqviV.mjs → BSpinner-H1DZOmiM.js} +4 -4
- package/dist/{BSpinner-DbYIp-C7.js.map → BSpinner-H1DZOmiM.js.map} +1 -1
- package/dist/{BTable-DUHxxWv5.mjs → BTable-BZxX17YU.js} +40 -33
- package/dist/BTable-BZxX17YU.js.map +1 -0
- package/dist/{BTableSimple-C-jn9Nwh.mjs → BTableSimple-2Z7ssnuG.js} +5 -5
- package/dist/{BTableSimple-BkdGAAKb.js.map → BTableSimple-2Z7ssnuG.js.map} +1 -1
- package/dist/{BTabs-D_vWlBjT.mjs → BTabs-BVcu9DPg.js} +19 -17
- package/dist/{BTabs-CvecFg5N.js.map → BTabs-BVcu9DPg.js.map} +1 -1
- package/dist/{BTimeField-BSDaZogC.mjs → BTimeField-CbRGjaI6.js} +24 -19
- package/dist/BTimeField-CbRGjaI6.js.map +1 -0
- package/dist/{BToast-Y8BayxES.mjs → BToast-Di9HwBOV.js} +21 -14
- package/dist/BToast-Di9HwBOV.js.map +1 -0
- package/dist/{BTooltip-CVP8HdkU.mjs → BTooltip-BxaUtV4m.js} +5 -5
- package/dist/{BTooltip-DPLYtaL1.js.map → BTooltip-BxaUtV4m.js.map} +1 -1
- package/dist/{BootstrapVueOptions-Dt1TQdih.mjs → BootstrapVueOptions-DH79gHKG.js} +1 -4
- package/dist/BootstrapVueOptions-DH79gHKG.js.map +1 -0
- package/dist/{ConditionalTeleport-B4KYZIM6.mjs → ConditionalTeleport-BCKPLEun.js} +1 -1
- package/dist/{ConditionalTeleport-BDWcebyD.js.map → ConditionalTeleport-BCKPLEun.js.map} +1 -1
- package/dist/{ConditionalWrapper-Dbc_O6qe.mjs → ConditionalWrapper-CCIk52zt.js} +1 -1
- package/dist/{ConditionalWrapper-DZH_VSwb.js.map → ConditionalWrapper-CCIk52zt.js.map} +1 -1
- package/dist/{DateRangeFieldInput-B86VEz0H.mjs → DateRangeFieldInput-Cbzjg8iF.js} +45 -22
- package/dist/DateRangeFieldInput-Cbzjg8iF.js.map +1 -0
- package/dist/{PopperContent-DmSgsjSC.mjs → PopperContent-C9eeL6LH.js} +395 -100
- package/dist/PopperContent-C9eeL6LH.js.map +1 -0
- package/dist/{VisuallyHidden-C4sXnc-k.mjs → VisuallyHidden-BYzyjJiY.js} +23 -15
- package/dist/VisuallyHidden-BYzyjJiY.js.map +1 -0
- package/dist/{VisuallyHiddenInput-DKIzxsQR.mjs → VisuallyHiddenInput-CUrc8XXa.js} +46 -7
- package/dist/VisuallyHiddenInput-CUrc8XXa.js.map +1 -0
- package/dist/bootstrap-vue-next.mjs +65 -65
- package/dist/{classes-B0E5Y78Y.mjs → classes-BEWWGbj5.js} +1 -1
- package/dist/{classes-D5wrmmVs.js.map → classes-BEWWGbj5.js.map} +1 -1
- package/dist/components/BAccordion/BAccordion.vue.d.mts +9 -13
- package/dist/components/BAccordion/BAccordion.vue.d.ts +9 -13
- package/dist/components/BAccordion/BAccordionItem.vue.d.mts +16 -24
- package/dist/components/BAccordion/BAccordionItem.vue.d.ts +16 -24
- package/dist/components/BAlert/BAlert.vue.d.mts +26 -34
- package/dist/components/BAlert/BAlert.vue.d.ts +26 -34
- package/dist/components/BApp/BApp.vue.d.mts +8 -12
- package/dist/components/BApp/BApp.vue.d.ts +8 -12
- package/dist/components/BApp/BOrchestrator.vue.d.mts +2 -1
- package/dist/components/BApp/BOrchestrator.vue.d.ts +2 -1
- package/dist/components/BAspect/BAspect.vue.d.mts +5 -10
- package/dist/components/BAspect/BAspect.vue.d.ts +5 -10
- package/dist/components/BAutocomplete/BAutocomplete.vue.d.mts +12 -270
- package/dist/components/BAutocomplete/BAutocomplete.vue.d.ts +12 -270
- package/dist/components/BAvatar/BAvatar.vue.d.mts +20 -25
- package/dist/components/BAvatar/BAvatar.vue.d.ts +20 -25
- package/dist/components/BAvatar/BAvatarGroup.vue.d.mts +8 -13
- package/dist/components/BAvatar/BAvatarGroup.vue.d.ts +8 -13
- package/dist/components/BBadge/BBadge.vue.d.mts +13 -18
- package/dist/components/BBadge/BBadge.vue.d.ts +13 -18
- package/dist/components/BBreadcrumb/BBreadcrumb.vue.d.mts +6 -11
- package/dist/components/BBreadcrumb/BBreadcrumb.vue.d.ts +6 -11
- package/dist/components/BBreadcrumb/BBreadcrumbItem.vue.d.mts +13 -18
- package/dist/components/BBreadcrumb/BBreadcrumbItem.vue.d.ts +13 -18
- package/dist/components/BButton/BButton.vue.d.mts +17 -25
- package/dist/components/BButton/BButton.vue.d.ts +17 -25
- package/dist/components/BButton/BButtonGroup.vue.d.mts +5 -10
- package/dist/components/BButton/BButtonGroup.vue.d.ts +5 -10
- package/dist/components/BButton/BButtonToolbar.vue.d.mts +7 -16
- package/dist/components/BButton/BButtonToolbar.vue.d.ts +7 -16
- package/dist/components/BButton/BCloseButton.vue.d.mts +4 -3
- package/dist/components/BButton/BCloseButton.vue.d.ts +4 -3
- package/dist/components/BCard/BCard.vue.d.mts +21 -26
- package/dist/components/BCard/BCard.vue.d.ts +21 -26
- package/dist/components/BCard/BCardBody.vue.d.mts +9 -14
- package/dist/components/BCard/BCardBody.vue.d.ts +9 -14
- package/dist/components/BCard/BCardFooter.vue.d.mts +7 -11
- package/dist/components/BCard/BCardFooter.vue.d.ts +7 -11
- package/dist/components/BCard/BCardGroup.vue.d.mts +5 -10
- package/dist/components/BCard/BCardGroup.vue.d.ts +5 -10
- package/dist/components/BCard/BCardHeader.vue.d.mts +7 -12
- package/dist/components/BCard/BCardHeader.vue.d.ts +7 -12
- package/dist/components/BCard/BCardImg.vue.d.mts +7 -6
- package/dist/components/BCard/BCardImg.vue.d.ts +7 -6
- package/dist/components/BCard/BCardSubtitle.vue.d.mts +6 -11
- package/dist/components/BCard/BCardSubtitle.vue.d.ts +6 -11
- package/dist/components/BCard/BCardText.vue.d.mts +5 -10
- package/dist/components/BCard/BCardText.vue.d.ts +5 -10
- package/dist/components/BCard/BCardTitle.vue.d.mts +5 -10
- package/dist/components/BCard/BCardTitle.vue.d.ts +5 -10
- package/dist/components/BCardHeadFoot.vue.d.mts +6 -11
- package/dist/components/BCardHeadFoot.vue.d.ts +6 -11
- package/dist/components/BCarousel/BCarousel.vue.d.mts +12 -24
- package/dist/components/BCarousel/BCarousel.vue.d.ts +12 -24
- package/dist/components/BCarousel/BCarouselSlide.vue.d.mts +7 -12
- package/dist/components/BCarousel/BCarouselSlide.vue.d.ts +7 -12
- package/dist/components/BCollapse/BCollapse.vue.d.mts +13 -21
- package/dist/components/BCollapse/BCollapse.vue.d.ts +13 -21
- package/dist/components/BContainer/BCol.vue.d.mts +8 -13
- package/dist/components/BContainer/BCol.vue.d.ts +8 -13
- package/dist/components/BContainer/BContainer.vue.d.mts +5 -10
- package/dist/components/BContainer/BContainer.vue.d.ts +5 -10
- package/dist/components/BContainer/BRow.vue.d.mts +6 -11
- package/dist/components/BContainer/BRow.vue.d.ts +6 -11
- package/dist/components/BDateField/BDateField.vue.d.mts +8 -12
- package/dist/components/BDateField/BDateField.vue.d.ts +8 -12
- package/dist/components/BDateField/BDateRangeField.vue.d.mts +8 -12
- package/dist/components/BDateField/BDateRangeField.vue.d.ts +8 -12
- package/dist/components/BDateField/BTimeRangeField.vue.d.mts +9 -13
- package/dist/components/BDateField/BTimeRangeField.vue.d.ts +9 -13
- package/dist/components/BDatePicker/BDatePicker.vue.d.mts +9 -13
- package/dist/components/BDatePicker/BDatePicker.vue.d.ts +9 -13
- package/dist/components/BDatePicker/BDateRangePicker.vue.d.mts +9 -13
- package/dist/components/BDatePicker/BDateRangePicker.vue.d.ts +9 -13
- package/dist/components/BDropdown/BDropdown.vue.d.mts +24 -957
- package/dist/components/BDropdown/BDropdown.vue.d.ts +24 -957
- package/dist/components/BDropdown/BDropdownDivider.vue.d.mts +3 -2
- package/dist/components/BDropdown/BDropdownDivider.vue.d.ts +3 -2
- package/dist/components/BDropdown/BDropdownForm.vue.d.mts +6 -11
- package/dist/components/BDropdown/BDropdownForm.vue.d.ts +6 -11
- package/dist/components/BDropdown/BDropdownGroup.vue.d.mts +5 -10
- package/dist/components/BDropdown/BDropdownGroup.vue.d.ts +5 -10
- package/dist/components/BDropdown/BDropdownHeader.vue.d.mts +7 -12
- package/dist/components/BDropdown/BDropdownHeader.vue.d.ts +7 -12
- package/dist/components/BDropdown/BDropdownItem.vue.d.mts +12 -17
- package/dist/components/BDropdown/BDropdownItem.vue.d.ts +12 -17
- package/dist/components/BDropdown/BDropdownItemButton.vue.d.mts +6 -11
- package/dist/components/BDropdown/BDropdownItemButton.vue.d.ts +6 -11
- package/dist/components/BDropdown/BDropdownText.vue.d.mts +6 -11
- package/dist/components/BDropdown/BDropdownText.vue.d.ts +6 -11
- package/dist/components/BForm/BForm.vue.d.mts +8 -17
- package/dist/components/BForm/BForm.vue.d.ts +8 -17
- package/dist/components/BForm/BFormDatalist.vue.d.mts +12 -7
- package/dist/components/BForm/BFormDatalist.vue.d.ts +12 -7
- package/dist/components/BForm/BFormDatalistBase.vue.d.mts +20 -22
- package/dist/components/BForm/BFormDatalistBase.vue.d.ts +20 -22
- package/dist/components/BForm/BFormFloatingLabel.vue.d.mts +6 -11
- package/dist/components/BForm/BFormFloatingLabel.vue.d.ts +6 -11
- package/dist/components/BForm/BFormInvalidFeedback.vue.d.mts +6 -11
- package/dist/components/BForm/BFormInvalidFeedback.vue.d.ts +6 -11
- package/dist/components/BForm/BFormRow.vue.d.mts +5 -10
- package/dist/components/BForm/BFormRow.vue.d.ts +5 -10
- package/dist/components/BForm/BFormText.vue.d.mts +6 -11
- package/dist/components/BForm/BFormText.vue.d.ts +6 -11
- package/dist/components/BForm/BFormValidFeedback.vue.d.mts +6 -11
- package/dist/components/BForm/BFormValidFeedback.vue.d.ts +6 -11
- package/dist/components/BFormCheckbox/BFormCheckbox.vue.d.mts +14 -22
- package/dist/components/BFormCheckbox/BFormCheckbox.vue.d.ts +14 -22
- package/dist/components/BFormCheckbox/BFormCheckboxGroup.vue.d.mts +16 -11
- package/dist/components/BFormCheckbox/BFormCheckboxGroup.vue.d.ts +16 -11
- package/dist/components/BFormCheckbox/BFormCheckboxGroupBase.vue.d.mts +22 -27
- package/dist/components/BFormCheckbox/BFormCheckboxGroupBase.vue.d.ts +22 -27
- package/dist/components/BFormFile/BFormFile.vue.d.mts +9 -25
- package/dist/components/BFormFile/BFormFile.vue.d.ts +9 -25
- package/dist/components/BFormGroup/BFormGroup.vue.d.mts +14 -23
- package/dist/components/BFormGroup/BFormGroup.vue.d.ts +14 -23
- package/dist/components/BFormGroupContent.vue.d.mts +8 -17
- package/dist/components/BFormGroupContent.vue.d.ts +8 -17
- package/dist/components/BFormGroupLabel.vue.d.mts +6 -13
- package/dist/components/BFormGroupLabel.vue.d.ts +6 -13
- package/dist/components/BFormInput/BFormInput.vue.d.mts +10 -10
- package/dist/components/BFormInput/BFormInput.vue.d.ts +10 -10
- package/dist/components/BFormOtp/BFormOtp.vue.d.mts +7 -5
- package/dist/components/BFormOtp/BFormOtp.vue.d.ts +7 -5
- package/dist/components/BFormRadio/BFormRadio.vue.d.mts +13 -21
- package/dist/components/BFormRadio/BFormRadio.vue.d.ts +13 -21
- package/dist/components/BFormRadio/BFormRadioGroup.vue.d.mts +21 -14
- package/dist/components/BFormRadio/BFormRadioGroup.vue.d.ts +21 -14
- package/dist/components/BFormRadio/BFormRadioGroupBase.vue.d.mts +14 -22
- package/dist/components/BFormRadio/BFormRadioGroupBase.vue.d.ts +14 -22
- package/dist/components/BFormRating/BFormRating.vue.d.mts +10 -12
- package/dist/components/BFormRating/BFormRating.vue.d.ts +10 -12
- package/dist/components/BFormSelect/BFormSelect.vue.d.mts +16 -11
- package/dist/components/BFormSelect/BFormSelect.vue.d.ts +16 -11
- package/dist/components/BFormSelect/BFormSelectBase.vue.d.mts +24 -29
- package/dist/components/BFormSelect/BFormSelectBase.vue.d.ts +24 -29
- package/dist/components/BFormSelect/BFormSelectOption.vue.d.mts +12 -7
- package/dist/components/BFormSelect/BFormSelectOption.vue.d.ts +12 -7
- package/dist/components/BFormSelect/BFormSelectOptionGroup.vue.d.mts +12 -7
- package/dist/components/BFormSelect/BFormSelectOptionGroup.vue.d.ts +12 -7
- package/dist/components/BFormSpinbutton/BFormSpinbutton.vue.d.mts +11 -12
- package/dist/components/BFormSpinbutton/BFormSpinbutton.vue.d.ts +11 -12
- package/dist/components/BFormTags/BFormTag.vue.d.mts +7 -12
- package/dist/components/BFormTags/BFormTag.vue.d.ts +7 -12
- package/dist/components/BFormTags/BFormTags.vue.d.mts +12 -20
- package/dist/components/BFormTags/BFormTags.vue.d.ts +12 -20
- package/dist/components/BFormTextarea/BFormTextarea.vue.d.mts +12 -12
- package/dist/components/BFormTextarea/BFormTextarea.vue.d.ts +12 -12
- package/dist/components/BImg/BImg.vue.d.mts +7 -6
- package/dist/components/BImg/BImg.vue.d.ts +7 -6
- package/dist/components/BInputGroup/BInputGroup.vue.d.mts +5 -10
- package/dist/components/BInputGroup/BInputGroup.vue.d.ts +5 -10
- package/dist/components/BInputGroup/BInputGroupText.vue.d.mts +5 -10
- package/dist/components/BInputGroup/BInputGroupText.vue.d.ts +5 -10
- package/dist/components/BLink/BLink.vue.d.mts +12 -17
- package/dist/components/BLink/BLink.vue.d.ts +12 -17
- package/dist/components/BListGroup/BListGroup.vue.d.mts +5 -10
- package/dist/components/BListGroup/BListGroup.vue.d.ts +5 -10
- package/dist/components/BListGroup/BListGroupItem.vue.d.mts +13 -18
- package/dist/components/BListGroup/BListGroupItem.vue.d.ts +13 -18
- package/dist/components/BModal/BModal.vue.d.mts +47 -1026
- package/dist/components/BModal/BModal.vue.d.ts +47 -1026
- package/dist/components/BNav/BNav.vue.d.mts +7 -12
- package/dist/components/BNav/BNav.vue.d.ts +7 -12
- package/dist/components/BNav/BNavForm.vue.d.mts +8 -13
- package/dist/components/BNav/BNavForm.vue.d.ts +8 -13
- package/dist/components/BNav/BNavItem.vue.d.mts +12 -17
- package/dist/components/BNav/BNavItem.vue.d.ts +12 -17
- package/dist/components/BNav/BNavItemDropdown.vue.d.mts +20 -1660
- package/dist/components/BNav/BNavItemDropdown.vue.d.ts +20 -1660
- package/dist/components/BNav/BNavText.vue.d.mts +6 -11
- package/dist/components/BNav/BNavText.vue.d.ts +6 -11
- package/dist/components/BNavbar/BNavbar.vue.d.mts +6 -11
- package/dist/components/BNavbar/BNavbar.vue.d.ts +6 -11
- package/dist/components/BNavbar/BNavbarBrand.vue.d.mts +11 -16
- package/dist/components/BNavbar/BNavbarBrand.vue.d.ts +11 -16
- package/dist/components/BNavbar/BNavbarNav.vue.d.mts +7 -12
- package/dist/components/BNavbar/BNavbarNav.vue.d.ts +7 -12
- package/dist/components/BNavbar/BNavbarToggle.vue.d.mts +7 -12
- package/dist/components/BNavbar/BNavbarToggle.vue.d.ts +7 -12
- package/dist/components/BOffcanvas/BOffcanvas.vue.d.mts +28 -82
- package/dist/components/BOffcanvas/BOffcanvas.vue.d.ts +28 -82
- package/dist/components/BOverlay/BOverlay.vue.d.mts +17 -22
- package/dist/components/BOverlay/BOverlay.vue.d.ts +17 -22
- package/dist/components/BPagination/BPagination.vue.d.mts +9 -10
- package/dist/components/BPagination/BPagination.vue.d.ts +9 -10
- package/dist/components/BPlaceholder/BPlaceholder.vue.d.mts +3 -2
- package/dist/components/BPlaceholder/BPlaceholder.vue.d.ts +3 -2
- package/dist/components/BPlaceholder/BPlaceholderButton.vue.d.mts +3 -2
- package/dist/components/BPlaceholder/BPlaceholderButton.vue.d.ts +3 -2
- package/dist/components/BPlaceholder/BPlaceholderCard.vue.d.mts +8 -13
- package/dist/components/BPlaceholder/BPlaceholderCard.vue.d.ts +8 -13
- package/dist/components/BPlaceholder/BPlaceholderTable.vue.d.mts +8 -13
- package/dist/components/BPlaceholder/BPlaceholderTable.vue.d.ts +8 -13
- package/dist/components/BPlaceholder/BPlaceholderWrapper.vue.d.mts +5 -10
- package/dist/components/BPlaceholder/BPlaceholderWrapper.vue.d.ts +5 -10
- package/dist/components/BPopover/BPopover.vue.d.mts +35 -49
- package/dist/components/BPopover/BPopover.vue.d.ts +35 -49
- package/dist/components/BProgress/BProgress.vue.d.mts +10 -15
- package/dist/components/BProgress/BProgress.vue.d.ts +10 -15
- package/dist/components/BProgress/BProgressBar.vue.d.mts +9 -14
- package/dist/components/BProgress/BProgressBar.vue.d.ts +9 -14
- package/dist/components/BSpinner/BSpinner.vue.d.mts +7 -12
- package/dist/components/BSpinner/BSpinner.vue.d.ts +7 -12
- package/dist/components/BTable/BTable.vue.d.mts +35 -30
- package/dist/components/BTable/BTable.vue.d.ts +35 -30
- package/dist/components/BTable/BTableLite.vue.d.mts +24 -19
- package/dist/components/BTable/BTableLite.vue.d.ts +24 -19
- package/dist/components/BTable/BTableSimple.vue.d.mts +9 -14
- package/dist/components/BTable/BTableSimple.vue.d.ts +9 -14
- package/dist/components/BTable/BTbody.vue.d.mts +6 -11
- package/dist/components/BTable/BTbody.vue.d.ts +6 -11
- package/dist/components/BTable/BTd.vue.d.mts +6 -11
- package/dist/components/BTable/BTd.vue.d.ts +6 -11
- package/dist/components/BTable/BTfoot.vue.d.mts +6 -11
- package/dist/components/BTable/BTfoot.vue.d.ts +6 -11
- package/dist/components/BTable/BTh.vue.d.mts +6 -11
- package/dist/components/BTable/BTh.vue.d.ts +6 -11
- package/dist/components/BTable/BThead.vue.d.mts +6 -11
- package/dist/components/BTable/BThead.vue.d.ts +6 -11
- package/dist/components/BTable/BTr.vue.d.mts +6 -11
- package/dist/components/BTable/BTr.vue.d.ts +6 -11
- package/dist/components/BTabs/BTab.vue.d.mts +10 -18
- package/dist/components/BTabs/BTab.vue.d.ts +10 -18
- package/dist/components/BTabs/BTabs.vue.d.mts +10 -14
- package/dist/components/BTabs/BTabs.vue.d.ts +10 -14
- package/dist/components/BTabsTabContent.vue.d.mts +7 -15
- package/dist/components/BTabsTabContent.vue.d.ts +7 -15
- package/dist/components/BTimeField/BTimeField.vue.d.mts +8 -12
- package/dist/components/BTimeField/BTimeField.vue.d.ts +8 -12
- package/dist/components/BToast/BToast.vue.d.mts +25 -33
- package/dist/components/BToast/BToast.vue.d.ts +25 -33
- package/dist/components/BTooltip/BTooltip.vue.d.mts +32 -732
- package/dist/components/BTooltip/BTooltip.vue.d.ts +32 -732
- package/dist/components/ConditionalTeleport.vue.d.mts +3 -2
- package/dist/components/ConditionalTeleport.vue.d.ts +3 -2
- package/dist/components/ConditionalWrapper.vue.d.mts +3 -2
- package/dist/components/ConditionalWrapper.vue.d.ts +3 -2
- package/dist/composables/index.d.mts +3 -3
- package/dist/composables/index.d.ts +3 -3
- package/dist/composables/orchestratorShared/index.d.mts +25 -14
- package/dist/composables/orchestratorShared/index.d.ts +25 -14
- package/dist/composables/useBLinkHelper.d.mts +1 -1
- package/dist/composables/useBLinkHelper.d.ts +1 -1
- package/dist/composables/useModal/index.d.mts +8 -33
- package/dist/composables/useModal/index.d.ts +8 -33
- package/dist/composables/usePopover/index.d.mts +332 -4532
- package/dist/composables/usePopover/index.d.ts +332 -4532
- package/dist/composables/useShowHide.d.mts +21 -15
- package/dist/composables/useShowHide.d.ts +21 -15
- package/dist/composables/useToast/index.d.mts +7 -18
- package/dist/composables/useToast/index.d.ts +7 -18
- package/dist/console-DaUCJgpk.js +15 -0
- package/dist/console-DaUCJgpk.js.map +1 -0
- package/dist/{constants-Ba9iJn2H.mjs → constants-Cap5sNf8.js} +1 -1
- package/dist/{constants-BLIvvaat.js.map → constants-Cap5sNf8.js.map} +1 -1
- package/dist/{debounce-DHxNfjan.mjs → debounce-Xj7wsAmR.js} +2 -2
- package/dist/{debounce-D6kifS6w.js.map → debounce-Xj7wsAmR.js.map} +1 -1
- package/dist/{dist-Dk9C_HFS.mjs → dist-9-XTMhb-.js} +5 -539
- package/dist/dist-9-XTMhb-.js.map +1 -0
- package/dist/dist-B-regXAP.js +123 -0
- package/dist/dist-B-regXAP.js.map +1 -0
- package/dist/dist-DKc2ivHS.js +411 -0
- package/dist/dist-DKc2ivHS.js.map +1 -0
- package/dist/{dom-AhkaSoh8.mjs → dom-BdUQrX99.js} +3 -2
- package/dist/dom-BdUQrX99.js.map +1 -0
- package/dist/{flattenFragments-ClbLQGqR.mjs → flattenFragments-B15oMVs-.js} +1 -1
- package/dist/{flattenFragments-C1WWqm25.js.map → flattenFragments-B15oMVs-.js.map} +1 -1
- package/dist/{floating-ui.vue-CH2o_mZU.mjs → floating-ui.dom-C7UZexJK.js} +114 -338
- package/dist/floating-ui.dom-C7UZexJK.js.map +1 -0
- package/dist/{floatingUi-62aeQtAb.mjs → floatingUi-BlKoACvc.js} +194 -27
- package/dist/floatingUi-BlKoACvc.js.map +1 -0
- package/dist/{functions-BcMenQqL.mjs → functions-BUZ1y9RA.js} +1 -1
- package/dist/functions-BUZ1y9RA.js.map +1 -0
- package/dist/{getClasses-COokMI60.mjs → getClasses-BlbbSJNl.js} +1 -1
- package/dist/{getClasses-8P0iBind.js.map → getClasses-BlbbSJNl.js.map} +1 -1
- package/dist/{getElement-D2Jr1cbp.mjs → getElement-uvhh1lgL.js} +2 -2
- package/dist/{getElement-DWGFJn0w.js.map → getElement-uvhh1lgL.js.map} +1 -1
- package/dist/{keys-DU7sQgl3.mjs → keys-BgLwJbLV.js} +1 -1
- package/dist/keys-BgLwJbLV.js.map +1 -0
- package/dist/{object-CHQkkner.mjs → object-C7YmCGEm.js} +10 -6
- package/dist/object-C7YmCGEm.js.map +1 -0
- package/dist/{registryAccess-BkJDdh-3.mjs → registryAccess-YFj5ZD5T.js} +1 -1
- package/dist/{registryAccess-B9QDQwV8.js.map → registryAccess-YFj5ZD5T.js.map} +1 -1
- package/dist/src/components/BAccordion/index.mjs +1 -1
- package/dist/src/components/BAlert/index.mjs +1 -1
- package/dist/src/components/BApp/index.mjs +1 -1
- package/dist/src/components/BAspect/index.mjs +1 -1
- package/dist/src/components/BAutocomplete/index.mjs +1 -1
- package/dist/src/components/BAvatar/index.mjs +1 -1
- package/dist/src/components/BBadge/index.mjs +1 -1
- package/dist/src/components/BBreadcrumb/index.mjs +1 -1
- package/dist/src/components/BButton/index.mjs +3 -3
- package/dist/src/components/BCard/index.mjs +2 -2
- package/dist/src/components/BCarousel/index.mjs +1 -1
- package/dist/src/components/BCol/index.mjs +1 -1
- package/dist/src/components/BCollapse/index.mjs +1 -1
- package/dist/src/components/BContainer/index.mjs +3 -3
- package/dist/src/components/BDateField/index.mjs +1 -1
- package/dist/src/components/BDatePicker/index.mjs +1 -1
- package/dist/src/components/BDropdown/index.mjs +2 -2
- package/dist/src/components/BForm/index.mjs +3 -3
- package/dist/src/components/BFormCheckbox/index.mjs +1 -1
- package/dist/src/components/BFormFile/index.mjs +1 -1
- package/dist/src/components/BFormGroup/index.mjs +1 -1
- package/dist/src/components/BFormInput/index.mjs +1 -1
- package/dist/src/components/BFormOtp/index.mjs +1 -1
- package/dist/src/components/BFormRadio/index.mjs +1 -1
- package/dist/src/components/BFormRating/index.mjs +1 -1
- package/dist/src/components/BFormSelect/index.mjs +2 -2
- package/dist/src/components/BFormSpinbutton/index.mjs +1 -1
- package/dist/src/components/BFormTags/index.mjs +2 -2
- package/dist/src/components/BFormTextarea/index.mjs +1 -1
- package/dist/src/components/BImg/index.mjs +1 -1
- package/dist/src/components/BInputGroup/index.mjs +2 -2
- package/dist/src/components/BLink/index.mjs +1 -1
- package/dist/src/components/BListGroup/index.mjs +1 -1
- package/dist/src/components/BModal/index.mjs +1 -1
- package/dist/src/components/BNav/index.mjs +1 -1
- package/dist/src/components/BNavbar/index.mjs +1 -1
- package/dist/src/components/BOffcanvas/index.mjs +1 -1
- package/dist/src/components/BOverlay/index.mjs +1 -1
- package/dist/src/components/BPagination/index.mjs +1 -1
- package/dist/src/components/BPlaceholder/index.mjs +1 -1
- package/dist/src/components/BPopover/index.mjs +1 -1
- package/dist/src/components/BProgress/index.mjs +1 -1
- package/dist/src/components/BRow/index.mjs +1 -1
- package/dist/src/components/BSpinner/index.mjs +1 -1
- package/dist/src/components/BTable/index.mjs +2 -2
- package/dist/src/components/BTabs/index.mjs +1 -1
- package/dist/src/components/BTimeField/index.mjs +1 -1
- package/dist/src/components/BToast/index.mjs +1 -1
- package/dist/src/components/BTooltip/index.mjs +1 -1
- package/dist/src/components/index.mjs +60 -68
- package/dist/src/composables/index.mjs +5 -8
- package/dist/src/composables/index.mjs.map +1 -1
- package/dist/src/composables/orchestratorShared/index.mjs +79 -82
- package/dist/src/composables/orchestratorShared/index.mjs.map +1 -1
- package/dist/src/composables/useBreadcrumb/index.mjs +1 -1
- package/dist/src/composables/useBreadcrumb/index.mjs.map +1 -1
- package/dist/src/composables/useColorMode/index.mjs +2 -2
- package/dist/src/composables/useColorMode/index.mjs.map +1 -1
- package/dist/src/composables/useModal/index.mjs +65 -64
- package/dist/src/composables/useModal/index.mjs.map +1 -1
- package/dist/src/composables/usePopover/index.mjs +51 -68
- package/dist/src/composables/usePopover/index.mjs.map +1 -1
- package/dist/src/composables/useProvideDefaults/index.mjs +4 -3
- package/dist/src/composables/useProvideDefaults/index.mjs.map +1 -1
- package/dist/src/composables/useRegistry/index.mjs +5 -3
- package/dist/src/composables/useRegistry/index.mjs.map +1 -1
- package/dist/src/composables/useScrollLock/index.mjs +2 -1
- package/dist/src/composables/useScrollLock/index.mjs.map +1 -1
- package/dist/src/composables/useScrollspy/index.mjs +16 -13
- package/dist/src/composables/useScrollspy/index.mjs.map +1 -1
- package/dist/src/composables/useToast/index.mjs +45 -66
- package/dist/src/composables/useToast/index.mjs.map +1 -1
- package/dist/src/composables/useToggle/index.mjs +5 -3
- package/dist/src/composables/useToggle/index.mjs.map +1 -1
- package/dist/src/directives/BColorMode/index.mjs.map +1 -1
- package/dist/src/directives/BPopover/index.mjs +2 -2
- package/dist/src/directives/BPopover/index.mjs.map +1 -1
- package/dist/src/directives/BScrollspy/index.mjs +3 -3
- package/dist/src/directives/BScrollspy/index.mjs.map +1 -1
- package/dist/src/directives/BToggle/index.mjs +8 -6
- package/dist/src/directives/BToggle/index.mjs.map +1 -1
- package/dist/src/directives/BTooltip/index.mjs +2 -2
- package/dist/src/directives/BTooltip/index.mjs.map +1 -1
- package/dist/src/directives/index.mjs +1 -2
- package/dist/src/plugins/createBootstrap/index.mjs +1 -1
- package/dist/src/plugins/createBootstrap/index.mjs.map +1 -1
- package/dist/src/plugins/index.mjs +1 -1
- package/dist/src/plugins/orchestrator/index.mjs +1 -1
- package/dist/src/plugins/orchestrator/index.mjs.map +1 -1
- package/dist/src/plugins/registry/index.mjs +1 -1
- package/dist/src/plugins/registry/index.mjs.map +1 -1
- package/dist/src/plugins/rtl/index.mjs +1 -1
- package/dist/src/plugins/rtl/index.mjs.map +1 -1
- package/dist/src/resolvers/index.mjs +2 -2
- package/dist/src/resolvers/index.mjs.map +1 -1
- package/dist/src/types/index.mjs +2 -2
- package/dist/src/utils/index.mjs +2 -2
- package/dist/{stringUtils-D4eEDlt1.mjs → stringUtils-CVySsg3y.js} +2 -2
- package/dist/{stringUtils-68ZN_GRt.js.map → stringUtils-CVySsg3y.js.map} +1 -1
- package/dist/types/BootstrapVueOptions.d.mts +1 -4
- package/dist/types/BootstrapVueOptions.d.ts +1 -4
- package/dist/types/ComponentOrchestratorTypes.d.mts +62 -186
- package/dist/types/ComponentOrchestratorTypes.d.ts +62 -186
- package/dist/types/ComponentProps.d.mts +2 -0
- package/dist/types/ComponentProps.d.ts +2 -0
- package/dist/types/ComponentSlots.d.mts +1 -1
- package/dist/types/ComponentSlots.d.ts +1 -1
- package/dist/{useAlignment-DuR8ymKI.mjs → useAlignment-DaP-psIh.js} +1 -1
- package/dist/{useAlignment-oKolnDpb.js.map → useAlignment-DaP-psIh.js.map} +1 -1
- package/dist/{useAriaInvalid-apOwgexm.mjs → useAriaInvalid-CRUhkD2V.js} +1 -1
- package/dist/{useAriaInvalid-CHHPHNLU.js.map → useAriaInvalid-CRUhkD2V.js.map} +1 -1
- package/dist/{useColorVariantClasses-CqeXHjRh.mjs → useColorVariantClasses-DHQvLjek.js} +1 -1
- package/dist/{useColorVariantClasses-Dq0sOYDL.js.map → useColorVariantClasses-DHQvLjek.js.map} +1 -1
- package/dist/{useCountdownHover-C3NXiAaF.mjs → useCountdownHover-BN8vJIQW.js} +4 -3
- package/dist/{useCountdownHover-DbVhE-N0.js.map → useCountdownHover-BN8vJIQW.js.map} +1 -1
- package/dist/{useDateField-CJKgollJ.mjs → useDateField-CQZb799C.js} +680 -627
- package/dist/useDateField-CQZb799C.js.map +1 -0
- package/dist/{useDefaults-DseelK6y.mjs → useDefaults-BzP4qZBu.js} +2 -2
- package/dist/{useDefaults-C0CYry78.js.map → useDefaults-BzP4qZBu.js.map} +1 -1
- package/dist/{useFormCheck-BKXrwS3g.mjs → useFormCheck-fArncQY5.js} +3 -3
- package/dist/{useFormCheck-DYjLG4WA.js.map → useFormCheck-fArncQY5.js.map} +1 -1
- package/dist/{useFormInput-CXl8rpD0.mjs → useFormInput-DZ_3ZH1o.js} +8 -7
- package/dist/{useFormInput-ip9hN2AU.js.map → useFormInput-DZ_3ZH1o.js.map} +1 -1
- package/dist/{useFormSelect-BM0rsjni.mjs → useFormSelect-CwS8YuiQ.js} +3 -3
- package/dist/{useFormSelect-ClmzGzOy.js.map → useFormSelect-CwS8YuiQ.js.map} +1 -1
- package/dist/{useForwardExpose-Cob6LlGd.mjs → useForwardExpose-DDvk7mir.js} +5 -13
- package/dist/useForwardExpose-DDvk7mir.js.map +1 -0
- package/dist/{useId-D1sqXtwx.mjs → useId-Fh-Arhb7.js} +2 -2
- package/dist/{useId-BkAY2oh6.js.map → useId-Fh-Arhb7.js.map} +1 -1
- package/dist/{useKbd-DfmgFov6.mjs → useKbd-DRsaFU_f.js} +6 -18
- package/dist/useKbd-DRsaFU_f.js.map +1 -0
- package/dist/{useNumberishToStyle-DgS1slD3.mjs → useNumberishToStyle-DCnYcI6A.js} +2 -2
- package/dist/{useNumberishToStyle-BtMa0R27.js.map → useNumberishToStyle-DCnYcI6A.js.map} +1 -1
- package/dist/{useRadiusElementClasses-BW832F7F.mjs → useRadiusElementClasses-CKCJjpkK.js} +1 -1
- package/dist/{useRadiusElementClasses-DWiUVgex.js.map → useRadiusElementClasses-CKCJjpkK.js.map} +1 -1
- package/dist/{useRtl-CGoXBxNo.mjs → useRtl-FeLayV4k.js} +3 -3
- package/dist/{useRtl-BSgvbs5F.js.map → useRtl-FeLayV4k.js.map} +1 -1
- package/dist/{useSafeScrollLock-Me5LyqjD.mjs → useSafeScrollLock-PVgSASYu.js} +136 -216
- package/dist/useSafeScrollLock-PVgSASYu.js.map +1 -0
- package/dist/{useShowHide-CBFt1_EW.mjs → useShowHide-C95Y9EKL.js} +15 -14
- package/dist/useShowHide-C95Y9EKL.js.map +1 -0
- package/dist/{useStateClass-DxlL_m2E.mjs → useStateClass-BF7kf2zK.js} +1 -1
- package/dist/{useStateClass-CXK3nCg9.js.map → useStateClass-BF7kf2zK.js.map} +1 -1
- package/dist/utils/console.d.mts +2 -0
- package/dist/utils/console.d.ts +2 -0
- package/dist/utils/keys.d.mts +12 -4
- package/dist/utils/keys.d.ts +12 -4
- package/dist/{utils-CWvndqPg.mjs → utils-nRGGHA_i.js} +14 -10
- package/dist/utils-nRGGHA_i.js.map +1 -0
- package/package.json +65 -136
- package/dist/BAccordion-D51b9HVD.mjs.map +0 -1
- package/dist/BAccordion-DYmuqZIG.js +0 -360
- package/dist/BAccordion-DYmuqZIG.js.map +0 -1
- package/dist/BAlert-Ce2uxrJi.mjs.map +0 -1
- package/dist/BAlert-croEtrQu.js +0 -297
- package/dist/BAlert-croEtrQu.js.map +0 -1
- package/dist/BApp-B-fUrnpK.mjs.map +0 -1
- package/dist/BApp-DOvEe1jo.js +0 -181
- package/dist/BApp-DOvEe1jo.js.map +0 -1
- package/dist/BAspect-CUIU48Ck.js +0 -50
- package/dist/BAspect-wfiXM4KA.mjs.map +0 -1
- package/dist/BAutocomplete-CH-bQzME.mjs.map +0 -1
- package/dist/BAutocomplete-DLDFAV5_.js +0 -2402
- package/dist/BAutocomplete-DLDFAV5_.js.map +0 -1
- package/dist/BAvatar-FGK0dK0x.js +0 -386
- package/dist/BAvatar-FGK0dK0x.js.map +0 -1
- package/dist/BAvatar-iALHbqVk.mjs.map +0 -1
- package/dist/BBadge-Cx_CdauK.mjs.map +0 -1
- package/dist/BBadge-Db6SEnzy.js +0 -145
- package/dist/BBreadcrumb-B9ra7vg2.js +0 -166
- package/dist/BBreadcrumb-BxADbg0O.mjs.map +0 -1
- package/dist/BButton-BSa7LfL5.mjs.map +0 -1
- package/dist/BButton-DRRlzkyK.js +0 -156
- package/dist/BButton-PY7AANXJ.mjs.map +0 -1
- package/dist/BButton-aYtMnyHu.js +0 -190
- package/dist/BCard-BWoruisp.mjs.map +0 -1
- package/dist/BCard-Bh8RLMo_.js +0 -52
- package/dist/BCard-CHbKv2OR.mjs.map +0 -1
- package/dist/BCard-DwNYhVmg.js +0 -444
- package/dist/BCarousel-2JB21Pcu.js +0 -427
- package/dist/BCarousel-B6_bgQpl.mjs.map +0 -1
- package/dist/BCloseButton-CKTKr4PS.mjs.map +0 -1
- package/dist/BCloseButton-D42zHRLP.js +0 -45
- package/dist/BCol-B3VeEk9z.mjs.map +0 -1
- package/dist/BCol-Ck9VydHj.js +0 -140
- package/dist/BCollapse-CDLYLSZo.js +0 -183
- package/dist/BCollapse-CDLYLSZo.js.map +0 -1
- package/dist/BCollapse-kqhe4AmL.mjs.map +0 -1
- package/dist/BContainer-ATfhaxTc.mjs.map +0 -1
- package/dist/BContainer-CcF6dgtI.js +0 -44
- package/dist/BDateField-CccP3H1R.mjs.map +0 -1
- package/dist/BDateField-DzZw5FRX.js +0 -919
- package/dist/BDateField-DzZw5FRX.js.map +0 -1
- package/dist/BDatePicker-BDkzkOcm.js +0 -5138
- package/dist/BDatePicker-BDkzkOcm.js.map +0 -1
- package/dist/BDatePicker-BnwnSkBg.mjs.map +0 -1
- package/dist/BDropdown-0E8x5kk6.mjs.map +0 -1
- package/dist/BDropdown-B1DbvVzm.mjs.map +0 -1
- package/dist/BDropdown-BPFtkX3p.js +0 -403
- package/dist/BDropdown-BPFtkX3p.js.map +0 -1
- package/dist/BDropdown-DKCgBzYS.js +0 -415
- package/dist/BForm-6JlWdQMO.js +0 -126
- package/dist/BForm-BVfW08s5.mjs.map +0 -1
- package/dist/BForm-DJu2hDV_.mjs.map +0 -1
- package/dist/BForm-cnRpggt9.js +0 -51
- package/dist/BFormCheckbox-Baf_9BSc.mjs.map +0 -1
- package/dist/BFormCheckbox-D5ySHMJ8.js +0 -489
- package/dist/BFormCheckbox-D5ySHMJ8.js.map +0 -1
- package/dist/BFormFile-CZebm0Cp.mjs.map +0 -1
- package/dist/BFormFile-MISLntyJ.js +0 -423
- package/dist/BFormGroup-Bk1t-D1N.js +0 -490
- package/dist/BFormGroup-Bk1t-D1N.js.map +0 -1
- package/dist/BFormGroup-vysRPb99.mjs.map +0 -1
- package/dist/BFormInput-CBwwDjfC.js +0 -142
- package/dist/BFormInput-sEfU3CuN.mjs.map +0 -1
- package/dist/BFormOtp-C8X3u1od.mjs.map +0 -1
- package/dist/BFormOtp-CLrQJRPe.js +0 -542
- package/dist/BFormOtp-CLrQJRPe.js.map +0 -1
- package/dist/BFormRadio-B2yu-o2v.js +0 -432
- package/dist/BFormRadio-B2yu-o2v.js.map +0 -1
- package/dist/BFormRadio-COc_IbxC.mjs.map +0 -1
- package/dist/BFormRating-CIgPVsH_.mjs.map +0 -1
- package/dist/BFormRating-CSdRxN5z.js +0 -263
- package/dist/BFormRating-CSdRxN5z.js.map +0 -1
- package/dist/BFormSelect-CI92Dv27.js +0 -310
- package/dist/BFormSelect-CI92Dv27.js.map +0 -1
- package/dist/BFormSelect-P-InkOm-.mjs.map +0 -1
- package/dist/BFormSelectOption-DFN4lPRh.mjs.map +0 -1
- package/dist/BFormSelectOption-DrwJucNf.js +0 -46
- package/dist/BFormSpinbutton-1gTz4nTo.js +0 -447
- package/dist/BFormSpinbutton-6qkTBF_4.mjs.map +0 -1
- package/dist/BFormTag-CeV0MSRC.js +0 -86
- package/dist/BFormTag-CnzI39y9.mjs.map +0 -1
- package/dist/BFormTags-BMltSaKL.mjs.map +0 -1
- package/dist/BFormTags-BhO60uiL.js +0 -427
- package/dist/BFormTags-BhO60uiL.js.map +0 -1
- package/dist/BFormTextarea-C3Cj0DWj.js +0 -203
- package/dist/BFormTextarea-DN1gAfSo.mjs.map +0 -1
- package/dist/BFormValidFeedback-CBYxQLDz.mjs.map +0 -1
- package/dist/BFormValidFeedback-Kwxh798d.js +0 -223
- package/dist/BImg-JKJLgYYT.js +0 -168
- package/dist/BImg-QBS2ECBc.mjs.map +0 -1
- package/dist/BInputGroup-Bvlfv6VD.js +0 -55
- package/dist/BInputGroup-D4fW324B.js +0 -31
- package/dist/BInputGroup-DiTSexkT.mjs.map +0 -1
- package/dist/BInputGroup-X2Z53RJx.mjs.map +0 -1
- package/dist/BLink-Dfgte6dQ.mjs.map +0 -1
- package/dist/BLink-kLEjleB1.js +0 -276
- package/dist/BListGroup-C8JOzHTz.js +0 -167
- package/dist/BListGroup-DwTLpNiD.mjs.map +0 -1
- package/dist/BModal-C-ZCau2E.mjs.map +0 -1
- package/dist/BModal-VstTwEq9.js +0 -521
- package/dist/BModal-VstTwEq9.js.map +0 -1
- package/dist/BNav-DCLambmM.js +0 -453
- package/dist/BNav-DfYvjfRK.mjs.map +0 -1
- package/dist/BNavbar-BLWaZJRP.js +0 -245
- package/dist/BNavbar-xYaikQVY.mjs.map +0 -1
- package/dist/BOffcanvas-C7HenFW0.js +0 -331
- package/dist/BOffcanvas-C7HenFW0.js.map +0 -1
- package/dist/BOffcanvas-CF-dWeez.mjs.map +0 -1
- package/dist/BOverlay-Bh2PIN_q.mjs.map +0 -1
- package/dist/BOverlay-Bh4ldxgt.js +0 -203
- package/dist/BPagination-D75q-ZNg.mjs.map +0 -1
- package/dist/BPagination-fbjFAtxu.js +0 -446
- package/dist/BPlaceholder-B3rs_39w.js +0 -326
- package/dist/BPlaceholder-DPQ6mCLN.mjs.map +0 -1
- package/dist/BProgress-BZlrPYhA.mjs.map +0 -1
- package/dist/BProgress-th0-eZWo.js +0 -147
- package/dist/BRow-7AOuFiSy.js +0 -70
- package/dist/BRow-eGSUYGCW.mjs.map +0 -1
- package/dist/BSpinner-CUfGqviV.mjs.map +0 -1
- package/dist/BSpinner-DbYIp-C7.js +0 -60
- package/dist/BTable-BCWW00u_.js +0 -1903
- package/dist/BTable-BCWW00u_.js.map +0 -1
- package/dist/BTable-DUHxxWv5.mjs.map +0 -1
- package/dist/BTableSimple-BkdGAAKb.js +0 -137
- package/dist/BTableSimple-C-jn9Nwh.mjs.map +0 -1
- package/dist/BTabs-CvecFg5N.js +0 -607
- package/dist/BTabs-D_vWlBjT.mjs.map +0 -1
- package/dist/BTimeField-BSDaZogC.mjs.map +0 -1
- package/dist/BTimeField-BT5HXecp.js +0 -517
- package/dist/BTimeField-BT5HXecp.js.map +0 -1
- package/dist/BToast-DR0pek4W.js +0 -308
- package/dist/BToast-DR0pek4W.js.map +0 -1
- package/dist/BToast-Y8BayxES.mjs.map +0 -1
- package/dist/BTooltip-CVP8HdkU.mjs.map +0 -1
- package/dist/BTooltip-DPLYtaL1.js +0 -213
- package/dist/BootstrapVueOptions-DeViqxoD.js +0 -179
- package/dist/BootstrapVueOptions-DeViqxoD.js.map +0 -1
- package/dist/BootstrapVueOptions-Dt1TQdih.mjs.map +0 -1
- package/dist/ConditionalTeleport-B4KYZIM6.mjs.map +0 -1
- package/dist/ConditionalTeleport-BDWcebyD.js +0 -34
- package/dist/ConditionalWrapper-DZH_VSwb.js +0 -31
- package/dist/ConditionalWrapper-Dbc_O6qe.mjs.map +0 -1
- package/dist/DateRangeFieldInput-B86VEz0H.mjs.map +0 -1
- package/dist/DateRangeFieldInput-HvvI2You.js +0 -762
- package/dist/DateRangeFieldInput-HvvI2You.js.map +0 -1
- package/dist/PopperContent-BS_eKjzD.js +0 -1515
- package/dist/PopperContent-BS_eKjzD.js.map +0 -1
- package/dist/PopperContent-DmSgsjSC.mjs.map +0 -1
- package/dist/VisuallyHidden-C4sXnc-k.mjs.map +0 -1
- package/dist/VisuallyHidden-Cx0phlXT.js +0 -222
- package/dist/VisuallyHidden-Cx0phlXT.js.map +0 -1
- package/dist/VisuallyHiddenInput-BNrInt6d.js +0 -147
- package/dist/VisuallyHiddenInput-BNrInt6d.js.map +0 -1
- package/dist/VisuallyHiddenInput-DKIzxsQR.mjs.map +0 -1
- package/dist/bootstrap-vue-next.umd.js +0 -275
- package/dist/chunk-CoQrYLCe.js +0 -50
- package/dist/classes-B0E5Y78Y.mjs.map +0 -1
- package/dist/classes-D5wrmmVs.js +0 -92
- package/dist/constants-BLIvvaat.js +0 -123
- package/dist/constants-Ba9iJn2H.mjs.map +0 -1
- package/dist/debounce-D6kifS6w.js +0 -88
- package/dist/debounce-DHxNfjan.mjs.map +0 -1
- package/dist/dist-DiXKLh_W.js +0 -2064
- package/dist/dist-DiXKLh_W.js.map +0 -1
- package/dist/dist-Dk9C_HFS.mjs.map +0 -1
- package/dist/dom-AhkaSoh8.mjs.map +0 -1
- package/dist/dom-Bs6DzM72.js +0 -98
- package/dist/dom-Bs6DzM72.js.map +0 -1
- package/dist/flattenFragments-C1WWqm25.js +0 -18
- package/dist/flattenFragments-ClbLQGqR.mjs.map +0 -1
- package/dist/floating-ui.vue-CH2o_mZU.mjs.map +0 -1
- package/dist/floating-ui.vue-DDOIU2nS.js +0 -1773
- package/dist/floating-ui.vue-DDOIU2nS.js.map +0 -1
- package/dist/floatingUi-62aeQtAb.mjs.map +0 -1
- package/dist/floatingUi-DQ5bHmy3.js +0 -598
- package/dist/floatingUi-DQ5bHmy3.js.map +0 -1
- package/dist/functions-BcMenQqL.mjs.map +0 -1
- package/dist/functions-Bx1HDqMv.js +0 -11
- package/dist/functions-Bx1HDqMv.js.map +0 -1
- package/dist/getClasses-8P0iBind.js +0 -19
- package/dist/getClasses-COokMI60.mjs.map +0 -1
- package/dist/getElement-D2Jr1cbp.mjs.map +0 -1
- package/dist/getElement-DWGFJn0w.js +0 -19
- package/dist/keys-BMye8nSf.js +0 -187
- package/dist/keys-BMye8nSf.js.map +0 -1
- package/dist/keys-DU7sQgl3.mjs.map +0 -1
- package/dist/object-BN7QwMcz.js +0 -140
- package/dist/object-BN7QwMcz.js.map +0 -1
- package/dist/object-CHQkkner.mjs.map +0 -1
- package/dist/registryAccess-B9QDQwV8.js +0 -39
- package/dist/registryAccess-BkJDdh-3.mjs.map +0 -1
- package/dist/src/components/BAccordion/index.umd.js +0 -4
- package/dist/src/components/BAlert/index.umd.js +0 -3
- package/dist/src/components/BApp/index.umd.js +0 -4
- package/dist/src/components/BAspect/index.umd.js +0 -3
- package/dist/src/components/BAutocomplete/index.umd.js +0 -3
- package/dist/src/components/BAvatar/index.umd.js +0 -4
- package/dist/src/components/BBadge/index.umd.js +0 -3
- package/dist/src/components/BBreadcrumb/index.umd.js +0 -4
- package/dist/src/components/BButton/index.umd.js +0 -8
- package/dist/src/components/BCard/index.umd.js +0 -12
- package/dist/src/components/BCarousel/index.umd.js +0 -4
- package/dist/src/components/BCol/index.umd.js +0 -3
- package/dist/src/components/BCollapse/index.umd.js +0 -3
- package/dist/src/components/BContainer/index.umd.js +0 -7
- package/dist/src/components/BDateField/index.umd.js +0 -5
- package/dist/src/components/BDatePicker/index.umd.js +0 -4
- package/dist/src/components/BDropdown/index.umd.js +0 -11
- package/dist/src/components/BForm/index.umd.js +0 -11
- package/dist/src/components/BFormCheckbox/index.umd.js +0 -4
- package/dist/src/components/BFormFile/index.umd.js +0 -3
- package/dist/src/components/BFormGroup/index.umd.js +0 -3
- package/dist/src/components/BFormInput/index.umd.js +0 -4
- package/dist/src/components/BFormOtp/index.umd.js +0 -3
- package/dist/src/components/BFormRadio/index.umd.js +0 -4
- package/dist/src/components/BFormRating/index.umd.js +0 -3
- package/dist/src/components/BFormSelect/index.umd.js +0 -6
- package/dist/src/components/BFormSpinbutton/index.umd.js +0 -3
- package/dist/src/components/BFormTags/index.umd.js +0 -5
- package/dist/src/components/BFormTextarea/index.umd.js +0 -3
- package/dist/src/components/BImg/index.umd.js +0 -3
- package/dist/src/components/BInputGroup/index.umd.js +0 -5
- package/dist/src/components/BLink/index.umd.js +0 -3
- package/dist/src/components/BListGroup/index.umd.js +0 -4
- package/dist/src/components/BModal/index.umd.js +0 -3
- package/dist/src/components/BNav/index.umd.js +0 -7
- package/dist/src/components/BNavbar/index.umd.js +0 -6
- package/dist/src/components/BOffcanvas/index.umd.js +0 -3
- package/dist/src/components/BOverlay/index.umd.js +0 -3
- package/dist/src/components/BPagination/index.umd.js +0 -3
- package/dist/src/components/BPlaceholder/index.umd.js +0 -7
- package/dist/src/components/BPopover/index.umd.js +0 -3
- package/dist/src/components/BProgress/index.umd.js +0 -4
- package/dist/src/components/BRow/index.umd.js +0 -3
- package/dist/src/components/BSpinner/index.umd.js +0 -3
- package/dist/src/components/BTable/index.umd.js +0 -12
- package/dist/src/components/BTabs/index.umd.js +0 -4
- package/dist/src/components/BTimeField/index.umd.js +0 -3
- package/dist/src/components/BToast/index.umd.js +0 -3
- package/dist/src/components/BTooltip/index.umd.js +0 -3
- package/dist/src/components/index.umd.js +0 -301
- package/dist/src/components/index.umd.js.map +0 -1
- package/dist/src/composables/index.umd.js +0 -53
- package/dist/src/composables/index.umd.js.map +0 -1
- package/dist/src/composables/orchestratorShared/index.umd.js +0 -114
- package/dist/src/composables/orchestratorShared/index.umd.js.map +0 -1
- package/dist/src/composables/useBreadcrumb/index.umd.js +0 -37
- package/dist/src/composables/useBreadcrumb/index.umd.js.map +0 -1
- package/dist/src/composables/useColorMode/index.umd.js +0 -18
- package/dist/src/composables/useColorMode/index.umd.js.map +0 -1
- package/dist/src/composables/useModal/index.umd.js +0 -176
- package/dist/src/composables/useModal/index.umd.js.map +0 -1
- package/dist/src/composables/usePopover/index.umd.js +0 -90
- package/dist/src/composables/usePopover/index.umd.js.map +0 -1
- package/dist/src/composables/useProvideDefaults/index.umd.js +0 -42
- package/dist/src/composables/useProvideDefaults/index.umd.js.map +0 -1
- package/dist/src/composables/useRegistry/index.umd.js +0 -135
- package/dist/src/composables/useRegistry/index.umd.js.map +0 -1
- package/dist/src/composables/useScrollLock/index.umd.js +0 -8
- package/dist/src/composables/useScrollLock/index.umd.js.map +0 -1
- package/dist/src/composables/useScrollspy/index.umd.js +0 -144
- package/dist/src/composables/useScrollspy/index.umd.js.map +0 -1
- package/dist/src/composables/useToast/index.umd.js +0 -90
- package/dist/src/composables/useToast/index.umd.js.map +0 -1
- package/dist/src/composables/useToggle/index.umd.js +0 -34
- package/dist/src/composables/useToggle/index.umd.js.map +0 -1
- package/dist/src/directives/BColorMode/index.umd.js +0 -15
- package/dist/src/directives/BColorMode/index.umd.js.map +0 -1
- package/dist/src/directives/BModal/index.umd.js +0 -3
- package/dist/src/directives/BPopover/index.umd.js +0 -14
- package/dist/src/directives/BPopover/index.umd.js.map +0 -1
- package/dist/src/directives/BScrollspy/index.umd.js +0 -35
- package/dist/src/directives/BScrollspy/index.umd.js.map +0 -1
- package/dist/src/directives/BToggle/index.umd.js +0 -77
- package/dist/src/directives/BToggle/index.umd.js.map +0 -1
- package/dist/src/directives/BTooltip/index.umd.js +0 -16
- package/dist/src/directives/BTooltip/index.umd.js.map +0 -1
- package/dist/src/directives/index.umd.js +0 -32
- package/dist/src/directives/index.umd.js.map +0 -1
- package/dist/src/plugins/createBootstrap/index.umd.js +0 -19
- package/dist/src/plugins/createBootstrap/index.umd.js.map +0 -1
- package/dist/src/plugins/index.umd.js +0 -26
- package/dist/src/plugins/index.umd.js.map +0 -1
- package/dist/src/plugins/orchestrator/index.umd.js +0 -13
- package/dist/src/plugins/orchestrator/index.umd.js.map +0 -1
- package/dist/src/plugins/registry/index.umd.js +0 -62
- package/dist/src/plugins/registry/index.umd.js.map +0 -1
- package/dist/src/plugins/rtl/index.umd.js +0 -21
- package/dist/src/plugins/rtl/index.umd.js.map +0 -1
- package/dist/src/resolvers/index.umd.js +0 -94
- package/dist/src/resolvers/index.umd.js.map +0 -1
- package/dist/src/types/index.umd.js +0 -27
- package/dist/src/types/index.umd.js.map +0 -1
- package/dist/src/utils/index.umd.js +0 -21
- package/dist/src/utils/index.umd.js.map +0 -1
- package/dist/stringUtils-68ZN_GRt.js +0 -71
- package/dist/stringUtils-D4eEDlt1.mjs.map +0 -1
- package/dist/useAlignment-DuR8ymKI.mjs.map +0 -1
- package/dist/useAlignment-oKolnDpb.js +0 -16
- package/dist/useAriaInvalid-CHHPHNLU.js +0 -17
- package/dist/useAriaInvalid-apOwgexm.mjs.map +0 -1
- package/dist/useColorVariantClasses-CqeXHjRh.mjs.map +0 -1
- package/dist/useColorVariantClasses-Dq0sOYDL.js +0 -27
- package/dist/useCountdownHover-C3NXiAaF.mjs.map +0 -1
- package/dist/useCountdownHover-DbVhE-N0.js +0 -104
- package/dist/useDateField-CJKgollJ.mjs.map +0 -1
- package/dist/useDateField-DWv3600o.js +0 -3872
- package/dist/useDateField-DWv3600o.js.map +0 -1
- package/dist/useDefaults-C0CYry78.js +0 -76
- package/dist/useDefaults-DseelK6y.mjs.map +0 -1
- package/dist/useFormCheck-BKXrwS3g.mjs.map +0 -1
- package/dist/useFormCheck-DYjLG4WA.js +0 -82
- package/dist/useFormInput-CXl8rpD0.mjs.map +0 -1
- package/dist/useFormInput-ip9hN2AU.js +0 -117
- package/dist/useFormSelect-BM0rsjni.mjs.map +0 -1
- package/dist/useFormSelect-ClmzGzOy.js +0 -58
- package/dist/useForwardExpose-BpZJluPs.js +0 -80
- package/dist/useForwardExpose-BpZJluPs.js.map +0 -1
- package/dist/useForwardExpose-Cob6LlGd.mjs.map +0 -1
- package/dist/useId-BkAY2oh6.js +0 -17
- package/dist/useId-D1sqXtwx.mjs.map +0 -1
- package/dist/useKbd-DfmgFov6.mjs.map +0 -1
- package/dist/useKbd-sqDCJtXL.js +0 -105
- package/dist/useKbd-sqDCJtXL.js.map +0 -1
- package/dist/useNumberishToStyle-BtMa0R27.js +0 -18
- package/dist/useNumberishToStyle-DgS1slD3.mjs.map +0 -1
- package/dist/useRadiusElementClasses-BW832F7F.mjs.map +0 -1
- package/dist/useRadiusElementClasses-DWiUVgex.js +0 -28
- package/dist/useRtl-BSgvbs5F.js +0 -26
- package/dist/useRtl-CGoXBxNo.mjs.map +0 -1
- package/dist/useSafeScrollLock-7wmPH_Hy.js +0 -1418
- package/dist/useSafeScrollLock-7wmPH_Hy.js.map +0 -1
- package/dist/useSafeScrollLock-Me5LyqjD.mjs.map +0 -1
- package/dist/useShowHide-CBFt1_EW.mjs.map +0 -1
- package/dist/useShowHide-CHm2uUep.js +0 -436
- package/dist/useShowHide-CHm2uUep.js.map +0 -1
- package/dist/useStateClass-CXK3nCg9.js +0 -16
- package/dist/useStateClass-DxlL_m2E.mjs.map +0 -1
- package/dist/utils-CWvndqPg.mjs.map +0 -1
- package/dist/utils-Dk9yAtbs.js +0 -186
- package/dist/utils-Dk9yAtbs.js.map +0 -1
- /package/dist/{chunk-D1SwGrFN.mjs → rolldown-runtime-BBjsoOtd.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as useDefaults } from "./useDefaults-
|
|
2
|
-
import { t as useId$1 } from "./useId-
|
|
3
|
-
import { t as useRtl } from "./useRtl-
|
|
1
|
+
import { t as useDefaults } from "./useDefaults-BzP4qZBu.js";
|
|
2
|
+
import { t as useId$1 } from "./useId-Fh-Arhb7.js";
|
|
3
|
+
import { t as useRtl } from "./useRtl-FeLayV4k.js";
|
|
4
4
|
import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeModels, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useModel } from "vue";
|
|
5
5
|
//#region src/components/BFormRating/BFormRating.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var _hoisted_1 = [
|
|
@@ -19,18 +19,19 @@ var _hoisted_2 = [
|
|
|
19
19
|
"form",
|
|
20
20
|
"value"
|
|
21
21
|
];
|
|
22
|
-
var _hoisted_3 = ["
|
|
23
|
-
var _hoisted_4 =
|
|
24
|
-
var _hoisted_5 =
|
|
25
|
-
var _hoisted_6 =
|
|
22
|
+
var _hoisted_3 = ["aria-label"];
|
|
23
|
+
var _hoisted_4 = ["onClick"];
|
|
24
|
+
var _hoisted_5 = { class: "b-form-rating-star" };
|
|
25
|
+
var _hoisted_6 = ["width", "height"];
|
|
26
|
+
var _hoisted_7 = {
|
|
26
27
|
key: 0,
|
|
27
28
|
d: "M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"
|
|
28
29
|
};
|
|
29
|
-
var
|
|
30
|
+
var _hoisted_8 = {
|
|
30
31
|
key: 1,
|
|
31
32
|
d: "M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z"
|
|
32
33
|
};
|
|
33
|
-
var
|
|
34
|
+
var _hoisted_9 = {
|
|
34
35
|
key: 2,
|
|
35
36
|
d: "M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z"
|
|
36
37
|
};
|
|
@@ -38,13 +39,18 @@ var _hoisted_8 = {
|
|
|
38
39
|
//#region src/components/BFormRating/BFormRating.vue
|
|
39
40
|
var BFormRating_default = /* @__PURE__ */ defineComponent({
|
|
40
41
|
__name: "BFormRating",
|
|
41
|
-
props:
|
|
42
|
+
props: /*@__PURE__*/ mergeModels({
|
|
43
|
+
clearLabel: { default: "Clear rating" },
|
|
42
44
|
color: { default: "" },
|
|
43
45
|
id: { default: void 0 },
|
|
44
46
|
inline: {
|
|
45
47
|
type: Boolean,
|
|
46
48
|
default: false
|
|
47
49
|
},
|
|
50
|
+
labelValueCurrent: {
|
|
51
|
+
type: Function,
|
|
52
|
+
default: (current, max) => `${current} of ${max}`
|
|
53
|
+
},
|
|
48
54
|
locale: { default: void 0 },
|
|
49
55
|
noBorder: {
|
|
50
56
|
type: Boolean,
|
|
@@ -199,7 +205,7 @@ var BFormRating_default = /* @__PURE__ */ defineComponent({
|
|
|
199
205
|
"aria-valuemin": 0,
|
|
200
206
|
"aria-valuemax": clampedStars.value,
|
|
201
207
|
"aria-valuenow": displayValue.value,
|
|
202
|
-
"aria-valuetext":
|
|
208
|
+
"aria-valuetext": unref(props).labelValueCurrent(displayValue.value, clampedStars.value),
|
|
203
209
|
"aria-disabled": unref(props).disabled ? true : void 0,
|
|
204
210
|
"aria-readonly": unref(props).readonly ? true : void 0,
|
|
205
211
|
tabindex: unref(props).disabled ? void 0 : "0",
|
|
@@ -216,13 +222,13 @@ var BFormRating_default = /* @__PURE__ */ defineComponent({
|
|
|
216
222
|
key: 1,
|
|
217
223
|
class: "clear-button-spacing",
|
|
218
224
|
onClick: clearRating
|
|
219
|
-
}, [renderSlot(_ctx.$slots, "icon-clear", {}, () => [
|
|
225
|
+
}, [renderSlot(_ctx.$slots, "icon-clear", {}, () => [(openBlock(), createElementBlock("svg", {
|
|
220
226
|
viewBox: "0 0 16 16",
|
|
221
227
|
role: "img",
|
|
222
|
-
"aria-label":
|
|
228
|
+
"aria-label": unref(props).clearLabel,
|
|
223
229
|
xmlns: "http://www.w3.org/2000/svg",
|
|
224
230
|
class: "clear-icon"
|
|
225
|
-
}, [createElementVNode("g", null, [createElementVNode("path", { d: "M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708" })]
|
|
231
|
+
}, [..._cache[0] || (_cache[0] = [createElementVNode("g", null, [createElementVNode("path", { d: "M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708" })], -1)])], 8, _hoisted_3))])])) : createCommentVNode("", true),
|
|
226
232
|
(openBlock(true), createElementBlock(Fragment, null, renderList(clampedStars.value, (starIndex, index) => {
|
|
227
233
|
return openBlock(), createElementBlock("span", {
|
|
228
234
|
key: starIndex,
|
|
@@ -232,7 +238,7 @@ var BFormRating_default = /* @__PURE__ */ defineComponent({
|
|
|
232
238
|
starIndex,
|
|
233
239
|
isFilled: isIconFull(index),
|
|
234
240
|
isHalf: isIconHalf(index)
|
|
235
|
-
}, () => [createElementVNode("span",
|
|
241
|
+
}, () => [createElementVNode("span", _hoisted_5, [(openBlock(), createElementBlock("svg", {
|
|
236
242
|
xmlns: "http://www.w3.org/2000/svg",
|
|
237
243
|
width: computedSize.value,
|
|
238
244
|
height: computedSize.value,
|
|
@@ -240,7 +246,7 @@ var BFormRating_default = /* @__PURE__ */ defineComponent({
|
|
|
240
246
|
class: normalizeClass([[iconColors.value[index]?.class], "star-spacing"]),
|
|
241
247
|
style: normalizeStyle(iconColors.value[index]?.style),
|
|
242
248
|
viewBox: "0 0 16 16"
|
|
243
|
-
}, [isIconFull(index) ? (openBlock(), createElementBlock("path",
|
|
249
|
+
}, [isIconFull(index) ? (openBlock(), createElementBlock("path", _hoisted_7)) : isIconHalf(index) ? (openBlock(), createElementBlock("path", _hoisted_8)) : (openBlock(), createElementBlock("path", _hoisted_9))], 14, _hoisted_6))])])], 8, _hoisted_4);
|
|
244
250
|
}), 128)),
|
|
245
251
|
unref(props).showValue || unref(props).showValueMax ? (openBlock(), createElementBlock("span", {
|
|
246
252
|
key: 2,
|
|
@@ -254,4 +260,4 @@ var BFormRating_default = /* @__PURE__ */ defineComponent({
|
|
|
254
260
|
//#endregion
|
|
255
261
|
export { BFormRating_default as t };
|
|
256
262
|
|
|
257
|
-
//# sourceMappingURL=BFormRating-
|
|
263
|
+
//# sourceMappingURL=BFormRating-AEiF8K8T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BFormRating-AEiF8K8T.js","names":[],"sources":["../src/components/BFormRating/BFormRating.vue","../src/components/BFormRating/BFormRating.vue"],"sourcesContent":["<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"props.labelValueCurrent(displayValue, clampedStars)\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n :aria-label=\"props.clearLabel\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n clearLabel: 'Clear rating',\n color: '',\n id: undefined,\n inline: false,\n labelValueCurrent: (current: number, max: number) => `${current} of ${max}`,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"props.labelValueCurrent(displayValue, clampedStars)\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n :aria-label=\"props.clearLabel\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n clearLabel: 'Clear rating',\n color: '',\n id: undefined,\n inline: false,\n labelValueCurrent: (current: number, max: number) => `${current} of ${max}`,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqHA,MAAM,QAAQ,YAAY,SAAQ,aAAa;EAG/C,MAAM,aAAa,SAA+D,SAAA,YAAa;EAE/F,MAAM,aAAa,cAAY,MAAM,IAAI,aAAa;EAEtD,MAAM,EAAC,OAAO,QAAQ,iBAAgB,OAAO;EAE7C,MAAM,iBAAiB,eAAe;GACpC,MAAM,OAAO,MAAM,UAAU,cAAc,UAAU,KAAA;GAErD,OAAO,IADQ,KAAK,aAAa,GAC1B,CAAA,CAAG,gBAAgB,CAAC,CAAC;EAC9B,CAAC;EAED,MAAM,cAAc,eAAe;GACjC,MAAM,SAAS,eAAe;GAC9B,IAAI;IAEF,MAAM,EAAC,aAAY,IADG,KAAK,OAAO,MACf;IACnB,IAAI,UACF,OAAO,SAAS,cAAc;GAElC,QAAQ,CAER;GACA,OAAO,OAAO,SAAS;EACzB,CAAC;EAED,MAAM,kBAAkB,gBAAgB;GACtC,gBAAgB;GAChB,eAAe,MAAM;GACrB,eAAe,MAAM;GACrB,aAAa,MAAM;GACnB,iBAAiB;GACjB,iBAAiB,MAAM;EACzB,EAAE;EAEF,SAAS,WAAW,OAAwB;GAC1C,OAAO,aAAa,QAAQ,SAAS;EACvC;EAEA,SAAS,WAAW,OAAwB;GAC1C,MAAM,OAAO,aAAa,QAAQ;GAClC,OAAO,QAAQ,MAAO,OAAO;EAC/B;EAEA,MAAM,aAAa,IAAmB,IAAI;EAE1C,MAAM,eAAe,eACnB,WAAW,UAAU,OAAO,WAAW,QAAQ,WAAW,KAC5D;EAGA,MAAM,eAAe,eAAe,KAAK,IAAI,GAAG,MAAM,KAAK,CAAC;EAE5D,MAAM,eAAe,eAAe;GAClC,IAAI,MAAM,SAAS,MAAM,OAAO;GAChC,IAAI,MAAM,SAAS,MAAM,OAAO;GAChC,OAAO,MAAM;EACf,CAAC;EAED,MAAM,oBAAoB,eAEtB,IAAI,KAAK,aAAa,eAAe,OAAO;GAC1C,OAAO;GACP,aAAa;GACb,uBAAuB,MAAM,YAAY,IAAI,MAAM,YAAY;GAC/D,uBAAuB,MAAM,YAAY,IAAI,MAAM,YAAY;GAC/D,UAAU;EACZ,CAAC,CACL;EAEA,MAAM,mBAAmB,eAAe;GACtC,MAAM,MAAM,MAAM,YAAY,IAAI,aAAa,QAAQ,aAAa;GACpE,MAAM,iBAAiB,kBAAkB,MAAM,OAAO,GAAG;GACzD,IAAI,MAAM,cAER,OAAO,GAAG,eAAe,GADJ,kBAAkB,MAAM,OAAO,aAAa,KACrC;GAE9B,IAAI,MAAM,WACR,OAAO;GAET,OAAO;EACT,CAAC;EAED,MAAM,eAAe,eAAe;GAClC,MAAM,MAAM,aAAa;GACzB,MAAM,SAAS,MAAM,MAAM;GAC3B,OAAO,KAAK,OAAO,MAAM,OAAO,WAAW,MAAM,IAAI;EACvD,CAAC;EAED,MAAM,aAAa,eACjB,MAAM,KAAK,EAAC,QAAQ,aAAa,MAAK,SAAS;GAC7C,IAAI,MAAM,UACR,OAAO;IAAC,OAAO;IAAe,OAAO,CAAC;GAAC;GAEzC,IAAI,MAAM,SACR,OAAO;IAAC,OAAO,QAAQ,MAAM;IAAW,OAAO,CAAC;GAAC;GAEnD,IAAI,MAAM,OACR,OAAO;IAAC,OAAO;IAAI,OAAO,EAAC,OAAO,MAAM,MAAK;GAAC;GAEhD,OAAO;IAAC,OAAO;IAAI,OAAO,CAAC;GAAC;EAC9B,CAAC,CACH;EAGA,SAAS,UAAU,GAAkB;GACnC,IAAI,MAAM,YAAY,MAAM,UAAU;GAEtC,IAAI,WAAW,WAAW;GAE1B,MAAM,YAAY,YAAY;GAE9B,QAAQ,EAAE,KAAV;IACE,KAAK;KACH,WAAW,YAAY,KAAK,IAAI,WAAW,GAAG,CAAC,IAAI,KAAK,IAAI,WAAW,GAAG,aAAa,KAAK;KAC5F;IACF,KAAK;KACH,WAAW,KAAK,IAAI,WAAW,GAAG,aAAa,KAAK;KACpD;IACF,KAAK;KACH,WAAW,YAAY,KAAK,IAAI,WAAW,GAAG,aAAa,KAAK,IAAI,KAAK,IAAI,WAAW,GAAG,CAAC;KAC5F;IACF,KAAK;KACH,WAAW,KAAK,IAAI,WAAW,GAAG,CAAC;KACnC;IACF,SACE;GACJ;GAEA,EAAE,eAAe;GACjB,WAAW,QAAQ;EACrB;EAEA,SAAS,aAAa,WAAmB;GACvC,IAAI,MAAM,YAAY,MAAM,UAAU;GACtC,WAAW,QAAQ,WAAW,UAAU,OAAO,WAAW,QAAQ;EACpE;EAGA,SAAS,cAAc;GACrB,WAAW,QAAQ;GACnB,WAAW,QAAQ;EACrB;EAEA,SAAa,EACX,WACF,CAAC;;GAzQC,OAAA,UAAA,GAAA,mBAsFS,UAAA;IArFN,IAAI,MAAA,UAAA;IACJ,OAAK,eAAE,gBAAA,KAAe;IACtB,KAAK,YAAA,QAAW,QAAA;IAChB,MAAM,MAAA,KAAA,CAAK,CAAC,OAAO,MAAA,KAAA,CAAK,CAAC,OAAO,KAAA;IACjC,MAAK;IACJ,iBAAe;IACf,iBAAe,aAAA;IACf,iBAAe,aAAA;IACf,kBAAgB,MAAA,KAAA,CAAK,CAAC,kBAAkB,aAAA,OAAc,aAAA,KAAY;IAClE,iBAAe,MAAA,KAAA,CAAK,CAAC,WAAQ,OAAU,KAAA;IACvC,iBAAe,MAAA,KAAA,CAAK,CAAC,WAAQ,OAAU,KAAA;IACvC,UAAU,MAAA,KAAA,CAAK,CAAC,WAAW,KAAA,IAAS;IAC3B;;IAGF,MAAA,KAAA,CAAK,CAAC,QAAI,CAAK,MAAA,KAAA,CAAK,CAAC,YAD7B,UAAA,GAAA,mBAOE,SAAA;KALA,KAAI;KACJ,MAAK;KACJ,MAAM,MAAA,KAAA,CAAK,CAAC;KACZ,MAAM,MAAA,KAAA,CAAK,CAAC;KACZ,OAAO,WAAA;;IAGF,MAAA,KAAA,CAAK,CAAC,aAAS,CAAK,MAAA,KAAA,CAAK,CAAC,YAAQ,CAAK,MAAA,KAAA,CAAK,CAAC,YADrD,UAAA,GAAA,mBAoBO,QAAA;;KAlBL,OAAM;KACL,SAAO;IAER,GAAA,CAAA,WAcO,KAAA,QAAA,cAAA,CAAA,SAAA,EAbL,UAAA,GAAA,mBAYM,OAAA;KAXJ,SAAQ;KACR,MAAK;KACJ,cAAY,MAAA,KAAA,CAAK,CAAC;KACnB,OAAM;KACN,OAAM;IAEN,GAAA,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,mBAII,KAAA,MAAA,CAHF,mBAEE,QAAA,EADA,GAAE,iMAAgM,CAAA,CAAA,GAAA,EAAA,CAAA,EAAA,GAAA,GAAA,UAAA,EAAA,CAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;KAM5M,UAAA,IAAA,GAAA,mBAiCO,UAAA,MAAA,WAhCwB,aAAA,QAArB,WAAW,UAAK;KAD1B,OAAA,UAAA,GAAA,mBAiCO,QAAA;MA/BJ,KAAK;MACN,OAAM;MACL,UAAK,WAAE,aAAa,SAAS;KAE9B,GAAA,CAAA,WA0BO,KAAA,QAAA,WAAA;MA1BY;MAAY,UAAW,WAAW,KAAK;MAAI,QAAS,WAAW,KAAK;KAAvF,SA0BO,CAzBL,mBAwBO,QAxBP,YAwBO,EAvBL,UAAA,GAAA,mBAsBM,OAAA;MArBJ,OAAM;MACL,OAAO,aAAA;MACP,QAAQ,aAAA;MACT,MAAK;MACJ,OAAK,eAAA,CAAA,CAAG,WAAA,MAAW,MAAK,EAAG,KAAK,GAE3B,cAAc,CAAA;MADnB,OAAK,eAAE,WAAA,MAAW,MAAK,EAAG,KAAK;MAEhC,SAAQ;KAGA,GAAA,CAAA,WAAW,KAAK,KADxB,UAAA,GAAA,mBAGE,QAHF,UAGE,KAEW,WAAW,KAAK,KAD7B,UAAA,GAAA,mBAGE,QAHF,UAGE,MACF,UAAA,GAAA,mBAGE,QAHF,UAGE,EAAA,GAAA,IAAA,UAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA,GAAA,UAAA;;IAOF,MAAA,KAAA,CAAK,CAAC,aAAa,MAAA,KAAA,CAAK,CAAC,gBADjC,UAAA,GAAA,mBAMO,QAAA;;KAJJ,OAAK,eAAA,EAAA,UAAa,aAAA,MAAY,CAAA;KAC/B,OAAM;IAEH,GAAA,gBAAA,iBAAA,KAAgB,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { d as formGroupKey, f as formSelectKey } from "./keys-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
8
|
-
import { t as
|
|
1
|
+
import { d as formGroupKey, f as formSelectKey } from "./keys-BgLwJbLV.js";
|
|
2
|
+
import { S as useToNumber } from "./dist-DKc2ivHS.js";
|
|
3
|
+
import { m as useFocus } from "./dist-9-XTMhb-.js";
|
|
4
|
+
import { t as useDefaults } from "./useDefaults-BzP4qZBu.js";
|
|
5
|
+
import { t as useId$1 } from "./useId-Fh-Arhb7.js";
|
|
6
|
+
import { t as useAriaInvalid } from "./useAriaInvalid-CRUhkD2V.js";
|
|
7
|
+
import { t as useStateClass } from "./useStateClass-BF7kf2zK.js";
|
|
8
|
+
import { t as useFormSelect } from "./useFormSelect-CwS8YuiQ.js";
|
|
9
|
+
import { t as BFormSelectOption_default } from "./BFormSelectOption-C8orMj24.js";
|
|
9
10
|
import { Fragment, computed, createBlock, createElementBlock, createTextVNode, defineComponent, guardReactiveProps, inject, mergeModels, mergeProps, normalizeClass, normalizeProps, openBlock, provide, readonly, renderList, renderSlot, toDisplayString, unref, useModel, useTemplateRef, vModelSelect, withCtx, withDirectives } from "vue";
|
|
10
11
|
//#region src/components/BFormSelect/BFormSelectOptionGroup.vue?vue&type=script&setup=true&lang.ts
|
|
11
12
|
var _hoisted_1$1 = ["label"];
|
|
@@ -57,7 +58,7 @@ var _hoisted_1 = [
|
|
|
57
58
|
//#region src/components/BFormSelect/BFormSelectBase.vue
|
|
58
59
|
var BFormSelectBase_default = /* @__PURE__ */ defineComponent({
|
|
59
60
|
__name: "BFormSelectBase",
|
|
60
|
-
props:
|
|
61
|
+
props: /*@__PURE__*/ mergeModels({
|
|
61
62
|
ariaInvalid: {
|
|
62
63
|
type: [Boolean, String],
|
|
63
64
|
default: void 0
|
|
@@ -98,7 +99,17 @@ var BFormSelectBase_default = /* @__PURE__ */ defineComponent({
|
|
|
98
99
|
textField: { default: "text" },
|
|
99
100
|
valueField: { default: "value" }
|
|
100
101
|
}, {
|
|
101
|
-
"modelValue": {
|
|
102
|
+
"modelValue": {
|
|
103
|
+
type: [
|
|
104
|
+
Boolean,
|
|
105
|
+
String,
|
|
106
|
+
Array,
|
|
107
|
+
Object,
|
|
108
|
+
Number,
|
|
109
|
+
null
|
|
110
|
+
],
|
|
111
|
+
default: ""
|
|
112
|
+
},
|
|
102
113
|
"modelModifiers": {}
|
|
103
114
|
}),
|
|
104
115
|
emits: ["update:modelValue"],
|
|
@@ -186,7 +197,7 @@ var BFormSelectBase_default = /* @__PURE__ */ defineComponent({
|
|
|
186
197
|
//#region src/components/BFormSelect/BFormSelect.vue
|
|
187
198
|
var BFormSelect_default = /* @__PURE__ */ defineComponent({
|
|
188
199
|
__name: "BFormSelect",
|
|
189
|
-
props:
|
|
200
|
+
props: /*@__PURE__*/ mergeModels({
|
|
190
201
|
ariaInvalid: {
|
|
191
202
|
type: [Boolean, String],
|
|
192
203
|
default: void 0
|
|
@@ -295,4 +306,4 @@ var BFormSelect_default = /* @__PURE__ */ defineComponent({
|
|
|
295
306
|
//#endregion
|
|
296
307
|
export { BFormSelectOptionGroup_default as n, BFormSelect_default as t };
|
|
297
308
|
|
|
298
|
-
//# sourceMappingURL=BFormSelect-
|
|
309
|
+
//# sourceMappingURL=BFormSelect-DdjH8482.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BFormSelect-DdjH8482.js","names":["$attrs"],"sources":["../src/components/BFormSelect/BFormSelectOptionGroup.vue","../src/components/BFormSelect/BFormSelectOptionGroup.vue","../src/components/BFormSelect/BFormSelectBase.vue","../src/components/BFormSelect/BFormSelectBase.vue","../src/components/BFormSelect/BFormSelect.vue","../src/components/BFormSelect/BFormSelect.vue"],"sourcesContent":["<template>\n <optgroup :label=\"props.label\">\n <slot name=\"first\" />\n <BFormSelectOption\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"index\"\n v-bind=\"{...$attrs, ...option}\"\n >\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n <slot />\n </optgroup>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {ComputedRef} from 'vue'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport type {\n BFormSelectOptionGroupProps,\n BFormSelectOptionGroupSlots,\n SelectOption,\n} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionGroupProps>(), {\n disabledField: 'disabled',\n label: undefined,\n options: () => [],\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelectOptionGroup')\ndefineSlots<BFormSelectOptionGroupSlots<T>>()\n\n// The form select context is injected by BFormSelectOption components automatically\n// We don't need to handle the selected value here since each BFormSelectOption\n// will inject the context directly\n\n// Type assertion is needed because useFormSelect is not generic-aware.\n// This is acceptable in the wrapper/base pattern where the wrapper (BFormSelect)\n// handles type-safe normalization before passing to base components.\nconst {normalizedOptions} = useFormSelect(() => props.options, props) as {\n normalizedOptions: ComputedRef<SelectOption<T>[]>\n}\n</script>\n","<template>\n <optgroup :label=\"props.label\">\n <slot name=\"first\" />\n <BFormSelectOption\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"index\"\n v-bind=\"{...$attrs, ...option}\"\n >\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n <slot />\n </optgroup>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {ComputedRef} from 'vue'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport type {\n BFormSelectOptionGroupProps,\n BFormSelectOptionGroupSlots,\n SelectOption,\n} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionGroupProps>(), {\n disabledField: 'disabled',\n label: undefined,\n options: () => [],\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelectOptionGroup')\ndefineSlots<BFormSelectOptionGroupSlots<T>>()\n\n// The form select context is injected by BFormSelectOption components automatically\n// We don't need to handle the selected value here since each BFormSelectOption\n// will inject the context directly\n\n// Type assertion is needed because useFormSelect is not generic-aware.\n// This is acceptable in the wrapper/base pattern where the wrapper (BFormSelect)\n// handles type-safe normalization before passing to base components.\nconst {normalizedOptions} = useFormSelect(() => props.options, props) as {\n normalizedOptions: ComputedRef<SelectOption<T>[]>\n}\n</script>\n","<template>\n <select\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedClasses\"\n :name=\"props.name\"\n :form=\"props.form || undefined\"\n :multiple=\"props.multiple || undefined\"\n :size=\"computedSelectSize\"\n :disabled=\"isDisabled\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n :aria-invalid=\"computedAriaInvalid\"\n >\n <slot name=\"first\" />\n <template v-for=\"(option, index) in normalizedOptsWrapper\" :key=\"index\">\n <BFormSelectOptionGroup\n v-if=\"isComplex(option)\"\n :label=\"option.label\"\n :options=\"option.options\"\n :value-field=\"props.valueField\"\n :text-field=\"props.textField\"\n :disabled-field=\"props.disabledField\"\n />\n <BFormSelectOption v-else v-bind=\"option\">\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n </template>\n <slot />\n </select>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BFormSelectBaseProps} from '../../types'\nimport {computed, inject, provide, readonly, useTemplateRef} from 'vue'\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport BFormSelectOptionGroup from './BFormSelectOptionGroup.vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport {formGroupKey, formSelectKey} from '../../utils/keys'\n\n/**\n * Base component for BFormSelect - non-generic implementation using useDefaults.\n * Renders a select element with normalized options and option groups.\n * Supports both simple options and complex grouped options.\n */\nconst _props = withDefaults(defineProps<Omit<BFormSelectBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [],\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: undefined,\n state: null,\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelect')\n\nconst modelValue = defineModel<BFormSelectBaseProps['modelValue']>({\n default: '',\n})\n\nconst computedId = useId(() => props.id, 'input')\n\nconst formGroupData = inject(formGroupKey, null)?.()\nformGroupData?.track(computedId)\nconst isDisabled = computed(() => props.disabled || (formGroupData?.disabled.value ?? false))\n\nconst selectSizeNumber = useToNumber(() => props.selectSize)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n 'form-control': props.plain,\n [`form-control-${props.size}`]: props.size !== undefined && props.plain,\n 'form-select': !props.plain,\n [`form-select-${props.size}`]: props.size !== undefined && !props.plain,\n },\n])\n\nconst computedSelectSize = computed(() =>\n !props.plain && selectSizeNumber.value > 0 ? selectSizeNumber.value : undefined\n)\n\nconst computedAriaInvalid = useAriaInvalid(\n () => props.ariaInvalid,\n () => props.state\n)\n\nconst {normalizedOptions, isComplex} = useFormSelect(() => props.options, props)\n\nconst normalizedOptsWrapper = computed(() => normalizedOptions.value)\n\nconst localValue = computed({\n get: () => modelValue.value,\n set: (newValue) => {\n modelValue.value = newValue\n },\n})\n\n// Provide the current model value for child components to inject\nprovide(formSelectKey, {\n modelValue: readonly(localValue),\n})\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <select\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedClasses\"\n :name=\"props.name\"\n :form=\"props.form || undefined\"\n :multiple=\"props.multiple || undefined\"\n :size=\"computedSelectSize\"\n :disabled=\"isDisabled\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n :aria-invalid=\"computedAriaInvalid\"\n >\n <slot name=\"first\" />\n <template v-for=\"(option, index) in normalizedOptsWrapper\" :key=\"index\">\n <BFormSelectOptionGroup\n v-if=\"isComplex(option)\"\n :label=\"option.label\"\n :options=\"option.options\"\n :value-field=\"props.valueField\"\n :text-field=\"props.textField\"\n :disabled-field=\"props.disabledField\"\n />\n <BFormSelectOption v-else v-bind=\"option\">\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n </template>\n <slot />\n </select>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BFormSelectBaseProps} from '../../types'\nimport {computed, inject, provide, readonly, useTemplateRef} from 'vue'\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport BFormSelectOptionGroup from './BFormSelectOptionGroup.vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport {formGroupKey, formSelectKey} from '../../utils/keys'\n\n/**\n * Base component for BFormSelect - non-generic implementation using useDefaults.\n * Renders a select element with normalized options and option groups.\n * Supports both simple options and complex grouped options.\n */\nconst _props = withDefaults(defineProps<Omit<BFormSelectBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [],\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: undefined,\n state: null,\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelect')\n\nconst modelValue = defineModel<BFormSelectBaseProps['modelValue']>({\n default: '',\n})\n\nconst computedId = useId(() => props.id, 'input')\n\nconst formGroupData = inject(formGroupKey, null)?.()\nformGroupData?.track(computedId)\nconst isDisabled = computed(() => props.disabled || (formGroupData?.disabled.value ?? false))\n\nconst selectSizeNumber = useToNumber(() => props.selectSize)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n 'form-control': props.plain,\n [`form-control-${props.size}`]: props.size !== undefined && props.plain,\n 'form-select': !props.plain,\n [`form-select-${props.size}`]: props.size !== undefined && !props.plain,\n },\n])\n\nconst computedSelectSize = computed(() =>\n !props.plain && selectSizeNumber.value > 0 ? selectSizeNumber.value : undefined\n)\n\nconst computedAriaInvalid = useAriaInvalid(\n () => props.ariaInvalid,\n () => props.state\n)\n\nconst {normalizedOptions, isComplex} = useFormSelect(() => props.options, props)\n\nconst normalizedOptsWrapper = computed(() => normalizedOptions.value)\n\nconst localValue = computed({\n get: () => modelValue.value,\n set: (newValue) => {\n modelValue.value = newValue\n },\n})\n\n// Provide the current model value for child components to inject\nprovide(formSelectKey, {\n modelValue: readonly(localValue),\n})\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <BFormSelectBase\n v-bind=\"forwardedProps\"\n v-model=\"modelValue as any\"\n :options=\"normalizedOptions as any\"\n >\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps as any\" />\n </template>\n\n <slot />\n </BFormSelectBase>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n Options extends readonly (object | string | number | boolean)[] = readonly (\n | object\n | string\n | number\n | boolean\n )[]\n \"\n>\nimport {computed} from 'vue'\nimport BFormSelectBase from './BFormSelectBase.vue'\nimport type {\n BFormSelectProps,\n BFormSelectSlots,\n ComplexSelectOptionRaw,\n OptionsValues,\n SelectOption,\n} from '../../types'\n\n/**\n * Type-safe wrapper component for BFormSelect.\n * Provides generic type safety for options array and strongly-typed modelValue.\n * Uses Options array generic to extract union of all possible values.\n * Normalizes typed options and forwards to BFormSelectBase for rendering.\n * Supports both complex objects and simple scalar types (string, number).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values (or array if multiple)\n * - Object arrays with 'value' field: modelValue is union of value field types\n * - Use 'as const' on options for literal type inference\n */\nconst props = withDefaults(defineProps<Omit<BFormSelectProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [] as unknown as Options,\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: undefined,\n state: null,\n textField: 'text',\n valueField: 'value',\n})\ndefineSlots<BFormSelectSlots<OptionsValues<Options>>>()\n\n// Type-safe model value - single value or array depending on multiple prop.\n// NOTE: OptionsValues assumes a static \"value\" key; custom valueField is not\n// reflected in the type — modelValue falls back to unknown in that case.\nconst modelValue = defineModel<OptionsValues<Options> | OptionsValues<Options>[] | null>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: '' as any,\n})\n\n// Normalize a single simple option using custom field names\nconst normalizeSimpleOption = (el: object): SelectOption =>\n ({\n ...(el as Record<string, unknown>),\n value: (el as Record<string, unknown>)[props.valueField as string],\n text: ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ?? '',\n disabled:\n ((el as Record<string, unknown>)[props.disabledField as string] as boolean | undefined) ??\n false,\n }) as SelectOption\n\nconst normalizePrimitive = (el: string | number | boolean): SelectOption =>\n ({value: el, text: String(el), disabled: false}) as SelectOption\n\n// Type-safe normalization of options (supports both simple and complex/grouped)\nconst normalizedOptions = computed(() => {\n const optionsArray = props.options ?? []\n const hasComplexOptions = optionsArray.some(\n (el) =>\n typeof el !== 'string' &&\n typeof el !== 'number' &&\n typeof el !== 'boolean' &&\n (el as Record<string, unknown>)[props.optionsField as string] !== undefined\n )\n\n if (hasComplexOptions) {\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n\n // Check if this is a complex (grouped) option\n const optionsField = (el as Record<string, unknown>)[props.optionsField as string]\n if (optionsField !== undefined && Array.isArray(optionsField)) {\n // Complex option with nested options\n const label =\n ((el as Record<string, unknown>)[props.labelField as string] as string | undefined) ??\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n ''\n return {\n label,\n options: optionsField.map((subOpt: unknown) => {\n if (\n typeof subOpt === 'string' ||\n typeof subOpt === 'number' ||\n typeof subOpt === 'boolean'\n ) {\n return normalizePrimitive(subOpt)\n }\n return normalizeSimpleOption(subOpt as object)\n }),\n } as ComplexSelectOptionRaw\n }\n\n // Simple option - spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n }\n\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n // Spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n})\n\n// Forward all props except options (which we normalize), modelValue (handled separately),\n// and field mappings (already used for normalization)\nconst forwardedProps = computed(() => ({\n ariaInvalid: props.ariaInvalid,\n autofocus: props.autofocus,\n disabled: props.disabled,\n form: props.form,\n id: props.id,\n multiple: props.multiple,\n name: props.name,\n plain: props.plain,\n required: props.required,\n selectSize: props.selectSize,\n size: props.size,\n state: props.state,\n}))\n</script>\n","<template>\n <BFormSelectBase\n v-bind=\"forwardedProps\"\n v-model=\"modelValue as any\"\n :options=\"normalizedOptions as any\"\n >\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps as any\" />\n </template>\n\n <slot />\n </BFormSelectBase>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n Options extends readonly (object | string | number | boolean)[] = readonly (\n | object\n | string\n | number\n | boolean\n )[]\n \"\n>\nimport {computed} from 'vue'\nimport BFormSelectBase from './BFormSelectBase.vue'\nimport type {\n BFormSelectProps,\n BFormSelectSlots,\n ComplexSelectOptionRaw,\n OptionsValues,\n SelectOption,\n} from '../../types'\n\n/**\n * Type-safe wrapper component for BFormSelect.\n * Provides generic type safety for options array and strongly-typed modelValue.\n * Uses Options array generic to extract union of all possible values.\n * Normalizes typed options and forwards to BFormSelectBase for rendering.\n * Supports both complex objects and simple scalar types (string, number).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values (or array if multiple)\n * - Object arrays with 'value' field: modelValue is union of value field types\n * - Use 'as const' on options for literal type inference\n */\nconst props = withDefaults(defineProps<Omit<BFormSelectProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [] as unknown as Options,\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: undefined,\n state: null,\n textField: 'text',\n valueField: 'value',\n})\ndefineSlots<BFormSelectSlots<OptionsValues<Options>>>()\n\n// Type-safe model value - single value or array depending on multiple prop.\n// NOTE: OptionsValues assumes a static \"value\" key; custom valueField is not\n// reflected in the type — modelValue falls back to unknown in that case.\nconst modelValue = defineModel<OptionsValues<Options> | OptionsValues<Options>[] | null>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: '' as any,\n})\n\n// Normalize a single simple option using custom field names\nconst normalizeSimpleOption = (el: object): SelectOption =>\n ({\n ...(el as Record<string, unknown>),\n value: (el as Record<string, unknown>)[props.valueField as string],\n text: ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ?? '',\n disabled:\n ((el as Record<string, unknown>)[props.disabledField as string] as boolean | undefined) ??\n false,\n }) as SelectOption\n\nconst normalizePrimitive = (el: string | number | boolean): SelectOption =>\n ({value: el, text: String(el), disabled: false}) as SelectOption\n\n// Type-safe normalization of options (supports both simple and complex/grouped)\nconst normalizedOptions = computed(() => {\n const optionsArray = props.options ?? []\n const hasComplexOptions = optionsArray.some(\n (el) =>\n typeof el !== 'string' &&\n typeof el !== 'number' &&\n typeof el !== 'boolean' &&\n (el as Record<string, unknown>)[props.optionsField as string] !== undefined\n )\n\n if (hasComplexOptions) {\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n\n // Check if this is a complex (grouped) option\n const optionsField = (el as Record<string, unknown>)[props.optionsField as string]\n if (optionsField !== undefined && Array.isArray(optionsField)) {\n // Complex option with nested options\n const label =\n ((el as Record<string, unknown>)[props.labelField as string] as string | undefined) ??\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n ''\n return {\n label,\n options: optionsField.map((subOpt: unknown) => {\n if (\n typeof subOpt === 'string' ||\n typeof subOpt === 'number' ||\n typeof subOpt === 'boolean'\n ) {\n return normalizePrimitive(subOpt)\n }\n return normalizeSimpleOption(subOpt as object)\n }),\n } as ComplexSelectOptionRaw\n }\n\n // Simple option - spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n }\n\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n // Spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n})\n\n// Forward all props except options (which we normalize), modelValue (handled separately),\n// and field mappings (already used for normalization)\nconst forwardedProps = computed(() => ({\n ariaInvalid: props.ariaInvalid,\n autofocus: props.autofocus,\n disabled: props.disabled,\n form: props.form,\n id: props.id,\n multiple: props.multiple,\n name: props.name,\n plain: props.plain,\n required: props.required,\n selectSize: props.selectSize,\n size: props.size,\n state: props.state,\n}))\n</script>\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { f as formSelectKey } from "./keys-
|
|
2
|
-
import { t as useDefaults } from "./useDefaults-
|
|
1
|
+
import { f as formSelectKey } from "./keys-BgLwJbLV.js";
|
|
2
|
+
import { t as useDefaults } from "./useDefaults-BzP4qZBu.js";
|
|
3
3
|
import { computed, createElementBlock, defineComponent, inject, mergeProps, openBlock, renderSlot, unref } from "vue";
|
|
4
4
|
//#region src/components/BFormSelect/BFormSelectOption.vue?vue&type=script&setup=true&lang.ts
|
|
5
5
|
var _hoisted_1 = [
|
|
@@ -37,4 +37,4 @@ var BFormSelectOption_default = /* @__PURE__ */ defineComponent({
|
|
|
37
37
|
//#endregion
|
|
38
38
|
export { BFormSelectOption_default as t };
|
|
39
39
|
|
|
40
|
-
//# sourceMappingURL=BFormSelectOption-
|
|
40
|
+
//# sourceMappingURL=BFormSelectOption-C8orMj24.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BFormSelectOption-
|
|
1
|
+
{"version":3,"file":"BFormSelectOption-C8orMj24.js","names":["$attrs"],"sources":["../src/components/BFormSelect/BFormSelectOption.vue","../src/components/BFormSelect/BFormSelectOption.vue"],"sourcesContent":["<template>\n <option :value=\"props.value\" :disabled=\"props.disabled\" :selected=\"isSelected\" v-bind=\"$attrs\">\n <slot />\n </option>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport type {BFormSelectOptionProps, BFormSelectOptionSlots} from '../../types'\nimport {computed, inject} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {formSelectKey} from '../../utils/keys'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionProps<T>>(), {\n disabled: false,\n value: undefined,\n})\nconst props = useDefaults<BFormSelectOptionProps<T>>(_props, 'BFormSelectOption')\ndefineSlots<BFormSelectOptionSlots>()\n\n// Inject the form select context to determine if this option is selected\nconst formSelectContext = inject(formSelectKey, null)\n\nconst isSelected = computed(() => {\n if (!formSelectContext) return false\n return formSelectContext.modelValue.value === props.value\n})\n</script>\n","<template>\n <option :value=\"props.value\" :disabled=\"props.disabled\" :selected=\"isSelected\" v-bind=\"$attrs\">\n <slot />\n </option>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport type {BFormSelectOptionProps, BFormSelectOptionSlots} from '../../types'\nimport {computed, inject} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {formSelectKey} from '../../utils/keys'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionProps<T>>(), {\n disabled: false,\n value: undefined,\n})\nconst props = useDefaults<BFormSelectOptionProps<T>>(_props, 'BFormSelectOption')\ndefineSlots<BFormSelectOptionSlots>()\n\n// Inject the form select context to determine if this option is selected\nconst formSelectContext = inject(formSelectKey, null)\n\nconst isSelected = computed(() => {\n if (!formSelectContext) return false\n return formSelectContext.modelValue.value === props.value\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ,YAAuC,SAAQ,mBAAmB;EAIhF,MAAM,oBAAoB,OAAO,eAAe,IAAI;EAEpD,MAAM,aAAa,eAAe;GAChC,IAAI,CAAC,mBAAmB,OAAO;GAC/B,OAAO,kBAAkB,WAAW,UAAU,MAAM;EACtD,CAAC;;GAxBC,OAAA,UAAA,GAAA,mBAES,UAFT,WAES;IAFA,OAAO,MAAA,KAAA,CAAK,CAAC;IAAQ,UAAU,MAAA,KAAA,CAAK,CAAC;IAAW,UAAU,WAAA;GAAoBA,GAAAA,KAAAA,MAAM,GAAA,CAC3F,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,IAAA,UAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
5
|
-
import {
|
|
6
|
-
import { t as
|
|
1
|
+
import { S as useToNumber } from "./dist-DKc2ivHS.js";
|
|
2
|
+
import { a as onKeyStroke, m as useFocus } from "./dist-9-XTMhb-.js";
|
|
3
|
+
import { i as getSafeDocument } from "./dom-BdUQrX99.js";
|
|
4
|
+
import { t as useDefaults } from "./useDefaults-BzP4qZBu.js";
|
|
5
|
+
import { t as useId$1 } from "./useId-Fh-Arhb7.js";
|
|
6
|
+
import { a as CODE_PAGEUP, i as CODE_PAGEDOWN, n as CODE_HOME, s as CODE_UP, t as CODE_DOWN } from "./constants-Cap5sNf8.js";
|
|
7
|
+
import { t as useRtl } from "./useRtl-FeLayV4k.js";
|
|
7
8
|
import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeClass, normalizeProps, onUnmounted, openBlock, renderSlot, toDisplayString, unref, useModel, useTemplateRef } from "vue";
|
|
8
9
|
//#region src/components/BFormSpinbutton/BFormSpinbutton.vue?vue&type=script&setup=true&lang.ts
|
|
9
10
|
var _hoisted_1 = [
|
|
@@ -41,7 +42,7 @@ var defaultValues = {
|
|
|
41
42
|
//#region src/components/BFormSpinbutton/BFormSpinbutton.vue
|
|
42
43
|
var BFormSpinbutton_default = /* @__PURE__ */ defineComponent({
|
|
43
44
|
__name: "BFormSpinbutton",
|
|
44
|
-
props:
|
|
45
|
+
props: /*@__PURE__*/ mergeModels({
|
|
45
46
|
ariaControls: { default: void 0 },
|
|
46
47
|
ariaLabel: { default: void 0 },
|
|
47
48
|
disabled: {
|
|
@@ -95,7 +96,7 @@ var BFormSpinbutton_default = /* @__PURE__ */ defineComponent({
|
|
|
95
96
|
"modelValue": { default: null },
|
|
96
97
|
"modelModifiers": {}
|
|
97
98
|
}),
|
|
98
|
-
emits:
|
|
99
|
+
emits: /*@__PURE__*/ mergeModels(["change"], ["update:modelValue"]),
|
|
99
100
|
setup(__props, { emit: __emit }) {
|
|
100
101
|
const KEY_CODES = [
|
|
101
102
|
CODE_UP,
|
|
@@ -438,4 +439,4 @@ var BFormSpinbutton_default = /* @__PURE__ */ defineComponent({
|
|
|
438
439
|
//#endregion
|
|
439
440
|
export { BFormSpinbutton_default as t };
|
|
440
441
|
|
|
441
|
-
//# sourceMappingURL=BFormSpinbutton-
|
|
442
|
+
//# sourceMappingURL=BFormSpinbutton-Bt590uT6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BFormSpinbutton-1gTz4nTo.js","names":[],"sources":["../src/components/BFormSpinbutton/BFormSpinbutton.vue","../src/components/BFormSpinbutton/BFormSpinbutton.vue"],"sourcesContent":["<template>\n <div\n ref=\"_element\"\n class=\"b-form-spinbutton form-control\"\n :class=\"computedClasses\"\n role=\"group\"\n :lang=\"computedLocale\"\n :tabindex=\"props.disabled ? undefined : '-1'\"\n :title=\"props.ariaLabel\"\n @click=\"focused = true\"\n >\n <!-- eslint-disable-next-line prettier/prettier -->\n <!-- prettier-ignore -->\n <slot :name=\"(buttons.top.slot.name as 'increment' | 'decrement')\" :has-focus=\"focused\">\n <button\n v-bind=\"buttons.top.button\"\n @mousedown=\"buttons.top.handler\"\n @touchstart=\"buttons.top.handler\"\n >\n <svg v-bind=\"buttons.top.svg\">\n <path v-bind=\"buttons.top.path\" />\n </svg>\n </button>\n </slot>\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"valueAsFixed\"\n />\n <output\n :id=\"computedId\"\n key=\"output\"\n class=\"flex-grow-1\"\n :class=\"computedSpinClasses\"\n :dir=\"(isRtl ?? false) ? 'rtl' : 'ltr'\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n role=\"spinbutton\"\n aria-live=\"off\"\n :aria-label=\"props.ariaLabel || undefined\"\n :aria-invalid=\"\n props.state === false || (!modelValue !== null && props.required) ? true : undefined\n \"\n :aria-required=\"props.required ? true : undefined\"\n :aria-valuemin=\"computedMin\"\n :aria-valuemax=\"computedMax\"\n :aria-valuenow=\"modelValue !== null ? modelValue : undefined\"\n :aria-valuetext=\"modelValue !== null ? computedFormatter(modelValue) : undefined\"\n >\n <bdi>\n {{ (modelValue !== null ? computedFormatter(modelValue) : props.placeholder) || '' }}\n </bdi>\n </output>\n <!-- eslint-disable-next-line prettier/prettier -->\n <!-- prettier-ignore -->\n <slot :name=\"(buttons.bottom.slot.name as 'increment' | 'decrement')\" :has-focus=\"focused\">\n <button\n v-bind=\"buttons.bottom.button\"\n @mousedown=\"buttons.bottom.handler\"\n @touchstart=\"buttons.bottom.handler\"\n >\n <svg v-bind=\"buttons.bottom.svg\">\n <path v-bind=\"buttons.bottom.path\" />\n </svg>\n </button>\n </slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, onUnmounted, useTemplateRef} from 'vue'\nimport {\n CODE_DOWN,\n CODE_END,\n CODE_HOME,\n CODE_PAGEDOWN,\n CODE_PAGEUP,\n CODE_UP,\n} from '../../utils/constants'\nimport {onKeyStroke, useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {\n BFormSpinbuttonEmits,\n BFormSpinbuttonProps,\n BFormSpinbuttonSlots,\n ButtonType,\n} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst KEY_CODES = [CODE_UP, CODE_DOWN, CODE_HOME, CODE_END, CODE_PAGEUP, CODE_PAGEDOWN]\n\nconst _props = withDefaults(defineProps<Omit<BFormSpinbuttonProps, 'modelValue'>>(), {\n ariaControls: undefined,\n ariaLabel: undefined,\n disabled: false,\n form: undefined,\n formatterFn: undefined,\n id: undefined,\n inline: false,\n labelDecrement: 'Decrement',\n labelIncrement: 'Increment',\n locale: undefined,\n max: defaultValues.max,\n min: defaultValues.min,\n name: undefined,\n placeholder: undefined,\n readonly: false,\n repeatDelay: defaultValues.repeatDelay,\n repeatInterval: defaultValues.repeatInterval,\n repeatStepMultiplier: defaultValues.repeatMultiplier,\n repeatThreshold: defaultValues.repeatThreshold,\n required: false,\n size: undefined,\n state: null,\n step: defaultValues.step,\n vertical: false,\n wrap: false,\n})\nconst props = useDefaults(_props, 'BFormSpinbutton')\nconst emit = defineEmits<BFormSpinbuttonEmits>()\ndefineSlots<BFormSpinbuttonSlots>()\n\nconst modelValue = defineModel<Exclude<BFormSpinbuttonProps['modelValue'], undefined>>({\n default: null,\n})\n\nconst element = useTemplateRef('_element')\n\nconst {focused} = useFocus(element)\n\nconst computedId = useId(() => props.id, 'spinbutton')\n\nconst computedClasses = computed(() => ({\n 'disabled': props.disabled,\n 'readonly': props.readonly,\n 'focus': focused.value,\n 'd-inline-flex': props.inline || props.vertical,\n 'd-flex': !props.inline && !props.vertical,\n 'align-items-stretch': !props.vertical,\n 'flex-column': props.vertical,\n [`form-control-${props.size}`]: props.size !== undefined,\n}))\n\nconst computedSpinClasses = computed(() => ({\n 'd-flex': props.vertical,\n 'align-self-center': !props.vertical,\n 'align-items-center': props.vertical,\n 'border-top': props.vertical,\n 'border-bottom': props.vertical,\n 'border-start': !props.vertical,\n 'border-end': !props.vertical,\n}))\n\n//non-reactive properties\nlet $_autoDelayTimer: ReturnType<typeof setTimeout> | undefined\nlet $_autoRepeatTimer: ReturnType<typeof setTimeout> | undefined\nlet $_keyIsDown = false\n\n// const computedInline = computed(() => props.inline && !props.vertical)\n\n// const computedReadonly = computed(() => props.readonly && !props.disabled)\n\nconst stepNumber = useToNumber(() => props.step)\nconst computedStep = computed(() =>\n Number.isNaN(stepNumber.value) ? defaultValues.step : stepNumber.value\n)\n\nconst minNumber = useToNumber(() => props.min)\nconst computedMin = computed(() =>\n Number.isNaN(minNumber.value) ? defaultValues.min : minNumber.value\n)\n\nconst maxNumber = useToNumber(() => props.max)\nconst computedMax = computed(() => {\n const step = computedStep.value\n const min = computedMin.value\n return Math.floor((maxNumber.value - min) / step) * step + min\n})\n\nconst repeatDelayNumber = useToNumber(() => props.repeatDelay, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedDelay = computed(() =>\n repeatDelayNumber.value > 0 ? repeatDelayNumber.value : defaultValues.repeatDelay\n)\n\nconst repeatIntervalNumber = useToNumber(() => props.repeatInterval, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedInterval = computed(() =>\n repeatIntervalNumber.value > 0 ? repeatIntervalNumber.value : defaultValues.repeatInterval\n)\n\nconst repeatThresholdNumber = useToNumber(() => props.repeatThreshold, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedThreshold = computed(() =>\n Math.max(\n Number.isNaN(repeatThresholdNumber.value)\n ? defaultValues.repeatThreshold\n : repeatThresholdNumber.value,\n 1\n )\n)\n\nconst repeatStepMultiplierNumber = useToNumber(() => props.repeatStepMultiplier, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedStepMultiplier = computed(() =>\n Math.max(\n Number.isNaN(repeatStepMultiplierNumber.value)\n ? defaultValues.repeatMultiplier\n : repeatStepMultiplierNumber.value,\n 1\n )\n)\n\nconst computedPrecision = computed(() => {\n const step = computedStep.value\n return Math.floor(step) === step ? 0 : (step.toString().split('.')[1] || '').length\n})\n\nconst computedMultiplier = computed(() => Math.pow(10, computedPrecision.value || 0))\n\nconst valueAsFixed = computed(() =>\n modelValue.value === null ? '' : modelValue.value.toFixed(computedPrecision.value)\n)\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || 'locale'\n const locales = [loc]\n const nf = new Intl.NumberFormat(locales)\n return nf.resolvedOptions().locale\n})\n\nconst defaultFormatter = () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumIntegerDigits: 1,\n minimumFractionDigits: computedPrecision.value,\n maximumFractionDigits: computedPrecision.value,\n notation: 'standard',\n }).format\n\nconst computedFormatter = computed(() => props.formatterFn ?? defaultFormatter())\n\nconst stepValue = (direction: number) => {\n // Sets a new incremented or decremented value, supporting optional wrapping\n // Direction is either +1 or -1 (or a multiple thereof)\n let {value} = modelValue\n if (!props.disabled && value !== null) {\n const step = computedStep.value * direction\n const min = computedMin.value\n const max = computedMax.value\n const multiplier = computedMultiplier.value\n const {wrap} = props\n // We ensure that the value steps like a native input\n value = Math.round((value - min) / step) * step + min + step\n // We ensure that precision is maintained (decimals)\n value = Math.round(value * multiplier) / multiplier\n // Handle if wrapping is enabled\n modelValue.value = value > max ? (wrap ? min : max) : value < min ? (wrap ? max : min) : value\n }\n}\n\nconst stepUp = (multiplier = 1) => {\n if (modelValue.value === null) {\n modelValue.value = computedMin.value\n return\n }\n stepValue(+1 * multiplier)\n}\n\nconst stepDown = (multiplier = 1) => {\n if (modelValue.value === null) {\n modelValue.value = props.wrap ? computedMax.value : computedMin.value\n return\n }\n stepValue(-1 * multiplier)\n}\n\nconst stopEvent = (event: Readonly<Event>) => {\n event.preventDefault()\n event.stopImmediatePropagation()\n}\n\nonKeyStroke(\n KEY_CODES,\n (event) => {\n const {code, altKey, ctrlKey, metaKey} = event\n\n if (props.disabled || props.readonly || altKey || ctrlKey || metaKey) return\n\n // https://w3c.github.io/aria-practices/#spinbutton\n stopEvent(event)\n if ($_keyIsDown) {\n // Keypress is already in progress\n return\n }\n\n resetTimers()\n if ([CODE_UP, CODE_DOWN].includes(code)) {\n // The following use the custom auto-repeat handling\n\n $_keyIsDown = true\n if (code === CODE_UP) {\n handleStepRepeat(event, stepUp)\n return\n }\n if (code === CODE_DOWN) {\n handleStepRepeat(event, stepDown)\n }\n return\n }\n // These use native OS key repeating\n if (code === CODE_PAGEUP) {\n stepUp(computedStepMultiplier.value)\n return\n }\n if (code === CODE_PAGEDOWN) {\n stepDown(computedStepMultiplier.value)\n return\n }\n if (code === CODE_HOME) {\n modelValue.value = computedMin.value\n return\n }\n if (code === CODE_END) {\n modelValue.value = computedMax.value\n }\n },\n {target: element, eventName: 'keydown'}\n)\n\nonKeyStroke(\n KEY_CODES,\n (event: Readonly<KeyboardEvent>) => {\n // Emit a change event when the keyup happens\n\n const {altKey, ctrlKey, metaKey} = event\n\n if (props.disabled || props.readonly || altKey || ctrlKey || metaKey) return\n\n stopEvent(event)\n resetTimers()\n $_keyIsDown = false\n emit('change', modelValue.value)\n },\n {target: element, eventName: 'keyup'}\n)\n\n// takes in a mount or Keyboard Event\nconst handleStepRepeat = (event: Readonly<Event>, stepper: (step: number) => void) => {\n const {type} = event || {}\n\n if (!props.disabled && !props.readonly) {\n if (isMouseEvent(event)) {\n // We only respond to left (main === 0) button clicks\n if (type === 'mousedown' && event.button) return\n }\n resetTimers()\n // Step the counter initially\n stepper(1)\n const threshold = computedThreshold.value\n const multiplier = computedStepMultiplier.value\n const delay = computedDelay.value\n const interval = computedInterval.value\n\n // Initiate the delay/repeat interval\n $_autoDelayTimer = setTimeout(() => {\n let count = 0\n $_autoRepeatTimer = setInterval(() => {\n // After N initial repeats, we increase the incrementing step amount\n // We do this to minimize screen reader announcements of the value\n // (values are announced every change, which can be chatty for SR users)\n // And to make it easer to select a value when the range is large\n stepper(count < threshold ? 1 : multiplier)\n count++\n }, interval)\n }, delay)\n }\n}\n\nconst isMouseEvent = (evt: Readonly<Event>): evt is MouseEvent =>\n evt.type === 'mouseup' || evt.type === 'mousedown'\n\nconst onMouseup: EventListener = (event: Readonly<Event>) => {\n // `<body>` listener, only enabled when mousedown starts\n\n if (isMouseEvent(event)) {\n if (event.type === 'mouseup' && event.button) {\n // Ignore non left button (main === 0) mouse button click\n return\n }\n }\n\n stopEvent(event)\n resetTimers()\n setMouseup('removeEventListener')\n // Trigger the change event\n emit('change', modelValue.value)\n}\n\nconst setMouseup = (operation: 'addEventListener' | 'removeEventListener') => {\n const doc = getSafeDocument()\n if (doc === null) return\n\n if (operation === 'addEventListener') {\n doc.body.addEventListener('mouseup', onMouseup)\n doc.body.addEventListener('touchend', onMouseup, {passive: false})\n } else {\n doc.body.removeEventListener('mouseup', onMouseup)\n doc.body.removeEventListener('touchend', onMouseup)\n }\n}\nconst resetTimers = () => {\n clearTimeout($_autoDelayTimer)\n clearInterval($_autoRepeatTimer)\n $_autoDelayTimer = undefined\n $_autoRepeatTimer = undefined\n}\n\nconst buttons = computed(() => {\n const incrementSvgAttrs = {\n svg: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n fill: 'currentColor',\n class: 'bi bi-plus',\n viewBox: '0 0 16 16',\n },\n path: {\n d: 'M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z',\n },\n } as const\n\n const decrementSvgAttrs = {\n svg: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n fill: 'currentColor',\n class: 'bi bi-dash',\n viewBox: '0 0 16 16',\n },\n path: {d: 'M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z'},\n } as const\n\n const sharedButtonAttrs = {\n 'class': [{'py-0': !props.vertical}, 'btn', 'btn-sm', 'border-0', 'rounded-0'],\n 'tabindex': '-1',\n 'type': 'button' as ButtonType,\n 'disabled': props.disabled || props.readonly,\n 'aria-disabled': props.disabled || props.readonly ? true : undefined,\n 'aria-controls': computedId.value,\n }\n\n const sharedSvgAttrs = {\n 'aria-hidden': true,\n 'scale': focused.value ? 1.5 : 1.25,\n }\n\n const handler = (event: Readonly<Event>, stepper: (multiplier?: number) => void) => {\n if (!props.disabled && !props.readonly) {\n stopEvent(event)\n setMouseup('addEventListener')\n // Since we `preventDefault()`, we must manually focus the button\n // Though it's likely captured from the element click focus\n focused.value = true\n handleStepRepeat(event, stepper)\n }\n }\n\n const incrementAttrs = {\n button: {\n ...sharedButtonAttrs,\n 'aria-label': props.labelIncrement || undefined,\n 'aria-keyshortcuts': 'ArrowUp',\n },\n svg: {\n ...sharedSvgAttrs,\n ...incrementSvgAttrs.svg,\n },\n path: {\n ...incrementSvgAttrs.path,\n },\n slot: {\n name: 'increment',\n },\n handler: (e: Event) => handler(e, stepUp),\n }\n\n const decrementAttrs = {\n button: {\n ...sharedButtonAttrs,\n 'aria-label': props.labelDecrement || undefined,\n 'aria-keyshortcuts': 'ArrowDown',\n },\n svg: {\n ...sharedSvgAttrs,\n ...decrementSvgAttrs.svg,\n },\n path: {\n ...decrementSvgAttrs.path,\n },\n slot: {\n name: 'decrement',\n },\n handler: (e: Readonly<Event>) => handler(e, stepDown),\n }\n\n return {\n top: {\n ...(props.vertical ? incrementAttrs : decrementAttrs),\n },\n bottom: {\n ...(!props.vertical ? incrementAttrs : decrementAttrs),\n },\n }\n})\n\nonUnmounted(() => {\n // Cleanup event listeners\n setMouseup('removeEventListener')\n})\n</script>\n\n<script lang=\"ts\">\nconst defaultValues = {\n min: 1,\n max: 100,\n step: 1,\n repeatDelay: 500,\n repeatInterval: 100,\n repeatThreshold: 10,\n repeatMultiplier: 4,\n} as const\n</script>\n","<template>\n <div\n ref=\"_element\"\n class=\"b-form-spinbutton form-control\"\n :class=\"computedClasses\"\n role=\"group\"\n :lang=\"computedLocale\"\n :tabindex=\"props.disabled ? undefined : '-1'\"\n :title=\"props.ariaLabel\"\n @click=\"focused = true\"\n >\n <!-- eslint-disable-next-line prettier/prettier -->\n <!-- prettier-ignore -->\n <slot :name=\"(buttons.top.slot.name as 'increment' | 'decrement')\" :has-focus=\"focused\">\n <button\n v-bind=\"buttons.top.button\"\n @mousedown=\"buttons.top.handler\"\n @touchstart=\"buttons.top.handler\"\n >\n <svg v-bind=\"buttons.top.svg\">\n <path v-bind=\"buttons.top.path\" />\n </svg>\n </button>\n </slot>\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"valueAsFixed\"\n />\n <output\n :id=\"computedId\"\n key=\"output\"\n class=\"flex-grow-1\"\n :class=\"computedSpinClasses\"\n :dir=\"(isRtl ?? false) ? 'rtl' : 'ltr'\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n role=\"spinbutton\"\n aria-live=\"off\"\n :aria-label=\"props.ariaLabel || undefined\"\n :aria-invalid=\"\n props.state === false || (!modelValue !== null && props.required) ? true : undefined\n \"\n :aria-required=\"props.required ? true : undefined\"\n :aria-valuemin=\"computedMin\"\n :aria-valuemax=\"computedMax\"\n :aria-valuenow=\"modelValue !== null ? modelValue : undefined\"\n :aria-valuetext=\"modelValue !== null ? computedFormatter(modelValue) : undefined\"\n >\n <bdi>\n {{ (modelValue !== null ? computedFormatter(modelValue) : props.placeholder) || '' }}\n </bdi>\n </output>\n <!-- eslint-disable-next-line prettier/prettier -->\n <!-- prettier-ignore -->\n <slot :name=\"(buttons.bottom.slot.name as 'increment' | 'decrement')\" :has-focus=\"focused\">\n <button\n v-bind=\"buttons.bottom.button\"\n @mousedown=\"buttons.bottom.handler\"\n @touchstart=\"buttons.bottom.handler\"\n >\n <svg v-bind=\"buttons.bottom.svg\">\n <path v-bind=\"buttons.bottom.path\" />\n </svg>\n </button>\n </slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, onUnmounted, useTemplateRef} from 'vue'\nimport {\n CODE_DOWN,\n CODE_END,\n CODE_HOME,\n CODE_PAGEDOWN,\n CODE_PAGEUP,\n CODE_UP,\n} from '../../utils/constants'\nimport {onKeyStroke, useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {\n BFormSpinbuttonEmits,\n BFormSpinbuttonProps,\n BFormSpinbuttonSlots,\n ButtonType,\n} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst KEY_CODES = [CODE_UP, CODE_DOWN, CODE_HOME, CODE_END, CODE_PAGEUP, CODE_PAGEDOWN]\n\nconst _props = withDefaults(defineProps<Omit<BFormSpinbuttonProps, 'modelValue'>>(), {\n ariaControls: undefined,\n ariaLabel: undefined,\n disabled: false,\n form: undefined,\n formatterFn: undefined,\n id: undefined,\n inline: false,\n labelDecrement: 'Decrement',\n labelIncrement: 'Increment',\n locale: undefined,\n max: defaultValues.max,\n min: defaultValues.min,\n name: undefined,\n placeholder: undefined,\n readonly: false,\n repeatDelay: defaultValues.repeatDelay,\n repeatInterval: defaultValues.repeatInterval,\n repeatStepMultiplier: defaultValues.repeatMultiplier,\n repeatThreshold: defaultValues.repeatThreshold,\n required: false,\n size: undefined,\n state: null,\n step: defaultValues.step,\n vertical: false,\n wrap: false,\n})\nconst props = useDefaults(_props, 'BFormSpinbutton')\nconst emit = defineEmits<BFormSpinbuttonEmits>()\ndefineSlots<BFormSpinbuttonSlots>()\n\nconst modelValue = defineModel<Exclude<BFormSpinbuttonProps['modelValue'], undefined>>({\n default: null,\n})\n\nconst element = useTemplateRef('_element')\n\nconst {focused} = useFocus(element)\n\nconst computedId = useId(() => props.id, 'spinbutton')\n\nconst computedClasses = computed(() => ({\n 'disabled': props.disabled,\n 'readonly': props.readonly,\n 'focus': focused.value,\n 'd-inline-flex': props.inline || props.vertical,\n 'd-flex': !props.inline && !props.vertical,\n 'align-items-stretch': !props.vertical,\n 'flex-column': props.vertical,\n [`form-control-${props.size}`]: props.size !== undefined,\n}))\n\nconst computedSpinClasses = computed(() => ({\n 'd-flex': props.vertical,\n 'align-self-center': !props.vertical,\n 'align-items-center': props.vertical,\n 'border-top': props.vertical,\n 'border-bottom': props.vertical,\n 'border-start': !props.vertical,\n 'border-end': !props.vertical,\n}))\n\n//non-reactive properties\nlet $_autoDelayTimer: ReturnType<typeof setTimeout> | undefined\nlet $_autoRepeatTimer: ReturnType<typeof setTimeout> | undefined\nlet $_keyIsDown = false\n\n// const computedInline = computed(() => props.inline && !props.vertical)\n\n// const computedReadonly = computed(() => props.readonly && !props.disabled)\n\nconst stepNumber = useToNumber(() => props.step)\nconst computedStep = computed(() =>\n Number.isNaN(stepNumber.value) ? defaultValues.step : stepNumber.value\n)\n\nconst minNumber = useToNumber(() => props.min)\nconst computedMin = computed(() =>\n Number.isNaN(minNumber.value) ? defaultValues.min : minNumber.value\n)\n\nconst maxNumber = useToNumber(() => props.max)\nconst computedMax = computed(() => {\n const step = computedStep.value\n const min = computedMin.value\n return Math.floor((maxNumber.value - min) / step) * step + min\n})\n\nconst repeatDelayNumber = useToNumber(() => props.repeatDelay, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedDelay = computed(() =>\n repeatDelayNumber.value > 0 ? repeatDelayNumber.value : defaultValues.repeatDelay\n)\n\nconst repeatIntervalNumber = useToNumber(() => props.repeatInterval, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedInterval = computed(() =>\n repeatIntervalNumber.value > 0 ? repeatIntervalNumber.value : defaultValues.repeatInterval\n)\n\nconst repeatThresholdNumber = useToNumber(() => props.repeatThreshold, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedThreshold = computed(() =>\n Math.max(\n Number.isNaN(repeatThresholdNumber.value)\n ? defaultValues.repeatThreshold\n : repeatThresholdNumber.value,\n 1\n )\n)\n\nconst repeatStepMultiplierNumber = useToNumber(() => props.repeatStepMultiplier, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedStepMultiplier = computed(() =>\n Math.max(\n Number.isNaN(repeatStepMultiplierNumber.value)\n ? defaultValues.repeatMultiplier\n : repeatStepMultiplierNumber.value,\n 1\n )\n)\n\nconst computedPrecision = computed(() => {\n const step = computedStep.value\n return Math.floor(step) === step ? 0 : (step.toString().split('.')[1] || '').length\n})\n\nconst computedMultiplier = computed(() => Math.pow(10, computedPrecision.value || 0))\n\nconst valueAsFixed = computed(() =>\n modelValue.value === null ? '' : modelValue.value.toFixed(computedPrecision.value)\n)\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || 'locale'\n const locales = [loc]\n const nf = new Intl.NumberFormat(locales)\n return nf.resolvedOptions().locale\n})\n\nconst defaultFormatter = () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumIntegerDigits: 1,\n minimumFractionDigits: computedPrecision.value,\n maximumFractionDigits: computedPrecision.value,\n notation: 'standard',\n }).format\n\nconst computedFormatter = computed(() => props.formatterFn ?? defaultFormatter())\n\nconst stepValue = (direction: number) => {\n // Sets a new incremented or decremented value, supporting optional wrapping\n // Direction is either +1 or -1 (or a multiple thereof)\n let {value} = modelValue\n if (!props.disabled && value !== null) {\n const step = computedStep.value * direction\n const min = computedMin.value\n const max = computedMax.value\n const multiplier = computedMultiplier.value\n const {wrap} = props\n // We ensure that the value steps like a native input\n value = Math.round((value - min) / step) * step + min + step\n // We ensure that precision is maintained (decimals)\n value = Math.round(value * multiplier) / multiplier\n // Handle if wrapping is enabled\n modelValue.value = value > max ? (wrap ? min : max) : value < min ? (wrap ? max : min) : value\n }\n}\n\nconst stepUp = (multiplier = 1) => {\n if (modelValue.value === null) {\n modelValue.value = computedMin.value\n return\n }\n stepValue(+1 * multiplier)\n}\n\nconst stepDown = (multiplier = 1) => {\n if (modelValue.value === null) {\n modelValue.value = props.wrap ? computedMax.value : computedMin.value\n return\n }\n stepValue(-1 * multiplier)\n}\n\nconst stopEvent = (event: Readonly<Event>) => {\n event.preventDefault()\n event.stopImmediatePropagation()\n}\n\nonKeyStroke(\n KEY_CODES,\n (event) => {\n const {code, altKey, ctrlKey, metaKey} = event\n\n if (props.disabled || props.readonly || altKey || ctrlKey || metaKey) return\n\n // https://w3c.github.io/aria-practices/#spinbutton\n stopEvent(event)\n if ($_keyIsDown) {\n // Keypress is already in progress\n return\n }\n\n resetTimers()\n if ([CODE_UP, CODE_DOWN].includes(code)) {\n // The following use the custom auto-repeat handling\n\n $_keyIsDown = true\n if (code === CODE_UP) {\n handleStepRepeat(event, stepUp)\n return\n }\n if (code === CODE_DOWN) {\n handleStepRepeat(event, stepDown)\n }\n return\n }\n // These use native OS key repeating\n if (code === CODE_PAGEUP) {\n stepUp(computedStepMultiplier.value)\n return\n }\n if (code === CODE_PAGEDOWN) {\n stepDown(computedStepMultiplier.value)\n return\n }\n if (code === CODE_HOME) {\n modelValue.value = computedMin.value\n return\n }\n if (code === CODE_END) {\n modelValue.value = computedMax.value\n }\n },\n {target: element, eventName: 'keydown'}\n)\n\nonKeyStroke(\n KEY_CODES,\n (event: Readonly<KeyboardEvent>) => {\n // Emit a change event when the keyup happens\n\n const {altKey, ctrlKey, metaKey} = event\n\n if (props.disabled || props.readonly || altKey || ctrlKey || metaKey) return\n\n stopEvent(event)\n resetTimers()\n $_keyIsDown = false\n emit('change', modelValue.value)\n },\n {target: element, eventName: 'keyup'}\n)\n\n// takes in a mount or Keyboard Event\nconst handleStepRepeat = (event: Readonly<Event>, stepper: (step: number) => void) => {\n const {type} = event || {}\n\n if (!props.disabled && !props.readonly) {\n if (isMouseEvent(event)) {\n // We only respond to left (main === 0) button clicks\n if (type === 'mousedown' && event.button) return\n }\n resetTimers()\n // Step the counter initially\n stepper(1)\n const threshold = computedThreshold.value\n const multiplier = computedStepMultiplier.value\n const delay = computedDelay.value\n const interval = computedInterval.value\n\n // Initiate the delay/repeat interval\n $_autoDelayTimer = setTimeout(() => {\n let count = 0\n $_autoRepeatTimer = setInterval(() => {\n // After N initial repeats, we increase the incrementing step amount\n // We do this to minimize screen reader announcements of the value\n // (values are announced every change, which can be chatty for SR users)\n // And to make it easer to select a value when the range is large\n stepper(count < threshold ? 1 : multiplier)\n count++\n }, interval)\n }, delay)\n }\n}\n\nconst isMouseEvent = (evt: Readonly<Event>): evt is MouseEvent =>\n evt.type === 'mouseup' || evt.type === 'mousedown'\n\nconst onMouseup: EventListener = (event: Readonly<Event>) => {\n // `<body>` listener, only enabled when mousedown starts\n\n if (isMouseEvent(event)) {\n if (event.type === 'mouseup' && event.button) {\n // Ignore non left button (main === 0) mouse button click\n return\n }\n }\n\n stopEvent(event)\n resetTimers()\n setMouseup('removeEventListener')\n // Trigger the change event\n emit('change', modelValue.value)\n}\n\nconst setMouseup = (operation: 'addEventListener' | 'removeEventListener') => {\n const doc = getSafeDocument()\n if (doc === null) return\n\n if (operation === 'addEventListener') {\n doc.body.addEventListener('mouseup', onMouseup)\n doc.body.addEventListener('touchend', onMouseup, {passive: false})\n } else {\n doc.body.removeEventListener('mouseup', onMouseup)\n doc.body.removeEventListener('touchend', onMouseup)\n }\n}\nconst resetTimers = () => {\n clearTimeout($_autoDelayTimer)\n clearInterval($_autoRepeatTimer)\n $_autoDelayTimer = undefined\n $_autoRepeatTimer = undefined\n}\n\nconst buttons = computed(() => {\n const incrementSvgAttrs = {\n svg: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n fill: 'currentColor',\n class: 'bi bi-plus',\n viewBox: '0 0 16 16',\n },\n path: {\n d: 'M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z',\n },\n } as const\n\n const decrementSvgAttrs = {\n svg: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n fill: 'currentColor',\n class: 'bi bi-dash',\n viewBox: '0 0 16 16',\n },\n path: {d: 'M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z'},\n } as const\n\n const sharedButtonAttrs = {\n 'class': [{'py-0': !props.vertical}, 'btn', 'btn-sm', 'border-0', 'rounded-0'],\n 'tabindex': '-1',\n 'type': 'button' as ButtonType,\n 'disabled': props.disabled || props.readonly,\n 'aria-disabled': props.disabled || props.readonly ? true : undefined,\n 'aria-controls': computedId.value,\n }\n\n const sharedSvgAttrs = {\n 'aria-hidden': true,\n 'scale': focused.value ? 1.5 : 1.25,\n }\n\n const handler = (event: Readonly<Event>, stepper: (multiplier?: number) => void) => {\n if (!props.disabled && !props.readonly) {\n stopEvent(event)\n setMouseup('addEventListener')\n // Since we `preventDefault()`, we must manually focus the button\n // Though it's likely captured from the element click focus\n focused.value = true\n handleStepRepeat(event, stepper)\n }\n }\n\n const incrementAttrs = {\n button: {\n ...sharedButtonAttrs,\n 'aria-label': props.labelIncrement || undefined,\n 'aria-keyshortcuts': 'ArrowUp',\n },\n svg: {\n ...sharedSvgAttrs,\n ...incrementSvgAttrs.svg,\n },\n path: {\n ...incrementSvgAttrs.path,\n },\n slot: {\n name: 'increment',\n },\n handler: (e: Event) => handler(e, stepUp),\n }\n\n const decrementAttrs = {\n button: {\n ...sharedButtonAttrs,\n 'aria-label': props.labelDecrement || undefined,\n 'aria-keyshortcuts': 'ArrowDown',\n },\n svg: {\n ...sharedSvgAttrs,\n ...decrementSvgAttrs.svg,\n },\n path: {\n ...decrementSvgAttrs.path,\n },\n slot: {\n name: 'decrement',\n },\n handler: (e: Readonly<Event>) => handler(e, stepDown),\n }\n\n return {\n top: {\n ...(props.vertical ? incrementAttrs : decrementAttrs),\n },\n bottom: {\n ...(!props.vertical ? incrementAttrs : decrementAttrs),\n },\n }\n})\n\nonUnmounted(() => {\n // Cleanup event listeners\n setMouseup('removeEventListener')\n})\n</script>\n\n<script lang=\"ts\">\nconst defaultValues = {\n min: 1,\n max: 100,\n step: 1,\n repeatDelay: 500,\n repeatInterval: 100,\n repeatThreshold: 10,\n repeatMultiplier: 4,\n} as const\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BFormSpinbutton-Bt590uT6.js","names":[],"sources":["../src/components/BFormSpinbutton/BFormSpinbutton.vue","../src/components/BFormSpinbutton/BFormSpinbutton.vue"],"sourcesContent":["<template>\n <div\n ref=\"_element\"\n class=\"b-form-spinbutton form-control\"\n :class=\"computedClasses\"\n role=\"group\"\n :lang=\"computedLocale\"\n :tabindex=\"props.disabled ? undefined : '-1'\"\n :title=\"props.ariaLabel\"\n @click=\"focused = true\"\n >\n <!-- eslint-disable-next-line prettier/prettier -->\n <!-- prettier-ignore -->\n <slot :name=\"(buttons.top.slot.name as 'increment' | 'decrement')\" :has-focus=\"focused\">\n <button\n v-bind=\"buttons.top.button\"\n @mousedown=\"buttons.top.handler\"\n @touchstart=\"buttons.top.handler\"\n >\n <svg v-bind=\"buttons.top.svg\">\n <path v-bind=\"buttons.top.path\" />\n </svg>\n </button>\n </slot>\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"valueAsFixed\"\n />\n <output\n :id=\"computedId\"\n key=\"output\"\n class=\"flex-grow-1\"\n :class=\"computedSpinClasses\"\n :dir=\"(isRtl ?? false) ? 'rtl' : 'ltr'\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n role=\"spinbutton\"\n aria-live=\"off\"\n :aria-label=\"props.ariaLabel || undefined\"\n :aria-invalid=\"\n props.state === false || (!modelValue !== null && props.required) ? true : undefined\n \"\n :aria-required=\"props.required ? true : undefined\"\n :aria-valuemin=\"computedMin\"\n :aria-valuemax=\"computedMax\"\n :aria-valuenow=\"modelValue !== null ? modelValue : undefined\"\n :aria-valuetext=\"modelValue !== null ? computedFormatter(modelValue) : undefined\"\n >\n <bdi>\n {{ (modelValue !== null ? computedFormatter(modelValue) : props.placeholder) || '' }}\n </bdi>\n </output>\n <!-- eslint-disable-next-line prettier/prettier -->\n <!-- prettier-ignore -->\n <slot :name=\"(buttons.bottom.slot.name as 'increment' | 'decrement')\" :has-focus=\"focused\">\n <button\n v-bind=\"buttons.bottom.button\"\n @mousedown=\"buttons.bottom.handler\"\n @touchstart=\"buttons.bottom.handler\"\n >\n <svg v-bind=\"buttons.bottom.svg\">\n <path v-bind=\"buttons.bottom.path\" />\n </svg>\n </button>\n </slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, onUnmounted, useTemplateRef} from 'vue'\nimport {\n CODE_DOWN,\n CODE_END,\n CODE_HOME,\n CODE_PAGEDOWN,\n CODE_PAGEUP,\n CODE_UP,\n} from '../../utils/constants'\nimport {onKeyStroke, useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {\n BFormSpinbuttonEmits,\n BFormSpinbuttonProps,\n BFormSpinbuttonSlots,\n ButtonType,\n} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst KEY_CODES = [CODE_UP, CODE_DOWN, CODE_HOME, CODE_END, CODE_PAGEUP, CODE_PAGEDOWN]\n\nconst _props = withDefaults(defineProps<Omit<BFormSpinbuttonProps, 'modelValue'>>(), {\n ariaControls: undefined,\n ariaLabel: undefined,\n disabled: false,\n form: undefined,\n formatterFn: undefined,\n id: undefined,\n inline: false,\n labelDecrement: 'Decrement',\n labelIncrement: 'Increment',\n locale: undefined,\n max: defaultValues.max,\n min: defaultValues.min,\n name: undefined,\n placeholder: undefined,\n readonly: false,\n repeatDelay: defaultValues.repeatDelay,\n repeatInterval: defaultValues.repeatInterval,\n repeatStepMultiplier: defaultValues.repeatMultiplier,\n repeatThreshold: defaultValues.repeatThreshold,\n required: false,\n size: undefined,\n state: null,\n step: defaultValues.step,\n vertical: false,\n wrap: false,\n})\nconst props = useDefaults(_props, 'BFormSpinbutton')\nconst emit = defineEmits<BFormSpinbuttonEmits>()\ndefineSlots<BFormSpinbuttonSlots>()\n\nconst modelValue = defineModel<Exclude<BFormSpinbuttonProps['modelValue'], undefined>>({\n default: null,\n})\n\nconst element = useTemplateRef('_element')\n\nconst {focused} = useFocus(element)\n\nconst computedId = useId(() => props.id, 'spinbutton')\n\nconst computedClasses = computed(() => ({\n 'disabled': props.disabled,\n 'readonly': props.readonly,\n 'focus': focused.value,\n 'd-inline-flex': props.inline || props.vertical,\n 'd-flex': !props.inline && !props.vertical,\n 'align-items-stretch': !props.vertical,\n 'flex-column': props.vertical,\n [`form-control-${props.size}`]: props.size !== undefined,\n}))\n\nconst computedSpinClasses = computed(() => ({\n 'd-flex': props.vertical,\n 'align-self-center': !props.vertical,\n 'align-items-center': props.vertical,\n 'border-top': props.vertical,\n 'border-bottom': props.vertical,\n 'border-start': !props.vertical,\n 'border-end': !props.vertical,\n}))\n\n//non-reactive properties\nlet $_autoDelayTimer: ReturnType<typeof setTimeout> | undefined\nlet $_autoRepeatTimer: ReturnType<typeof setTimeout> | undefined\nlet $_keyIsDown = false\n\n// const computedInline = computed(() => props.inline && !props.vertical)\n\n// const computedReadonly = computed(() => props.readonly && !props.disabled)\n\nconst stepNumber = useToNumber(() => props.step)\nconst computedStep = computed(() =>\n Number.isNaN(stepNumber.value) ? defaultValues.step : stepNumber.value\n)\n\nconst minNumber = useToNumber(() => props.min)\nconst computedMin = computed(() =>\n Number.isNaN(minNumber.value) ? defaultValues.min : minNumber.value\n)\n\nconst maxNumber = useToNumber(() => props.max)\nconst computedMax = computed(() => {\n const step = computedStep.value\n const min = computedMin.value\n return Math.floor((maxNumber.value - min) / step) * step + min\n})\n\nconst repeatDelayNumber = useToNumber(() => props.repeatDelay, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedDelay = computed(() =>\n repeatDelayNumber.value > 0 ? repeatDelayNumber.value : defaultValues.repeatDelay\n)\n\nconst repeatIntervalNumber = useToNumber(() => props.repeatInterval, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedInterval = computed(() =>\n repeatIntervalNumber.value > 0 ? repeatIntervalNumber.value : defaultValues.repeatInterval\n)\n\nconst repeatThresholdNumber = useToNumber(() => props.repeatThreshold, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedThreshold = computed(() =>\n Math.max(\n Number.isNaN(repeatThresholdNumber.value)\n ? defaultValues.repeatThreshold\n : repeatThresholdNumber.value,\n 1\n )\n)\n\nconst repeatStepMultiplierNumber = useToNumber(() => props.repeatStepMultiplier, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedStepMultiplier = computed(() =>\n Math.max(\n Number.isNaN(repeatStepMultiplierNumber.value)\n ? defaultValues.repeatMultiplier\n : repeatStepMultiplierNumber.value,\n 1\n )\n)\n\nconst computedPrecision = computed(() => {\n const step = computedStep.value\n return Math.floor(step) === step ? 0 : (step.toString().split('.')[1] || '').length\n})\n\nconst computedMultiplier = computed(() => Math.pow(10, computedPrecision.value || 0))\n\nconst valueAsFixed = computed(() =>\n modelValue.value === null ? '' : modelValue.value.toFixed(computedPrecision.value)\n)\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || 'locale'\n const locales = [loc]\n const nf = new Intl.NumberFormat(locales)\n return nf.resolvedOptions().locale\n})\n\nconst defaultFormatter = () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumIntegerDigits: 1,\n minimumFractionDigits: computedPrecision.value,\n maximumFractionDigits: computedPrecision.value,\n notation: 'standard',\n }).format\n\nconst computedFormatter = computed(() => props.formatterFn ?? defaultFormatter())\n\nconst stepValue = (direction: number) => {\n // Sets a new incremented or decremented value, supporting optional wrapping\n // Direction is either +1 or -1 (or a multiple thereof)\n let {value} = modelValue\n if (!props.disabled && value !== null) {\n const step = computedStep.value * direction\n const min = computedMin.value\n const max = computedMax.value\n const multiplier = computedMultiplier.value\n const {wrap} = props\n // We ensure that the value steps like a native input\n value = Math.round((value - min) / step) * step + min + step\n // We ensure that precision is maintained (decimals)\n value = Math.round(value * multiplier) / multiplier\n // Handle if wrapping is enabled\n modelValue.value = value > max ? (wrap ? min : max) : value < min ? (wrap ? max : min) : value\n }\n}\n\nconst stepUp = (multiplier = 1) => {\n if (modelValue.value === null) {\n modelValue.value = computedMin.value\n return\n }\n stepValue(+1 * multiplier)\n}\n\nconst stepDown = (multiplier = 1) => {\n if (modelValue.value === null) {\n modelValue.value = props.wrap ? computedMax.value : computedMin.value\n return\n }\n stepValue(-1 * multiplier)\n}\n\nconst stopEvent = (event: Readonly<Event>) => {\n event.preventDefault()\n event.stopImmediatePropagation()\n}\n\nonKeyStroke(\n KEY_CODES,\n (event) => {\n const {code, altKey, ctrlKey, metaKey} = event\n\n if (props.disabled || props.readonly || altKey || ctrlKey || metaKey) return\n\n // https://w3c.github.io/aria-practices/#spinbutton\n stopEvent(event)\n if ($_keyIsDown) {\n // Keypress is already in progress\n return\n }\n\n resetTimers()\n if ([CODE_UP, CODE_DOWN].includes(code)) {\n // The following use the custom auto-repeat handling\n\n $_keyIsDown = true\n if (code === CODE_UP) {\n handleStepRepeat(event, stepUp)\n return\n }\n if (code === CODE_DOWN) {\n handleStepRepeat(event, stepDown)\n }\n return\n }\n // These use native OS key repeating\n if (code === CODE_PAGEUP) {\n stepUp(computedStepMultiplier.value)\n return\n }\n if (code === CODE_PAGEDOWN) {\n stepDown(computedStepMultiplier.value)\n return\n }\n if (code === CODE_HOME) {\n modelValue.value = computedMin.value\n return\n }\n if (code === CODE_END) {\n modelValue.value = computedMax.value\n }\n },\n {target: element, eventName: 'keydown'}\n)\n\nonKeyStroke(\n KEY_CODES,\n (event: Readonly<KeyboardEvent>) => {\n // Emit a change event when the keyup happens\n\n const {altKey, ctrlKey, metaKey} = event\n\n if (props.disabled || props.readonly || altKey || ctrlKey || metaKey) return\n\n stopEvent(event)\n resetTimers()\n $_keyIsDown = false\n emit('change', modelValue.value)\n },\n {target: element, eventName: 'keyup'}\n)\n\n// takes in a mount or Keyboard Event\nconst handleStepRepeat = (event: Readonly<Event>, stepper: (step: number) => void) => {\n const {type} = event || {}\n\n if (!props.disabled && !props.readonly) {\n if (isMouseEvent(event)) {\n // We only respond to left (main === 0) button clicks\n if (type === 'mousedown' && event.button) return\n }\n resetTimers()\n // Step the counter initially\n stepper(1)\n const threshold = computedThreshold.value\n const multiplier = computedStepMultiplier.value\n const delay = computedDelay.value\n const interval = computedInterval.value\n\n // Initiate the delay/repeat interval\n $_autoDelayTimer = setTimeout(() => {\n let count = 0\n $_autoRepeatTimer = setInterval(() => {\n // After N initial repeats, we increase the incrementing step amount\n // We do this to minimize screen reader announcements of the value\n // (values are announced every change, which can be chatty for SR users)\n // And to make it easer to select a value when the range is large\n stepper(count < threshold ? 1 : multiplier)\n count++\n }, interval)\n }, delay)\n }\n}\n\nconst isMouseEvent = (evt: Readonly<Event>): evt is MouseEvent =>\n evt.type === 'mouseup' || evt.type === 'mousedown'\n\nconst onMouseup: EventListener = (event: Readonly<Event>) => {\n // `<body>` listener, only enabled when mousedown starts\n\n if (isMouseEvent(event)) {\n if (event.type === 'mouseup' && event.button) {\n // Ignore non left button (main === 0) mouse button click\n return\n }\n }\n\n stopEvent(event)\n resetTimers()\n setMouseup('removeEventListener')\n // Trigger the change event\n emit('change', modelValue.value)\n}\n\nconst setMouseup = (operation: 'addEventListener' | 'removeEventListener') => {\n const doc = getSafeDocument()\n if (doc === null) return\n\n if (operation === 'addEventListener') {\n doc.body.addEventListener('mouseup', onMouseup)\n doc.body.addEventListener('touchend', onMouseup, {passive: false})\n } else {\n doc.body.removeEventListener('mouseup', onMouseup)\n doc.body.removeEventListener('touchend', onMouseup)\n }\n}\nconst resetTimers = () => {\n clearTimeout($_autoDelayTimer)\n clearInterval($_autoRepeatTimer)\n $_autoDelayTimer = undefined\n $_autoRepeatTimer = undefined\n}\n\nconst buttons = computed(() => {\n const incrementSvgAttrs = {\n svg: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n fill: 'currentColor',\n class: 'bi bi-plus',\n viewBox: '0 0 16 16',\n },\n path: {\n d: 'M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z',\n },\n } as const\n\n const decrementSvgAttrs = {\n svg: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n fill: 'currentColor',\n class: 'bi bi-dash',\n viewBox: '0 0 16 16',\n },\n path: {d: 'M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z'},\n } as const\n\n const sharedButtonAttrs = {\n 'class': [{'py-0': !props.vertical}, 'btn', 'btn-sm', 'border-0', 'rounded-0'],\n 'tabindex': '-1',\n 'type': 'button' as ButtonType,\n 'disabled': props.disabled || props.readonly,\n 'aria-disabled': props.disabled || props.readonly ? true : undefined,\n 'aria-controls': computedId.value,\n }\n\n const sharedSvgAttrs = {\n 'aria-hidden': true,\n 'scale': focused.value ? 1.5 : 1.25,\n }\n\n const handler = (event: Readonly<Event>, stepper: (multiplier?: number) => void) => {\n if (!props.disabled && !props.readonly) {\n stopEvent(event)\n setMouseup('addEventListener')\n // Since we `preventDefault()`, we must manually focus the button\n // Though it's likely captured from the element click focus\n focused.value = true\n handleStepRepeat(event, stepper)\n }\n }\n\n const incrementAttrs = {\n button: {\n ...sharedButtonAttrs,\n 'aria-label': props.labelIncrement || undefined,\n 'aria-keyshortcuts': 'ArrowUp',\n },\n svg: {\n ...sharedSvgAttrs,\n ...incrementSvgAttrs.svg,\n },\n path: {\n ...incrementSvgAttrs.path,\n },\n slot: {\n name: 'increment',\n },\n handler: (e: Event) => handler(e, stepUp),\n }\n\n const decrementAttrs = {\n button: {\n ...sharedButtonAttrs,\n 'aria-label': props.labelDecrement || undefined,\n 'aria-keyshortcuts': 'ArrowDown',\n },\n svg: {\n ...sharedSvgAttrs,\n ...decrementSvgAttrs.svg,\n },\n path: {\n ...decrementSvgAttrs.path,\n },\n slot: {\n name: 'decrement',\n },\n handler: (e: Readonly<Event>) => handler(e, stepDown),\n }\n\n return {\n top: {\n ...(props.vertical ? incrementAttrs : decrementAttrs),\n },\n bottom: {\n ...(!props.vertical ? incrementAttrs : decrementAttrs),\n },\n }\n})\n\nonUnmounted(() => {\n // Cleanup event listeners\n setMouseup('removeEventListener')\n})\n</script>\n\n<script lang=\"ts\">\nconst defaultValues = {\n min: 1,\n max: 100,\n step: 1,\n repeatDelay: 500,\n repeatInterval: 100,\n repeatThreshold: 10,\n repeatMultiplier: 4,\n} as const\n</script>\n","<template>\n <div\n ref=\"_element\"\n class=\"b-form-spinbutton form-control\"\n :class=\"computedClasses\"\n role=\"group\"\n :lang=\"computedLocale\"\n :tabindex=\"props.disabled ? undefined : '-1'\"\n :title=\"props.ariaLabel\"\n @click=\"focused = true\"\n >\n <!-- eslint-disable-next-line prettier/prettier -->\n <!-- prettier-ignore -->\n <slot :name=\"(buttons.top.slot.name as 'increment' | 'decrement')\" :has-focus=\"focused\">\n <button\n v-bind=\"buttons.top.button\"\n @mousedown=\"buttons.top.handler\"\n @touchstart=\"buttons.top.handler\"\n >\n <svg v-bind=\"buttons.top.svg\">\n <path v-bind=\"buttons.top.path\" />\n </svg>\n </button>\n </slot>\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"valueAsFixed\"\n />\n <output\n :id=\"computedId\"\n key=\"output\"\n class=\"flex-grow-1\"\n :class=\"computedSpinClasses\"\n :dir=\"(isRtl ?? false) ? 'rtl' : 'ltr'\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n role=\"spinbutton\"\n aria-live=\"off\"\n :aria-label=\"props.ariaLabel || undefined\"\n :aria-invalid=\"\n props.state === false || (!modelValue !== null && props.required) ? true : undefined\n \"\n :aria-required=\"props.required ? true : undefined\"\n :aria-valuemin=\"computedMin\"\n :aria-valuemax=\"computedMax\"\n :aria-valuenow=\"modelValue !== null ? modelValue : undefined\"\n :aria-valuetext=\"modelValue !== null ? computedFormatter(modelValue) : undefined\"\n >\n <bdi>\n {{ (modelValue !== null ? computedFormatter(modelValue) : props.placeholder) || '' }}\n </bdi>\n </output>\n <!-- eslint-disable-next-line prettier/prettier -->\n <!-- prettier-ignore -->\n <slot :name=\"(buttons.bottom.slot.name as 'increment' | 'decrement')\" :has-focus=\"focused\">\n <button\n v-bind=\"buttons.bottom.button\"\n @mousedown=\"buttons.bottom.handler\"\n @touchstart=\"buttons.bottom.handler\"\n >\n <svg v-bind=\"buttons.bottom.svg\">\n <path v-bind=\"buttons.bottom.path\" />\n </svg>\n </button>\n </slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, onUnmounted, useTemplateRef} from 'vue'\nimport {\n CODE_DOWN,\n CODE_END,\n CODE_HOME,\n CODE_PAGEDOWN,\n CODE_PAGEUP,\n CODE_UP,\n} from '../../utils/constants'\nimport {onKeyStroke, useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {\n BFormSpinbuttonEmits,\n BFormSpinbuttonProps,\n BFormSpinbuttonSlots,\n ButtonType,\n} from '../../types'\nimport {getSafeDocument} from '../../utils/dom'\n\nconst KEY_CODES = [CODE_UP, CODE_DOWN, CODE_HOME, CODE_END, CODE_PAGEUP, CODE_PAGEDOWN]\n\nconst _props = withDefaults(defineProps<Omit<BFormSpinbuttonProps, 'modelValue'>>(), {\n ariaControls: undefined,\n ariaLabel: undefined,\n disabled: false,\n form: undefined,\n formatterFn: undefined,\n id: undefined,\n inline: false,\n labelDecrement: 'Decrement',\n labelIncrement: 'Increment',\n locale: undefined,\n max: defaultValues.max,\n min: defaultValues.min,\n name: undefined,\n placeholder: undefined,\n readonly: false,\n repeatDelay: defaultValues.repeatDelay,\n repeatInterval: defaultValues.repeatInterval,\n repeatStepMultiplier: defaultValues.repeatMultiplier,\n repeatThreshold: defaultValues.repeatThreshold,\n required: false,\n size: undefined,\n state: null,\n step: defaultValues.step,\n vertical: false,\n wrap: false,\n})\nconst props = useDefaults(_props, 'BFormSpinbutton')\nconst emit = defineEmits<BFormSpinbuttonEmits>()\ndefineSlots<BFormSpinbuttonSlots>()\n\nconst modelValue = defineModel<Exclude<BFormSpinbuttonProps['modelValue'], undefined>>({\n default: null,\n})\n\nconst element = useTemplateRef('_element')\n\nconst {focused} = useFocus(element)\n\nconst computedId = useId(() => props.id, 'spinbutton')\n\nconst computedClasses = computed(() => ({\n 'disabled': props.disabled,\n 'readonly': props.readonly,\n 'focus': focused.value,\n 'd-inline-flex': props.inline || props.vertical,\n 'd-flex': !props.inline && !props.vertical,\n 'align-items-stretch': !props.vertical,\n 'flex-column': props.vertical,\n [`form-control-${props.size}`]: props.size !== undefined,\n}))\n\nconst computedSpinClasses = computed(() => ({\n 'd-flex': props.vertical,\n 'align-self-center': !props.vertical,\n 'align-items-center': props.vertical,\n 'border-top': props.vertical,\n 'border-bottom': props.vertical,\n 'border-start': !props.vertical,\n 'border-end': !props.vertical,\n}))\n\n//non-reactive properties\nlet $_autoDelayTimer: ReturnType<typeof setTimeout> | undefined\nlet $_autoRepeatTimer: ReturnType<typeof setTimeout> | undefined\nlet $_keyIsDown = false\n\n// const computedInline = computed(() => props.inline && !props.vertical)\n\n// const computedReadonly = computed(() => props.readonly && !props.disabled)\n\nconst stepNumber = useToNumber(() => props.step)\nconst computedStep = computed(() =>\n Number.isNaN(stepNumber.value) ? defaultValues.step : stepNumber.value\n)\n\nconst minNumber = useToNumber(() => props.min)\nconst computedMin = computed(() =>\n Number.isNaN(minNumber.value) ? defaultValues.min : minNumber.value\n)\n\nconst maxNumber = useToNumber(() => props.max)\nconst computedMax = computed(() => {\n const step = computedStep.value\n const min = computedMin.value\n return Math.floor((maxNumber.value - min) / step) * step + min\n})\n\nconst repeatDelayNumber = useToNumber(() => props.repeatDelay, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedDelay = computed(() =>\n repeatDelayNumber.value > 0 ? repeatDelayNumber.value : defaultValues.repeatDelay\n)\n\nconst repeatIntervalNumber = useToNumber(() => props.repeatInterval, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedInterval = computed(() =>\n repeatIntervalNumber.value > 0 ? repeatIntervalNumber.value : defaultValues.repeatInterval\n)\n\nconst repeatThresholdNumber = useToNumber(() => props.repeatThreshold, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedThreshold = computed(() =>\n Math.max(\n Number.isNaN(repeatThresholdNumber.value)\n ? defaultValues.repeatThreshold\n : repeatThresholdNumber.value,\n 1\n )\n)\n\nconst repeatStepMultiplierNumber = useToNumber(() => props.repeatStepMultiplier, {\n nanToZero: true,\n method: 'parseInt',\n})\nconst computedStepMultiplier = computed(() =>\n Math.max(\n Number.isNaN(repeatStepMultiplierNumber.value)\n ? defaultValues.repeatMultiplier\n : repeatStepMultiplierNumber.value,\n 1\n )\n)\n\nconst computedPrecision = computed(() => {\n const step = computedStep.value\n return Math.floor(step) === step ? 0 : (step.toString().split('.')[1] || '').length\n})\n\nconst computedMultiplier = computed(() => Math.pow(10, computedPrecision.value || 0))\n\nconst valueAsFixed = computed(() =>\n modelValue.value === null ? '' : modelValue.value.toFixed(computedPrecision.value)\n)\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || 'locale'\n const locales = [loc]\n const nf = new Intl.NumberFormat(locales)\n return nf.resolvedOptions().locale\n})\n\nconst defaultFormatter = () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumIntegerDigits: 1,\n minimumFractionDigits: computedPrecision.value,\n maximumFractionDigits: computedPrecision.value,\n notation: 'standard',\n }).format\n\nconst computedFormatter = computed(() => props.formatterFn ?? defaultFormatter())\n\nconst stepValue = (direction: number) => {\n // Sets a new incremented or decremented value, supporting optional wrapping\n // Direction is either +1 or -1 (or a multiple thereof)\n let {value} = modelValue\n if (!props.disabled && value !== null) {\n const step = computedStep.value * direction\n const min = computedMin.value\n const max = computedMax.value\n const multiplier = computedMultiplier.value\n const {wrap} = props\n // We ensure that the value steps like a native input\n value = Math.round((value - min) / step) * step + min + step\n // We ensure that precision is maintained (decimals)\n value = Math.round(value * multiplier) / multiplier\n // Handle if wrapping is enabled\n modelValue.value = value > max ? (wrap ? min : max) : value < min ? (wrap ? max : min) : value\n }\n}\n\nconst stepUp = (multiplier = 1) => {\n if (modelValue.value === null) {\n modelValue.value = computedMin.value\n return\n }\n stepValue(+1 * multiplier)\n}\n\nconst stepDown = (multiplier = 1) => {\n if (modelValue.value === null) {\n modelValue.value = props.wrap ? computedMax.value : computedMin.value\n return\n }\n stepValue(-1 * multiplier)\n}\n\nconst stopEvent = (event: Readonly<Event>) => {\n event.preventDefault()\n event.stopImmediatePropagation()\n}\n\nonKeyStroke(\n KEY_CODES,\n (event) => {\n const {code, altKey, ctrlKey, metaKey} = event\n\n if (props.disabled || props.readonly || altKey || ctrlKey || metaKey) return\n\n // https://w3c.github.io/aria-practices/#spinbutton\n stopEvent(event)\n if ($_keyIsDown) {\n // Keypress is already in progress\n return\n }\n\n resetTimers()\n if ([CODE_UP, CODE_DOWN].includes(code)) {\n // The following use the custom auto-repeat handling\n\n $_keyIsDown = true\n if (code === CODE_UP) {\n handleStepRepeat(event, stepUp)\n return\n }\n if (code === CODE_DOWN) {\n handleStepRepeat(event, stepDown)\n }\n return\n }\n // These use native OS key repeating\n if (code === CODE_PAGEUP) {\n stepUp(computedStepMultiplier.value)\n return\n }\n if (code === CODE_PAGEDOWN) {\n stepDown(computedStepMultiplier.value)\n return\n }\n if (code === CODE_HOME) {\n modelValue.value = computedMin.value\n return\n }\n if (code === CODE_END) {\n modelValue.value = computedMax.value\n }\n },\n {target: element, eventName: 'keydown'}\n)\n\nonKeyStroke(\n KEY_CODES,\n (event: Readonly<KeyboardEvent>) => {\n // Emit a change event when the keyup happens\n\n const {altKey, ctrlKey, metaKey} = event\n\n if (props.disabled || props.readonly || altKey || ctrlKey || metaKey) return\n\n stopEvent(event)\n resetTimers()\n $_keyIsDown = false\n emit('change', modelValue.value)\n },\n {target: element, eventName: 'keyup'}\n)\n\n// takes in a mount or Keyboard Event\nconst handleStepRepeat = (event: Readonly<Event>, stepper: (step: number) => void) => {\n const {type} = event || {}\n\n if (!props.disabled && !props.readonly) {\n if (isMouseEvent(event)) {\n // We only respond to left (main === 0) button clicks\n if (type === 'mousedown' && event.button) return\n }\n resetTimers()\n // Step the counter initially\n stepper(1)\n const threshold = computedThreshold.value\n const multiplier = computedStepMultiplier.value\n const delay = computedDelay.value\n const interval = computedInterval.value\n\n // Initiate the delay/repeat interval\n $_autoDelayTimer = setTimeout(() => {\n let count = 0\n $_autoRepeatTimer = setInterval(() => {\n // After N initial repeats, we increase the incrementing step amount\n // We do this to minimize screen reader announcements of the value\n // (values are announced every change, which can be chatty for SR users)\n // And to make it easer to select a value when the range is large\n stepper(count < threshold ? 1 : multiplier)\n count++\n }, interval)\n }, delay)\n }\n}\n\nconst isMouseEvent = (evt: Readonly<Event>): evt is MouseEvent =>\n evt.type === 'mouseup' || evt.type === 'mousedown'\n\nconst onMouseup: EventListener = (event: Readonly<Event>) => {\n // `<body>` listener, only enabled when mousedown starts\n\n if (isMouseEvent(event)) {\n if (event.type === 'mouseup' && event.button) {\n // Ignore non left button (main === 0) mouse button click\n return\n }\n }\n\n stopEvent(event)\n resetTimers()\n setMouseup('removeEventListener')\n // Trigger the change event\n emit('change', modelValue.value)\n}\n\nconst setMouseup = (operation: 'addEventListener' | 'removeEventListener') => {\n const doc = getSafeDocument()\n if (doc === null) return\n\n if (operation === 'addEventListener') {\n doc.body.addEventListener('mouseup', onMouseup)\n doc.body.addEventListener('touchend', onMouseup, {passive: false})\n } else {\n doc.body.removeEventListener('mouseup', onMouseup)\n doc.body.removeEventListener('touchend', onMouseup)\n }\n}\nconst resetTimers = () => {\n clearTimeout($_autoDelayTimer)\n clearInterval($_autoRepeatTimer)\n $_autoDelayTimer = undefined\n $_autoRepeatTimer = undefined\n}\n\nconst buttons = computed(() => {\n const incrementSvgAttrs = {\n svg: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n fill: 'currentColor',\n class: 'bi bi-plus',\n viewBox: '0 0 16 16',\n },\n path: {\n d: 'M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z',\n },\n } as const\n\n const decrementSvgAttrs = {\n svg: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '16',\n height: '16',\n fill: 'currentColor',\n class: 'bi bi-dash',\n viewBox: '0 0 16 16',\n },\n path: {d: 'M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z'},\n } as const\n\n const sharedButtonAttrs = {\n 'class': [{'py-0': !props.vertical}, 'btn', 'btn-sm', 'border-0', 'rounded-0'],\n 'tabindex': '-1',\n 'type': 'button' as ButtonType,\n 'disabled': props.disabled || props.readonly,\n 'aria-disabled': props.disabled || props.readonly ? true : undefined,\n 'aria-controls': computedId.value,\n }\n\n const sharedSvgAttrs = {\n 'aria-hidden': true,\n 'scale': focused.value ? 1.5 : 1.25,\n }\n\n const handler = (event: Readonly<Event>, stepper: (multiplier?: number) => void) => {\n if (!props.disabled && !props.readonly) {\n stopEvent(event)\n setMouseup('addEventListener')\n // Since we `preventDefault()`, we must manually focus the button\n // Though it's likely captured from the element click focus\n focused.value = true\n handleStepRepeat(event, stepper)\n }\n }\n\n const incrementAttrs = {\n button: {\n ...sharedButtonAttrs,\n 'aria-label': props.labelIncrement || undefined,\n 'aria-keyshortcuts': 'ArrowUp',\n },\n svg: {\n ...sharedSvgAttrs,\n ...incrementSvgAttrs.svg,\n },\n path: {\n ...incrementSvgAttrs.path,\n },\n slot: {\n name: 'increment',\n },\n handler: (e: Event) => handler(e, stepUp),\n }\n\n const decrementAttrs = {\n button: {\n ...sharedButtonAttrs,\n 'aria-label': props.labelDecrement || undefined,\n 'aria-keyshortcuts': 'ArrowDown',\n },\n svg: {\n ...sharedSvgAttrs,\n ...decrementSvgAttrs.svg,\n },\n path: {\n ...decrementSvgAttrs.path,\n },\n slot: {\n name: 'decrement',\n },\n handler: (e: Readonly<Event>) => handler(e, stepDown),\n }\n\n return {\n top: {\n ...(props.vertical ? incrementAttrs : decrementAttrs),\n },\n bottom: {\n ...(!props.vertical ? incrementAttrs : decrementAttrs),\n },\n }\n})\n\nonUnmounted(() => {\n // Cleanup event listeners\n setMouseup('removeEventListener')\n})\n</script>\n\n<script lang=\"ts\">\nconst defaultValues = {\n min: 1,\n max: 100,\n step: 1,\n repeatDelay: 500,\n repeatInterval: 100,\n repeatThreshold: 10,\n repeatMultiplier: 4,\n} as const\n</script>\n"],"mappings":"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"}
|