bootstrap-vue-next 0.44.2 → 0.44.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. package/dist/{BAccordion-CQIw-5xs.js → BAccordion-CJZMsvwP.js} +6 -6
  2. package/dist/{BAccordion-CQIw-5xs.js.map → BAccordion-CJZMsvwP.js.map} +1 -1
  3. package/dist/{BAccordion-BJcDjMYL.mjs → BAccordion-CNzV6f8e.mjs} +6 -6
  4. package/dist/{BAccordion-BJcDjMYL.mjs.map → BAccordion-CNzV6f8e.mjs.map} +1 -1
  5. package/dist/{BAlert-CVtoW2SX.js → BAlert-BnT7fF6B.js} +9 -9
  6. package/dist/{BAlert-CVtoW2SX.js.map → BAlert-BnT7fF6B.js.map} +1 -1
  7. package/dist/{BAlert-DaQxH8c1.mjs → BAlert-Qiyqq4rE.mjs} +9 -9
  8. package/dist/{BAlert-DaQxH8c1.mjs.map → BAlert-Qiyqq4rE.mjs.map} +1 -1
  9. package/dist/{BApp-CIu-zI8K.mjs → BApp-DJWC2mB8.mjs} +2 -2
  10. package/dist/{BApp-CIu-zI8K.mjs.map → BApp-DJWC2mB8.mjs.map} +1 -1
  11. package/dist/{BApp-cBKQc5Dd.js → BApp-DaM0UKIg.js} +2 -2
  12. package/dist/{BApp-cBKQc5Dd.js.map → BApp-DaM0UKIg.js.map} +1 -1
  13. package/dist/BAspect-BULTO240.js +50 -0
  14. package/dist/BAspect-BULTO240.js.map +1 -0
  15. package/dist/BAspect-CwokVvvn.mjs +44 -0
  16. package/dist/BAspect-CwokVvvn.mjs.map +1 -0
  17. package/dist/BAutocomplete-C7Odx4At.js +2342 -0
  18. package/dist/BAutocomplete-C7Odx4At.js.map +1 -0
  19. package/dist/BAutocomplete-Depalqe-.mjs +2336 -0
  20. package/dist/BAutocomplete-Depalqe-.mjs.map +1 -0
  21. package/dist/{BAvatar-C7Vc4wad.mjs → BAvatar-D7aFEXLH.mjs} +8 -8
  22. package/dist/{BAvatar-C7Vc4wad.mjs.map → BAvatar-D7aFEXLH.mjs.map} +1 -1
  23. package/dist/{BAvatar-BcQeFYZU.js → BAvatar-lefHkDuG.js} +8 -8
  24. package/dist/{BAvatar-BcQeFYZU.js.map → BAvatar-lefHkDuG.js.map} +1 -1
  25. package/dist/{BBadge-CKGGd4xB.js → BBadge-BBUcrujj.js} +5 -5
  26. package/dist/{BBadge-CKGGd4xB.js.map → BBadge-BBUcrujj.js.map} +1 -1
  27. package/dist/{BBadge-Dfkx4SMN.mjs → BBadge-D5ra3W5R.mjs} +5 -5
  28. package/dist/{BBadge-Dfkx4SMN.mjs.map → BBadge-D5ra3W5R.mjs.map} +1 -1
  29. package/dist/{BBreadcrumb-1Wxpf1iy.js → BBreadcrumb-BSsiwCNB.js} +4 -4
  30. package/dist/{BBreadcrumb-1Wxpf1iy.js.map → BBreadcrumb-BSsiwCNB.js.map} +1 -1
  31. package/dist/{BBreadcrumb-CR35-KcI.mjs → BBreadcrumb-amkzWyz6.mjs} +4 -4
  32. package/dist/{BBreadcrumb-CR35-KcI.mjs.map → BBreadcrumb-amkzWyz6.mjs.map} +1 -1
  33. package/dist/{BButton-1yV1UiT7.mjs → BButton-BRvIFnRm.mjs} +5 -5
  34. package/dist/{BButton-1yV1UiT7.mjs.map → BButton-BRvIFnRm.mjs.map} +1 -1
  35. package/dist/{BButton-BID3NrxE.js → BButton-DBRs8Pz_.js} +5 -5
  36. package/dist/{BButton-BID3NrxE.js.map → BButton-DBRs8Pz_.js.map} +1 -1
  37. package/dist/{BButton-BtCX70_2.mjs → BButton-DNmtqoqR.mjs} +5 -5
  38. package/dist/{BButton-BtCX70_2.mjs.map → BButton-DNmtqoqR.mjs.map} +1 -1
  39. package/dist/{BButton-C_bVBx8e.js → BButton-kykTWnBy.js} +5 -5
  40. package/dist/{BButton-C_bVBx8e.js.map → BButton-kykTWnBy.js.map} +1 -1
  41. package/dist/{BCard-Vf1haqo5.mjs → BCard-C1G8PO5k.mjs} +6 -6
  42. package/dist/{BCard-Vf1haqo5.mjs.map → BCard-C1G8PO5k.mjs.map} +1 -1
  43. package/dist/{BCard-CY6iY456.mjs → BCard-CJ822HyH.mjs} +3 -3
  44. package/dist/{BCard-CY6iY456.mjs.map → BCard-CJ822HyH.mjs.map} +1 -1
  45. package/dist/{BCard-D1J5OVRY.js → BCard-CSyEHz8Z.js} +3 -3
  46. package/dist/{BCard-D1J5OVRY.js.map → BCard-CSyEHz8Z.js.map} +1 -1
  47. package/dist/{BCard-BIQQg9Rx.js → BCard-CgbTFn3S.js} +6 -6
  48. package/dist/{BCard-BIQQg9Rx.js.map → BCard-CgbTFn3S.js.map} +1 -1
  49. package/dist/{BCarousel-BH6WIvJx.js → BCarousel-Be7z13f9.js} +10 -7
  50. package/dist/BCarousel-Be7z13f9.js.map +1 -0
  51. package/dist/{BCarousel-C3CA_wGV.mjs → BCarousel-D81alfFC.mjs} +10 -7
  52. package/dist/BCarousel-D81alfFC.mjs.map +1 -0
  53. package/dist/{BCloseButton-CgIVNv2g.js → BCloseButton-CN__Jjcj.js} +2 -2
  54. package/dist/{BCloseButton-CgIVNv2g.js.map → BCloseButton-CN__Jjcj.js.map} +1 -1
  55. package/dist/{BCloseButton-DrD0tpan.mjs → BCloseButton-CjgbR1Ec.mjs} +2 -2
  56. package/dist/{BCloseButton-DrD0tpan.mjs.map → BCloseButton-CjgbR1Ec.mjs.map} +1 -1
  57. package/dist/{BCol-GOE5drq_.js → BCol-0tZmpOme.js} +3 -3
  58. package/dist/{BCol-GOE5drq_.js.map → BCol-0tZmpOme.js.map} +1 -1
  59. package/dist/{BCol-BjC3q-su.mjs → BCol-C4v-TOX6.mjs} +3 -3
  60. package/dist/{BCol-BjC3q-su.mjs.map → BCol-C4v-TOX6.mjs.map} +1 -1
  61. package/dist/{BCollapse-DqeS5WyB.mjs → BCollapse-D-xTGkX_.mjs} +4 -4
  62. package/dist/{BCollapse-DqeS5WyB.mjs.map → BCollapse-D-xTGkX_.mjs.map} +1 -1
  63. package/dist/{BCollapse-BMSZfqqk.js → BCollapse-DZ1z2c8U.js} +4 -4
  64. package/dist/{BCollapse-BMSZfqqk.js.map → BCollapse-DZ1z2c8U.js.map} +1 -1
  65. package/dist/{BContainer-CdNYUb9S.js → BContainer-BZUI2qQv.js} +4 -4
  66. package/dist/{BContainer-CdNYUb9S.js.map → BContainer-BZUI2qQv.js.map} +1 -1
  67. package/dist/{BContainer-NRhwYcFj.mjs → BContainer-DjIGH6-y.mjs} +4 -4
  68. package/dist/{BContainer-NRhwYcFj.mjs.map → BContainer-DjIGH6-y.mjs.map} +1 -1
  69. package/dist/{BDateField-CRFFJ4Sj.mjs → BDateField-BJIq6gs9.mjs} +8 -6
  70. package/dist/{BDateField-CRFFJ4Sj.mjs.map → BDateField-BJIq6gs9.mjs.map} +1 -1
  71. package/dist/{BDateField-3Xb73vd-.js → BDateField-RWwEMIwd.js} +17 -15
  72. package/dist/{BDateField-3Xb73vd-.js.map → BDateField-RWwEMIwd.js.map} +1 -1
  73. package/dist/{BDatePicker-rdtRZlra.js → BDatePicker-BQN6qZXa.js} +74 -1556
  74. package/dist/BDatePicker-BQN6qZXa.js.map +1 -0
  75. package/dist/{BDatePicker-DPtAqGyV.mjs → BDatePicker-DfzZBWjU.mjs} +15 -1497
  76. package/dist/BDatePicker-DfzZBWjU.mjs.map +1 -0
  77. package/dist/{BDropdown-k-nulez8.mjs → BDropdown-BW_O8vPQ.mjs} +5 -5
  78. package/dist/{BDropdown-k-nulez8.mjs.map → BDropdown-BW_O8vPQ.mjs.map} +1 -1
  79. package/dist/{BDropdown-C2L69dLN.js → BDropdown-C1AxRj81.js} +15 -12
  80. package/dist/BDropdown-C1AxRj81.js.map +1 -0
  81. package/dist/{BDropdown-CrgX7oCn.js → BDropdown-CuVOxCzu.js} +5 -5
  82. package/dist/{BDropdown-CrgX7oCn.js.map → BDropdown-CuVOxCzu.js.map} +1 -1
  83. package/dist/{BDropdown-CKnx6hUH.mjs → BDropdown-DAHnN54Z.mjs} +15 -12
  84. package/dist/BDropdown-DAHnN54Z.mjs.map +1 -0
  85. package/dist/{BForm-B0YEolfQ.js → BForm-Bp7SFxiK.js} +2 -2
  86. package/dist/{BForm-B0YEolfQ.js.map → BForm-Bp7SFxiK.js.map} +1 -1
  87. package/dist/{BForm-ppPvhIuu.js → BForm-BqHUnHpU.js} +8 -7
  88. package/dist/{BForm-ppPvhIuu.js.map → BForm-BqHUnHpU.js.map} +1 -1
  89. package/dist/{BForm-DZW1uWD-.mjs → BForm-IL7Rf_27.mjs} +7 -6
  90. package/dist/{BForm-DZW1uWD-.mjs.map → BForm-IL7Rf_27.mjs.map} +1 -1
  91. package/dist/{BForm-CPHblWb2.mjs → BForm-Oh6PpdcD.mjs} +2 -2
  92. package/dist/{BForm-CPHblWb2.mjs.map → BForm-Oh6PpdcD.mjs.map} +1 -1
  93. package/dist/{BFormCheckbox-MEwee9Ij.js → BFormCheckbox-Bdk2rgVe.js} +6 -6
  94. package/dist/{BFormCheckbox-MEwee9Ij.js.map → BFormCheckbox-Bdk2rgVe.js.map} +1 -1
  95. package/dist/{BFormCheckbox-CsN1a4jm.mjs → BFormCheckbox-CcDK-lh1.mjs} +6 -6
  96. package/dist/{BFormCheckbox-CsN1a4jm.mjs.map → BFormCheckbox-CcDK-lh1.mjs.map} +1 -1
  97. package/dist/{BFormFile-BEHeBj6q.js → BFormFile-BWknj7fW.js} +5 -5
  98. package/dist/{BFormFile-BEHeBj6q.js.map → BFormFile-BWknj7fW.js.map} +1 -1
  99. package/dist/{BFormFile-CNtEA98J.mjs → BFormFile-Bf3GMYeX.mjs} +5 -5
  100. package/dist/{BFormFile-CNtEA98J.mjs.map → BFormFile-Bf3GMYeX.mjs.map} +1 -1
  101. package/dist/{BFormGroup-DBVGyJ-f.mjs → BFormGroup--38dFj0X.mjs} +9 -9
  102. package/dist/{BFormGroup-DBVGyJ-f.mjs.map → BFormGroup--38dFj0X.mjs.map} +1 -1
  103. package/dist/{BFormGroup-CGjb_pUi.js → BFormGroup-BwO1BZD1.js} +9 -9
  104. package/dist/{BFormGroup-CGjb_pUi.js.map → BFormGroup-BwO1BZD1.js.map} +1 -1
  105. package/dist/{BFormInput-4vCGzAoO.js → BFormInput-BuRSGYdY.js} +3 -3
  106. package/dist/{BFormInput-4vCGzAoO.js.map → BFormInput-BuRSGYdY.js.map} +1 -1
  107. package/dist/{BFormInput-DrZnHCLO.mjs → BFormInput-Dg9dbwHp.mjs} +3 -3
  108. package/dist/{BFormInput-DrZnHCLO.mjs.map → BFormInput-Dg9dbwHp.mjs.map} +1 -1
  109. package/dist/{BFormRadio-BXpiJTsS.mjs → BFormRadio-CRDbgMiR.mjs} +6 -6
  110. package/dist/{BFormRadio-BXpiJTsS.mjs.map → BFormRadio-CRDbgMiR.mjs.map} +1 -1
  111. package/dist/{BFormRadio-BzHsRe9X.js → BFormRadio-DuVYw-Vs.js} +6 -6
  112. package/dist/{BFormRadio-BzHsRe9X.js.map → BFormRadio-DuVYw-Vs.js.map} +1 -1
  113. package/dist/{BFormRating-Cq94zurU.mjs → BFormRating-Bb_ACp-9.mjs} +4 -4
  114. package/dist/{BFormRating-Cq94zurU.mjs.map → BFormRating-Bb_ACp-9.mjs.map} +1 -1
  115. package/dist/{BFormRating-_MVRGNOF.js → BFormRating-CNqf91vN.js} +4 -4
  116. package/dist/{BFormRating-_MVRGNOF.js.map → BFormRating-CNqf91vN.js.map} +1 -1
  117. package/dist/{BFormSelect-DbpJ_0j-.mjs → BFormSelect-Dg6OwMl-.mjs} +8 -7
  118. package/dist/{BFormSelect-DbpJ_0j-.mjs.map → BFormSelect-Dg6OwMl-.mjs.map} +1 -1
  119. package/dist/{BFormSelect-DFa1-5ez.js → BFormSelect-DqSojuY_.js} +10 -9
  120. package/dist/{BFormSelect-DFa1-5ez.js.map → BFormSelect-DqSojuY_.js.map} +1 -1
  121. package/dist/BFormSelectOption-BY4P8HOf.js +46 -0
  122. package/dist/BFormSelectOption-BY4P8HOf.js.map +1 -0
  123. package/dist/BFormSelectOption-O8cyyv3i.mjs +40 -0
  124. package/dist/BFormSelectOption-O8cyyv3i.mjs.map +1 -0
  125. package/dist/{BFormSpinbutton-DmzfRDeR.mjs → BFormSpinbutton-BLO0Yf36.mjs} +6 -6
  126. package/dist/{BFormSpinbutton-DmzfRDeR.mjs.map → BFormSpinbutton-BLO0Yf36.mjs.map} +1 -1
  127. package/dist/{BFormSpinbutton-DzJ071Gz.js → BFormSpinbutton-BaOTL1k1.js} +6 -6
  128. package/dist/{BFormSpinbutton-DzJ071Gz.js.map → BFormSpinbutton-BaOTL1k1.js.map} +1 -1
  129. package/dist/BFormTag-BUWEugEC.mjs +80 -0
  130. package/dist/BFormTag-BUWEugEC.mjs.map +1 -0
  131. package/dist/BFormTag-C7B-bX72.js +86 -0
  132. package/dist/BFormTag-C7B-bX72.js.map +1 -0
  133. package/dist/{BFormTags-pK9i3cOB.js → BFormTags-BFA6xbr3.js} +12 -88
  134. package/dist/BFormTags-BFA6xbr3.js.map +1 -0
  135. package/dist/{BFormTags-Cobh04P9.mjs → BFormTags-CJb4H67g.mjs} +13 -83
  136. package/dist/BFormTags-CJb4H67g.mjs.map +1 -0
  137. package/dist/{BFormTextarea-BtXarcjA.js → BFormTextarea-8c3B3kAI.js} +4 -4
  138. package/dist/{BFormTextarea-BtXarcjA.js.map → BFormTextarea-8c3B3kAI.js.map} +1 -1
  139. package/dist/{BFormTextarea-ClcoJrSM.mjs → BFormTextarea-BMk05ojJ.mjs} +4 -4
  140. package/dist/{BFormTextarea-ClcoJrSM.mjs.map → BFormTextarea-BMk05ojJ.mjs.map} +1 -1
  141. package/dist/{BFormValidFeedback-Ot8gdDST.js → BFormValidFeedback-DvTgwqSe.js} +3 -3
  142. package/dist/{BFormValidFeedback-Ot8gdDST.js.map → BFormValidFeedback-DvTgwqSe.js.map} +1 -1
  143. package/dist/{BFormValidFeedback-foz9BlkH.mjs → BFormValidFeedback-_Dgzm0Ag.mjs} +3 -3
  144. package/dist/{BFormValidFeedback-foz9BlkH.mjs.map → BFormValidFeedback-_Dgzm0Ag.mjs.map} +1 -1
  145. package/dist/{BImg-b_3eTiEq.mjs → BImg-BQqZfIM9.mjs} +5 -5
  146. package/dist/{BImg-b_3eTiEq.mjs.map → BImg-BQqZfIM9.mjs.map} +1 -1
  147. package/dist/{BImg-BrA0ZRS6.js → BImg-Dyy0N-WQ.js} +5 -5
  148. package/dist/{BImg-BrA0ZRS6.js.map → BImg-Dyy0N-WQ.js.map} +1 -1
  149. package/dist/BInputGroup-BScMw6Zr.js +31 -0
  150. package/dist/BInputGroup-BScMw6Zr.js.map +1 -0
  151. package/dist/BInputGroup-C7k0tS9j.mjs +25 -0
  152. package/dist/BInputGroup-C7k0tS9j.mjs.map +1 -0
  153. package/dist/{BInputGroup-B8fKBtip.mjs → BInputGroup-DpX10xwR.mjs} +4 -22
  154. package/dist/BInputGroup-DpX10xwR.mjs.map +1 -0
  155. package/dist/{BInputGroup-Cr0qLUds.js → BInputGroup-Duk6Jk0v.js} +2 -26
  156. package/dist/BInputGroup-Duk6Jk0v.js.map +1 -0
  157. package/dist/{BLink-DoYZ8dBl.mjs → BLink-Cz5YCsnv.mjs} +4 -4
  158. package/dist/{BLink-DoYZ8dBl.mjs.map → BLink-Cz5YCsnv.mjs.map} +1 -1
  159. package/dist/{BLink-DW7s8W_N.js → BLink-uemyYKst.js} +4 -4
  160. package/dist/{BLink-DW7s8W_N.js.map → BLink-uemyYKst.js.map} +1 -1
  161. package/dist/{BListGroup-ByYmtuCM.mjs → BListGroup-BmtN0xQ3.mjs} +3 -3
  162. package/dist/{BListGroup-ByYmtuCM.mjs.map → BListGroup-BmtN0xQ3.mjs.map} +1 -1
  163. package/dist/{BListGroup-clQNXk23.js → BListGroup-DuyMdAxJ.js} +3 -3
  164. package/dist/{BListGroup-clQNXk23.js.map → BListGroup-DuyMdAxJ.js.map} +1 -1
  165. package/dist/{BModal-TCXrZEZk.mjs → BModal-Br5xLT0-.mjs} +15 -12
  166. package/dist/BModal-Br5xLT0-.mjs.map +1 -0
  167. package/dist/{BModal-d3FKaKhA.js → BModal-D0LB339D.js} +15 -12
  168. package/dist/BModal-D0LB339D.js.map +1 -0
  169. package/dist/{BNav-BBr8213N.mjs → BNav-BRjdHsjC.mjs} +7 -7
  170. package/dist/{BNav-BBr8213N.mjs.map → BNav-BRjdHsjC.mjs.map} +1 -1
  171. package/dist/{BNav-BMAZcVDS.js → BNav-tYBwz1wU.js} +7 -7
  172. package/dist/{BNav-BMAZcVDS.js.map → BNav-tYBwz1wU.js.map} +1 -1
  173. package/dist/{BNavbar-BfYFzX1s.js → BNavbar-s9Ak5PnO.js} +6 -6
  174. package/dist/{BNavbar-BfYFzX1s.js.map → BNavbar-s9Ak5PnO.js.map} +1 -1
  175. package/dist/{BNavbar-DtgNmsyI.mjs → BNavbar-vN3_CMLn.mjs} +6 -6
  176. package/dist/{BNavbar-DtgNmsyI.mjs.map → BNavbar-vN3_CMLn.mjs.map} +1 -1
  177. package/dist/{BOffcanvas-YsVap-9w.js → BOffcanvas-D33pEfZe.js} +14 -11
  178. package/dist/BOffcanvas-D33pEfZe.js.map +1 -0
  179. package/dist/{BOffcanvas-BklEA-4x.mjs → BOffcanvas-jETHbtC3.mjs} +14 -11
  180. package/dist/BOffcanvas-jETHbtC3.mjs.map +1 -0
  181. package/dist/BOtpInput-CSCoKHP9.js +542 -0
  182. package/dist/BOtpInput-CSCoKHP9.js.map +1 -0
  183. package/dist/BOtpInput-Drfkt3x3.mjs +536 -0
  184. package/dist/BOtpInput-Drfkt3x3.mjs.map +1 -0
  185. package/dist/{BOverlay-Dg9YM7p1.js → BOverlay-B7vJAdHO.js} +6 -6
  186. package/dist/{BOverlay-Dg9YM7p1.js.map → BOverlay-B7vJAdHO.js.map} +1 -1
  187. package/dist/{BOverlay-DOfvBAZb.mjs → BOverlay-BGxH9JVy.mjs} +6 -6
  188. package/dist/{BOverlay-DOfvBAZb.mjs.map → BOverlay-BGxH9JVy.mjs.map} +1 -1
  189. package/dist/{BPagination-9P9Xh3cN.js → BPagination-C0-4NVzW.js} +6 -6
  190. package/dist/{BPagination-9P9Xh3cN.js.map → BPagination-C0-4NVzW.js.map} +1 -1
  191. package/dist/{BPagination-B868NBmG.mjs → BPagination-CvoSN1He.mjs} +6 -6
  192. package/dist/{BPagination-B868NBmG.mjs.map → BPagination-CvoSN1He.mjs.map} +1 -1
  193. package/dist/{BPlaceholder-7UJ3Nyb3.mjs → BPlaceholder-C4AOg29f.mjs} +6 -6
  194. package/dist/{BPlaceholder-7UJ3Nyb3.mjs.map → BPlaceholder-C4AOg29f.mjs.map} +1 -1
  195. package/dist/{BPlaceholder-DPEVmogO.js → BPlaceholder-DYYYuNgR.js} +6 -6
  196. package/dist/{BPlaceholder-DPEVmogO.js.map → BPlaceholder-DYYYuNgR.js.map} +1 -1
  197. package/dist/{BProgress-Bdf5AncM.mjs → BProgress-BIqo6vLh.mjs} +4 -4
  198. package/dist/{BProgress-Bdf5AncM.mjs.map → BProgress-BIqo6vLh.mjs.map} +1 -1
  199. package/dist/{BProgress-CeEIdt1a.js → BProgress-Bc3ZSkac.js} +4 -4
  200. package/dist/{BProgress-CeEIdt1a.js.map → BProgress-Bc3ZSkac.js.map} +1 -1
  201. package/dist/{BRow-NaXJzpS-.mjs → BRow-BCEK3fe6.mjs} +4 -4
  202. package/dist/{BRow-NaXJzpS-.mjs.map → BRow-BCEK3fe6.mjs.map} +1 -1
  203. package/dist/{BRow-DGi1WkB9.js → BRow-tqMEhkZS.js} +4 -4
  204. package/dist/{BRow-DGi1WkB9.js.map → BRow-tqMEhkZS.js.map} +1 -1
  205. package/dist/{BSpinner-Kska3Bsd.js → BSpinner-8UMAINYb.js} +3 -3
  206. package/dist/{BSpinner-Kska3Bsd.js.map → BSpinner-8UMAINYb.js.map} +1 -1
  207. package/dist/{BSpinner-DlLxrIkh.mjs → BSpinner-BpnwONvx.mjs} +3 -3
  208. package/dist/{BSpinner-DlLxrIkh.mjs.map → BSpinner-BpnwONvx.mjs.map} +1 -1
  209. package/dist/{BTable-BiNbXnsR.js → BTable-Btzu1IJ_.js} +9 -9
  210. package/dist/{BTable-BiNbXnsR.js.map → BTable-Btzu1IJ_.js.map} +1 -1
  211. package/dist/{BTable-C__GSYX2.mjs → BTable-CjHMx8Yv.mjs} +9 -9
  212. package/dist/{BTable-C__GSYX2.mjs.map → BTable-CjHMx8Yv.mjs.map} +1 -1
  213. package/dist/{BTableSimple-fwaF0Kws.js → BTableSimple-BcdizuDm.js} +5 -5
  214. package/dist/{BTableSimple-fwaF0Kws.js.map → BTableSimple-BcdizuDm.js.map} +1 -1
  215. package/dist/{BTableSimple-eebTf2L5.mjs → BTableSimple-C901Z5V9.mjs} +5 -5
  216. package/dist/{BTableSimple-eebTf2L5.mjs.map → BTableSimple-C901Z5V9.mjs.map} +1 -1
  217. package/dist/{BTabs-7IT0dhVr.mjs → BTabs-DZEF9kgT.mjs} +7 -7
  218. package/dist/{BTabs-7IT0dhVr.mjs.map → BTabs-DZEF9kgT.mjs.map} +1 -1
  219. package/dist/{BTabs-BxwRSBMv.js → BTabs-DiYaJi22.js} +7 -7
  220. package/dist/{BTabs-BxwRSBMv.js.map → BTabs-DiYaJi22.js.map} +1 -1
  221. package/dist/{BTimeField-CZw1_K7v.mjs → BTimeField-DSWZeGYP.mjs} +7 -5
  222. package/dist/{BTimeField-CZw1_K7v.mjs.map → BTimeField-DSWZeGYP.mjs.map} +1 -1
  223. package/dist/{BTimeField-CngB6NOW.js → BTimeField-VTrtxGkI.js} +18 -16
  224. package/dist/{BTimeField-CngB6NOW.js.map → BTimeField-VTrtxGkI.js.map} +1 -1
  225. package/dist/{BToast-IYBku5Nr.mjs → BToast-B2rFKhLD.mjs} +10 -10
  226. package/dist/{BToast-IYBku5Nr.mjs.map → BToast-B2rFKhLD.mjs.map} +1 -1
  227. package/dist/{BToast-BraVbf4N.js → BToast-DCSZYXIi.js} +10 -10
  228. package/dist/{BToast-BraVbf4N.js.map → BToast-DCSZYXIi.js.map} +1 -1
  229. package/dist/{BTooltip-B2hE5Q6m.js → BTooltip-CryTO-SM.js} +3 -3
  230. package/dist/{BTooltip-B2hE5Q6m.js.map → BTooltip-CryTO-SM.js.map} +1 -1
  231. package/dist/{BTooltip-BuK_zb1B.mjs → BTooltip-DtpjIEBu.mjs} +3 -3
  232. package/dist/{BTooltip-BuK_zb1B.mjs.map → BTooltip-DtpjIEBu.mjs.map} +1 -1
  233. package/dist/{BootstrapVueOptions-CVxLmDvx.js → BootstrapVueOptions-BC3f7hMU.js} +4 -1
  234. package/dist/BootstrapVueOptions-BC3f7hMU.js.map +1 -0
  235. package/dist/{BootstrapVueOptions-Dtdn7_AJ.mjs → BootstrapVueOptions-BU3rzYio.mjs} +4 -1
  236. package/dist/BootstrapVueOptions-BU3rzYio.mjs.map +1 -0
  237. package/dist/{ConditionalTeleport-BDWcebyD.js → ConditionalTeleport-BJZk6HAx.js} +1 -1
  238. package/dist/{ConditionalTeleport-BDWcebyD.js.map → ConditionalTeleport-BJZk6HAx.js.map} +1 -1
  239. package/dist/{ConditionalTeleport-B4KYZIM6.mjs → ConditionalTeleport-BNsziElf.mjs} +1 -1
  240. package/dist/{ConditionalTeleport-B4KYZIM6.mjs.map → ConditionalTeleport-BNsziElf.mjs.map} +1 -1
  241. package/dist/{ConditionalWrapper-ZqZKYsic.js → ConditionalWrapper-Cc7EIszd.js} +1 -1
  242. package/dist/{ConditionalWrapper-ZqZKYsic.js.map → ConditionalWrapper-Cc7EIszd.js.map} +1 -1
  243. package/dist/{ConditionalWrapper-BR9CKZNU.mjs → ConditionalWrapper-D9ovtbHB.mjs} +1 -1
  244. package/dist/{ConditionalWrapper-BR9CKZNU.mjs.map → ConditionalWrapper-D9ovtbHB.mjs.map} +1 -1
  245. package/dist/{DateRangeFieldInput-bXDqGVUe.js → DateRangeFieldInput-Ce7PM3PJ.js} +22 -20
  246. package/dist/{DateRangeFieldInput-bXDqGVUe.js.map → DateRangeFieldInput-Ce7PM3PJ.js.map} +1 -1
  247. package/dist/{DateRangeFieldInput-bA6IK9lx.mjs → DateRangeFieldInput-DiVuhf4Y.mjs} +5 -3
  248. package/dist/{DateRangeFieldInput-bA6IK9lx.mjs.map → DateRangeFieldInput-DiVuhf4Y.mjs.map} +1 -1
  249. package/dist/PopperContent-BTUvv6Tu.mjs +1431 -0
  250. package/dist/PopperContent-BTUvv6Tu.mjs.map +1 -0
  251. package/dist/PopperContent-CSwv2Fih.js +1515 -0
  252. package/dist/PopperContent-CSwv2Fih.js.map +1 -0
  253. package/dist/VisuallyHidden-Bbwok8oL.mjs +174 -0
  254. package/dist/VisuallyHidden-Bbwok8oL.mjs.map +1 -0
  255. package/dist/VisuallyHidden-DaN947I0.js +222 -0
  256. package/dist/VisuallyHidden-DaN947I0.js.map +1 -0
  257. package/dist/VisuallyHiddenInput-Biq4Qv5j.js +147 -0
  258. package/dist/VisuallyHiddenInput-Biq4Qv5j.js.map +1 -0
  259. package/dist/VisuallyHiddenInput-D1SjTCVH.mjs +141 -0
  260. package/dist/VisuallyHiddenInput-D1SjTCVH.mjs.map +1 -0
  261. package/dist/bootstrap-vue-next.css +147 -0
  262. package/dist/bootstrap-vue-next.mjs +62 -57
  263. package/dist/bootstrap-vue-next.umd.js +67 -59
  264. package/dist/{classes-D6JE1Dex.mjs → classes-B0E5Y78Y.mjs} +1 -1
  265. package/dist/{classes-D6JE1Dex.mjs.map → classes-B0E5Y78Y.mjs.map} +1 -1
  266. package/dist/{classes-vdSVs0gA.js → classes-D5wrmmVs.js} +1 -1
  267. package/dist/{classes-vdSVs0gA.js.map → classes-D5wrmmVs.js.map} +1 -1
  268. package/dist/components/BAccordion/BAccordionItem.vue.d.mts +1 -1
  269. package/dist/components/BAccordion/BAccordionItem.vue.d.ts +1 -1
  270. package/dist/components/BAspect/BAspect.vue.d.mts +21 -0
  271. package/dist/components/BAspect/BAspect.vue.d.ts +21 -0
  272. package/dist/components/BAspect/index.d.mts +1 -0
  273. package/dist/components/BAspect/index.d.ts +1 -0
  274. package/dist/components/BAutocomplete/BAutocomplete.vue.d.mts +65 -0
  275. package/dist/components/BAutocomplete/BAutocomplete.vue.d.ts +65 -0
  276. package/dist/components/BAutocomplete/index.d.mts +1 -0
  277. package/dist/components/BAutocomplete/index.d.ts +1 -0
  278. package/dist/components/BButton/BButtonGroup.vue.d.mts +1 -1
  279. package/dist/components/BButton/BButtonGroup.vue.d.ts +1 -1
  280. package/dist/components/BCard/BCard.vue.d.mts +1 -1
  281. package/dist/components/BCard/BCard.vue.d.ts +1 -1
  282. package/dist/components/BCard/BCardImg.vue.d.mts +1 -1
  283. package/dist/components/BCard/BCardImg.vue.d.ts +1 -1
  284. package/dist/components/BCollapse/BCollapse.vue.d.mts +1 -1
  285. package/dist/components/BCollapse/BCollapse.vue.d.ts +1 -1
  286. package/dist/components/BDateField/BDateField.vue.d.mts +1 -1
  287. package/dist/components/BDateField/BDateField.vue.d.ts +1 -1
  288. package/dist/components/BDateField/BDateRangeField.vue.d.mts +1 -1
  289. package/dist/components/BDateField/BDateRangeField.vue.d.ts +1 -1
  290. package/dist/components/BDateField/BTimeRangeField.vue.d.mts +4 -4
  291. package/dist/components/BDateField/BTimeRangeField.vue.d.ts +4 -4
  292. package/dist/components/BDatePicker/BDatePicker.vue.d.mts +4 -4
  293. package/dist/components/BDatePicker/BDatePicker.vue.d.ts +4 -4
  294. package/dist/components/BDatePicker/BDateRangePicker.vue.d.mts +4 -4
  295. package/dist/components/BDatePicker/BDateRangePicker.vue.d.ts +4 -4
  296. package/dist/components/BDropdown/BDropdown.vue.d.mts +2 -2
  297. package/dist/components/BDropdown/BDropdown.vue.d.ts +2 -2
  298. package/dist/components/BForm/BFormDatalistBase.vue.d.mts +5 -5
  299. package/dist/components/BForm/BFormDatalistBase.vue.d.ts +5 -5
  300. package/dist/components/BForm/BFormInvalidFeedback.vue.d.mts +1 -1
  301. package/dist/components/BForm/BFormInvalidFeedback.vue.d.ts +1 -1
  302. package/dist/components/BForm/BFormValidFeedback.vue.d.mts +1 -1
  303. package/dist/components/BForm/BFormValidFeedback.vue.d.ts +1 -1
  304. package/dist/components/BFormCheckbox/BFormCheckbox.vue.d.mts +1 -1
  305. package/dist/components/BFormCheckbox/BFormCheckbox.vue.d.ts +1 -1
  306. package/dist/components/BFormFile/BFormFile.vue.d.mts +1 -1
  307. package/dist/components/BFormFile/BFormFile.vue.d.ts +1 -1
  308. package/dist/components/BFormGroup/BFormGroup.vue.d.mts +1 -1
  309. package/dist/components/BFormGroup/BFormGroup.vue.d.ts +1 -1
  310. package/dist/components/BFormSelect/BFormSelectBase.vue.d.mts +4 -4
  311. package/dist/components/BFormSelect/BFormSelectBase.vue.d.ts +4 -4
  312. package/dist/components/BImg/BImg.vue.d.mts +1 -1
  313. package/dist/components/BImg/BImg.vue.d.ts +1 -1
  314. package/dist/components/BInputGroup/BInputGroup.vue.d.mts +1 -1
  315. package/dist/components/BInputGroup/BInputGroup.vue.d.ts +1 -1
  316. package/dist/components/BListGroup/BListGroup.vue.d.mts +1 -1
  317. package/dist/components/BListGroup/BListGroup.vue.d.ts +1 -1
  318. package/dist/components/BModal/BModal.vue.d.mts +1 -1
  319. package/dist/components/BModal/BModal.vue.d.ts +1 -1
  320. package/dist/components/BNav/BNav.vue.d.mts +1 -1
  321. package/dist/components/BNav/BNav.vue.d.ts +1 -1
  322. package/dist/components/BNav/BNavItemDropdown.vue.d.mts +13 -13
  323. package/dist/components/BNav/BNavItemDropdown.vue.d.ts +13 -13
  324. package/dist/components/BNavbar/BNavbar.vue.d.mts +1 -1
  325. package/dist/components/BNavbar/BNavbar.vue.d.ts +1 -1
  326. package/dist/components/BNavbar/BNavbarNav.vue.d.mts +1 -1
  327. package/dist/components/BNavbar/BNavbarNav.vue.d.ts +1 -1
  328. package/dist/components/BOffcanvas/BOffcanvas.vue.d.mts +1 -1
  329. package/dist/components/BOffcanvas/BOffcanvas.vue.d.ts +1 -1
  330. package/dist/components/BOtpInput/BOtpInput.vue.d.mts +32 -0
  331. package/dist/components/BOtpInput/BOtpInput.vue.d.ts +32 -0
  332. package/dist/components/BOtpInput/index.d.mts +1 -0
  333. package/dist/components/BOtpInput/index.d.ts +1 -0
  334. package/dist/components/BPlaceholder/BPlaceholder.vue.d.mts +1 -1
  335. package/dist/components/BPlaceholder/BPlaceholder.vue.d.ts +1 -1
  336. package/dist/components/BPlaceholder/BPlaceholderButton.vue.d.mts +1 -1
  337. package/dist/components/BPlaceholder/BPlaceholderButton.vue.d.ts +1 -1
  338. package/dist/components/BProgress/BProgress.vue.d.mts +1 -1
  339. package/dist/components/BProgress/BProgress.vue.d.ts +1 -1
  340. package/dist/components/BSpinner/BSpinner.vue.d.mts +2 -2
  341. package/dist/components/BSpinner/BSpinner.vue.d.ts +2 -2
  342. package/dist/components/BTable/BTable.vue.d.mts +3 -3
  343. package/dist/components/BTable/BTable.vue.d.ts +3 -3
  344. package/dist/components/BTabs/BTabs.vue.d.mts +1 -1
  345. package/dist/components/BTabs/BTabs.vue.d.ts +1 -1
  346. package/dist/components/BTimeField/BTimeField.vue.d.mts +1 -1
  347. package/dist/components/BTimeField/BTimeField.vue.d.ts +1 -1
  348. package/dist/components/index.d.mts +3 -0
  349. package/dist/components/index.d.ts +3 -0
  350. package/dist/composables/useFormSelect.d.mts +10 -4
  351. package/dist/composables/useFormSelect.d.ts +10 -4
  352. package/dist/{constants-CQ8ucyPI.mjs → constants-BSIK14yA.mjs} +1 -1
  353. package/dist/{constants-CQ8ucyPI.mjs.map → constants-BSIK14yA.mjs.map} +1 -1
  354. package/dist/{constants-DMR5FAE3.js → constants-hccBP09R.js} +1 -1
  355. package/dist/{constants-DMR5FAE3.js.map → constants-hccBP09R.js.map} +1 -1
  356. package/dist/{debounce-BfDJWP7y.js → debounce-C-5Oukxb.js} +2 -2
  357. package/dist/{debounce-BfDJWP7y.js.map → debounce-C-5Oukxb.js.map} +1 -1
  358. package/dist/{debounce-BIVtU5ek.mjs → debounce-C_wjWVGH.mjs} +2 -2
  359. package/dist/{debounce-BIVtU5ek.mjs.map → debounce-C_wjWVGH.mjs.map} +1 -1
  360. package/dist/{dist-Dn5blevd.mjs → dist-B10a-gZ8.mjs} +34 -2
  361. package/dist/{dist-Dn5blevd.mjs.map → dist-B10a-gZ8.mjs.map} +1 -1
  362. package/dist/{dist-B_c893QG.js → dist-BJ15ThEs.js} +45 -1
  363. package/dist/{dist-B_c893QG.js.map → dist-BJ15ThEs.js.map} +1 -1
  364. package/dist/{flattenFragments-DfLb4YB2.js → flattenFragments-C1WWqm25.js} +1 -1
  365. package/dist/{flattenFragments-DfLb4YB2.js.map → flattenFragments-C1WWqm25.js.map} +1 -1
  366. package/dist/{flattenFragments-B1W_x5L2.mjs → flattenFragments-ClbLQGqR.mjs} +1 -1
  367. package/dist/{flattenFragments-B1W_x5L2.mjs.map → flattenFragments-ClbLQGqR.mjs.map} +1 -1
  368. package/dist/{floating-ui.vue-CcfLuVCZ.mjs → floating-ui.vue-CAMaNcqI.mjs} +1 -1
  369. package/dist/{floating-ui.vue-CcfLuVCZ.mjs.map → floating-ui.vue-CAMaNcqI.mjs.map} +1 -1
  370. package/dist/{floating-ui.vue-B09oeNTW.js → floating-ui.vue-GXIS2sFG.js} +1 -1
  371. package/dist/{floating-ui.vue-B09oeNTW.js.map → floating-ui.vue-GXIS2sFG.js.map} +1 -1
  372. package/dist/{floatingUi-BLlCKrbj.js → floatingUi-Cs4rDXmO.js} +8 -8
  373. package/dist/{floatingUi-BLlCKrbj.js.map → floatingUi-Cs4rDXmO.js.map} +1 -1
  374. package/dist/{floatingUi-9NcUa5r7.mjs → floatingUi-DHMrP__c.mjs} +8 -8
  375. package/dist/{floatingUi-9NcUa5r7.mjs.map → floatingUi-DHMrP__c.mjs.map} +1 -1
  376. package/dist/{functions-C6AToZGR.mjs → functions-BcMenQqL.mjs} +1 -1
  377. package/dist/functions-BcMenQqL.mjs.map +1 -0
  378. package/dist/{functions-DCQKr6wc.js → functions-Bx1HDqMv.js} +1 -1
  379. package/dist/functions-Bx1HDqMv.js.map +1 -0
  380. package/dist/{getClasses-_sZDgS-l.mjs → getClasses-DaWzwT2S.mjs} +1 -1
  381. package/dist/{getClasses-_sZDgS-l.mjs.map → getClasses-DaWzwT2S.mjs.map} +1 -1
  382. package/dist/{getClasses-BQLj0MHF.js → getClasses-qqI6x4f4.js} +1 -1
  383. package/dist/{getClasses-BQLj0MHF.js.map → getClasses-qqI6x4f4.js.map} +1 -1
  384. package/dist/{getElement-D5DvkPzw.mjs → getElement-0_htvrFw.mjs} +1 -1
  385. package/dist/{getElement-D5DvkPzw.mjs.map → getElement-0_htvrFw.mjs.map} +1 -1
  386. package/dist/{getElement-BXXYfxYW.js → getElement-CxWWOx3K.js} +1 -1
  387. package/dist/{getElement-BXXYfxYW.js.map → getElement-CxWWOx3K.js.map} +1 -1
  388. package/dist/{object-CPeShLVx.js → object-BN7QwMcz.js} +1 -1
  389. package/dist/{object-CPeShLVx.js.map → object-BN7QwMcz.js.map} +1 -1
  390. package/dist/{object-B9ZW1_9f.mjs → object-CHQkkner.mjs} +1 -1
  391. package/dist/{object-B9ZW1_9f.mjs.map → object-CHQkkner.mjs.map} +1 -1
  392. package/dist/{registryAccess-B4xlltdn.mjs → registryAccess-C1Ti_nxW.mjs} +1 -1
  393. package/dist/{registryAccess-B4xlltdn.mjs.map → registryAccess-C1Ti_nxW.mjs.map} +1 -1
  394. package/dist/{registryAccess-Be_uJ4EV.js → registryAccess-D-YxwQJq.js} +1 -1
  395. package/dist/{registryAccess-Be_uJ4EV.js.map → registryAccess-D-YxwQJq.js.map} +1 -1
  396. package/dist/src/components/BAccordion/index.mjs +1 -1
  397. package/dist/src/components/BAccordion/index.umd.js +1 -1
  398. package/dist/src/components/BAlert/index.mjs +1 -1
  399. package/dist/src/components/BAlert/index.umd.js +1 -1
  400. package/dist/src/components/BApp/index.mjs +1 -1
  401. package/dist/src/components/BApp/index.umd.js +1 -1
  402. package/dist/src/components/BAspect/index.mjs +2 -0
  403. package/dist/src/components/BAspect/index.umd.js +3 -0
  404. package/dist/src/components/BAutocomplete/index.mjs +2 -0
  405. package/dist/src/components/BAutocomplete/index.umd.js +3 -0
  406. package/dist/src/components/BAvatar/index.mjs +1 -1
  407. package/dist/src/components/BAvatar/index.umd.js +1 -1
  408. package/dist/src/components/BBadge/index.mjs +1 -1
  409. package/dist/src/components/BBadge/index.umd.js +1 -1
  410. package/dist/src/components/BBreadcrumb/index.mjs +1 -1
  411. package/dist/src/components/BBreadcrumb/index.umd.js +1 -1
  412. package/dist/src/components/BButton/index.mjs +3 -3
  413. package/dist/src/components/BButton/index.umd.js +3 -3
  414. package/dist/src/components/BCard/index.mjs +2 -2
  415. package/dist/src/components/BCard/index.umd.js +2 -2
  416. package/dist/src/components/BCarousel/index.mjs +1 -1
  417. package/dist/src/components/BCarousel/index.umd.js +1 -1
  418. package/dist/src/components/BCol/index.mjs +1 -1
  419. package/dist/src/components/BCol/index.umd.js +1 -1
  420. package/dist/src/components/BCollapse/index.mjs +1 -1
  421. package/dist/src/components/BCollapse/index.umd.js +1 -1
  422. package/dist/src/components/BContainer/index.mjs +3 -3
  423. package/dist/src/components/BContainer/index.umd.js +3 -3
  424. package/dist/src/components/BDateField/index.mjs +1 -1
  425. package/dist/src/components/BDateField/index.umd.js +1 -1
  426. package/dist/src/components/BDatePicker/index.mjs +1 -1
  427. package/dist/src/components/BDatePicker/index.umd.js +1 -1
  428. package/dist/src/components/BDropdown/index.mjs +2 -2
  429. package/dist/src/components/BDropdown/index.umd.js +2 -2
  430. package/dist/src/components/BForm/index.mjs +3 -3
  431. package/dist/src/components/BForm/index.umd.js +3 -3
  432. package/dist/src/components/BFormCheckbox/index.mjs +1 -1
  433. package/dist/src/components/BFormCheckbox/index.umd.js +1 -1
  434. package/dist/src/components/BFormFile/index.mjs +1 -1
  435. package/dist/src/components/BFormFile/index.umd.js +1 -1
  436. package/dist/src/components/BFormGroup/index.mjs +1 -1
  437. package/dist/src/components/BFormGroup/index.umd.js +1 -1
  438. package/dist/src/components/BFormInput/index.mjs +1 -1
  439. package/dist/src/components/BFormInput/index.umd.js +1 -1
  440. package/dist/src/components/BFormRadio/index.mjs +1 -1
  441. package/dist/src/components/BFormRadio/index.umd.js +1 -1
  442. package/dist/src/components/BFormRating/index.mjs +1 -1
  443. package/dist/src/components/BFormRating/index.umd.js +1 -1
  444. package/dist/src/components/BFormSelect/index.mjs +2 -2
  445. package/dist/src/components/BFormSelect/index.umd.js +3 -3
  446. package/dist/src/components/BFormSpinbutton/index.mjs +1 -1
  447. package/dist/src/components/BFormSpinbutton/index.umd.js +1 -1
  448. package/dist/src/components/BFormTags/index.mjs +2 -1
  449. package/dist/src/components/BFormTags/index.umd.js +3 -2
  450. package/dist/src/components/BFormTextarea/index.mjs +1 -1
  451. package/dist/src/components/BFormTextarea/index.umd.js +1 -1
  452. package/dist/src/components/BImg/index.mjs +1 -1
  453. package/dist/src/components/BImg/index.umd.js +1 -1
  454. package/dist/src/components/BInputGroup/index.mjs +2 -1
  455. package/dist/src/components/BInputGroup/index.umd.js +3 -2
  456. package/dist/src/components/BLink/index.mjs +1 -1
  457. package/dist/src/components/BLink/index.umd.js +1 -1
  458. package/dist/src/components/BListGroup/index.mjs +1 -1
  459. package/dist/src/components/BListGroup/index.umd.js +1 -1
  460. package/dist/src/components/BModal/index.mjs +1 -1
  461. package/dist/src/components/BModal/index.umd.js +1 -1
  462. package/dist/src/components/BNav/index.mjs +1 -1
  463. package/dist/src/components/BNav/index.umd.js +1 -1
  464. package/dist/src/components/BNavbar/index.mjs +1 -1
  465. package/dist/src/components/BNavbar/index.umd.js +1 -1
  466. package/dist/src/components/BOffcanvas/index.mjs +1 -1
  467. package/dist/src/components/BOffcanvas/index.umd.js +1 -1
  468. package/dist/src/components/BOtpInput/index.mjs +2 -0
  469. package/dist/src/components/BOtpInput/index.umd.js +3 -0
  470. package/dist/src/components/BOverlay/index.mjs +1 -1
  471. package/dist/src/components/BOverlay/index.umd.js +1 -1
  472. package/dist/src/components/BPagination/index.mjs +1 -1
  473. package/dist/src/components/BPagination/index.umd.js +1 -1
  474. package/dist/src/components/BPlaceholder/index.mjs +1 -1
  475. package/dist/src/components/BPlaceholder/index.umd.js +1 -1
  476. package/dist/src/components/BPopover/index.mjs +1 -1
  477. package/dist/src/components/BPopover/index.umd.js +1 -1
  478. package/dist/src/components/BProgress/index.mjs +1 -1
  479. package/dist/src/components/BProgress/index.umd.js +1 -1
  480. package/dist/src/components/BRow/index.mjs +1 -1
  481. package/dist/src/components/BRow/index.umd.js +1 -1
  482. package/dist/src/components/BSpinner/index.mjs +1 -1
  483. package/dist/src/components/BSpinner/index.umd.js +1 -1
  484. package/dist/src/components/BTable/index.mjs +2 -2
  485. package/dist/src/components/BTable/index.umd.js +2 -2
  486. package/dist/src/components/BTabs/index.mjs +1 -1
  487. package/dist/src/components/BTabs/index.umd.js +1 -1
  488. package/dist/src/components/BTimeField/index.mjs +1 -1
  489. package/dist/src/components/BTimeField/index.umd.js +1 -1
  490. package/dist/src/components/BToast/index.mjs +1 -1
  491. package/dist/src/components/BToast/index.umd.js +1 -1
  492. package/dist/src/components/BTooltip/index.mjs +1 -1
  493. package/dist/src/components/BTooltip/index.umd.js +1 -1
  494. package/dist/src/components/index.mjs +64 -55
  495. package/dist/src/components/index.mjs.map +1 -1
  496. package/dist/src/components/index.umd.js +72 -60
  497. package/dist/src/components/index.umd.js.map +1 -1
  498. package/dist/src/composables/useColorMode/index.mjs +1 -1
  499. package/dist/src/composables/useColorMode/index.umd.js +1 -1
  500. package/dist/src/composables/useModal/index.mjs +1 -1
  501. package/dist/src/composables/useModal/index.umd.js +1 -1
  502. package/dist/src/composables/usePopover/index.mjs +2 -2
  503. package/dist/src/composables/usePopover/index.umd.js +2 -2
  504. package/dist/src/composables/useScrollLock/index.mjs +1 -1
  505. package/dist/src/composables/useScrollLock/index.umd.js +1 -1
  506. package/dist/src/composables/useScrollspy/index.mjs +2 -2
  507. package/dist/src/composables/useScrollspy/index.umd.js +2 -2
  508. package/dist/src/composables/useToast/index.mjs +1 -1
  509. package/dist/src/composables/useToast/index.umd.js +1 -1
  510. package/dist/src/composables/useToggle/index.mjs +1 -1
  511. package/dist/src/composables/useToggle/index.umd.js +1 -1
  512. package/dist/src/directives/BPopover/index.mjs +2 -2
  513. package/dist/src/directives/BPopover/index.umd.js +2 -2
  514. package/dist/src/directives/BScrollspy/index.mjs +2 -2
  515. package/dist/src/directives/BScrollspy/index.umd.js +2 -2
  516. package/dist/src/directives/BToggle/index.mjs +3 -3
  517. package/dist/src/directives/BToggle/index.umd.js +3 -3
  518. package/dist/src/directives/BTooltip/index.mjs +2 -2
  519. package/dist/src/directives/BTooltip/index.umd.js +2 -2
  520. package/dist/src/resolvers/index.mjs +1 -1
  521. package/dist/src/resolvers/index.umd.js +1 -1
  522. package/dist/src/types/index.mjs +1 -1
  523. package/dist/src/types/index.umd.js +1 -1
  524. package/dist/src/utils/index.mjs +1 -1
  525. package/dist/src/utils/index.umd.js +1 -1
  526. package/dist/{stringUtils-hUreqC0N.js → stringUtils-BwKOASdU.js} +2 -2
  527. package/dist/{stringUtils-hUreqC0N.js.map → stringUtils-BwKOASdU.js.map} +1 -1
  528. package/dist/{stringUtils-BP8rZgjn.mjs → stringUtils-CslYpDTt.mjs} +2 -2
  529. package/dist/{stringUtils-BP8rZgjn.mjs.map → stringUtils-CslYpDTt.mjs.map} +1 -1
  530. package/dist/types/BootstrapVueOptions.d.mts +7 -1
  531. package/dist/types/BootstrapVueOptions.d.ts +7 -1
  532. package/dist/types/ComponentProps.d.mts +63 -3
  533. package/dist/types/ComponentProps.d.ts +63 -3
  534. package/dist/types/ComponentSlots.d.mts +17 -0
  535. package/dist/types/ComponentSlots.d.ts +17 -0
  536. package/dist/{useAlignment-CwuLc9mf.mjs → useAlignment-BiCREohQ.mjs} +1 -1
  537. package/dist/{useAlignment-CwuLc9mf.mjs.map → useAlignment-BiCREohQ.mjs.map} +1 -1
  538. package/dist/{useAlignment-CY-mnB2p.js → useAlignment-D5xKBRez.js} +1 -1
  539. package/dist/{useAlignment-CY-mnB2p.js.map → useAlignment-D5xKBRez.js.map} +1 -1
  540. package/dist/{useAriaInvalid-BYMq9BBX.js → useAriaInvalid-CHHPHNLU.js} +1 -1
  541. package/dist/{useAriaInvalid-BYMq9BBX.js.map → useAriaInvalid-CHHPHNLU.js.map} +1 -1
  542. package/dist/{useAriaInvalid-01Dd60GC.mjs → useAriaInvalid-apOwgexm.mjs} +1 -1
  543. package/dist/{useAriaInvalid-01Dd60GC.mjs.map → useAriaInvalid-apOwgexm.mjs.map} +1 -1
  544. package/dist/{useColorVariantClasses-GuDw8a_O.mjs → useColorVariantClasses-B6Me_Kx6.mjs} +1 -1
  545. package/dist/{useColorVariantClasses-GuDw8a_O.mjs.map → useColorVariantClasses-B6Me_Kx6.mjs.map} +1 -1
  546. package/dist/{useColorVariantClasses-DVaQDVQC.js → useColorVariantClasses-CEfOwjPv.js} +1 -1
  547. package/dist/{useColorVariantClasses-DVaQDVQC.js.map → useColorVariantClasses-CEfOwjPv.js.map} +1 -1
  548. package/dist/{useCountdownHover-CaF8_TRT.js → useCountdownHover-8bwLWYoN.js} +2 -2
  549. package/dist/{useCountdownHover-CaF8_TRT.js.map → useCountdownHover-8bwLWYoN.js.map} +1 -1
  550. package/dist/{useCountdownHover-CTM7QEJ-.mjs → useCountdownHover-t9O7DHoK.mjs} +2 -2
  551. package/dist/{useCountdownHover-CTM7QEJ-.mjs.map → useCountdownHover-t9O7DHoK.mjs.map} +1 -1
  552. package/dist/{useDateField-qsRHISMn.js → useDateField-COTiu3aN.js} +8 -321
  553. package/dist/useDateField-COTiu3aN.js.map +1 -0
  554. package/dist/{useDateField-PQjSLAVI.mjs → useDateField-DmmXa0_5.mjs} +5 -258
  555. package/dist/useDateField-DmmXa0_5.mjs.map +1 -0
  556. package/dist/{useDefaults-CCWS15M8.mjs → useDefaults-BKgBaqOV.mjs} +1 -1
  557. package/dist/{useDefaults-CCWS15M8.mjs.map → useDefaults-BKgBaqOV.mjs.map} +1 -1
  558. package/dist/{useDefaults-DK6Y9lar.js → useDefaults-DsLf4iRY.js} +1 -1
  559. package/dist/{useDefaults-DK6Y9lar.js.map → useDefaults-DsLf4iRY.js.map} +1 -1
  560. package/dist/{useFormCheck-TOhpqkZ9.mjs → useFormCheck-CJvIDxcO.mjs} +3 -3
  561. package/dist/{useFormCheck-TOhpqkZ9.mjs.map → useFormCheck-CJvIDxcO.mjs.map} +1 -1
  562. package/dist/{useFormCheck-DXM9Wj2i.js → useFormCheck-UHNy_iZ0.js} +3 -3
  563. package/dist/{useFormCheck-DXM9Wj2i.js.map → useFormCheck-UHNy_iZ0.js.map} +1 -1
  564. package/dist/{useFormInput-DeJGz9t9.mjs → useFormInput-BgJCT9k_.mjs} +6 -6
  565. package/dist/{useFormInput-DeJGz9t9.mjs.map → useFormInput-BgJCT9k_.mjs.map} +1 -1
  566. package/dist/{useFormInput-AX7ikSmn.js → useFormInput-CsR38QR6.js} +6 -6
  567. package/dist/{useFormInput-AX7ikSmn.js.map → useFormInput-CsR38QR6.js.map} +1 -1
  568. package/dist/useFormSelect-CANw3ZJG.mjs +45 -0
  569. package/dist/useFormSelect-CANw3ZJG.mjs.map +1 -0
  570. package/dist/useFormSelect-nQbGZSi8.js +51 -0
  571. package/dist/useFormSelect-nQbGZSi8.js.map +1 -0
  572. package/dist/useForwardExpose-4OUimdPL.mjs +68 -0
  573. package/dist/useForwardExpose-4OUimdPL.mjs.map +1 -0
  574. package/dist/useForwardExpose-DrJOy0jY.js +80 -0
  575. package/dist/useForwardExpose-DrJOy0jY.js.map +1 -0
  576. package/dist/{useId-CCwnEmGh.mjs → useId-BKZFSYm8.mjs} +1 -1
  577. package/dist/{useId-CCwnEmGh.mjs.map → useId-BKZFSYm8.mjs.map} +1 -1
  578. package/dist/{useId-DTrBK9CE.js → useId-DHrBgM7P.js} +1 -1
  579. package/dist/{useId-DTrBK9CE.js.map → useId-DHrBgM7P.js.map} +1 -1
  580. package/dist/useKbd-IZRktImL.mjs +88 -0
  581. package/dist/useKbd-IZRktImL.mjs.map +1 -0
  582. package/dist/useKbd-ZZushx7D.js +105 -0
  583. package/dist/useKbd-ZZushx7D.js.map +1 -0
  584. package/dist/{useNumberishToStyle-uj-NwKpF.mjs → useNumberishToStyle-DEqGK1UH.mjs} +2 -2
  585. package/dist/{useNumberishToStyle-uj-NwKpF.mjs.map → useNumberishToStyle-DEqGK1UH.mjs.map} +1 -1
  586. package/dist/{useNumberishToStyle-CluQ-WT4.js → useNumberishToStyle-DFf9fokb.js} +2 -2
  587. package/dist/{useNumberishToStyle-CluQ-WT4.js.map → useNumberishToStyle-DFf9fokb.js.map} +1 -1
  588. package/dist/{useRadiusElementClasses-CyDq8RO7.mjs → useRadiusElementClasses-BlrN-T6U.mjs} +1 -1
  589. package/dist/{useRadiusElementClasses-CyDq8RO7.mjs.map → useRadiusElementClasses-BlrN-T6U.mjs.map} +1 -1
  590. package/dist/{useRadiusElementClasses-D6FwziNh.js → useRadiusElementClasses-C13_PhPM.js} +1 -1
  591. package/dist/{useRadiusElementClasses-D6FwziNh.js.map → useRadiusElementClasses-C13_PhPM.js.map} +1 -1
  592. package/dist/{useRtl-BlPLBmTe.js → useRtl-DXAooTrl.js} +1 -1
  593. package/dist/{useRtl-BlPLBmTe.js.map → useRtl-DXAooTrl.js.map} +1 -1
  594. package/dist/{useRtl-DQ5v5L9s.mjs → useRtl-DpwU_RM8.mjs} +1 -1
  595. package/dist/{useRtl-DQ5v5L9s.mjs.map → useRtl-DpwU_RM8.mjs.map} +1 -1
  596. package/dist/{useSafeScrollLock-CP2B7aXF.js → useSafeScrollLock-Bm9RxDoY.js} +2 -2
  597. package/dist/{useSafeScrollLock-CP2B7aXF.js.map → useSafeScrollLock-Bm9RxDoY.js.map} +1 -1
  598. package/dist/{useSafeScrollLock-C9UxwgUo.mjs → useSafeScrollLock-D62o8jto.mjs} +2 -2
  599. package/dist/{useSafeScrollLock-C9UxwgUo.mjs.map → useSafeScrollLock-D62o8jto.mjs.map} +1 -1
  600. package/dist/{useShowHide-BFr32vgn.js → useShowHide-BTCaeU5j.js} +5 -5
  601. package/dist/useShowHide-BTCaeU5j.js.map +1 -0
  602. package/dist/{useShowHide-wBe7O9iE.mjs → useShowHide-yAK5dhPT.mjs} +5 -5
  603. package/dist/useShowHide-yAK5dhPT.mjs.map +1 -0
  604. package/dist/{useStateClass-Cnvy2Hnm.js → useStateClass-CJ24hpkn.js} +1 -1
  605. package/dist/{useStateClass-Cnvy2Hnm.js.map → useStateClass-CJ24hpkn.js.map} +1 -1
  606. package/dist/{useStateClass-DKjpw1Pn.mjs → useStateClass-CdmlbrGn.mjs} +1 -1
  607. package/dist/{useStateClass-DKjpw1Pn.mjs.map → useStateClass-CdmlbrGn.mjs.map} +1 -1
  608. package/dist/{utils-CY6CnVNO.js → utils-CaC78Zdk.js} +2 -2
  609. package/dist/{utils-CY6CnVNO.js.map → utils-CaC78Zdk.js.map} +1 -1
  610. package/dist/{utils-C-oJqlar.mjs → utils-CgwCsk6U.mjs} +2 -2
  611. package/dist/{utils-C-oJqlar.mjs.map → utils-CgwCsk6U.mjs.map} +1 -1
  612. package/package.json +9 -1
  613. package/src/components/BAutocomplete/_autocomplete.scss +136 -0
  614. package/src/components/BOtpInput/_otp-input.scss +29 -0
  615. package/src/styles/styles.scss +2 -0
  616. package/dist/BCarousel-BH6WIvJx.js.map +0 -1
  617. package/dist/BCarousel-C3CA_wGV.mjs.map +0 -1
  618. package/dist/BDatePicker-DPtAqGyV.mjs.map +0 -1
  619. package/dist/BDatePicker-rdtRZlra.js.map +0 -1
  620. package/dist/BDropdown-C2L69dLN.js.map +0 -1
  621. package/dist/BDropdown-CKnx6hUH.mjs.map +0 -1
  622. package/dist/BFormTags-Cobh04P9.mjs.map +0 -1
  623. package/dist/BFormTags-pK9i3cOB.js.map +0 -1
  624. package/dist/BInputGroup-B8fKBtip.mjs.map +0 -1
  625. package/dist/BInputGroup-Cr0qLUds.js.map +0 -1
  626. package/dist/BModal-TCXrZEZk.mjs.map +0 -1
  627. package/dist/BModal-d3FKaKhA.js.map +0 -1
  628. package/dist/BOffcanvas-BklEA-4x.mjs.map +0 -1
  629. package/dist/BOffcanvas-YsVap-9w.js.map +0 -1
  630. package/dist/BootstrapVueOptions-CVxLmDvx.js.map +0 -1
  631. package/dist/BootstrapVueOptions-Dtdn7_AJ.mjs.map +0 -1
  632. package/dist/functions-C6AToZGR.mjs.map +0 -1
  633. package/dist/functions-DCQKr6wc.js.map +0 -1
  634. package/dist/useDateField-PQjSLAVI.mjs.map +0 -1
  635. package/dist/useDateField-qsRHISMn.js.map +0 -1
  636. package/dist/useFormSelect-DCThI8EA.js +0 -92
  637. package/dist/useFormSelect-DCThI8EA.js.map +0 -1
  638. package/dist/useFormSelect-_-ln6FKQ.mjs +0 -80
  639. package/dist/useFormSelect-_-ln6FKQ.mjs.map +0 -1
  640. package/dist/useShowHide-BFr32vgn.js.map +0 -1
  641. package/dist/useShowHide-wBe7O9iE.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BFormSpinbutton-DzJ071Gz.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 BFormSpinbuttonSlots,\n BFormSpinbuttonProps,\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 BFormSpinbuttonSlots,\n BFormSpinbuttonProps,\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-BaOTL1k1.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 BFormSpinbuttonSlots,\n BFormSpinbuttonProps,\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 BFormSpinbuttonSlots,\n BFormSpinbuttonProps,\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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"}
