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.
Files changed (913) hide show
  1. package/dist/App.vue.d.mts +2 -1
  2. package/dist/App.vue.d.ts +2 -1
  3. package/dist/{BAccordion-D51b9HVD.mjs → BAccordion-FuQ6sMFy.js} +33 -31
  4. package/dist/BAccordion-FuQ6sMFy.js.map +1 -0
  5. package/dist/{BAlert-Ce2uxrJi.mjs → BAlert-C9Mi4RDx.js} +20 -13
  6. package/dist/BAlert-C9Mi4RDx.js.map +1 -0
  7. package/dist/{BApp-B-fUrnpK.mjs → BApp-GXR1wS6K.js} +53 -51
  8. package/dist/BApp-GXR1wS6K.js.map +1 -0
  9. package/dist/{BAspect-wfiXM4KA.mjs → BAspect-BPR6DH5W.js} +2 -2
  10. package/dist/{BAspect-CUIU48Ck.js.map → BAspect-BPR6DH5W.js.map} +1 -1
  11. package/dist/{BAutocomplete-CH-bQzME.mjs → BAutocomplete-DGvKY7-D.js} +195 -101
  12. package/dist/BAutocomplete-DGvKY7-D.js.map +1 -0
  13. package/dist/{BAvatar-iALHbqVk.mjs → BAvatar-BsStQrBF.js} +13 -13
  14. package/dist/BAvatar-BsStQrBF.js.map +1 -0
  15. package/dist/{BBadge-Cx_CdauK.mjs → BBadge-BaZ13wE_.js} +5 -5
  16. package/dist/{BBadge-Db6SEnzy.js.map → BBadge-BaZ13wE_.js.map} +1 -1
  17. package/dist/{BBreadcrumb-BxADbg0O.mjs → BBreadcrumb-C-SsS3hM.js} +4 -4
  18. package/dist/{BBreadcrumb-B9ra7vg2.js.map → BBreadcrumb-C-SsS3hM.js.map} +1 -1
  19. package/dist/{BButton-BSa7LfL5.mjs → BButton-Cc2gd95Z.js} +5 -7
  20. package/dist/{BButton-DRRlzkyK.js.map → BButton-Cc2gd95Z.js.map} +1 -1
  21. package/dist/{BButton-PY7AANXJ.mjs → BButton-KZu5jczf.js} +9 -9
  22. package/dist/{BButton-aYtMnyHu.js.map → BButton-KZu5jczf.js.map} +1 -1
  23. package/dist/{BCard-BWoruisp.mjs → BCard-D2GEiXan.js} +2 -3
  24. package/dist/{BCard-Bh8RLMo_.js.map → BCard-D2GEiXan.js.map} +1 -1
  25. package/dist/{BCard-CHbKv2OR.mjs → BCard-nRj1JWtQ.js} +9 -9
  26. package/dist/{BCard-DwNYhVmg.js.map → BCard-nRj1JWtQ.js.map} +1 -1
  27. package/dist/{BCarousel-B6_bgQpl.mjs → BCarousel-DQgfW4DN.js} +11 -10
  28. package/dist/{BCarousel-2JB21Pcu.js.map → BCarousel-DQgfW4DN.js.map} +1 -1
  29. package/dist/{BCloseButton-CKTKr4PS.mjs → BCloseButton-B3-IdpNp.js} +2 -2
  30. package/dist/{BCloseButton-D42zHRLP.js.map → BCloseButton-B3-IdpNp.js.map} +1 -1
  31. package/dist/{BCol-B3VeEk9z.mjs → BCol-DiZFbqU5.js} +3 -3
  32. package/dist/{BCol-Ck9VydHj.js.map → BCol-DiZFbqU5.js.map} +1 -1
  33. package/dist/{BCollapse-kqhe4AmL.mjs → BCollapse-B9fnWSzA.js} +15 -9
  34. package/dist/BCollapse-B9fnWSzA.js.map +1 -0
  35. package/dist/{BContainer-ATfhaxTc.mjs → BContainer-D-bZVPwa.js} +2 -4
  36. package/dist/{BContainer-CcF6dgtI.js.map → BContainer-D-bZVPwa.js.map} +1 -1
  37. package/dist/{BDateField-CccP3H1R.mjs → BDateField-Bj-Jz7u4.js} +27 -22
  38. package/dist/BDateField-Bj-Jz7u4.js.map +1 -0
  39. package/dist/{BDatePicker-BnwnSkBg.mjs → BDatePicker-AVTYcVLy.js} +232 -148
  40. package/dist/BDatePicker-AVTYcVLy.js.map +1 -0
  41. package/dist/{BDropdown-B1DbvVzm.mjs → BDropdown-CnxUzs42.js} +55 -46
  42. package/dist/BDropdown-CnxUzs42.js.map +1 -0
  43. package/dist/{BDropdown-0E8x5kk6.mjs → BDropdown-D4VSJJxu.js} +5 -6
  44. package/dist/{BDropdown-DKCgBzYS.js.map → BDropdown-D4VSJJxu.js.map} +1 -1
  45. package/dist/{BForm-BVfW08s5.mjs → BForm-BOoX6AAr.js} +2 -2
  46. package/dist/{BForm-cnRpggt9.js.map → BForm-BOoX6AAr.js.map} +1 -1
  47. package/dist/{BForm-DJu2hDV_.mjs → BForm-C5PR2ust.js} +7 -8
  48. package/dist/{BForm-6JlWdQMO.js.map → BForm-C5PR2ust.js.map} +1 -1
  49. package/dist/{BFormCheckbox-Baf_9BSc.mjs → BFormCheckbox-BMhyR-J5.js} +12 -13
  50. package/dist/BFormCheckbox-BMhyR-J5.js.map +1 -0
  51. package/dist/{BFormFile-CZebm0Cp.mjs → BFormFile-BVrDprWL.js} +8 -8
  52. package/dist/{BFormFile-MISLntyJ.js.map → BFormFile-BVrDprWL.js.map} +1 -1
  53. package/dist/{BFormGroup-vysRPb99.mjs → BFormGroup-BE5tGz_g.js} +40 -24
  54. package/dist/BFormGroup-BE5tGz_g.js.map +1 -0
  55. package/dist/{BFormInput-sEfU3CuN.mjs → BFormInput-BwvdFGDu.js} +5 -5
  56. package/dist/{BFormInput-CBwwDjfC.js.map → BFormInput-BwvdFGDu.js.map} +1 -1
  57. package/dist/{BFormOtp-C8X3u1od.mjs → BFormOtp-I1t8dqPS.js} +63 -22
  58. package/dist/BFormOtp-I1t8dqPS.js.map +1 -0
  59. package/dist/{BFormRadio-COc_IbxC.mjs → BFormRadio-DRViMh6V.js} +24 -13
  60. package/dist/BFormRadio-DRViMh6V.js.map +1 -0
  61. package/dist/{BFormRating-CIgPVsH_.mjs → BFormRating-AEiF8K8T.js} +23 -17
  62. package/dist/BFormRating-AEiF8K8T.js.map +1 -0
  63. package/dist/{BFormSelect-P-InkOm-.mjs → BFormSelect-DdjH8482.js} +23 -12
  64. package/dist/BFormSelect-DdjH8482.js.map +1 -0
  65. package/dist/{BFormSelectOption-DFN4lPRh.mjs → BFormSelectOption-C8orMj24.js} +3 -3
  66. package/dist/{BFormSelectOption-DrwJucNf.js.map → BFormSelectOption-C8orMj24.js.map} +1 -1
  67. package/dist/{BFormSpinbutton-6qkTBF_4.mjs → BFormSpinbutton-Bt590uT6.js} +10 -9
  68. package/dist/{BFormSpinbutton-1gTz4nTo.js.map → BFormSpinbutton-Bt590uT6.js.map} +1 -1
  69. package/dist/{BFormTag-CnzI39y9.mjs → BFormTag-DGSUfz7A.js} +5 -5
  70. package/dist/{BFormTag-CeV0MSRC.js.map → BFormTag-DGSUfz7A.js.map} +1 -1
  71. package/dist/{BFormTags-BMltSaKL.mjs → BFormTags-CUcyRTCK.js} +23 -27
  72. package/dist/BFormTags-CUcyRTCK.js.map +1 -0
  73. package/dist/{BFormTextarea-DN1gAfSo.mjs → BFormTextarea-DlDe26DL.js} +6 -6
  74. package/dist/{BFormTextarea-C3Cj0DWj.js.map → BFormTextarea-DlDe26DL.js.map} +1 -1
  75. package/dist/{BFormValidFeedback-CBYxQLDz.mjs → BFormValidFeedback-ClqLRxtH.js} +4 -4
  76. package/dist/{BFormValidFeedback-Kwxh798d.js.map → BFormValidFeedback-ClqLRxtH.js.map} +1 -1
  77. package/dist/{BImg-QBS2ECBc.mjs → BImg-knz2UZQE.js} +5 -5
  78. package/dist/{BImg-JKJLgYYT.js.map → BImg-knz2UZQE.js.map} +1 -1
  79. package/dist/{BInputGroup-DiTSexkT.mjs → BInputGroup-Bjh7zXyI.js} +2 -3
  80. package/dist/{BInputGroup-D4fW324B.js.map → BInputGroup-Bjh7zXyI.js.map} +1 -1
  81. package/dist/{BInputGroup-X2Z53RJx.mjs → BInputGroup-DdoeSICR.js} +3 -3
  82. package/dist/{BInputGroup-Bvlfv6VD.js.map → BInputGroup-DdoeSICR.js.map} +1 -1
  83. package/dist/{BLink-Dfgte6dQ.mjs → BLink-mdwZsC7b.js} +5 -5
  84. package/dist/{BLink-kLEjleB1.js.map → BLink-mdwZsC7b.js.map} +1 -1
  85. package/dist/{BListGroup-DwTLpNiD.mjs → BListGroup-CQedMbI8.js} +4 -4
  86. package/dist/{BListGroup-C8JOzHTz.js.map → BListGroup-CQedMbI8.js.map} +1 -1
  87. package/dist/{BModal-C-ZCau2E.mjs → BModal-NPsCBNo7.js} +25 -18
  88. package/dist/BModal-NPsCBNo7.js.map +1 -0
  89. package/dist/{BNav-DfYvjfRK.mjs → BNav-CjXS9tQ5.js} +9 -9
  90. package/dist/{BNav-DCLambmM.js.map → BNav-CjXS9tQ5.js.map} +1 -1
  91. package/dist/{BNavbar-xYaikQVY.mjs → BNavbar-DRqkdxTk.js} +12 -9
  92. package/dist/{BNavbar-BLWaZJRP.js.map → BNavbar-DRqkdxTk.js.map} +1 -1
  93. package/dist/{BOffcanvas-CF-dWeez.mjs → BOffcanvas-BndaBJoP.js} +22 -16
  94. package/dist/BOffcanvas-BndaBJoP.js.map +1 -0
  95. package/dist/{BOverlay-Bh2PIN_q.mjs → BOverlay-CJfy_f6O.js} +6 -6
  96. package/dist/{BOverlay-Bh4ldxgt.js.map → BOverlay-CJfy_f6O.js.map} +1 -1
  97. package/dist/{BPagination-D75q-ZNg.mjs → BPagination-D_Hfk6OF.js} +29 -27
  98. package/dist/{BPagination-fbjFAtxu.js.map → BPagination-D_Hfk6OF.js.map} +1 -1
  99. package/dist/{BPlaceholder-DPQ6mCLN.mjs → BPlaceholder-DvOCnqDh.js} +11 -11
  100. package/dist/{BPlaceholder-B3rs_39w.js.map → BPlaceholder-DvOCnqDh.js.map} +1 -1
  101. package/dist/{BProgress-BZlrPYhA.mjs → BProgress-BNxYppi-.js} +5 -5
  102. package/dist/{BProgress-th0-eZWo.js.map → BProgress-BNxYppi-.js.map} +1 -1
  103. package/dist/{BRow-eGSUYGCW.mjs → BRow-CoBI89xF.js} +4 -4
  104. package/dist/{BRow-7AOuFiSy.js.map → BRow-CoBI89xF.js.map} +1 -1
  105. package/dist/{BSpinner-CUfGqviV.mjs → BSpinner-H1DZOmiM.js} +4 -4
  106. package/dist/{BSpinner-DbYIp-C7.js.map → BSpinner-H1DZOmiM.js.map} +1 -1
  107. package/dist/{BTable-DUHxxWv5.mjs → BTable-BZxX17YU.js} +40 -33
  108. package/dist/BTable-BZxX17YU.js.map +1 -0
  109. package/dist/{BTableSimple-C-jn9Nwh.mjs → BTableSimple-2Z7ssnuG.js} +5 -5
  110. package/dist/{BTableSimple-BkdGAAKb.js.map → BTableSimple-2Z7ssnuG.js.map} +1 -1
  111. package/dist/{BTabs-D_vWlBjT.mjs → BTabs-BVcu9DPg.js} +19 -17
  112. package/dist/{BTabs-CvecFg5N.js.map → BTabs-BVcu9DPg.js.map} +1 -1
  113. package/dist/{BTimeField-BSDaZogC.mjs → BTimeField-CbRGjaI6.js} +24 -19
  114. package/dist/BTimeField-CbRGjaI6.js.map +1 -0
  115. package/dist/{BToast-Y8BayxES.mjs → BToast-Di9HwBOV.js} +21 -14
  116. package/dist/BToast-Di9HwBOV.js.map +1 -0
  117. package/dist/{BTooltip-CVP8HdkU.mjs → BTooltip-BxaUtV4m.js} +5 -5
  118. package/dist/{BTooltip-DPLYtaL1.js.map → BTooltip-BxaUtV4m.js.map} +1 -1
  119. package/dist/{BootstrapVueOptions-Dt1TQdih.mjs → BootstrapVueOptions-DH79gHKG.js} +1 -4
  120. package/dist/BootstrapVueOptions-DH79gHKG.js.map +1 -0
  121. package/dist/{ConditionalTeleport-B4KYZIM6.mjs → ConditionalTeleport-BCKPLEun.js} +1 -1
  122. package/dist/{ConditionalTeleport-BDWcebyD.js.map → ConditionalTeleport-BCKPLEun.js.map} +1 -1
  123. package/dist/{ConditionalWrapper-Dbc_O6qe.mjs → ConditionalWrapper-CCIk52zt.js} +1 -1
  124. package/dist/{ConditionalWrapper-DZH_VSwb.js.map → ConditionalWrapper-CCIk52zt.js.map} +1 -1
  125. package/dist/{DateRangeFieldInput-B86VEz0H.mjs → DateRangeFieldInput-Cbzjg8iF.js} +45 -22
  126. package/dist/DateRangeFieldInput-Cbzjg8iF.js.map +1 -0
  127. package/dist/{PopperContent-DmSgsjSC.mjs → PopperContent-C9eeL6LH.js} +395 -100
  128. package/dist/PopperContent-C9eeL6LH.js.map +1 -0
  129. package/dist/{VisuallyHidden-C4sXnc-k.mjs → VisuallyHidden-BYzyjJiY.js} +23 -15
  130. package/dist/VisuallyHidden-BYzyjJiY.js.map +1 -0
  131. package/dist/{VisuallyHiddenInput-DKIzxsQR.mjs → VisuallyHiddenInput-CUrc8XXa.js} +46 -7
  132. package/dist/VisuallyHiddenInput-CUrc8XXa.js.map +1 -0
  133. package/dist/bootstrap-vue-next.mjs +65 -65
  134. package/dist/{classes-B0E5Y78Y.mjs → classes-BEWWGbj5.js} +1 -1
  135. package/dist/{classes-D5wrmmVs.js.map → classes-BEWWGbj5.js.map} +1 -1
  136. package/dist/components/BAccordion/BAccordion.vue.d.mts +9 -13
  137. package/dist/components/BAccordion/BAccordion.vue.d.ts +9 -13
  138. package/dist/components/BAccordion/BAccordionItem.vue.d.mts +16 -24
  139. package/dist/components/BAccordion/BAccordionItem.vue.d.ts +16 -24
  140. package/dist/components/BAlert/BAlert.vue.d.mts +26 -34
  141. package/dist/components/BAlert/BAlert.vue.d.ts +26 -34
  142. package/dist/components/BApp/BApp.vue.d.mts +8 -12
  143. package/dist/components/BApp/BApp.vue.d.ts +8 -12
  144. package/dist/components/BApp/BOrchestrator.vue.d.mts +2 -1
  145. package/dist/components/BApp/BOrchestrator.vue.d.ts +2 -1
  146. package/dist/components/BAspect/BAspect.vue.d.mts +5 -10
  147. package/dist/components/BAspect/BAspect.vue.d.ts +5 -10
  148. package/dist/components/BAutocomplete/BAutocomplete.vue.d.mts +12 -270
  149. package/dist/components/BAutocomplete/BAutocomplete.vue.d.ts +12 -270
  150. package/dist/components/BAvatar/BAvatar.vue.d.mts +20 -25
  151. package/dist/components/BAvatar/BAvatar.vue.d.ts +20 -25
  152. package/dist/components/BAvatar/BAvatarGroup.vue.d.mts +8 -13
  153. package/dist/components/BAvatar/BAvatarGroup.vue.d.ts +8 -13
  154. package/dist/components/BBadge/BBadge.vue.d.mts +13 -18
  155. package/dist/components/BBadge/BBadge.vue.d.ts +13 -18
  156. package/dist/components/BBreadcrumb/BBreadcrumb.vue.d.mts +6 -11
  157. package/dist/components/BBreadcrumb/BBreadcrumb.vue.d.ts +6 -11
  158. package/dist/components/BBreadcrumb/BBreadcrumbItem.vue.d.mts +13 -18
  159. package/dist/components/BBreadcrumb/BBreadcrumbItem.vue.d.ts +13 -18
  160. package/dist/components/BButton/BButton.vue.d.mts +17 -25
  161. package/dist/components/BButton/BButton.vue.d.ts +17 -25
  162. package/dist/components/BButton/BButtonGroup.vue.d.mts +5 -10
  163. package/dist/components/BButton/BButtonGroup.vue.d.ts +5 -10
  164. package/dist/components/BButton/BButtonToolbar.vue.d.mts +7 -16
  165. package/dist/components/BButton/BButtonToolbar.vue.d.ts +7 -16
  166. package/dist/components/BButton/BCloseButton.vue.d.mts +4 -3
  167. package/dist/components/BButton/BCloseButton.vue.d.ts +4 -3
  168. package/dist/components/BCard/BCard.vue.d.mts +21 -26
  169. package/dist/components/BCard/BCard.vue.d.ts +21 -26
  170. package/dist/components/BCard/BCardBody.vue.d.mts +9 -14
  171. package/dist/components/BCard/BCardBody.vue.d.ts +9 -14
  172. package/dist/components/BCard/BCardFooter.vue.d.mts +7 -11
  173. package/dist/components/BCard/BCardFooter.vue.d.ts +7 -11
  174. package/dist/components/BCard/BCardGroup.vue.d.mts +5 -10
  175. package/dist/components/BCard/BCardGroup.vue.d.ts +5 -10
  176. package/dist/components/BCard/BCardHeader.vue.d.mts +7 -12
  177. package/dist/components/BCard/BCardHeader.vue.d.ts +7 -12
  178. package/dist/components/BCard/BCardImg.vue.d.mts +7 -6
  179. package/dist/components/BCard/BCardImg.vue.d.ts +7 -6
  180. package/dist/components/BCard/BCardSubtitle.vue.d.mts +6 -11
  181. package/dist/components/BCard/BCardSubtitle.vue.d.ts +6 -11
  182. package/dist/components/BCard/BCardText.vue.d.mts +5 -10
  183. package/dist/components/BCard/BCardText.vue.d.ts +5 -10
  184. package/dist/components/BCard/BCardTitle.vue.d.mts +5 -10
  185. package/dist/components/BCard/BCardTitle.vue.d.ts +5 -10
  186. package/dist/components/BCardHeadFoot.vue.d.mts +6 -11
  187. package/dist/components/BCardHeadFoot.vue.d.ts +6 -11
  188. package/dist/components/BCarousel/BCarousel.vue.d.mts +12 -24
  189. package/dist/components/BCarousel/BCarousel.vue.d.ts +12 -24
  190. package/dist/components/BCarousel/BCarouselSlide.vue.d.mts +7 -12
  191. package/dist/components/BCarousel/BCarouselSlide.vue.d.ts +7 -12
  192. package/dist/components/BCollapse/BCollapse.vue.d.mts +13 -21
  193. package/dist/components/BCollapse/BCollapse.vue.d.ts +13 -21
  194. package/dist/components/BContainer/BCol.vue.d.mts +8 -13
  195. package/dist/components/BContainer/BCol.vue.d.ts +8 -13
  196. package/dist/components/BContainer/BContainer.vue.d.mts +5 -10
  197. package/dist/components/BContainer/BContainer.vue.d.ts +5 -10
  198. package/dist/components/BContainer/BRow.vue.d.mts +6 -11
  199. package/dist/components/BContainer/BRow.vue.d.ts +6 -11
  200. package/dist/components/BDateField/BDateField.vue.d.mts +8 -12
  201. package/dist/components/BDateField/BDateField.vue.d.ts +8 -12
  202. package/dist/components/BDateField/BDateRangeField.vue.d.mts +8 -12
  203. package/dist/components/BDateField/BDateRangeField.vue.d.ts +8 -12
  204. package/dist/components/BDateField/BTimeRangeField.vue.d.mts +9 -13
  205. package/dist/components/BDateField/BTimeRangeField.vue.d.ts +9 -13
  206. package/dist/components/BDatePicker/BDatePicker.vue.d.mts +9 -13
  207. package/dist/components/BDatePicker/BDatePicker.vue.d.ts +9 -13
  208. package/dist/components/BDatePicker/BDateRangePicker.vue.d.mts +9 -13
  209. package/dist/components/BDatePicker/BDateRangePicker.vue.d.ts +9 -13
  210. package/dist/components/BDropdown/BDropdown.vue.d.mts +24 -957
  211. package/dist/components/BDropdown/BDropdown.vue.d.ts +24 -957
  212. package/dist/components/BDropdown/BDropdownDivider.vue.d.mts +3 -2
  213. package/dist/components/BDropdown/BDropdownDivider.vue.d.ts +3 -2
  214. package/dist/components/BDropdown/BDropdownForm.vue.d.mts +6 -11
  215. package/dist/components/BDropdown/BDropdownForm.vue.d.ts +6 -11
  216. package/dist/components/BDropdown/BDropdownGroup.vue.d.mts +5 -10
  217. package/dist/components/BDropdown/BDropdownGroup.vue.d.ts +5 -10
  218. package/dist/components/BDropdown/BDropdownHeader.vue.d.mts +7 -12
  219. package/dist/components/BDropdown/BDropdownHeader.vue.d.ts +7 -12
  220. package/dist/components/BDropdown/BDropdownItem.vue.d.mts +12 -17
  221. package/dist/components/BDropdown/BDropdownItem.vue.d.ts +12 -17
  222. package/dist/components/BDropdown/BDropdownItemButton.vue.d.mts +6 -11
  223. package/dist/components/BDropdown/BDropdownItemButton.vue.d.ts +6 -11
  224. package/dist/components/BDropdown/BDropdownText.vue.d.mts +6 -11
  225. package/dist/components/BDropdown/BDropdownText.vue.d.ts +6 -11
  226. package/dist/components/BForm/BForm.vue.d.mts +8 -17
  227. package/dist/components/BForm/BForm.vue.d.ts +8 -17
  228. package/dist/components/BForm/BFormDatalist.vue.d.mts +12 -7
  229. package/dist/components/BForm/BFormDatalist.vue.d.ts +12 -7
  230. package/dist/components/BForm/BFormDatalistBase.vue.d.mts +20 -22
  231. package/dist/components/BForm/BFormDatalistBase.vue.d.ts +20 -22
  232. package/dist/components/BForm/BFormFloatingLabel.vue.d.mts +6 -11
  233. package/dist/components/BForm/BFormFloatingLabel.vue.d.ts +6 -11
  234. package/dist/components/BForm/BFormInvalidFeedback.vue.d.mts +6 -11
  235. package/dist/components/BForm/BFormInvalidFeedback.vue.d.ts +6 -11
  236. package/dist/components/BForm/BFormRow.vue.d.mts +5 -10
  237. package/dist/components/BForm/BFormRow.vue.d.ts +5 -10
  238. package/dist/components/BForm/BFormText.vue.d.mts +6 -11
  239. package/dist/components/BForm/BFormText.vue.d.ts +6 -11
  240. package/dist/components/BForm/BFormValidFeedback.vue.d.mts +6 -11
  241. package/dist/components/BForm/BFormValidFeedback.vue.d.ts +6 -11
  242. package/dist/components/BFormCheckbox/BFormCheckbox.vue.d.mts +14 -22
  243. package/dist/components/BFormCheckbox/BFormCheckbox.vue.d.ts +14 -22
  244. package/dist/components/BFormCheckbox/BFormCheckboxGroup.vue.d.mts +16 -11
  245. package/dist/components/BFormCheckbox/BFormCheckboxGroup.vue.d.ts +16 -11
  246. package/dist/components/BFormCheckbox/BFormCheckboxGroupBase.vue.d.mts +22 -27
  247. package/dist/components/BFormCheckbox/BFormCheckboxGroupBase.vue.d.ts +22 -27
  248. package/dist/components/BFormFile/BFormFile.vue.d.mts +9 -25
  249. package/dist/components/BFormFile/BFormFile.vue.d.ts +9 -25
  250. package/dist/components/BFormGroup/BFormGroup.vue.d.mts +14 -23
  251. package/dist/components/BFormGroup/BFormGroup.vue.d.ts +14 -23
  252. package/dist/components/BFormGroupContent.vue.d.mts +8 -17
  253. package/dist/components/BFormGroupContent.vue.d.ts +8 -17
  254. package/dist/components/BFormGroupLabel.vue.d.mts +6 -13
  255. package/dist/components/BFormGroupLabel.vue.d.ts +6 -13
  256. package/dist/components/BFormInput/BFormInput.vue.d.mts +10 -10
  257. package/dist/components/BFormInput/BFormInput.vue.d.ts +10 -10
  258. package/dist/components/BFormOtp/BFormOtp.vue.d.mts +7 -5
  259. package/dist/components/BFormOtp/BFormOtp.vue.d.ts +7 -5
  260. package/dist/components/BFormRadio/BFormRadio.vue.d.mts +13 -21
  261. package/dist/components/BFormRadio/BFormRadio.vue.d.ts +13 -21
  262. package/dist/components/BFormRadio/BFormRadioGroup.vue.d.mts +21 -14
  263. package/dist/components/BFormRadio/BFormRadioGroup.vue.d.ts +21 -14
  264. package/dist/components/BFormRadio/BFormRadioGroupBase.vue.d.mts +14 -22
  265. package/dist/components/BFormRadio/BFormRadioGroupBase.vue.d.ts +14 -22
  266. package/dist/components/BFormRating/BFormRating.vue.d.mts +10 -12
  267. package/dist/components/BFormRating/BFormRating.vue.d.ts +10 -12
  268. package/dist/components/BFormSelect/BFormSelect.vue.d.mts +16 -11
  269. package/dist/components/BFormSelect/BFormSelect.vue.d.ts +16 -11
  270. package/dist/components/BFormSelect/BFormSelectBase.vue.d.mts +24 -29
  271. package/dist/components/BFormSelect/BFormSelectBase.vue.d.ts +24 -29
  272. package/dist/components/BFormSelect/BFormSelectOption.vue.d.mts +12 -7
  273. package/dist/components/BFormSelect/BFormSelectOption.vue.d.ts +12 -7
  274. package/dist/components/BFormSelect/BFormSelectOptionGroup.vue.d.mts +12 -7
  275. package/dist/components/BFormSelect/BFormSelectOptionGroup.vue.d.ts +12 -7
  276. package/dist/components/BFormSpinbutton/BFormSpinbutton.vue.d.mts +11 -12
  277. package/dist/components/BFormSpinbutton/BFormSpinbutton.vue.d.ts +11 -12
  278. package/dist/components/BFormTags/BFormTag.vue.d.mts +7 -12
  279. package/dist/components/BFormTags/BFormTag.vue.d.ts +7 -12
  280. package/dist/components/BFormTags/BFormTags.vue.d.mts +12 -20
  281. package/dist/components/BFormTags/BFormTags.vue.d.ts +12 -20
  282. package/dist/components/BFormTextarea/BFormTextarea.vue.d.mts +12 -12
  283. package/dist/components/BFormTextarea/BFormTextarea.vue.d.ts +12 -12
  284. package/dist/components/BImg/BImg.vue.d.mts +7 -6
  285. package/dist/components/BImg/BImg.vue.d.ts +7 -6
  286. package/dist/components/BInputGroup/BInputGroup.vue.d.mts +5 -10
  287. package/dist/components/BInputGroup/BInputGroup.vue.d.ts +5 -10
  288. package/dist/components/BInputGroup/BInputGroupText.vue.d.mts +5 -10
  289. package/dist/components/BInputGroup/BInputGroupText.vue.d.ts +5 -10
  290. package/dist/components/BLink/BLink.vue.d.mts +12 -17
  291. package/dist/components/BLink/BLink.vue.d.ts +12 -17
  292. package/dist/components/BListGroup/BListGroup.vue.d.mts +5 -10
  293. package/dist/components/BListGroup/BListGroup.vue.d.ts +5 -10
  294. package/dist/components/BListGroup/BListGroupItem.vue.d.mts +13 -18
  295. package/dist/components/BListGroup/BListGroupItem.vue.d.ts +13 -18
  296. package/dist/components/BModal/BModal.vue.d.mts +47 -1026
  297. package/dist/components/BModal/BModal.vue.d.ts +47 -1026
  298. package/dist/components/BNav/BNav.vue.d.mts +7 -12
  299. package/dist/components/BNav/BNav.vue.d.ts +7 -12
  300. package/dist/components/BNav/BNavForm.vue.d.mts +8 -13
  301. package/dist/components/BNav/BNavForm.vue.d.ts +8 -13
  302. package/dist/components/BNav/BNavItem.vue.d.mts +12 -17
  303. package/dist/components/BNav/BNavItem.vue.d.ts +12 -17
  304. package/dist/components/BNav/BNavItemDropdown.vue.d.mts +20 -1660
  305. package/dist/components/BNav/BNavItemDropdown.vue.d.ts +20 -1660
  306. package/dist/components/BNav/BNavText.vue.d.mts +6 -11
  307. package/dist/components/BNav/BNavText.vue.d.ts +6 -11
  308. package/dist/components/BNavbar/BNavbar.vue.d.mts +6 -11
  309. package/dist/components/BNavbar/BNavbar.vue.d.ts +6 -11
  310. package/dist/components/BNavbar/BNavbarBrand.vue.d.mts +11 -16
  311. package/dist/components/BNavbar/BNavbarBrand.vue.d.ts +11 -16
  312. package/dist/components/BNavbar/BNavbarNav.vue.d.mts +7 -12
  313. package/dist/components/BNavbar/BNavbarNav.vue.d.ts +7 -12
  314. package/dist/components/BNavbar/BNavbarToggle.vue.d.mts +7 -12
  315. package/dist/components/BNavbar/BNavbarToggle.vue.d.ts +7 -12
  316. package/dist/components/BOffcanvas/BOffcanvas.vue.d.mts +28 -82
  317. package/dist/components/BOffcanvas/BOffcanvas.vue.d.ts +28 -82
  318. package/dist/components/BOverlay/BOverlay.vue.d.mts +17 -22
  319. package/dist/components/BOverlay/BOverlay.vue.d.ts +17 -22
  320. package/dist/components/BPagination/BPagination.vue.d.mts +9 -10
  321. package/dist/components/BPagination/BPagination.vue.d.ts +9 -10
  322. package/dist/components/BPlaceholder/BPlaceholder.vue.d.mts +3 -2
  323. package/dist/components/BPlaceholder/BPlaceholder.vue.d.ts +3 -2
  324. package/dist/components/BPlaceholder/BPlaceholderButton.vue.d.mts +3 -2
  325. package/dist/components/BPlaceholder/BPlaceholderButton.vue.d.ts +3 -2
  326. package/dist/components/BPlaceholder/BPlaceholderCard.vue.d.mts +8 -13
  327. package/dist/components/BPlaceholder/BPlaceholderCard.vue.d.ts +8 -13
  328. package/dist/components/BPlaceholder/BPlaceholderTable.vue.d.mts +8 -13
  329. package/dist/components/BPlaceholder/BPlaceholderTable.vue.d.ts +8 -13
  330. package/dist/components/BPlaceholder/BPlaceholderWrapper.vue.d.mts +5 -10
  331. package/dist/components/BPlaceholder/BPlaceholderWrapper.vue.d.ts +5 -10
  332. package/dist/components/BPopover/BPopover.vue.d.mts +35 -49
  333. package/dist/components/BPopover/BPopover.vue.d.ts +35 -49
  334. package/dist/components/BProgress/BProgress.vue.d.mts +10 -15
  335. package/dist/components/BProgress/BProgress.vue.d.ts +10 -15
  336. package/dist/components/BProgress/BProgressBar.vue.d.mts +9 -14
  337. package/dist/components/BProgress/BProgressBar.vue.d.ts +9 -14
  338. package/dist/components/BSpinner/BSpinner.vue.d.mts +7 -12
  339. package/dist/components/BSpinner/BSpinner.vue.d.ts +7 -12
  340. package/dist/components/BTable/BTable.vue.d.mts +35 -30
  341. package/dist/components/BTable/BTable.vue.d.ts +35 -30
  342. package/dist/components/BTable/BTableLite.vue.d.mts +24 -19
  343. package/dist/components/BTable/BTableLite.vue.d.ts +24 -19
  344. package/dist/components/BTable/BTableSimple.vue.d.mts +9 -14
  345. package/dist/components/BTable/BTableSimple.vue.d.ts +9 -14
  346. package/dist/components/BTable/BTbody.vue.d.mts +6 -11
  347. package/dist/components/BTable/BTbody.vue.d.ts +6 -11
  348. package/dist/components/BTable/BTd.vue.d.mts +6 -11
  349. package/dist/components/BTable/BTd.vue.d.ts +6 -11
  350. package/dist/components/BTable/BTfoot.vue.d.mts +6 -11
  351. package/dist/components/BTable/BTfoot.vue.d.ts +6 -11
  352. package/dist/components/BTable/BTh.vue.d.mts +6 -11
  353. package/dist/components/BTable/BTh.vue.d.ts +6 -11
  354. package/dist/components/BTable/BThead.vue.d.mts +6 -11
  355. package/dist/components/BTable/BThead.vue.d.ts +6 -11
  356. package/dist/components/BTable/BTr.vue.d.mts +6 -11
  357. package/dist/components/BTable/BTr.vue.d.ts +6 -11
  358. package/dist/components/BTabs/BTab.vue.d.mts +10 -18
  359. package/dist/components/BTabs/BTab.vue.d.ts +10 -18
  360. package/dist/components/BTabs/BTabs.vue.d.mts +10 -14
  361. package/dist/components/BTabs/BTabs.vue.d.ts +10 -14
  362. package/dist/components/BTabsTabContent.vue.d.mts +7 -15
  363. package/dist/components/BTabsTabContent.vue.d.ts +7 -15
  364. package/dist/components/BTimeField/BTimeField.vue.d.mts +8 -12
  365. package/dist/components/BTimeField/BTimeField.vue.d.ts +8 -12
  366. package/dist/components/BToast/BToast.vue.d.mts +25 -33
  367. package/dist/components/BToast/BToast.vue.d.ts +25 -33
  368. package/dist/components/BTooltip/BTooltip.vue.d.mts +32 -732
  369. package/dist/components/BTooltip/BTooltip.vue.d.ts +32 -732
  370. package/dist/components/ConditionalTeleport.vue.d.mts +3 -2
  371. package/dist/components/ConditionalTeleport.vue.d.ts +3 -2
  372. package/dist/components/ConditionalWrapper.vue.d.mts +3 -2
  373. package/dist/components/ConditionalWrapper.vue.d.ts +3 -2
  374. package/dist/composables/index.d.mts +3 -3
  375. package/dist/composables/index.d.ts +3 -3
  376. package/dist/composables/orchestratorShared/index.d.mts +25 -14
  377. package/dist/composables/orchestratorShared/index.d.ts +25 -14
  378. package/dist/composables/useBLinkHelper.d.mts +1 -1
  379. package/dist/composables/useBLinkHelper.d.ts +1 -1
  380. package/dist/composables/useModal/index.d.mts +8 -33
  381. package/dist/composables/useModal/index.d.ts +8 -33
  382. package/dist/composables/usePopover/index.d.mts +332 -4532
  383. package/dist/composables/usePopover/index.d.ts +332 -4532
  384. package/dist/composables/useShowHide.d.mts +21 -15
  385. package/dist/composables/useShowHide.d.ts +21 -15
  386. package/dist/composables/useToast/index.d.mts +7 -18
  387. package/dist/composables/useToast/index.d.ts +7 -18
  388. package/dist/console-DaUCJgpk.js +15 -0
  389. package/dist/console-DaUCJgpk.js.map +1 -0
  390. package/dist/{constants-Ba9iJn2H.mjs → constants-Cap5sNf8.js} +1 -1
  391. package/dist/{constants-BLIvvaat.js.map → constants-Cap5sNf8.js.map} +1 -1
  392. package/dist/{debounce-DHxNfjan.mjs → debounce-Xj7wsAmR.js} +2 -2
  393. package/dist/{debounce-D6kifS6w.js.map → debounce-Xj7wsAmR.js.map} +1 -1
  394. package/dist/{dist-Dk9C_HFS.mjs → dist-9-XTMhb-.js} +5 -539
  395. package/dist/dist-9-XTMhb-.js.map +1 -0
  396. package/dist/dist-B-regXAP.js +123 -0
  397. package/dist/dist-B-regXAP.js.map +1 -0
  398. package/dist/dist-DKc2ivHS.js +411 -0
  399. package/dist/dist-DKc2ivHS.js.map +1 -0
  400. package/dist/{dom-AhkaSoh8.mjs → dom-BdUQrX99.js} +3 -2
  401. package/dist/dom-BdUQrX99.js.map +1 -0
  402. package/dist/{flattenFragments-ClbLQGqR.mjs → flattenFragments-B15oMVs-.js} +1 -1
  403. package/dist/{flattenFragments-C1WWqm25.js.map → flattenFragments-B15oMVs-.js.map} +1 -1
  404. package/dist/{floating-ui.vue-CH2o_mZU.mjs → floating-ui.dom-C7UZexJK.js} +114 -338
  405. package/dist/floating-ui.dom-C7UZexJK.js.map +1 -0
  406. package/dist/{floatingUi-62aeQtAb.mjs → floatingUi-BlKoACvc.js} +194 -27
  407. package/dist/floatingUi-BlKoACvc.js.map +1 -0
  408. package/dist/{functions-BcMenQqL.mjs → functions-BUZ1y9RA.js} +1 -1
  409. package/dist/functions-BUZ1y9RA.js.map +1 -0
  410. package/dist/{getClasses-COokMI60.mjs → getClasses-BlbbSJNl.js} +1 -1
  411. package/dist/{getClasses-8P0iBind.js.map → getClasses-BlbbSJNl.js.map} +1 -1
  412. package/dist/{getElement-D2Jr1cbp.mjs → getElement-uvhh1lgL.js} +2 -2
  413. package/dist/{getElement-DWGFJn0w.js.map → getElement-uvhh1lgL.js.map} +1 -1
  414. package/dist/{keys-DU7sQgl3.mjs → keys-BgLwJbLV.js} +1 -1
  415. package/dist/keys-BgLwJbLV.js.map +1 -0
  416. package/dist/{object-CHQkkner.mjs → object-C7YmCGEm.js} +10 -6
  417. package/dist/object-C7YmCGEm.js.map +1 -0
  418. package/dist/{registryAccess-BkJDdh-3.mjs → registryAccess-YFj5ZD5T.js} +1 -1
  419. package/dist/{registryAccess-B9QDQwV8.js.map → registryAccess-YFj5ZD5T.js.map} +1 -1
  420. package/dist/src/components/BAccordion/index.mjs +1 -1
  421. package/dist/src/components/BAlert/index.mjs +1 -1
  422. package/dist/src/components/BApp/index.mjs +1 -1
  423. package/dist/src/components/BAspect/index.mjs +1 -1
  424. package/dist/src/components/BAutocomplete/index.mjs +1 -1
  425. package/dist/src/components/BAvatar/index.mjs +1 -1
  426. package/dist/src/components/BBadge/index.mjs +1 -1
  427. package/dist/src/components/BBreadcrumb/index.mjs +1 -1
  428. package/dist/src/components/BButton/index.mjs +3 -3
  429. package/dist/src/components/BCard/index.mjs +2 -2
  430. package/dist/src/components/BCarousel/index.mjs +1 -1
  431. package/dist/src/components/BCol/index.mjs +1 -1
  432. package/dist/src/components/BCollapse/index.mjs +1 -1
  433. package/dist/src/components/BContainer/index.mjs +3 -3
  434. package/dist/src/components/BDateField/index.mjs +1 -1
  435. package/dist/src/components/BDatePicker/index.mjs +1 -1
  436. package/dist/src/components/BDropdown/index.mjs +2 -2
  437. package/dist/src/components/BForm/index.mjs +3 -3
  438. package/dist/src/components/BFormCheckbox/index.mjs +1 -1
  439. package/dist/src/components/BFormFile/index.mjs +1 -1
  440. package/dist/src/components/BFormGroup/index.mjs +1 -1
  441. package/dist/src/components/BFormInput/index.mjs +1 -1
  442. package/dist/src/components/BFormOtp/index.mjs +1 -1
  443. package/dist/src/components/BFormRadio/index.mjs +1 -1
  444. package/dist/src/components/BFormRating/index.mjs +1 -1
  445. package/dist/src/components/BFormSelect/index.mjs +2 -2
  446. package/dist/src/components/BFormSpinbutton/index.mjs +1 -1
  447. package/dist/src/components/BFormTags/index.mjs +2 -2
  448. package/dist/src/components/BFormTextarea/index.mjs +1 -1
  449. package/dist/src/components/BImg/index.mjs +1 -1
  450. package/dist/src/components/BInputGroup/index.mjs +2 -2
  451. package/dist/src/components/BLink/index.mjs +1 -1
  452. package/dist/src/components/BListGroup/index.mjs +1 -1
  453. package/dist/src/components/BModal/index.mjs +1 -1
  454. package/dist/src/components/BNav/index.mjs +1 -1
  455. package/dist/src/components/BNavbar/index.mjs +1 -1
  456. package/dist/src/components/BOffcanvas/index.mjs +1 -1
  457. package/dist/src/components/BOverlay/index.mjs +1 -1
  458. package/dist/src/components/BPagination/index.mjs +1 -1
  459. package/dist/src/components/BPlaceholder/index.mjs +1 -1
  460. package/dist/src/components/BPopover/index.mjs +1 -1
  461. package/dist/src/components/BProgress/index.mjs +1 -1
  462. package/dist/src/components/BRow/index.mjs +1 -1
  463. package/dist/src/components/BSpinner/index.mjs +1 -1
  464. package/dist/src/components/BTable/index.mjs +2 -2
  465. package/dist/src/components/BTabs/index.mjs +1 -1
  466. package/dist/src/components/BTimeField/index.mjs +1 -1
  467. package/dist/src/components/BToast/index.mjs +1 -1
  468. package/dist/src/components/BTooltip/index.mjs +1 -1
  469. package/dist/src/components/index.mjs +60 -68
  470. package/dist/src/composables/index.mjs +5 -8
  471. package/dist/src/composables/index.mjs.map +1 -1
  472. package/dist/src/composables/orchestratorShared/index.mjs +79 -82
  473. package/dist/src/composables/orchestratorShared/index.mjs.map +1 -1
  474. package/dist/src/composables/useBreadcrumb/index.mjs +1 -1
  475. package/dist/src/composables/useBreadcrumb/index.mjs.map +1 -1
  476. package/dist/src/composables/useColorMode/index.mjs +2 -2
  477. package/dist/src/composables/useColorMode/index.mjs.map +1 -1
  478. package/dist/src/composables/useModal/index.mjs +65 -64
  479. package/dist/src/composables/useModal/index.mjs.map +1 -1
  480. package/dist/src/composables/usePopover/index.mjs +51 -68
  481. package/dist/src/composables/usePopover/index.mjs.map +1 -1
  482. package/dist/src/composables/useProvideDefaults/index.mjs +4 -3
  483. package/dist/src/composables/useProvideDefaults/index.mjs.map +1 -1
  484. package/dist/src/composables/useRegistry/index.mjs +5 -3
  485. package/dist/src/composables/useRegistry/index.mjs.map +1 -1
  486. package/dist/src/composables/useScrollLock/index.mjs +2 -1
  487. package/dist/src/composables/useScrollLock/index.mjs.map +1 -1
  488. package/dist/src/composables/useScrollspy/index.mjs +16 -13
  489. package/dist/src/composables/useScrollspy/index.mjs.map +1 -1
  490. package/dist/src/composables/useToast/index.mjs +45 -66
  491. package/dist/src/composables/useToast/index.mjs.map +1 -1
  492. package/dist/src/composables/useToggle/index.mjs +5 -3
  493. package/dist/src/composables/useToggle/index.mjs.map +1 -1
  494. package/dist/src/directives/BColorMode/index.mjs.map +1 -1
  495. package/dist/src/directives/BPopover/index.mjs +2 -2
  496. package/dist/src/directives/BPopover/index.mjs.map +1 -1
  497. package/dist/src/directives/BScrollspy/index.mjs +3 -3
  498. package/dist/src/directives/BScrollspy/index.mjs.map +1 -1
  499. package/dist/src/directives/BToggle/index.mjs +8 -6
  500. package/dist/src/directives/BToggle/index.mjs.map +1 -1
  501. package/dist/src/directives/BTooltip/index.mjs +2 -2
  502. package/dist/src/directives/BTooltip/index.mjs.map +1 -1
  503. package/dist/src/directives/index.mjs +1 -2
  504. package/dist/src/plugins/createBootstrap/index.mjs +1 -1
  505. package/dist/src/plugins/createBootstrap/index.mjs.map +1 -1
  506. package/dist/src/plugins/index.mjs +1 -1
  507. package/dist/src/plugins/orchestrator/index.mjs +1 -1
  508. package/dist/src/plugins/orchestrator/index.mjs.map +1 -1
  509. package/dist/src/plugins/registry/index.mjs +1 -1
  510. package/dist/src/plugins/registry/index.mjs.map +1 -1
  511. package/dist/src/plugins/rtl/index.mjs +1 -1
  512. package/dist/src/plugins/rtl/index.mjs.map +1 -1
  513. package/dist/src/resolvers/index.mjs +2 -2
  514. package/dist/src/resolvers/index.mjs.map +1 -1
  515. package/dist/src/types/index.mjs +2 -2
  516. package/dist/src/utils/index.mjs +2 -2
  517. package/dist/{stringUtils-D4eEDlt1.mjs → stringUtils-CVySsg3y.js} +2 -2
  518. package/dist/{stringUtils-68ZN_GRt.js.map → stringUtils-CVySsg3y.js.map} +1 -1
  519. package/dist/types/BootstrapVueOptions.d.mts +1 -4
  520. package/dist/types/BootstrapVueOptions.d.ts +1 -4
  521. package/dist/types/ComponentOrchestratorTypes.d.mts +62 -186
  522. package/dist/types/ComponentOrchestratorTypes.d.ts +62 -186
  523. package/dist/types/ComponentProps.d.mts +2 -0
  524. package/dist/types/ComponentProps.d.ts +2 -0
  525. package/dist/types/ComponentSlots.d.mts +1 -1
  526. package/dist/types/ComponentSlots.d.ts +1 -1
  527. package/dist/{useAlignment-DuR8ymKI.mjs → useAlignment-DaP-psIh.js} +1 -1
  528. package/dist/{useAlignment-oKolnDpb.js.map → useAlignment-DaP-psIh.js.map} +1 -1
  529. package/dist/{useAriaInvalid-apOwgexm.mjs → useAriaInvalid-CRUhkD2V.js} +1 -1
  530. package/dist/{useAriaInvalid-CHHPHNLU.js.map → useAriaInvalid-CRUhkD2V.js.map} +1 -1
  531. package/dist/{useColorVariantClasses-CqeXHjRh.mjs → useColorVariantClasses-DHQvLjek.js} +1 -1
  532. package/dist/{useColorVariantClasses-Dq0sOYDL.js.map → useColorVariantClasses-DHQvLjek.js.map} +1 -1
  533. package/dist/{useCountdownHover-C3NXiAaF.mjs → useCountdownHover-BN8vJIQW.js} +4 -3
  534. package/dist/{useCountdownHover-DbVhE-N0.js.map → useCountdownHover-BN8vJIQW.js.map} +1 -1
  535. package/dist/{useDateField-CJKgollJ.mjs → useDateField-CQZb799C.js} +680 -627
  536. package/dist/useDateField-CQZb799C.js.map +1 -0
  537. package/dist/{useDefaults-DseelK6y.mjs → useDefaults-BzP4qZBu.js} +2 -2
  538. package/dist/{useDefaults-C0CYry78.js.map → useDefaults-BzP4qZBu.js.map} +1 -1
  539. package/dist/{useFormCheck-BKXrwS3g.mjs → useFormCheck-fArncQY5.js} +3 -3
  540. package/dist/{useFormCheck-DYjLG4WA.js.map → useFormCheck-fArncQY5.js.map} +1 -1
  541. package/dist/{useFormInput-CXl8rpD0.mjs → useFormInput-DZ_3ZH1o.js} +8 -7
  542. package/dist/{useFormInput-ip9hN2AU.js.map → useFormInput-DZ_3ZH1o.js.map} +1 -1
  543. package/dist/{useFormSelect-BM0rsjni.mjs → useFormSelect-CwS8YuiQ.js} +3 -3
  544. package/dist/{useFormSelect-ClmzGzOy.js.map → useFormSelect-CwS8YuiQ.js.map} +1 -1
  545. package/dist/{useForwardExpose-Cob6LlGd.mjs → useForwardExpose-DDvk7mir.js} +5 -13
  546. package/dist/useForwardExpose-DDvk7mir.js.map +1 -0
  547. package/dist/{useId-D1sqXtwx.mjs → useId-Fh-Arhb7.js} +2 -2
  548. package/dist/{useId-BkAY2oh6.js.map → useId-Fh-Arhb7.js.map} +1 -1
  549. package/dist/{useKbd-DfmgFov6.mjs → useKbd-DRsaFU_f.js} +6 -18
  550. package/dist/useKbd-DRsaFU_f.js.map +1 -0
  551. package/dist/{useNumberishToStyle-DgS1slD3.mjs → useNumberishToStyle-DCnYcI6A.js} +2 -2
  552. package/dist/{useNumberishToStyle-BtMa0R27.js.map → useNumberishToStyle-DCnYcI6A.js.map} +1 -1
  553. package/dist/{useRadiusElementClasses-BW832F7F.mjs → useRadiusElementClasses-CKCJjpkK.js} +1 -1
  554. package/dist/{useRadiusElementClasses-DWiUVgex.js.map → useRadiusElementClasses-CKCJjpkK.js.map} +1 -1
  555. package/dist/{useRtl-CGoXBxNo.mjs → useRtl-FeLayV4k.js} +3 -3
  556. package/dist/{useRtl-BSgvbs5F.js.map → useRtl-FeLayV4k.js.map} +1 -1
  557. package/dist/{useSafeScrollLock-Me5LyqjD.mjs → useSafeScrollLock-PVgSASYu.js} +136 -216
  558. package/dist/useSafeScrollLock-PVgSASYu.js.map +1 -0
  559. package/dist/{useShowHide-CBFt1_EW.mjs → useShowHide-C95Y9EKL.js} +15 -14
  560. package/dist/useShowHide-C95Y9EKL.js.map +1 -0
  561. package/dist/{useStateClass-DxlL_m2E.mjs → useStateClass-BF7kf2zK.js} +1 -1
  562. package/dist/{useStateClass-CXK3nCg9.js.map → useStateClass-BF7kf2zK.js.map} +1 -1
  563. package/dist/utils/console.d.mts +2 -0
  564. package/dist/utils/console.d.ts +2 -0
  565. package/dist/utils/keys.d.mts +12 -4
  566. package/dist/utils/keys.d.ts +12 -4
  567. package/dist/{utils-CWvndqPg.mjs → utils-nRGGHA_i.js} +14 -10
  568. package/dist/utils-nRGGHA_i.js.map +1 -0
  569. package/package.json +65 -136
  570. package/dist/BAccordion-D51b9HVD.mjs.map +0 -1
  571. package/dist/BAccordion-DYmuqZIG.js +0 -360
  572. package/dist/BAccordion-DYmuqZIG.js.map +0 -1
  573. package/dist/BAlert-Ce2uxrJi.mjs.map +0 -1
  574. package/dist/BAlert-croEtrQu.js +0 -297
  575. package/dist/BAlert-croEtrQu.js.map +0 -1
  576. package/dist/BApp-B-fUrnpK.mjs.map +0 -1
  577. package/dist/BApp-DOvEe1jo.js +0 -181
  578. package/dist/BApp-DOvEe1jo.js.map +0 -1
  579. package/dist/BAspect-CUIU48Ck.js +0 -50
  580. package/dist/BAspect-wfiXM4KA.mjs.map +0 -1
  581. package/dist/BAutocomplete-CH-bQzME.mjs.map +0 -1
  582. package/dist/BAutocomplete-DLDFAV5_.js +0 -2402
  583. package/dist/BAutocomplete-DLDFAV5_.js.map +0 -1
  584. package/dist/BAvatar-FGK0dK0x.js +0 -386
  585. package/dist/BAvatar-FGK0dK0x.js.map +0 -1
  586. package/dist/BAvatar-iALHbqVk.mjs.map +0 -1
  587. package/dist/BBadge-Cx_CdauK.mjs.map +0 -1
  588. package/dist/BBadge-Db6SEnzy.js +0 -145
  589. package/dist/BBreadcrumb-B9ra7vg2.js +0 -166
  590. package/dist/BBreadcrumb-BxADbg0O.mjs.map +0 -1
  591. package/dist/BButton-BSa7LfL5.mjs.map +0 -1
  592. package/dist/BButton-DRRlzkyK.js +0 -156
  593. package/dist/BButton-PY7AANXJ.mjs.map +0 -1
  594. package/dist/BButton-aYtMnyHu.js +0 -190
  595. package/dist/BCard-BWoruisp.mjs.map +0 -1
  596. package/dist/BCard-Bh8RLMo_.js +0 -52
  597. package/dist/BCard-CHbKv2OR.mjs.map +0 -1
  598. package/dist/BCard-DwNYhVmg.js +0 -444
  599. package/dist/BCarousel-2JB21Pcu.js +0 -427
  600. package/dist/BCarousel-B6_bgQpl.mjs.map +0 -1
  601. package/dist/BCloseButton-CKTKr4PS.mjs.map +0 -1
  602. package/dist/BCloseButton-D42zHRLP.js +0 -45
  603. package/dist/BCol-B3VeEk9z.mjs.map +0 -1
  604. package/dist/BCol-Ck9VydHj.js +0 -140
  605. package/dist/BCollapse-CDLYLSZo.js +0 -183
  606. package/dist/BCollapse-CDLYLSZo.js.map +0 -1
  607. package/dist/BCollapse-kqhe4AmL.mjs.map +0 -1
  608. package/dist/BContainer-ATfhaxTc.mjs.map +0 -1
  609. package/dist/BContainer-CcF6dgtI.js +0 -44
  610. package/dist/BDateField-CccP3H1R.mjs.map +0 -1
  611. package/dist/BDateField-DzZw5FRX.js +0 -919
  612. package/dist/BDateField-DzZw5FRX.js.map +0 -1
  613. package/dist/BDatePicker-BDkzkOcm.js +0 -5138
  614. package/dist/BDatePicker-BDkzkOcm.js.map +0 -1
  615. package/dist/BDatePicker-BnwnSkBg.mjs.map +0 -1
  616. package/dist/BDropdown-0E8x5kk6.mjs.map +0 -1
  617. package/dist/BDropdown-B1DbvVzm.mjs.map +0 -1
  618. package/dist/BDropdown-BPFtkX3p.js +0 -403
  619. package/dist/BDropdown-BPFtkX3p.js.map +0 -1
  620. package/dist/BDropdown-DKCgBzYS.js +0 -415
  621. package/dist/BForm-6JlWdQMO.js +0 -126
  622. package/dist/BForm-BVfW08s5.mjs.map +0 -1
  623. package/dist/BForm-DJu2hDV_.mjs.map +0 -1
  624. package/dist/BForm-cnRpggt9.js +0 -51
  625. package/dist/BFormCheckbox-Baf_9BSc.mjs.map +0 -1
  626. package/dist/BFormCheckbox-D5ySHMJ8.js +0 -489
  627. package/dist/BFormCheckbox-D5ySHMJ8.js.map +0 -1
  628. package/dist/BFormFile-CZebm0Cp.mjs.map +0 -1
  629. package/dist/BFormFile-MISLntyJ.js +0 -423
  630. package/dist/BFormGroup-Bk1t-D1N.js +0 -490
  631. package/dist/BFormGroup-Bk1t-D1N.js.map +0 -1
  632. package/dist/BFormGroup-vysRPb99.mjs.map +0 -1
  633. package/dist/BFormInput-CBwwDjfC.js +0 -142
  634. package/dist/BFormInput-sEfU3CuN.mjs.map +0 -1
  635. package/dist/BFormOtp-C8X3u1od.mjs.map +0 -1
  636. package/dist/BFormOtp-CLrQJRPe.js +0 -542
  637. package/dist/BFormOtp-CLrQJRPe.js.map +0 -1
  638. package/dist/BFormRadio-B2yu-o2v.js +0 -432
  639. package/dist/BFormRadio-B2yu-o2v.js.map +0 -1
  640. package/dist/BFormRadio-COc_IbxC.mjs.map +0 -1
  641. package/dist/BFormRating-CIgPVsH_.mjs.map +0 -1
  642. package/dist/BFormRating-CSdRxN5z.js +0 -263
  643. package/dist/BFormRating-CSdRxN5z.js.map +0 -1
  644. package/dist/BFormSelect-CI92Dv27.js +0 -310
  645. package/dist/BFormSelect-CI92Dv27.js.map +0 -1
  646. package/dist/BFormSelect-P-InkOm-.mjs.map +0 -1
  647. package/dist/BFormSelectOption-DFN4lPRh.mjs.map +0 -1
  648. package/dist/BFormSelectOption-DrwJucNf.js +0 -46
  649. package/dist/BFormSpinbutton-1gTz4nTo.js +0 -447
  650. package/dist/BFormSpinbutton-6qkTBF_4.mjs.map +0 -1
  651. package/dist/BFormTag-CeV0MSRC.js +0 -86
  652. package/dist/BFormTag-CnzI39y9.mjs.map +0 -1
  653. package/dist/BFormTags-BMltSaKL.mjs.map +0 -1
  654. package/dist/BFormTags-BhO60uiL.js +0 -427
  655. package/dist/BFormTags-BhO60uiL.js.map +0 -1
  656. package/dist/BFormTextarea-C3Cj0DWj.js +0 -203
  657. package/dist/BFormTextarea-DN1gAfSo.mjs.map +0 -1
  658. package/dist/BFormValidFeedback-CBYxQLDz.mjs.map +0 -1
  659. package/dist/BFormValidFeedback-Kwxh798d.js +0 -223
  660. package/dist/BImg-JKJLgYYT.js +0 -168
  661. package/dist/BImg-QBS2ECBc.mjs.map +0 -1
  662. package/dist/BInputGroup-Bvlfv6VD.js +0 -55
  663. package/dist/BInputGroup-D4fW324B.js +0 -31
  664. package/dist/BInputGroup-DiTSexkT.mjs.map +0 -1
  665. package/dist/BInputGroup-X2Z53RJx.mjs.map +0 -1
  666. package/dist/BLink-Dfgte6dQ.mjs.map +0 -1
  667. package/dist/BLink-kLEjleB1.js +0 -276
  668. package/dist/BListGroup-C8JOzHTz.js +0 -167
  669. package/dist/BListGroup-DwTLpNiD.mjs.map +0 -1
  670. package/dist/BModal-C-ZCau2E.mjs.map +0 -1
  671. package/dist/BModal-VstTwEq9.js +0 -521
  672. package/dist/BModal-VstTwEq9.js.map +0 -1
  673. package/dist/BNav-DCLambmM.js +0 -453
  674. package/dist/BNav-DfYvjfRK.mjs.map +0 -1
  675. package/dist/BNavbar-BLWaZJRP.js +0 -245
  676. package/dist/BNavbar-xYaikQVY.mjs.map +0 -1
  677. package/dist/BOffcanvas-C7HenFW0.js +0 -331
  678. package/dist/BOffcanvas-C7HenFW0.js.map +0 -1
  679. package/dist/BOffcanvas-CF-dWeez.mjs.map +0 -1
  680. package/dist/BOverlay-Bh2PIN_q.mjs.map +0 -1
  681. package/dist/BOverlay-Bh4ldxgt.js +0 -203
  682. package/dist/BPagination-D75q-ZNg.mjs.map +0 -1
  683. package/dist/BPagination-fbjFAtxu.js +0 -446
  684. package/dist/BPlaceholder-B3rs_39w.js +0 -326
  685. package/dist/BPlaceholder-DPQ6mCLN.mjs.map +0 -1
  686. package/dist/BProgress-BZlrPYhA.mjs.map +0 -1
  687. package/dist/BProgress-th0-eZWo.js +0 -147
  688. package/dist/BRow-7AOuFiSy.js +0 -70
  689. package/dist/BRow-eGSUYGCW.mjs.map +0 -1
  690. package/dist/BSpinner-CUfGqviV.mjs.map +0 -1
  691. package/dist/BSpinner-DbYIp-C7.js +0 -60
  692. package/dist/BTable-BCWW00u_.js +0 -1903
  693. package/dist/BTable-BCWW00u_.js.map +0 -1
  694. package/dist/BTable-DUHxxWv5.mjs.map +0 -1
  695. package/dist/BTableSimple-BkdGAAKb.js +0 -137
  696. package/dist/BTableSimple-C-jn9Nwh.mjs.map +0 -1
  697. package/dist/BTabs-CvecFg5N.js +0 -607
  698. package/dist/BTabs-D_vWlBjT.mjs.map +0 -1
  699. package/dist/BTimeField-BSDaZogC.mjs.map +0 -1
  700. package/dist/BTimeField-BT5HXecp.js +0 -517
  701. package/dist/BTimeField-BT5HXecp.js.map +0 -1
  702. package/dist/BToast-DR0pek4W.js +0 -308
  703. package/dist/BToast-DR0pek4W.js.map +0 -1
  704. package/dist/BToast-Y8BayxES.mjs.map +0 -1
  705. package/dist/BTooltip-CVP8HdkU.mjs.map +0 -1
  706. package/dist/BTooltip-DPLYtaL1.js +0 -213
  707. package/dist/BootstrapVueOptions-DeViqxoD.js +0 -179
  708. package/dist/BootstrapVueOptions-DeViqxoD.js.map +0 -1
  709. package/dist/BootstrapVueOptions-Dt1TQdih.mjs.map +0 -1
  710. package/dist/ConditionalTeleport-B4KYZIM6.mjs.map +0 -1
  711. package/dist/ConditionalTeleport-BDWcebyD.js +0 -34
  712. package/dist/ConditionalWrapper-DZH_VSwb.js +0 -31
  713. package/dist/ConditionalWrapper-Dbc_O6qe.mjs.map +0 -1
  714. package/dist/DateRangeFieldInput-B86VEz0H.mjs.map +0 -1
  715. package/dist/DateRangeFieldInput-HvvI2You.js +0 -762
  716. package/dist/DateRangeFieldInput-HvvI2You.js.map +0 -1
  717. package/dist/PopperContent-BS_eKjzD.js +0 -1515
  718. package/dist/PopperContent-BS_eKjzD.js.map +0 -1
  719. package/dist/PopperContent-DmSgsjSC.mjs.map +0 -1
  720. package/dist/VisuallyHidden-C4sXnc-k.mjs.map +0 -1
  721. package/dist/VisuallyHidden-Cx0phlXT.js +0 -222
  722. package/dist/VisuallyHidden-Cx0phlXT.js.map +0 -1
  723. package/dist/VisuallyHiddenInput-BNrInt6d.js +0 -147
  724. package/dist/VisuallyHiddenInput-BNrInt6d.js.map +0 -1
  725. package/dist/VisuallyHiddenInput-DKIzxsQR.mjs.map +0 -1
  726. package/dist/bootstrap-vue-next.umd.js +0 -275
  727. package/dist/chunk-CoQrYLCe.js +0 -50
  728. package/dist/classes-B0E5Y78Y.mjs.map +0 -1
  729. package/dist/classes-D5wrmmVs.js +0 -92
  730. package/dist/constants-BLIvvaat.js +0 -123
  731. package/dist/constants-Ba9iJn2H.mjs.map +0 -1
  732. package/dist/debounce-D6kifS6w.js +0 -88
  733. package/dist/debounce-DHxNfjan.mjs.map +0 -1
  734. package/dist/dist-DiXKLh_W.js +0 -2064
  735. package/dist/dist-DiXKLh_W.js.map +0 -1
  736. package/dist/dist-Dk9C_HFS.mjs.map +0 -1
  737. package/dist/dom-AhkaSoh8.mjs.map +0 -1
  738. package/dist/dom-Bs6DzM72.js +0 -98
  739. package/dist/dom-Bs6DzM72.js.map +0 -1
  740. package/dist/flattenFragments-C1WWqm25.js +0 -18
  741. package/dist/flattenFragments-ClbLQGqR.mjs.map +0 -1
  742. package/dist/floating-ui.vue-CH2o_mZU.mjs.map +0 -1
  743. package/dist/floating-ui.vue-DDOIU2nS.js +0 -1773
  744. package/dist/floating-ui.vue-DDOIU2nS.js.map +0 -1
  745. package/dist/floatingUi-62aeQtAb.mjs.map +0 -1
  746. package/dist/floatingUi-DQ5bHmy3.js +0 -598
  747. package/dist/floatingUi-DQ5bHmy3.js.map +0 -1
  748. package/dist/functions-BcMenQqL.mjs.map +0 -1
  749. package/dist/functions-Bx1HDqMv.js +0 -11
  750. package/dist/functions-Bx1HDqMv.js.map +0 -1
  751. package/dist/getClasses-8P0iBind.js +0 -19
  752. package/dist/getClasses-COokMI60.mjs.map +0 -1
  753. package/dist/getElement-D2Jr1cbp.mjs.map +0 -1
  754. package/dist/getElement-DWGFJn0w.js +0 -19
  755. package/dist/keys-BMye8nSf.js +0 -187
  756. package/dist/keys-BMye8nSf.js.map +0 -1
  757. package/dist/keys-DU7sQgl3.mjs.map +0 -1
  758. package/dist/object-BN7QwMcz.js +0 -140
  759. package/dist/object-BN7QwMcz.js.map +0 -1
  760. package/dist/object-CHQkkner.mjs.map +0 -1
  761. package/dist/registryAccess-B9QDQwV8.js +0 -39
  762. package/dist/registryAccess-BkJDdh-3.mjs.map +0 -1
  763. package/dist/src/components/BAccordion/index.umd.js +0 -4
  764. package/dist/src/components/BAlert/index.umd.js +0 -3
  765. package/dist/src/components/BApp/index.umd.js +0 -4
  766. package/dist/src/components/BAspect/index.umd.js +0 -3
  767. package/dist/src/components/BAutocomplete/index.umd.js +0 -3
  768. package/dist/src/components/BAvatar/index.umd.js +0 -4
  769. package/dist/src/components/BBadge/index.umd.js +0 -3
  770. package/dist/src/components/BBreadcrumb/index.umd.js +0 -4
  771. package/dist/src/components/BButton/index.umd.js +0 -8
  772. package/dist/src/components/BCard/index.umd.js +0 -12
  773. package/dist/src/components/BCarousel/index.umd.js +0 -4
  774. package/dist/src/components/BCol/index.umd.js +0 -3
  775. package/dist/src/components/BCollapse/index.umd.js +0 -3
  776. package/dist/src/components/BContainer/index.umd.js +0 -7
  777. package/dist/src/components/BDateField/index.umd.js +0 -5
  778. package/dist/src/components/BDatePicker/index.umd.js +0 -4
  779. package/dist/src/components/BDropdown/index.umd.js +0 -11
  780. package/dist/src/components/BForm/index.umd.js +0 -11
  781. package/dist/src/components/BFormCheckbox/index.umd.js +0 -4
  782. package/dist/src/components/BFormFile/index.umd.js +0 -3
  783. package/dist/src/components/BFormGroup/index.umd.js +0 -3
  784. package/dist/src/components/BFormInput/index.umd.js +0 -4
  785. package/dist/src/components/BFormOtp/index.umd.js +0 -3
  786. package/dist/src/components/BFormRadio/index.umd.js +0 -4
  787. package/dist/src/components/BFormRating/index.umd.js +0 -3
  788. package/dist/src/components/BFormSelect/index.umd.js +0 -6
  789. package/dist/src/components/BFormSpinbutton/index.umd.js +0 -3
  790. package/dist/src/components/BFormTags/index.umd.js +0 -5
  791. package/dist/src/components/BFormTextarea/index.umd.js +0 -3
  792. package/dist/src/components/BImg/index.umd.js +0 -3
  793. package/dist/src/components/BInputGroup/index.umd.js +0 -5
  794. package/dist/src/components/BLink/index.umd.js +0 -3
  795. package/dist/src/components/BListGroup/index.umd.js +0 -4
  796. package/dist/src/components/BModal/index.umd.js +0 -3
  797. package/dist/src/components/BNav/index.umd.js +0 -7
  798. package/dist/src/components/BNavbar/index.umd.js +0 -6
  799. package/dist/src/components/BOffcanvas/index.umd.js +0 -3
  800. package/dist/src/components/BOverlay/index.umd.js +0 -3
  801. package/dist/src/components/BPagination/index.umd.js +0 -3
  802. package/dist/src/components/BPlaceholder/index.umd.js +0 -7
  803. package/dist/src/components/BPopover/index.umd.js +0 -3
  804. package/dist/src/components/BProgress/index.umd.js +0 -4
  805. package/dist/src/components/BRow/index.umd.js +0 -3
  806. package/dist/src/components/BSpinner/index.umd.js +0 -3
  807. package/dist/src/components/BTable/index.umd.js +0 -12
  808. package/dist/src/components/BTabs/index.umd.js +0 -4
  809. package/dist/src/components/BTimeField/index.umd.js +0 -3
  810. package/dist/src/components/BToast/index.umd.js +0 -3
  811. package/dist/src/components/BTooltip/index.umd.js +0 -3
  812. package/dist/src/components/index.umd.js +0 -301
  813. package/dist/src/components/index.umd.js.map +0 -1
  814. package/dist/src/composables/index.umd.js +0 -53
  815. package/dist/src/composables/index.umd.js.map +0 -1
  816. package/dist/src/composables/orchestratorShared/index.umd.js +0 -114
  817. package/dist/src/composables/orchestratorShared/index.umd.js.map +0 -1
  818. package/dist/src/composables/useBreadcrumb/index.umd.js +0 -37
  819. package/dist/src/composables/useBreadcrumb/index.umd.js.map +0 -1
  820. package/dist/src/composables/useColorMode/index.umd.js +0 -18
  821. package/dist/src/composables/useColorMode/index.umd.js.map +0 -1
  822. package/dist/src/composables/useModal/index.umd.js +0 -176
  823. package/dist/src/composables/useModal/index.umd.js.map +0 -1
  824. package/dist/src/composables/usePopover/index.umd.js +0 -90
  825. package/dist/src/composables/usePopover/index.umd.js.map +0 -1
  826. package/dist/src/composables/useProvideDefaults/index.umd.js +0 -42
  827. package/dist/src/composables/useProvideDefaults/index.umd.js.map +0 -1
  828. package/dist/src/composables/useRegistry/index.umd.js +0 -135
  829. package/dist/src/composables/useRegistry/index.umd.js.map +0 -1
  830. package/dist/src/composables/useScrollLock/index.umd.js +0 -8
  831. package/dist/src/composables/useScrollLock/index.umd.js.map +0 -1
  832. package/dist/src/composables/useScrollspy/index.umd.js +0 -144
  833. package/dist/src/composables/useScrollspy/index.umd.js.map +0 -1
  834. package/dist/src/composables/useToast/index.umd.js +0 -90
  835. package/dist/src/composables/useToast/index.umd.js.map +0 -1
  836. package/dist/src/composables/useToggle/index.umd.js +0 -34
  837. package/dist/src/composables/useToggle/index.umd.js.map +0 -1
  838. package/dist/src/directives/BColorMode/index.umd.js +0 -15
  839. package/dist/src/directives/BColorMode/index.umd.js.map +0 -1
  840. package/dist/src/directives/BModal/index.umd.js +0 -3
  841. package/dist/src/directives/BPopover/index.umd.js +0 -14
  842. package/dist/src/directives/BPopover/index.umd.js.map +0 -1
  843. package/dist/src/directives/BScrollspy/index.umd.js +0 -35
  844. package/dist/src/directives/BScrollspy/index.umd.js.map +0 -1
  845. package/dist/src/directives/BToggle/index.umd.js +0 -77
  846. package/dist/src/directives/BToggle/index.umd.js.map +0 -1
  847. package/dist/src/directives/BTooltip/index.umd.js +0 -16
  848. package/dist/src/directives/BTooltip/index.umd.js.map +0 -1
  849. package/dist/src/directives/index.umd.js +0 -32
  850. package/dist/src/directives/index.umd.js.map +0 -1
  851. package/dist/src/plugins/createBootstrap/index.umd.js +0 -19
  852. package/dist/src/plugins/createBootstrap/index.umd.js.map +0 -1
  853. package/dist/src/plugins/index.umd.js +0 -26
  854. package/dist/src/plugins/index.umd.js.map +0 -1
  855. package/dist/src/plugins/orchestrator/index.umd.js +0 -13
  856. package/dist/src/plugins/orchestrator/index.umd.js.map +0 -1
  857. package/dist/src/plugins/registry/index.umd.js +0 -62
  858. package/dist/src/plugins/registry/index.umd.js.map +0 -1
  859. package/dist/src/plugins/rtl/index.umd.js +0 -21
  860. package/dist/src/plugins/rtl/index.umd.js.map +0 -1
  861. package/dist/src/resolvers/index.umd.js +0 -94
  862. package/dist/src/resolvers/index.umd.js.map +0 -1
  863. package/dist/src/types/index.umd.js +0 -27
  864. package/dist/src/types/index.umd.js.map +0 -1
  865. package/dist/src/utils/index.umd.js +0 -21
  866. package/dist/src/utils/index.umd.js.map +0 -1
  867. package/dist/stringUtils-68ZN_GRt.js +0 -71
  868. package/dist/stringUtils-D4eEDlt1.mjs.map +0 -1
  869. package/dist/useAlignment-DuR8ymKI.mjs.map +0 -1
  870. package/dist/useAlignment-oKolnDpb.js +0 -16
  871. package/dist/useAriaInvalid-CHHPHNLU.js +0 -17
  872. package/dist/useAriaInvalid-apOwgexm.mjs.map +0 -1
  873. package/dist/useColorVariantClasses-CqeXHjRh.mjs.map +0 -1
  874. package/dist/useColorVariantClasses-Dq0sOYDL.js +0 -27
  875. package/dist/useCountdownHover-C3NXiAaF.mjs.map +0 -1
  876. package/dist/useCountdownHover-DbVhE-N0.js +0 -104
  877. package/dist/useDateField-CJKgollJ.mjs.map +0 -1
  878. package/dist/useDateField-DWv3600o.js +0 -3872
  879. package/dist/useDateField-DWv3600o.js.map +0 -1
  880. package/dist/useDefaults-C0CYry78.js +0 -76
  881. package/dist/useDefaults-DseelK6y.mjs.map +0 -1
  882. package/dist/useFormCheck-BKXrwS3g.mjs.map +0 -1
  883. package/dist/useFormCheck-DYjLG4WA.js +0 -82
  884. package/dist/useFormInput-CXl8rpD0.mjs.map +0 -1
  885. package/dist/useFormInput-ip9hN2AU.js +0 -117
  886. package/dist/useFormSelect-BM0rsjni.mjs.map +0 -1
  887. package/dist/useFormSelect-ClmzGzOy.js +0 -58
  888. package/dist/useForwardExpose-BpZJluPs.js +0 -80
  889. package/dist/useForwardExpose-BpZJluPs.js.map +0 -1
  890. package/dist/useForwardExpose-Cob6LlGd.mjs.map +0 -1
  891. package/dist/useId-BkAY2oh6.js +0 -17
  892. package/dist/useId-D1sqXtwx.mjs.map +0 -1
  893. package/dist/useKbd-DfmgFov6.mjs.map +0 -1
  894. package/dist/useKbd-sqDCJtXL.js +0 -105
  895. package/dist/useKbd-sqDCJtXL.js.map +0 -1
  896. package/dist/useNumberishToStyle-BtMa0R27.js +0 -18
  897. package/dist/useNumberishToStyle-DgS1slD3.mjs.map +0 -1
  898. package/dist/useRadiusElementClasses-BW832F7F.mjs.map +0 -1
  899. package/dist/useRadiusElementClasses-DWiUVgex.js +0 -28
  900. package/dist/useRtl-BSgvbs5F.js +0 -26
  901. package/dist/useRtl-CGoXBxNo.mjs.map +0 -1
  902. package/dist/useSafeScrollLock-7wmPH_Hy.js +0 -1418
  903. package/dist/useSafeScrollLock-7wmPH_Hy.js.map +0 -1
  904. package/dist/useSafeScrollLock-Me5LyqjD.mjs.map +0 -1
  905. package/dist/useShowHide-CBFt1_EW.mjs.map +0 -1
  906. package/dist/useShowHide-CHm2uUep.js +0 -436
  907. package/dist/useShowHide-CHm2uUep.js.map +0 -1
  908. package/dist/useStateClass-CXK3nCg9.js +0 -16
  909. package/dist/useStateClass-DxlL_m2E.mjs.map +0 -1
  910. package/dist/utils-CWvndqPg.mjs.map +0 -1
  911. package/dist/utils-Dk9yAtbs.js +0 -186
  912. package/dist/utils-Dk9yAtbs.js.map +0 -1
  913. /package/dist/{chunk-D1SwGrFN.mjs → rolldown-runtime-BBjsoOtd.js} +0 -0