@@ -0,0 +1,80 @@
1
+ import { t as useDefaults } from "./useDefaults-BKgBaqOV.mjs";
2
+ import { t as useId$1 } from "./useId-BKZFSYm8.mjs";
3
+ import { t as useColorVariantClasses } from "./useColorVariantClasses-B6Me_Kx6.mjs";
4
+ import { t as BCloseButton_default } from "./BCloseButton-CjgbR1Ec.mjs";
5
+ import { computed, createBlock, createCommentVNode, createElementVNode, createTextVNode, defineComponent, normalizeClass, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, unref, useSlots, withCtx } from "vue";
6
+ //#region src/components/BFormTags/BFormTag.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = ["id"];
8
+ //#endregion
9
+ //#region src/components/BFormTags/BFormTag.vue
10
+ var BFormTag_default = /* @__PURE__ */ defineComponent({
11
+ __name: "BFormTag",
12
+ props: {
13
+ disabled: {
14
+ type: Boolean,
15
+ default: false
16
+ },
17
+ id: { default: void 0 },
18
+ noRemove: {
19
+ type: Boolean,
20
+ default: false
21
+ },
22
+ pill: {
23
+ type: Boolean,
24
+ default: false
25
+ },
26
+ removeLabel: { default: "Remove tag" },
27
+ tag: { default: "span" },
28
+ title: { default: void 0 },
29
+ variant: { default: "secondary" }
30
+ },
31
+ emits: ["remove"],
32
+ setup(__props, { emit: __emit }) {
33
+ const props = useDefaults(__props, "BFormTag");
34
+ const emit = __emit;
35
+ const slots = useSlots();
36
+ const computedId = useId$1(() => props.id);
37
+ const tagText = computed(() => ((slots.default?.({})[0].children ?? "").toString() || props.title) ?? "");
38
+ const taglabelId = computed(() => `${computedId.value}taglabel__`);
39
+ const colorClasses = useColorVariantClasses(props);
40
+ const computedClasses = computed(() => [colorClasses.value, {
41
+ "rounded-pill": props.pill,
42
+ "disabled": props.disabled
43
+ }]);
44
+ return (_ctx, _cache) => {
45
+ return openBlock(), createBlock(resolveDynamicComponent(unref(props).tag), {
46
+ id: unref(computedId),
47
+ title: tagText.value,
48
+ class: normalizeClass(["badge b-form-tag d-inline-flex align-items-center mw-100", computedClasses.value]),
49
+ "aria-labelledby": taglabelId.value
50
+ }, {
51
+ default: withCtx(() => [createElementVNode("span", {
52
+ id: taglabelId.value,
53
+ class: "b-form-tag-content flex-grow-1 text-truncate"
54
+ }, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(tagText.value), 1)])], 8, _hoisted_1), !unref(props).disabled && !unref(props).noRemove ? (openBlock(), createBlock(BCloseButton_default, {
55
+ key: 0,
56
+ "aria-keyshortcuts": "Delete",
57
+ "aria-label": unref(props).removeLabel,
58
+ class: "b-form-tag-remove",
59
+ "aria-describedby": taglabelId.value,
60
+ "aria-controls": unref(props).id,
61
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("remove", tagText.value))
62
+ }, null, 8, [
63
+ "aria-label",
64
+ "aria-describedby",
65
+ "aria-controls"
66
+ ])) : createCommentVNode("", true)]),
67
+ _: 3
68
+ }, 8, [
69
+ "id",
70
+ "title",
71
+ "class",
72
+ "aria-labelledby"
73
+ ]);
74
+ };
75
+ }
76
+ });
77
+ //#endregion
78
+ export { BFormTag_default as t };
79
+
80
+ //# sourceMappingURL=BFormTag-BUWEugEC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BFormTag-BUWEugEC.mjs","names":[],"sources":["../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTag.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BFormTagEmits, BFormTagSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\nconst emit = defineEmits<BFormTagEmits>()\nconst slots = defineSlots<BFormTagSlots>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BFormTagEmits, BFormTagSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\nconst emit = defineEmits<BFormTagEmits>()\nconst slots = defineSlots<BFormTagSlots>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ,YAVC,SAUmB,WAAU;EAC5C,MAAM,OAAO;EACb,MAAM,QAAQ,UAAA;EAEd,MAAM,aAAa,cAAY,MAAM,GAAE;EAEvC,MAAM,UAAU,iBACN,MAAM,UAAU,EAAE,CAAC,CAAC,GAAG,YAAY,IAAI,UAAU,IAAI,MAAM,UAAU,GAC/E;EACA,MAAM,aAAa,eAAe,GAAG,WAAW,MAAM,YAAW;EAEjE,MAAM,eAAe,uBAAuB,MAAK;EACjD,MAAM,kBAAkB,eAAe,CACrC,aAAa,OACb;GACE,gBAAgB,MAAM;GACtB,YAAY,MAAM;GACnB,CACF,CAAA;;uBA5DC,YAoBY,wBAnBL,MAAA,MAAK,CAAC,IAAG,EAAA;IACb,IAAI,MAAA,WAAU;IACd,OAAO,QAAA;IACR,OAAK,eAAA,CAAC,4DACE,gBAAA,MAAe,CAAA;IACtB,mBAAiB,WAAA;;2BAIX,CAFP,mBAEO,QAAA;KAFA,IAAI,WAAA;KAAY,OAAM;QAC3B,WAA0B,KAAA,QAAA,WAAA,EAAA,QAAA,CAAA,gBAAA,gBAAjB,QAAA,MAAO,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,GAAA,WAAA,EAAA,CAGT,MAAA,MAAK,CAAC,YAAQ,CAAK,MAAA,MAAK,CAAC,YAAA,WAAA,EADlC,YAQE,sBAAA;;KANA,qBAAkB;KACjB,cAAY,MAAA,MAAK,CAAC;KACnB,OAAM;KACL,oBAAkB,WAAA;KAClB,iBAAe,MAAA,MAAK,CAAC;KACrB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAW,QAAA,MAAO"}
@@ -0,0 +1,86 @@
1
+ require("./chunk-CoQrYLCe.js");
2
+ const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
3
+ const require_useId = require("./useId-DHrBgM7P.js");
4
+ const require_useColorVariantClasses = require("./useColorVariantClasses-CEfOwjPv.js");
5
+ const require_BCloseButton = require("./BCloseButton-CN__Jjcj.js");
6
+ let vue = require("vue");
7
+ //#region src/components/BFormTags/BFormTag.vue?vue&type=script&setup=true&lang.ts
8
+ var _hoisted_1 = ["id"];
9
+ //#endregion
10
+ //#region src/components/BFormTags/BFormTag.vue
11
+ var BFormTag_default = /* @__PURE__ */ (0, vue.defineComponent)({
12
+ __name: "BFormTag",
13
+ props: {
14
+ disabled: {
15
+ type: Boolean,
16
+ default: false
17
+ },
18
+ id: { default: void 0 },
19
+ noRemove: {
20
+ type: Boolean,
21
+ default: false
22
+ },
23
+ pill: {
24
+ type: Boolean,
25
+ default: false
26
+ },
27
+ removeLabel: { default: "Remove tag" },
28
+ tag: { default: "span" },
29
+ title: { default: void 0 },
30
+ variant: { default: "secondary" }
31
+ },
32
+ emits: ["remove"],
33
+ setup(__props, { emit: __emit }) {
34
+ const props = require_useDefaults.useDefaults(__props, "BFormTag");
35
+ const emit = __emit;
36
+ const slots = (0, vue.useSlots)();
37
+ const computedId = require_useId.useId(() => props.id);
38
+ const tagText = (0, vue.computed)(() => ((slots.default?.({})[0].children ?? "").toString() || props.title) ?? "");
39
+ const taglabelId = (0, vue.computed)(() => `${computedId.value}taglabel__`);
40
+ const colorClasses = require_useColorVariantClasses.useColorVariantClasses(props);
41
+ const computedClasses = (0, vue.computed)(() => [colorClasses.value, {
42
+ "rounded-pill": props.pill,
43
+ "disabled": props.disabled
44
+ }]);
45
+ return (_ctx, _cache) => {
46
+ return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(props).tag), {
47
+ id: (0, vue.unref)(computedId),
48
+ title: tagText.value,
49
+ class: (0, vue.normalizeClass)(["badge b-form-tag d-inline-flex align-items-center mw-100", computedClasses.value]),
50
+ "aria-labelledby": taglabelId.value
51
+ }, {
52
+ default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", {
53
+ id: taglabelId.value,
54
+ class: "b-form-tag-content flex-grow-1 text-truncate"
55
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(tagText.value), 1)])], 8, _hoisted_1), !(0, vue.unref)(props).disabled && !(0, vue.unref)(props).noRemove ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_BCloseButton.BCloseButton_default, {
56
+ key: 0,
57
+ "aria-keyshortcuts": "Delete",
58
+ "aria-label": (0, vue.unref)(props).removeLabel,
59
+ class: "b-form-tag-remove",
60
+ "aria-describedby": taglabelId.value,
61
+ "aria-controls": (0, vue.unref)(props).id,
62
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("remove", tagText.value))
63
+ }, null, 8, [
64
+ "aria-label",
65
+ "aria-describedby",
66
+ "aria-controls"
67
+ ])) : (0, vue.createCommentVNode)("", true)]),
68
+ _: 3
69
+ }, 8, [
70
+ "id",
71
+ "title",
72
+ "class",
73
+ "aria-labelledby"
74
+ ]);
75
+ };
76
+ }
77
+ });
78
+ //#endregion
79
+ Object.defineProperty(exports, "BFormTag_default", {
80
+ enumerable: true,
81
+ get: function() {
82
+ return BFormTag_default;
83
+ }
84
+ });
85
+
86
+ //# sourceMappingURL=BFormTag-C7B-bX72.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BFormTag-C7B-bX72.js","names":[],"sources":["../src/components/BFormTags/BFormTag.vue","../src/components/BFormTags/BFormTag.vue"],"sourcesContent":["<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BFormTagEmits, BFormTagSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\nconst emit = defineEmits<BFormTagEmits>()\nconst slots = defineSlots<BFormTagSlots>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n","<template>\n <component\n :is=\"props.tag\"\n :id=\"computedId\"\n :title=\"tagText\"\n class=\"badge b-form-tag d-inline-flex align-items-center mw-100\"\n :class=\"computedClasses\"\n :aria-labelledby=\"taglabelId\"\n >\n <span :id=\"taglabelId\" class=\"b-form-tag-content flex-grow-1 text-truncate\">\n <slot>{{ tagText }}</slot>\n </span>\n <BCloseButton\n v-if=\"!props.disabled && !props.noRemove\"\n aria-keyshortcuts=\"Delete\"\n :aria-label=\"props.removeLabel\"\n class=\"b-form-tag-remove\"\n :aria-describedby=\"taglabelId\"\n :aria-controls=\"props.id\"\n @click=\"emit('remove', tagText)\"\n />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormTagProps} from '../../types/ComponentProps'\nimport BCloseButton from '../BButton/BCloseButton.vue'\nimport {useColorVariantClasses} from '../../composables/useColorVariantClasses'\nimport type {BFormTagEmits, BFormTagSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormTagProps>(), {\n disabled: false,\n id: undefined,\n noRemove: false,\n pill: false,\n removeLabel: 'Remove tag',\n tag: 'span',\n title: undefined,\n variant: 'secondary',\n})\nconst props = useDefaults(_props, 'BFormTag')\nconst emit = defineEmits<BFormTagEmits>()\nconst slots = defineSlots<BFormTagSlots>()\n\nconst computedId = useId(() => props.id)\n\nconst tagText = computed(\n () => ((slots.default?.({})[0].children ?? '').toString() || props.title) ?? ''\n)\nconst taglabelId = computed(() => `${computedId.value}taglabel__`)\n\nconst colorClasses = useColorVariantClasses(props)\nconst computedClasses = computed(() => [\n colorClasses.value,\n {\n 'rounded-pill': props.pill,\n 'disabled': props.disabled,\n },\n])\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ,oBAAA,YAVC,SAUmB,WAAU;EAC5C,MAAM,OAAO;EACb,MAAM,SAAA,GAAA,IAAA,WAAQ;EAEd,MAAM,aAAa,cAAA,YAAY,MAAM,GAAE;EAEvC,MAAM,WAAA,GAAA,IAAA,kBACI,MAAM,UAAU,EAAE,CAAC,CAAC,GAAG,YAAY,IAAI,UAAU,IAAI,MAAM,UAAU,GAC/E;EACA,MAAM,cAAA,GAAA,IAAA,gBAA4B,GAAG,WAAW,MAAM,YAAW;EAEjE,MAAM,eAAe,+BAAA,uBAAuB,MAAK;EACjD,MAAM,mBAAA,GAAA,IAAA,gBAAiC,CACrC,aAAa,OACb;GACE,gBAAgB,MAAM;GACtB,YAAY,MAAM;GACnB,CACF,CAAA;;qGA3DQ,MAAK,CAAC,IAAG,EAAA;IACb,KAAA,GAAA,IAAA,OAAI,WAAU;IACd,OAAO,QAAA;IACR,QAAA,GAAA,IAAA,gBAAK,CAAC,4DACE,gBAAA,MAAe,CAAA;IACtB,mBAAiB,WAAA;;oCAIX,EAAA,GAAA,IAAA,oBAAA,QAAA;KAFA,IAAI,WAAA;KAAY,OAAM;4BACD,KAAA,QAAA,WAAA,EAAA,QAAA,EAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,iBAAjB,QAAA,MAAO,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,GAAA,WAAA,EAAA,EAAA,GAAA,IAAA,OAGT,MAAK,CAAC,YAAQ,EAAA,GAAA,IAAA,OAAK,MAAK,CAAC,aAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aAOhC,qBAAA,sBAAA;;KANA,qBAAkB;KACjB,eAAA,GAAA,IAAA,OAAY,MAAK,CAAC;KACnB,OAAM;KACL,oBAAkB,WAAA;KAClB,kBAAA,GAAA,IAAA,OAAe,MAAK,CAAC;KACrB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAW,QAAA,MAAO"}
@@ -1,84 +1,11 @@
1
1
  require("./chunk-CoQrYLCe.js");
2
- const require_dist = require("./dist-B_c893QG.js");
3
- const require_useId = require("./useId-DTrBK9CE.js");
4
- const require_useDefaults = require("./useDefaults-DK6Y9lar.js");
5
- const require_useColorVariantClasses = require("./useColorVariantClasses-DVaQDVQC.js");
6
- const require_stringUtils = require("./stringUtils-hUreqC0N.js");
7
- const require_BCloseButton = require("./BCloseButton-CgIVNv2g.js");
8
- const require_useStateClass = require("./useStateClass-Cnvy2Hnm.js");
2
+ const require_dist = require("./dist-BJ15ThEs.js");
3
+ const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
4
+ const require_useId = require("./useId-DHrBgM7P.js");
5
+ const require_stringUtils = require("./stringUtils-BwKOASdU.js");
6
+ const require_useStateClass = require("./useStateClass-CJ24hpkn.js");
7
+ const require_BFormTag = require("./BFormTag-C7B-bX72.js");
9
8
  let vue = require("vue");
10
- //#region src/components/BFormTags/BFormTag.vue?vue&type=script&setup=true&lang.ts
11
- var _hoisted_1$1 = ["id"];
12
- //#endregion
13
- //#region src/components/BFormTags/BFormTag.vue
14
- var BFormTag_default = /* @__PURE__ */ (0, vue.defineComponent)({
15
- __name: "BFormTag",
16
- props: {
17
- disabled: {
18
- type: Boolean,
19
- default: false
20
- },
21
- id: { default: void 0 },
22
- noRemove: {
23
- type: Boolean,
24
- default: false
25
- },
26
- pill: {
27
- type: Boolean,
28
- default: false
29
- },
30
- removeLabel: { default: "Remove tag" },
31
- tag: { default: "span" },
32
- title: { default: void 0 },
33
- variant: { default: "secondary" }
34
- },
35
- emits: ["remove"],
36
- setup(__props, { emit: __emit }) {
37
- const props = require_useDefaults.useDefaults(__props, "BFormTag");
38
- const emit = __emit;
39
- const slots = (0, vue.useSlots)();
40
- const computedId = require_useId.useId(() => props.id);
41
- const tagText = (0, vue.computed)(() => ((slots.default?.({})[0].children ?? "").toString() || props.title) ?? "");
42
- const taglabelId = (0, vue.computed)(() => `${computedId.value}taglabel__`);
43
- const colorClasses = require_useColorVariantClasses.useColorVariantClasses(props);
44
- const computedClasses = (0, vue.computed)(() => [colorClasses.value, {
45
- "rounded-pill": props.pill,
46
- "disabled": props.disabled
47
- }]);
48
- return (_ctx, _cache) => {
49
- return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)((0, vue.unref)(props).tag), {
50
- id: (0, vue.unref)(computedId),
51
- title: tagText.value,
52
- class: (0, vue.normalizeClass)(["badge b-form-tag d-inline-flex align-items-center mw-100", computedClasses.value]),
53
- "aria-labelledby": taglabelId.value
54
- }, {
55
- default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", {
56
- id: taglabelId.value,
57
- class: "b-form-tag-content flex-grow-1 text-truncate"
58
- }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(tagText.value), 1)])], 8, _hoisted_1$1), !(0, vue.unref)(props).disabled && !(0, vue.unref)(props).noRemove ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_BCloseButton.BCloseButton_default, {
59
- key: 0,
60
- "aria-keyshortcuts": "Delete",
61
- "aria-label": (0, vue.unref)(props).removeLabel,
62
- class: "b-form-tag-remove",
63
- "aria-describedby": taglabelId.value,
64
- "aria-controls": (0, vue.unref)(props).id,
65
- onClick: _cache[0] || (_cache[0] = ($event) => emit("remove", tagText.value))
66
- }, null, 8, [
67
- "aria-label",
68
- "aria-describedby",
69
- "aria-controls"
70
- ])) : (0, vue.createCommentVNode)("", true)]),
71
- _: 3
72
- }, 8, [
73
- "id",
74
- "title",
75
- "class",
76
- "aria-labelledby"
77
- ]);
78
- };
79
- }
80
- });
81
- //#endregion
82
9
  //#region src/components/BFormTags/BFormTags.vue?vue&type=script&setup=true&lang.ts