@@ -1,6 +1,6 @@
1
- import { t as useDefaults } from "./useDefaults-DseelK6y.mjs";
2
- import { t as useId$1 } from "./useId-D1sqXtwx.mjs";
3
- import { t as useRtl } from "./useRtl-CGoXBxNo.mjs";
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 = ["onClick"];
23
- var _hoisted_4 = { class: "b-form-rating-star" };
24
- var _hoisted_5 = ["width", "height"];
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 _hoisted_7 = {
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 _hoisted_8 = {
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: /* @__PURE__ */ mergeModels({
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": `${displayValue.value} of ${clampedStars.value}`,
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", {}, () => [_cache[0] || (_cache[0] = createElementVNode("svg", {
225
+ }, [renderSlot(_ctx.$slots, "icon-clear", {}, () => [(openBlock(), createElementBlock("svg", {
220
226
  viewBox: "0 0 16 16",
221
227
  role: "img",
222
- "aria-label": "x",
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" })])], -1))])])) : createCommentVNode("", true),
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", _hoisted_4, [(openBlock(), createElementBlock("svg", {
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", _hoisted_6)) : isIconHalf(index) ? (openBlock(), createElementBlock("path", _hoisted_7)) : (openBlock(), createElementBlock("path", _hoisted_8))], 14, _hoisted_5))])])], 8, _hoisted_3);
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-CIgPVsH_.mjs.map
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":"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"}
@@ -1,11 +1,12 @@
1
- import { d as formGroupKey, f as formSelectKey } from "./keys-DU7sQgl3.mjs";
2
- import { R as useToNumber, m as useFocus } from "./dist-Dk9C_HFS.mjs";
3
- import { t as useDefaults } from "./useDefaults-DseelK6y.mjs";
4
- import { t as useId$1 } from "./useId-D1sqXtwx.mjs";
5
- import { t as useAriaInvalid } from "./useAriaInvalid-apOwgexm.mjs";
6
- import { t as useStateClass } from "./useStateClass-DxlL_m2E.mjs";
7
- import { t as useFormSelect } from "./useFormSelect-BM0rsjni.mjs";
8
- import { t as BFormSelectOption_default } from "./BFormSelectOption-DFN4lPRh.mjs";
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: /* @__PURE__ */ mergeModels({
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": { default: "" },
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: /* @__PURE__ */ mergeModels({
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-P-InkOm-.mjs.map
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":";;;;;;;;;;;;;;;;;;;;;;;;EAkCA,MAAM,QAAQ,YAAY,SAAQ,wBAAwB;EAU1D,MAAM,EAAC,sBAAqB,oBAAoB,MAAM,SAAS,KAAK;;GA3ClE,OAAA,UAAA,GAAA,mBAYW,YAAA,EAZA,OAAO,MAAA,KAAA,CAAK,CAAC,MAAA,GAAA;IACtB,WAAqB,KAAA,QAAA,OAAA;KACrB,UAAA,IAAA,GAAA,mBAQoB,UAAA,MAAA,WAPQ,MAAA,iBAAA,IAAlB,QAAQ,UAAK;KADvB,OAAA,UAAA,GAAA,YAQoB,2BARpB,WAQoB,EANjB,KAAK,MAAK,GAAA,EAAA,SAAA,KAAA,GAAA;MAAA,GACCA,KAAAA;MAAM,GAAK;KAAM,CAAA,GAAA;MAE7B,SAAA,cAEO,CAFP,WAEO,KAAA,QAAA,UAFP,WAEO,EAAA,SAAA,KAAA,GAFqB,MAAM,SAE3B,CADF,gBAAA,gBAAA,OAAO,IAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;IAGlB,WAAQ,KAAA,QAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EE6DZ,MAAM,QAAQ,YAAY,SAAQ,aAAa;EAE/C,MAAM,aAAa,SAA+C,SAAA,YAEjE;EAED,MAAM,aAAa,cAAY,MAAM,IAAI,OAAO;EAEhD,MAAM,gBAAgB,OAAO,cAAc,IAAI,CAAC,GAAG;EACnD,eAAe,MAAM,UAAU;EAC/B,MAAM,aAAa,eAAe,MAAM,aAAa,eAAe,SAAS,SAAS,MAAM;EAE5F,MAAM,mBAAmB,kBAAkB,MAAM,UAAU;EAE3D,MAAM,aAAa,oBAAoB,MAAM,KAAK;EAElD,MAAM,QAAQ,eAAe,QAAQ;EAErC,MAAM,EAAC,YAAW,SAAS,OAAO,EAChC,cAAc,MAAM,UACtB,CAAC;EAED,MAAM,kBAAkB,eAAe,CACrC,WAAW,OACX;GACE,gBAAgB,MAAM;IACrB,gBAAgB,MAAM,SAAS,MAAM,SAAS,KAAA,KAAa,MAAM;GAClE,eAAe,CAAC,MAAM;IACrB,eAAe,MAAM,SAAS,MAAM,SAAS,KAAA,KAAa,CAAC,MAAM;EACpE,CACF,CAAC;EAED,MAAM,qBAAqB,eACzB,CAAC,MAAM,SAAS,iBAAiB,QAAQ,IAAI,iBAAiB,QAAQ,KAAA,CACxE;EAEA,MAAM,sBAAsB,qBACpB,MAAM,mBACN,MAAM,KACd;EAEA,MAAM,EAAC,mBAAmB,cAAa,oBAAoB,MAAM,SAAS,KAAK;EAE/E,MAAM,wBAAwB,eAAe,kBAAkB,KAAK;EAEpE,MAAM,aAAa,SAAS;GAC1B,WAAW,WAAW;GACtB,MAAM,aAAa;IACjB,WAAW,QAAQ;GACrB;EACF,CAAC;EAGD,QAAQ,eAAe,EACrB,YAAY,SAAS,UAAU,EACjC,CAAC;EAED,SAAa;GACX,YAAY;IACV,QAAQ,QAAQ;GAClB;GACA,SAAS;GACT,aAAa;IACX,QAAQ,QAAQ;GAClB;EACF,CAAC;;GAzIC,OAAA,gBAAA,UAAA,GAAA,mBA+BS,UAAA;IA9BN,IAAI,MAAA,UAAA;IACL,KAAI;IACK,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,WAAU,QAAA;IAClB,OAAK,eAAE,gBAAA,KAAe;IACtB,MAAM,MAAA,KAAA,CAAK,CAAC;IACZ,MAAM,MAAA,KAAA,CAAK,CAAC,QAAQ,KAAA;IACpB,UAAU,MAAA,KAAA,CAAK,CAAC,YAAY,KAAA;IAC5B,MAAM,mBAAA;IACN,UAAU,WAAA;IACV,UAAU,MAAA,KAAA,CAAK,CAAC,YAAY,KAAA;IAC5B,iBAAe,MAAA,KAAA,CAAK,CAAC,YAAY,KAAA;IACjC,gBAAc,MAAA,mBAAA;;IAEf,WAAqB,KAAA,QAAA,OAAA;KACrB,UAAA,IAAA,GAAA,mBAcW,UAAA,MAAA,WAdyB,sBAAA,QAAlB,QAAQ,UAAK;KAAkC,OAAA,UAAA,GAAA,mBAAA,UAAA,EAAA,KAAA,MAAK,GAAA,CAE5D,MAAA,SAAA,CAAS,CAAC,MAAM,KADxB,UAAA,GAAA,YAOE,gCAAA;;MALC,OAAO,OAAO;MACd,SAAS,OAAO;MAChB,eAAa,MAAA,KAAA,CAAK,CAAC;MACnB,cAAY,MAAA,KAAA,CAAK,CAAC;MAClB,kBAAgB,MAAA,KAAA,CAAK,CAAC;;;;;;;KAEzB,CAAA,MAAA,UAAA,GAAA,YAIoB,2BAJpB,WAIoB;;;KAJc,GAAA,MAAM,GAAA;MACtC,SAAA,cAEO,CAFP,WAEO,KAAA,QAAA,UAFP,WAEO,EAAA,SAAA,KAAA,GAFqB,MAAM,SAE3B,CADF,gBAAA,gBAAA,OAAO,IAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;IAIpB,WAAQ,KAAA,QAAA,SAAA;GA3BC,GAAA,IAAA,UAAA,IAAA,CAAA,CAAA,cAAA,WAAA,KAAU,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEiDvB,MAAM,QAAQ;EAyBd,MAAM,aAAa,SAAqE,SAAA,YAGvF;EAGD,MAAM,yBAAyB,QAC5B;GACC,GAAI;GACJ,OAAQ,GAA+B,MAAM;GAC7C,MAAQ,GAA+B,MAAM,cAA+C;GAC5F,UACI,GAA+B,MAAM,kBACvC;EACJ;EAEF,MAAM,sBAAsB,QACzB;GAAC,OAAO;GAAI,MAAM,OAAO,EAAE;GAAG,UAAU;EAAK;EAGhD,MAAM,oBAAoB,eAAe;GACvC,MAAM,eAAe,MAAM,WAAW,CAAC;GASvC,IAR0B,aAAa,MACpC,OACC,OAAO,OAAO,YACd,OAAO,OAAO,YACd,OAAO,OAAO,aACb,GAA+B,MAAM,kBAA4B,KAAA,CAGlE,GACF,OAAO,aAAa,KAAK,OAAO;IAC9B,IAAI,OAAO,OAAO,YAAY,OAAO,OAAO,YAAY,OAAO,OAAO,WACpE,OAAO,mBAAmB,EAAE;IAI9B,MAAM,eAAgB,GAA+B,MAAM;IAC3D,IAAI,iBAAiB,KAAA,KAAa,MAAM,QAAQ,YAAY,GAM1D,OAAO;KACL,OAJE,GAA+B,MAAM,eACrC,GAA+B,MAAM,cACvC;KAGA,SAAS,aAAa,KAAK,WAAoB;MAC7C,IACE,OAAO,WAAW,YAClB,OAAO,WAAW,YAClB,OAAO,WAAW,WAElB,OAAO,mBAAmB,MAAM;MAElC,OAAO,sBAAsB,MAAgB;KAC/C,CAAC;IACH;IAIF,OAAO,sBAAsB,EAAY;GAC3C,CAAC;GAGH,OAAO,aAAa,KAAK,OAAO;IAC9B,IAAI,OAAO,OAAO,YAAY,OAAO,OAAO,YAAY,OAAO,OAAO,WACpE,OAAO,mBAAmB,EAAE;IAG9B,OAAO,sBAAsB,EAAY;GAC3C,CAAC;EACH,CAAC;EAID,MAAM,iBAAiB,gBAAgB;GACrC,aAAa,MAAM;GACnB,WAAW,MAAM;GACjB,UAAU,MAAM;GAChB,MAAM,MAAM;GACZ,IAAI,MAAM;GACV,UAAU,MAAM;GAChB,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,UAAU,MAAM;GAChB,YAAY,MAAM;GAClB,MAAM,MAAM;GACZ,OAAO,MAAM;EACf,EAAE;;GArKA,OAAA,UAAA,GAAA,YAekB,yBAflB,WACU,eAcQ,OAdM;IACb,YAAA,WAAA;IAAA,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,WAAA,QAAU;IAClB,SAAS,kBAAA;;IAGC,OAAK,cACO,CAArB,WAAqB,KAAA,QAAA,OAAA,CAAA,CAAA;IAGZ,QAAM,SAAE,cAAS,CAC1B,WAAgD,KAAA,QAAA,UAAA,eAAA,mBAApB,SAAS,CAAA,CAAA,CAAA,CAAA;IAGvC,SAAA,cAAQ,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { f as formSelectKey } from "./keys-DU7sQgl3.mjs";
2
- import { t as useDefaults } from "./useDefaults-DseelK6y.mjs";
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-DFN4lPRh.mjs.map
40
+ //# sourceMappingURL=BFormSelectOption-C8orMj24.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BFormSelectOption-DrwJucNf.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,oBAAA,YAJC,SAI8C,oBAAmB;EAIhF,MAAM,qBAAA,GAAA,IAAA,QAA2B,aAAA,eAAe,KAAI;EAEpD,MAAM,cAAA,GAAA,IAAA,gBAA4B;AAChC,OAAI,CAAC,kBAAmB,QAAO;AAC/B,UAAO,kBAAkB,WAAW,UAAU,MAAM;IACrD;;4DAtBU,WAAA,GAAA,IAAA,YAAA;IAFA,QAAA,GAAA,IAAA,OAAO,MAAK,CAAC;IAAQ,WAAA,GAAA,IAAA,OAAU,MAAK,CAAC;IAAW,UAAU,WAAA;MAAoBA,KAAAA,OAAM,EAAA,EAAA,GAAA,IAAA,YACnF,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA"}
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 { R as useToNumber, a as onKeyStroke, m as useFocus } from "./dist-Dk9C_HFS.mjs";
2
- import { i as getSafeDocument } from "./dom-AhkaSoh8.mjs";
3
- import { t as useDefaults } from "./useDefaults-DseelK6y.mjs";
4
- import { t as useId$1 } from "./useId-D1sqXtwx.mjs";
5
- import { a as CODE_PAGEUP, i as CODE_PAGEDOWN, n as CODE_HOME, s as CODE_UP, t as CODE_DOWN } from "./constants-Ba9iJn2H.mjs";
6
- import { t as useRtl } from "./useRtl-CGoXBxNo.mjs";
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: /* @__PURE__ */ mergeModels({
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: /* @__PURE__ */ mergeModels(["change"], ["update:modelValue"]),
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-6qkTBF_4.mjs.map
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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"}