83
10
  var _hoisted_1 = ["id"];
84
11
  var _hoisted_2 = [
@@ -291,7 +218,10 @@ var BFormTags_default = /* @__PURE__ */ (0, vue.defineComponent)({
291
218
  if ((e.key === "Backspace" || e.key === "Delete") && props.removeOnDelete && inputValue.value === "" && shouldRemoveOnDelete.value && tags.value.length > 0) removeTag(tags.value[tags.value.length - 1]);
292
219
  else shouldRemoveOnDelete.value = true;
293
220
  };
294
- require_dist.onKeyStroke(onKeydown, { target: input });
221
+ require_dist.onKeyStroke(onKeydown, {
222
+ target: input,
223
+ passive: true
224
+ });
295
225
  const separator = (0, vue.computed)(() => {
296
226
  if (!props.separator) return;
297
227
  return typeof props.separator === "string" ? props.separator : props.separator.join("");
@@ -410,7 +340,7 @@ var BFormTags_default = /* @__PURE__ */ (0, vue.defineComponent)({
410
340
  tagVariant: (0, vue.unref)(props).tagVariant,
411
341
  tagPills: (0, vue.unref)(props).tagPills,
412
342
  removeTag
413
- }, () => [((0, vue.openBlock)(), (0, vue.createBlock)(BFormTag_default, {
343
+ }, () => [((0, vue.openBlock)(), (0, vue.createBlock)(require_BFormTag.BFormTag_default, {
414
344
  key: tag,
415
345
  class: (0, vue.normalizeClass)((0, vue.unref)(props).tagClass),
416
346
  tag: "li",
@@ -485,12 +415,6 @@ var BFormTags_default = /* @__PURE__ */ (0, vue.defineComponent)({
485
415
  }
486
416
  });
487
417
  //#endregion
488
- Object.defineProperty(exports, "BFormTag_default", {
489
- enumerable: true,
490
- get: function() {
491
- return BFormTag_default;
492
- }
493
- });
494
418
  Object.defineProperty(exports, "BFormTags_default", {
495
419
  enumerable: true,
496
420
  get: function() {
@@ -498,4 +422,4 @@ Object.defineProperty(exports, "BFormTags_default", {
498
422
  }
499
423
  });
500
424
 
501
- //# sourceMappingURL=BFormTags-pK9i3cOB.js.map
425
+ //# sourceMappingURL=BFormTags-BFA6xbr3.js.map