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":"BFormRating-Cq94zurU.mjs","names":[],"sources":["../src/components/BFormRating/BFormRating.vue","../src/components/BFormRating/BFormRating.vue"],"sourcesContent":["<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${displayValue} of ${clampedStars}`\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n aria-label=\"x\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n color: '',\n id: undefined,\n inline: false,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be render to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${displayValue} of ${clampedStars}`\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n aria-label=\"x\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n color: '',\n id: undefined,\n inline: false,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be render to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"BFormRating-Bb_ACp-9.mjs","names":[],"sources":["../src/components/BFormRating/BFormRating.vue","../src/components/BFormRating/BFormRating.vue"],"sourcesContent":["<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${displayValue} of ${clampedStars}`\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n aria-label=\"x\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n color: '',\n id: undefined,\n inline: false,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be render to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${displayValue} of ${clampedStars}`\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n aria-label=\"x\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n color: '',\n id: undefined,\n inline: false,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be render to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  require("./chunk-CoQrYLCe.js");
2
- const require_useId = require("./useId-DTrBK9CE.js");
3
- const require_useDefaults = require("./useDefaults-DK6Y9lar.js");
4
- const require_useRtl = require("./useRtl-BlPLBmTe.js");
2
+ const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
3
+ const require_useId = require("./useId-DHrBgM7P.js");
4
+ const require_useRtl = require("./useRtl-DXAooTrl.js");
5
5
  let vue = require("vue");
6
6
  //#region src/components/BFormRating/BFormRating.vue?vue&type=script&setup=true&lang.ts
7
7
  var _hoisted_1 = [
@@ -260,4 +260,4 @@ Object.defineProperty(exports, "BFormRating_default", {
260
260
  }
261
261
  });
262
262
 
263
- //# sourceMappingURL=BFormRating-_MVRGNOF.js.map
263
+ //# sourceMappingURL=BFormRating-CNqf91vN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BFormRating-_MVRGNOF.js","names":[],"sources":["../src/components/BFormRating/BFormRating.vue","../src/components/BFormRating/BFormRating.vue"],"sourcesContent":["<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${displayValue} of ${clampedStars}`\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n aria-label=\"x\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n color: '',\n id: undefined,\n inline: false,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be render to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${displayValue} of ${clampedStars}`\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n aria-label=\"x\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n color: '',\n id: undefined,\n inline: false,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be render to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"BFormRating-CNqf91vN.js","names":[],"sources":["../src/components/BFormRating/BFormRating.vue","../src/components/BFormRating/BFormRating.vue"],"sourcesContent":["<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${displayValue} of ${clampedStars}`\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n aria-label=\"x\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n color: '',\n id: undefined,\n inline: false,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be render to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${displayValue} of ${clampedStars}`\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n :aria-readonly=\"props.readonly ? true : undefined\"\n :tabindex=\"props.disabled ? undefined : '0'\"\n @keydown=\"onKeydown\"\n >\n <input\n v-if=\"props.name && !props.disabled\"\n key=\"hidden\"\n type=\"hidden\"\n :name=\"props.name\"\n :form=\"props.form\"\n :value=\"modelValue\"\n />\n <span\n v-if=\"props.showClear && !props.readonly && !props.disabled\"\n class=\"clear-button-spacing\"\n @click=\"clearRating\"\n >\n <slot name=\"icon-clear\">\n <svg\n viewBox=\"0 0 16 16\"\n role=\"img\"\n aria-label=\"x\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"clear-icon\"\n >\n <g>\n <path\n d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708\"\n />\n </g>\n </svg>\n </slot>\n </span>\n <span\n v-for=\"(starIndex, index) in clampedStars\"\n :key=\"starIndex\"\n class=\"star\"\n @click=\"selectRating(starIndex)\"\n >\n <slot :star-index=\"starIndex\" :is-filled=\"isIconFull(index)\" :is-half=\"isIconHalf(index)\">\n <span class=\"b-form-rating-star\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"computedSize\"\n :height=\"computedSize\"\n fill=\"currentColor\"\n :class=\"[iconColors[index]?.class]\"\n :style=\"iconColors[index]?.style\"\n class=\"star-spacing\"\n viewBox=\"0 0 16 16\"\n >\n <path\n v-if=\"isIconFull(index)\"\n d=\"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\"\n />\n <path\n v-else-if=\"isIconHalf(index)\"\n d=\"M5.354 5.119 7.538.792A.52.52 0 0 1 8 .5c.183 0 .366.097.465.292l2.184 4.327 4.898.696A.54.54 0 0 1 16 6.32a.55.55 0 0 1-.17.445l-3.523 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256a.5.5 0 0 1-.146.05c-.342.06-.668-.254-.6-.642l.83-4.73L.173 6.765a.55.55 0 0 1-.172-.403.6.6 0 0 1 .085-.302.51.51 0 0 1 .37-.245zM8 12.027a.5.5 0 0 1 .232.056l3.686 1.894-.694-3.957a.56.56 0 0 1 .162-.505l2.907-2.77-4.052-.576a.53.53 0 0 1-.393-.288L8.001 2.223 8 2.226z\"\n />\n <path\n v-else\n d=\"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.522 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.56.56 0 0 0-.163-.505L1.71 6.745l4.052-.576a.53.53 0 0 0 .393-.288L8 2.223l1.847 3.658a.53.53 0 0 0 .393.288l4.052.575-2.906 2.77a.56.56 0 0 0-.163.506l.694 3.957-3.686-1.894a.5.5 0 0 0-.461 0z\"\n />\n </svg>\n </span>\n </slot>\n </span>\n\n <span\n v-if=\"props.showValue || props.showValueMax\"\n :style=\"{fontSize: computedSize}\"\n class=\"rating-value-text\"\n >\n {{ displayValueText }}\n </span>\n </output>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, ref} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useRtl} from '../../composables/useRtl'\nimport type {BFormRatingProps, BFormRatingSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<Omit<BFormRatingProps, 'modelValue'>>(), {\n color: '',\n id: undefined,\n inline: false,\n locale: undefined,\n noBorder: false,\n precision: 0,\n readonly: false,\n disabled: false,\n form: undefined,\n name: undefined,\n showClear: false,\n showValue: false,\n showValueMax: false,\n size: '1rem',\n stars: 5,\n variant: undefined,\n})\nconst props = useDefaults(_props, 'BFormRating')\ndefineSlots<BFormRatingSlots>()\n\nconst modelValue = defineModel<Exclude<BFormRatingProps['modelValue'], undefined>>({default: 0})\n\nconst computedId = useId(() => props.id, 'form-rating')\n\nconst {isRtl, locale: globalLocale} = useRtl()\n\nconst computedLocale = computed(() => {\n const loc = (props.locale ?? globalLocale?.value) || undefined\n const nf = new Intl.NumberFormat(loc)\n return nf.resolvedOptions().locale\n})\n\nconst computedRtl = computed(() => {\n const locale = computedLocale.value\n try {\n const localeObj = new Intl.Locale(locale)\n const {textInfo} = localeObj as Intl.Locale & {textInfo?: {direction: string}}\n if (textInfo) {\n return textInfo.direction === 'rtl'\n }\n } catch {\n // Fallback\n }\n return isRtl?.value ?? false\n})\n\nconst computedClasses = computed(() => ({\n 'form-control': true,\n 'is-readonly': props.readonly,\n 'is-disabled': props.disabled,\n 'no-border': props.noBorder,\n 'b-form-rating': true,\n 'd-inline-flex': props.inline,\n}))\n\nfunction isIconFull(index: number): boolean {\n return displayValue.value - index >= 1\n}\n\nfunction isIconHalf(index: number): boolean {\n const diff = displayValue.value - index\n return diff >= 0.5 && diff < 1\n}\n\nconst hoverValue = ref<number | null>(null)\n\nconst displayValue = computed(() =>\n hoverValue.value !== null ? hoverValue.value : modelValue.value\n)\n\n// Set the minimum amount of star can be render to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { d as formGroupKey, f as formSelectKey } from "./keys-CQKrwmvN.mjs";
2
- import { L as useToNumber, h as useFocus } from "./dist-Dn5blevd.mjs";
3
- import { t as useId$1 } from "./useId-CCwnEmGh.mjs";
4
- import { t as useDefaults } from "./useDefaults-CCWS15M8.mjs";
5
- import { n as BFormSelectOption_default, t as useFormSelect } from "./useFormSelect-_-ln6FKQ.mjs";
6
- import { t as useAriaInvalid } from "./useAriaInvalid-01Dd60GC.mjs";
7
- import { t as useStateClass } from "./useStateClass-DKjpw1Pn.mjs";
2
+ import { h as useFocus, z as useToNumber } from "./dist-B10a-gZ8.mjs";
3
+ import { t as useDefaults } from "./useDefaults-BKgBaqOV.mjs";
4
+ import { t as useId$1 } from "./useId-BKZFSYm8.mjs";
5
+ import { t as useStateClass } from "./useStateClass-CdmlbrGn.mjs";
6
+ import { t as useAriaInvalid } from "./useAriaInvalid-apOwgexm.mjs";
7
+ import { t as useFormSelect } from "./useFormSelect-CANw3ZJG.mjs";
8
+ import { t as BFormSelectOption_default } from "./BFormSelectOption-O8cyyv3i.mjs";
8
9
  import { Fragment, computed, createBlock, createElementBlock, createTextVNode, defineComponent, guardReactiveProps, inject, mergeModels, mergeProps, normalizeClass, normalizeProps, openBlock, provide, readonly, renderList, renderSlot, toDisplayString, unref, useModel, useTemplateRef, vModelSelect, withCtx, withDirectives } from "vue";
9
10
  //#region src/components/BFormSelect/BFormSelectOptionGroup.vue?vue&type=script&setup=true&lang.ts
10
11
  var _hoisted_1$1 = ["label"];
@@ -293,4 +294,4 @@ var BFormSelect_default = /* @__PURE__ */ defineComponent({
293
294
  //#endregion
294
295
  export { BFormSelectOptionGroup_default as n, BFormSelect_default as t };
295
296
 
296
- //# sourceMappingURL=BFormSelect-DbpJ_0j-.mjs.map
297
+ //# sourceMappingURL=BFormSelect-Dg6OwMl-.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BFormSelect-DbpJ_0j-.mjs","names":["$attrs"],"sources":["../src/components/BFormSelect/BFormSelectOptionGroup.vue","../src/components/BFormSelect/BFormSelectOptionGroup.vue","../src/components/BFormSelect/BFormSelectBase.vue","../src/components/BFormSelect/BFormSelectBase.vue","../src/components/BFormSelect/BFormSelect.vue","../src/components/BFormSelect/BFormSelect.vue"],"sourcesContent":["<template>\n <optgroup :label=\"props.label\">\n <slot name=\"first\" />\n <BFormSelectOption\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"index\"\n v-bind=\"{...$attrs, ...option}\"\n >\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n <slot />\n </optgroup>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionGroupProps} from '../../types/ComponentProps'\nimport type {ComputedRef} from 'vue'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport type {SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectOptionGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionGroupProps>(), {\n disabledField: 'disabled',\n label: undefined,\n options: () => [],\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelectOptionGroup')\ndefineSlots<BFormSelectOptionGroupSlots<T>>()\n\n// The form select context is injected by BFormSelectOption components automatically\n// We don't need to handle the selected value here since each BFormSelectOption\n// will inject the context directly\n\n// Type assertion is needed because useFormSelect is not generic-aware.\n// This is acceptable in the wrapper/base pattern where the wrapper (BFormSelect)\n// handles type-safe normalization before passing to base components.\nconst {normalizedOptions} = useFormSelect(() => props.options, props) as {\n normalizedOptions: ComputedRef<SelectOption<T>[]>\n}\n</script>\n","<template>\n <optgroup :label=\"props.label\">\n <slot name=\"first\" />\n <BFormSelectOption\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"index\"\n v-bind=\"{...$attrs, ...option}\"\n >\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n <slot />\n </optgroup>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionGroupProps} from '../../types/ComponentProps'\nimport type {ComputedRef} from 'vue'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport type {SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectOptionGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionGroupProps>(), {\n disabledField: 'disabled',\n label: undefined,\n options: () => [],\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelectOptionGroup')\ndefineSlots<BFormSelectOptionGroupSlots<T>>()\n\n// The form select context is injected by BFormSelectOption components automatically\n// We don't need to handle the selected value here since each BFormSelectOption\n// will inject the context directly\n\n// Type assertion is needed because useFormSelect is not generic-aware.\n// This is acceptable in the wrapper/base pattern where the wrapper (BFormSelect)\n// handles type-safe normalization before passing to base components.\nconst {normalizedOptions} = useFormSelect(() => props.options, props) as {\n normalizedOptions: ComputedRef<SelectOption<T>[]>\n}\n</script>\n","<template>\n <select\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedClasses\"\n :name=\"props.name\"\n :form=\"props.form || undefined\"\n :multiple=\"props.multiple || undefined\"\n :size=\"computedSelectSize\"\n :disabled=\"isDisabled\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n :aria-invalid=\"computedAriaInvalid\"\n >\n <slot name=\"first\" />\n <template v-for=\"(option, index) in normalizedOptsWrapper\" :key=\"index\">\n <BFormSelectOptionGroup\n v-if=\"isComplex(option)\"\n :label=\"option.label\"\n :options=\"option.options\"\n :value-field=\"props.valueField\"\n :text-field=\"props.textField\"\n :disabled-field=\"props.disabledField\"\n />\n <BFormSelectOption v-else v-bind=\"option\">\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n </template>\n <slot />\n </select>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BFormSelectBaseProps} from '../../types/ComponentProps'\nimport {computed, inject, provide, readonly, useTemplateRef} from 'vue'\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport BFormSelectOptionGroup from './BFormSelectOptionGroup.vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport {formGroupKey, formSelectKey} from '../../utils/keys'\n\n/**\n * Base component for BFormSelect - non-generic implementation using useDefaults.\n * Renders a select element with normalized options and option groups.\n * Supports both simple options and complex grouped options.\n */\nconst _props = withDefaults(defineProps<Omit<BFormSelectBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [],\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: 'md',\n state: null,\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelect')\n\nconst modelValue = defineModel<unknown>({\n default: '',\n})\n\nconst computedId = useId(() => props.id, 'input')\n\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\nconst isDisabled = computed(() => props.disabled || (formGroupData?.disabled.value ?? false))\n\nconst selectSizeNumber = useToNumber(() => props.selectSize)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n 'form-control': props.plain,\n [`form-control-${props.size}`]: props.size !== 'md' && props.plain,\n 'form-select': !props.plain,\n [`form-select-${props.size}`]: props.size !== 'md' && !props.plain,\n },\n])\n\nconst computedSelectSize = computed(() =>\n !props.plain && selectSizeNumber.value > 0 ? selectSizeNumber.value : undefined\n)\n\nconst computedAriaInvalid = useAriaInvalid(\n () => props.ariaInvalid,\n () => props.state\n)\n\nconst {normalizedOptions, isComplex} = useFormSelect(() => props.options, props)\n\nconst normalizedOptsWrapper = computed(() => normalizedOptions.value)\n\nconst localValue = computed({\n get: () => modelValue.value,\n set: (newValue) => {\n modelValue.value = newValue\n },\n})\n\n// Provide the current model value for child components to inject\nprovide(formSelectKey, {\n modelValue: readonly(localValue),\n})\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <select\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedClasses\"\n :name=\"props.name\"\n :form=\"props.form || undefined\"\n :multiple=\"props.multiple || undefined\"\n :size=\"computedSelectSize\"\n :disabled=\"isDisabled\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n :aria-invalid=\"computedAriaInvalid\"\n >\n <slot name=\"first\" />\n <template v-for=\"(option, index) in normalizedOptsWrapper\" :key=\"index\">\n <BFormSelectOptionGroup\n v-if=\"isComplex(option)\"\n :label=\"option.label\"\n :options=\"option.options\"\n :value-field=\"props.valueField\"\n :text-field=\"props.textField\"\n :disabled-field=\"props.disabledField\"\n />\n <BFormSelectOption v-else v-bind=\"option\">\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n </template>\n <slot />\n </select>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BFormSelectBaseProps} from '../../types/ComponentProps'\nimport {computed, inject, provide, readonly, useTemplateRef} from 'vue'\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport BFormSelectOptionGroup from './BFormSelectOptionGroup.vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport {formGroupKey, formSelectKey} from '../../utils/keys'\n\n/**\n * Base component for BFormSelect - non-generic implementation using useDefaults.\n * Renders a select element with normalized options and option groups.\n * Supports both simple options and complex grouped options.\n */\nconst _props = withDefaults(defineProps<Omit<BFormSelectBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [],\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: 'md',\n state: null,\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelect')\n\nconst modelValue = defineModel<unknown>({\n default: '',\n})\n\nconst computedId = useId(() => props.id, 'input')\n\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\nconst isDisabled = computed(() => props.disabled || (formGroupData?.disabled.value ?? false))\n\nconst selectSizeNumber = useToNumber(() => props.selectSize)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n 'form-control': props.plain,\n [`form-control-${props.size}`]: props.size !== 'md' && props.plain,\n 'form-select': !props.plain,\n [`form-select-${props.size}`]: props.size !== 'md' && !props.plain,\n },\n])\n\nconst computedSelectSize = computed(() =>\n !props.plain && selectSizeNumber.value > 0 ? selectSizeNumber.value : undefined\n)\n\nconst computedAriaInvalid = useAriaInvalid(\n () => props.ariaInvalid,\n () => props.state\n)\n\nconst {normalizedOptions, isComplex} = useFormSelect(() => props.options, props)\n\nconst normalizedOptsWrapper = computed(() => normalizedOptions.value)\n\nconst localValue = computed({\n get: () => modelValue.value,\n set: (newValue) => {\n modelValue.value = newValue\n },\n})\n\n// Provide the current model value for child components to inject\nprovide(formSelectKey, {\n modelValue: readonly(localValue),\n})\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <BFormSelectBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions as any\">\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps as any\" />\n </template>\n\n <slot />\n </BFormSelectBase>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n Options extends readonly (object | string | number | boolean)[] = readonly (\n | object\n | string\n | number\n | boolean\n )[]\n \"\n>\nimport type {BFormSelectProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport BFormSelectBase from './BFormSelectBase.vue'\nimport type {ComplexSelectOptionRaw, SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectSlots} from '../../types'\nimport type {OptionsValues} from '../../types/OptionsTypes'\n\n/**\n * Type-safe wrapper component for BFormSelect.\n * Provides generic type safety for options array and strongly-typed modelValue.\n * Uses Options array generic to extract union of all possible values.\n * Normalizes typed options and forwards to BFormSelectBase for rendering.\n * Supports both complex objects and simple scalar types (string, number).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values (or array if multiple)\n * - Object arrays with 'value' field: modelValue is union of value field types\n * - Use 'as const' on options for literal type inference\n */\nconst props = withDefaults(defineProps<Omit<BFormSelectProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [] as unknown as Options,\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: 'md',\n state: null,\n textField: 'text',\n valueField: 'value',\n})\ndefineSlots<BFormSelectSlots<OptionsValues<Options>>>()\n\n// Type-safe model value - single value or array depending on multiple prop.\n// NOTE: OptionsValues assumes a static \"value\" key; custom valueField is not\n// reflected in the type — modelValue falls back to unknown in that case.\nconst modelValue = defineModel<OptionsValues<Options> | OptionsValues<Options>[] | null>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: '' as any,\n})\n\n// Normalize a single simple option using custom field names\nconst normalizeSimpleOption = (el: object): SelectOption =>\n ({\n ...(el as Record<string, unknown>),\n value: (el as Record<string, unknown>)[props.valueField as string],\n text: ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ?? '',\n disabled:\n ((el as Record<string, unknown>)[props.disabledField as string] as boolean | undefined) ??\n false,\n }) as SelectOption\n\nconst normalizePrimitive = (el: string | number | boolean): SelectOption =>\n ({value: el, text: String(el), disabled: false}) as SelectOption\n\n// Type-safe normalization of options (supports both simple and complex/grouped)\nconst normalizedOptions = computed(() => {\n const optionsArray = props.options ?? []\n const hasComplexOptions = optionsArray.some(\n (el) =>\n typeof el !== 'string' &&\n typeof el !== 'number' &&\n typeof el !== 'boolean' &&\n (el as Record<string, unknown>)[props.optionsField as string] !== undefined\n )\n\n if (hasComplexOptions) {\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n\n // Check if this is a complex (grouped) option\n const optionsField = (el as Record<string, unknown>)[props.optionsField as string]\n if (optionsField !== undefined && Array.isArray(optionsField)) {\n // Complex option with nested options\n const label =\n ((el as Record<string, unknown>)[props.labelField as string] as string | undefined) ??\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n ''\n return {\n label,\n options: optionsField.map((subOpt: unknown) => {\n if (\n typeof subOpt === 'string' ||\n typeof subOpt === 'number' ||\n typeof subOpt === 'boolean'\n ) {\n return normalizePrimitive(subOpt)\n }\n return normalizeSimpleOption(subOpt as object)\n }),\n } as ComplexSelectOptionRaw\n }\n\n // Simple option - spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n }\n\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n // Spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n})\n\n// Forward all props except options (which we normalize), modelValue (handled separately),\n// and field mappings (already used for normalization)\nconst forwardedProps = computed(() => ({\n ariaInvalid: props.ariaInvalid,\n autofocus: props.autofocus,\n disabled: props.disabled,\n form: props.form,\n id: props.id,\n multiple: props.multiple,\n name: props.name,\n plain: props.plain,\n required: props.required,\n selectSize: props.selectSize,\n size: props.size,\n state: props.state,\n}))\n</script>\n","<template>\n <BFormSelectBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions as any\">\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps as any\" />\n </template>\n\n <slot />\n </BFormSelectBase>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n Options extends readonly (object | string | number | boolean)[] = readonly (\n | object\n | string\n | number\n | boolean\n )[]\n \"\n>\nimport type {BFormSelectProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport BFormSelectBase from './BFormSelectBase.vue'\nimport type {ComplexSelectOptionRaw, SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectSlots} from '../../types'\nimport type {OptionsValues} from '../../types/OptionsTypes'\n\n/**\n * Type-safe wrapper component for BFormSelect.\n * Provides generic type safety for options array and strongly-typed modelValue.\n * Uses Options array generic to extract union of all possible values.\n * Normalizes typed options and forwards to BFormSelectBase for rendering.\n * Supports both complex objects and simple scalar types (string, number).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values (or array if multiple)\n * - Object arrays with 'value' field: modelValue is union of value field types\n * - Use 'as const' on options for literal type inference\n */\nconst props = withDefaults(defineProps<Omit<BFormSelectProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [] as unknown as Options,\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: 'md',\n state: null,\n textField: 'text',\n valueField: 'value',\n})\ndefineSlots<BFormSelectSlots<OptionsValues<Options>>>()\n\n// Type-safe model value - single value or array depending on multiple prop.\n// NOTE: OptionsValues assumes a static \"value\" key; custom valueField is not\n// reflected in the type — modelValue falls back to unknown in that case.\nconst modelValue = defineModel<OptionsValues<Options> | OptionsValues<Options>[] | null>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: '' as any,\n})\n\n// Normalize a single simple option using custom field names\nconst normalizeSimpleOption = (el: object): SelectOption =>\n ({\n ...(el as Record<string, unknown>),\n value: (el as Record<string, unknown>)[props.valueField as string],\n text: ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ?? '',\n disabled:\n ((el as Record<string, unknown>)[props.disabledField as string] as boolean | undefined) ??\n false,\n }) as SelectOption\n\nconst normalizePrimitive = (el: string | number | boolean): SelectOption =>\n ({value: el, text: String(el), disabled: false}) as SelectOption\n\n// Type-safe normalization of options (supports both simple and complex/grouped)\nconst normalizedOptions = computed(() => {\n const optionsArray = props.options ?? []\n const hasComplexOptions = optionsArray.some(\n (el) =>\n typeof el !== 'string' &&\n typeof el !== 'number' &&\n typeof el !== 'boolean' &&\n (el as Record<string, unknown>)[props.optionsField as string] !== undefined\n )\n\n if (hasComplexOptions) {\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n\n // Check if this is a complex (grouped) option\n const optionsField = (el as Record<string, unknown>)[props.optionsField as string]\n if (optionsField !== undefined && Array.isArray(optionsField)) {\n // Complex option with nested options\n const label =\n ((el as Record<string, unknown>)[props.labelField as string] as string | undefined) ??\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n ''\n return {\n label,\n options: optionsField.map((subOpt: unknown) => {\n if (\n typeof subOpt === 'string' ||\n typeof subOpt === 'number' ||\n typeof subOpt === 'boolean'\n ) {\n return normalizePrimitive(subOpt)\n }\n return normalizeSimpleOption(subOpt as object)\n }),\n } as ComplexSelectOptionRaw\n }\n\n // Simple option - spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n }\n\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n // Spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n})\n\n// Forward all props except options (which we normalize), modelValue (handled separately),\n// and field mappings (already used for normalization)\nconst forwardedProps = computed(() => ({\n ariaInvalid: props.ariaInvalid,\n autofocus: props.autofocus,\n disabled: props.disabled,\n form: props.form,\n id: props.id,\n multiple: props.multiple,\n name: props.name,\n plain: props.plain,\n required: props.required,\n selectSize: props.selectSize,\n size: props.size,\n state: props.state,\n}))\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"BFormSelect-Dg6OwMl-.mjs","names":["$attrs"],"sources":["../src/components/BFormSelect/BFormSelectOptionGroup.vue","../src/components/BFormSelect/BFormSelectOptionGroup.vue","../src/components/BFormSelect/BFormSelectBase.vue","../src/components/BFormSelect/BFormSelectBase.vue","../src/components/BFormSelect/BFormSelect.vue","../src/components/BFormSelect/BFormSelect.vue"],"sourcesContent":["<template>\n <optgroup :label=\"props.label\">\n <slot name=\"first\" />\n <BFormSelectOption\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"index\"\n v-bind=\"{...$attrs, ...option}\"\n >\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n <slot />\n </optgroup>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionGroupProps} from '../../types/ComponentProps'\nimport type {ComputedRef} from 'vue'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport type {SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectOptionGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionGroupProps>(), {\n disabledField: 'disabled',\n label: undefined,\n options: () => [],\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelectOptionGroup')\ndefineSlots<BFormSelectOptionGroupSlots<T>>()\n\n// The form select context is injected by BFormSelectOption components automatically\n// We don't need to handle the selected value here since each BFormSelectOption\n// will inject the context directly\n\n// Type assertion is needed because useFormSelect is not generic-aware.\n// This is acceptable in the wrapper/base pattern where the wrapper (BFormSelect)\n// handles type-safe normalization before passing to base components.\nconst {normalizedOptions} = useFormSelect(() => props.options, props) as {\n normalizedOptions: ComputedRef<SelectOption<T>[]>\n}\n</script>\n","<template>\n <optgroup :label=\"props.label\">\n <slot name=\"first\" />\n <BFormSelectOption\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"index\"\n v-bind=\"{...$attrs, ...option}\"\n >\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n <slot />\n </optgroup>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BFormSelectOptionGroupProps} from '../../types/ComponentProps'\nimport type {ComputedRef} from 'vue'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport type {SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectOptionGroupSlots} from '../../types'\n\nconst _props = withDefaults(defineProps<BFormSelectOptionGroupProps>(), {\n disabledField: 'disabled',\n label: undefined,\n options: () => [],\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelectOptionGroup')\ndefineSlots<BFormSelectOptionGroupSlots<T>>()\n\n// The form select context is injected by BFormSelectOption components automatically\n// We don't need to handle the selected value here since each BFormSelectOption\n// will inject the context directly\n\n// Type assertion is needed because useFormSelect is not generic-aware.\n// This is acceptable in the wrapper/base pattern where the wrapper (BFormSelect)\n// handles type-safe normalization before passing to base components.\nconst {normalizedOptions} = useFormSelect(() => props.options, props) as {\n normalizedOptions: ComputedRef<SelectOption<T>[]>\n}\n</script>\n","<template>\n <select\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedClasses\"\n :name=\"props.name\"\n :form=\"props.form || undefined\"\n :multiple=\"props.multiple || undefined\"\n :size=\"computedSelectSize\"\n :disabled=\"isDisabled\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n :aria-invalid=\"computedAriaInvalid\"\n >\n <slot name=\"first\" />\n <template v-for=\"(option, index) in normalizedOptsWrapper\" :key=\"index\">\n <BFormSelectOptionGroup\n v-if=\"isComplex(option)\"\n :label=\"option.label\"\n :options=\"option.options\"\n :value-field=\"props.valueField\"\n :text-field=\"props.textField\"\n :disabled-field=\"props.disabledField\"\n />\n <BFormSelectOption v-else v-bind=\"option\">\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n </template>\n <slot />\n </select>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BFormSelectBaseProps} from '../../types/ComponentProps'\nimport {computed, inject, provide, readonly, useTemplateRef} from 'vue'\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport BFormSelectOptionGroup from './BFormSelectOptionGroup.vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport {formGroupKey, formSelectKey} from '../../utils/keys'\n\n/**\n * Base component for BFormSelect - non-generic implementation using useDefaults.\n * Renders a select element with normalized options and option groups.\n * Supports both simple options and complex grouped options.\n */\nconst _props = withDefaults(defineProps<Omit<BFormSelectBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [],\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: 'md',\n state: null,\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelect')\n\nconst modelValue = defineModel<unknown>({\n default: '',\n})\n\nconst computedId = useId(() => props.id, 'input')\n\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\nconst isDisabled = computed(() => props.disabled || (formGroupData?.disabled.value ?? false))\n\nconst selectSizeNumber = useToNumber(() => props.selectSize)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n 'form-control': props.plain,\n [`form-control-${props.size}`]: props.size !== 'md' && props.plain,\n 'form-select': !props.plain,\n [`form-select-${props.size}`]: props.size !== 'md' && !props.plain,\n },\n])\n\nconst computedSelectSize = computed(() =>\n !props.plain && selectSizeNumber.value > 0 ? selectSizeNumber.value : undefined\n)\n\nconst computedAriaInvalid = useAriaInvalid(\n () => props.ariaInvalid,\n () => props.state\n)\n\nconst {normalizedOptions, isComplex} = useFormSelect(() => props.options, props)\n\nconst normalizedOptsWrapper = computed(() => normalizedOptions.value)\n\nconst localValue = computed({\n get: () => modelValue.value,\n set: (newValue) => {\n modelValue.value = newValue\n },\n})\n\n// Provide the current model value for child components to inject\nprovide(formSelectKey, {\n modelValue: readonly(localValue),\n})\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <select\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedClasses\"\n :name=\"props.name\"\n :form=\"props.form || undefined\"\n :multiple=\"props.multiple || undefined\"\n :size=\"computedSelectSize\"\n :disabled=\"isDisabled\"\n :required=\"props.required || undefined\"\n :aria-required=\"props.required || undefined\"\n :aria-invalid=\"computedAriaInvalid\"\n >\n <slot name=\"first\" />\n <template v-for=\"(option, index) in normalizedOptsWrapper\" :key=\"index\">\n <BFormSelectOptionGroup\n v-if=\"isComplex(option)\"\n :label=\"option.label\"\n :options=\"option.options\"\n :value-field=\"props.valueField\"\n :text-field=\"props.textField\"\n :disabled-field=\"props.disabledField\"\n />\n <BFormSelectOption v-else v-bind=\"option\">\n <slot name=\"option\" v-bind=\"option\">\n {{ option.text }}\n </slot>\n </BFormSelectOption>\n </template>\n <slot />\n </select>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BFormSelectBaseProps} from '../../types/ComponentProps'\nimport {computed, inject, provide, readonly, useTemplateRef} from 'vue'\nimport BFormSelectOption from './BFormSelectOption.vue'\nimport BFormSelectOptionGroup from './BFormSelectOptionGroup.vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {useFocus, useToNumber} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useFormSelect} from '../../composables/useFormSelect'\nimport {formGroupKey, formSelectKey} from '../../utils/keys'\n\n/**\n * Base component for BFormSelect - non-generic implementation using useDefaults.\n * Renders a select element with normalized options and option groups.\n * Supports both simple options and complex grouped options.\n */\nconst _props = withDefaults(defineProps<Omit<BFormSelectBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [],\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: 'md',\n state: null,\n textField: 'text',\n valueField: 'value',\n})\nconst props = useDefaults(_props, 'BFormSelect')\n\nconst modelValue = defineModel<unknown>({\n default: '',\n})\n\nconst computedId = useId(() => props.id, 'input')\n\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\nconst isDisabled = computed(() => props.disabled || (formGroupData?.disabled.value ?? false))\n\nconst selectSizeNumber = useToNumber(() => props.selectSize)\n\nconst stateClass = useStateClass(() => props.state)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst computedClasses = computed(() => [\n stateClass.value,\n {\n 'form-control': props.plain,\n [`form-control-${props.size}`]: props.size !== 'md' && props.plain,\n 'form-select': !props.plain,\n [`form-select-${props.size}`]: props.size !== 'md' && !props.plain,\n },\n])\n\nconst computedSelectSize = computed(() =>\n !props.plain && selectSizeNumber.value > 0 ? selectSizeNumber.value : undefined\n)\n\nconst computedAriaInvalid = useAriaInvalid(\n () => props.ariaInvalid,\n () => props.state\n)\n\nconst {normalizedOptions, isComplex} = useFormSelect(() => props.options, props)\n\nconst normalizedOptsWrapper = computed(() => normalizedOptions.value)\n\nconst localValue = computed({\n get: () => modelValue.value,\n set: (newValue) => {\n modelValue.value = newValue\n },\n})\n\n// Provide the current model value for child components to inject\nprovide(formSelectKey, {\n modelValue: readonly(localValue),\n})\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n element: input,\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <BFormSelectBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions as any\">\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps as any\" />\n </template>\n\n <slot />\n </BFormSelectBase>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n Options extends readonly (object | string | number | boolean)[] = readonly (\n | object\n | string\n | number\n | boolean\n )[]\n \"\n>\nimport type {BFormSelectProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport BFormSelectBase from './BFormSelectBase.vue'\nimport type {ComplexSelectOptionRaw, SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectSlots} from '../../types'\nimport type {OptionsValues} from '../../types/OptionsTypes'\n\n/**\n * Type-safe wrapper component for BFormSelect.\n * Provides generic type safety for options array and strongly-typed modelValue.\n * Uses Options array generic to extract union of all possible values.\n * Normalizes typed options and forwards to BFormSelectBase for rendering.\n * Supports both complex objects and simple scalar types (string, number).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values (or array if multiple)\n * - Object arrays with 'value' field: modelValue is union of value field types\n * - Use 'as const' on options for literal type inference\n */\nconst props = withDefaults(defineProps<Omit<BFormSelectProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [] as unknown as Options,\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: 'md',\n state: null,\n textField: 'text',\n valueField: 'value',\n})\ndefineSlots<BFormSelectSlots<OptionsValues<Options>>>()\n\n// Type-safe model value - single value or array depending on multiple prop.\n// NOTE: OptionsValues assumes a static \"value\" key; custom valueField is not\n// reflected in the type — modelValue falls back to unknown in that case.\nconst modelValue = defineModel<OptionsValues<Options> | OptionsValues<Options>[] | null>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: '' as any,\n})\n\n// Normalize a single simple option using custom field names\nconst normalizeSimpleOption = (el: object): SelectOption =>\n ({\n ...(el as Record<string, unknown>),\n value: (el as Record<string, unknown>)[props.valueField as string],\n text: ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ?? '',\n disabled:\n ((el as Record<string, unknown>)[props.disabledField as string] as boolean | undefined) ??\n false,\n }) as SelectOption\n\nconst normalizePrimitive = (el: string | number | boolean): SelectOption =>\n ({value: el, text: String(el), disabled: false}) as SelectOption\n\n// Type-safe normalization of options (supports both simple and complex/grouped)\nconst normalizedOptions = computed(() => {\n const optionsArray = props.options ?? []\n const hasComplexOptions = optionsArray.some(\n (el) =>\n typeof el !== 'string' &&\n typeof el !== 'number' &&\n typeof el !== 'boolean' &&\n (el as Record<string, unknown>)[props.optionsField as string] !== undefined\n )\n\n if (hasComplexOptions) {\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n\n // Check if this is a complex (grouped) option\n const optionsField = (el as Record<string, unknown>)[props.optionsField as string]\n if (optionsField !== undefined && Array.isArray(optionsField)) {\n // Complex option with nested options\n const label =\n ((el as Record<string, unknown>)[props.labelField as string] as string | undefined) ??\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n ''\n return {\n label,\n options: optionsField.map((subOpt: unknown) => {\n if (\n typeof subOpt === 'string' ||\n typeof subOpt === 'number' ||\n typeof subOpt === 'boolean'\n ) {\n return normalizePrimitive(subOpt)\n }\n return normalizeSimpleOption(subOpt as object)\n }),\n } as ComplexSelectOptionRaw\n }\n\n // Simple option - spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n }\n\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n // Spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n})\n\n// Forward all props except options (which we normalize), modelValue (handled separately),\n// and field mappings (already used for normalization)\nconst forwardedProps = computed(() => ({\n ariaInvalid: props.ariaInvalid,\n autofocus: props.autofocus,\n disabled: props.disabled,\n form: props.form,\n id: props.id,\n multiple: props.multiple,\n name: props.name,\n plain: props.plain,\n required: props.required,\n selectSize: props.selectSize,\n size: props.size,\n state: props.state,\n}))\n</script>\n","<template>\n <BFormSelectBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions as any\">\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps as any\" />\n </template>\n\n <slot />\n </BFormSelectBase>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n Options extends readonly (object | string | number | boolean)[] = readonly (\n | object\n | string\n | number\n | boolean\n )[]\n \"\n>\nimport type {BFormSelectProps} from '../../types/ComponentProps'\nimport {computed} from 'vue'\nimport BFormSelectBase from './BFormSelectBase.vue'\nimport type {ComplexSelectOptionRaw, SelectOption} from '../../types/SelectTypes'\nimport type {BFormSelectSlots} from '../../types'\nimport type {OptionsValues} from '../../types/OptionsTypes'\n\n/**\n * Type-safe wrapper component for BFormSelect.\n * Provides generic type safety for options array and strongly-typed modelValue.\n * Uses Options array generic to extract union of all possible values.\n * Normalizes typed options and forwards to BFormSelectBase for rendering.\n * Supports both complex objects and simple scalar types (string, number).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values (or array if multiple)\n * - Object arrays with 'value' field: modelValue is union of value field types\n * - Use 'as const' on options for literal type inference\n */\nconst props = withDefaults(defineProps<Omit<BFormSelectProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n labelField: 'label',\n multiple: false,\n name: undefined,\n options: () => [] as unknown as Options,\n optionsField: 'options',\n plain: false,\n required: false,\n selectSize: 0,\n size: 'md',\n state: null,\n textField: 'text',\n valueField: 'value',\n})\ndefineSlots<BFormSelectSlots<OptionsValues<Options>>>()\n\n// Type-safe model value - single value or array depending on multiple prop.\n// NOTE: OptionsValues assumes a static \"value\" key; custom valueField is not\n// reflected in the type — modelValue falls back to unknown in that case.\nconst modelValue = defineModel<OptionsValues<Options> | OptionsValues<Options>[] | null>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: '' as any,\n})\n\n// Normalize a single simple option using custom field names\nconst normalizeSimpleOption = (el: object): SelectOption =>\n ({\n ...(el as Record<string, unknown>),\n value: (el as Record<string, unknown>)[props.valueField as string],\n text: ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ?? '',\n disabled:\n ((el as Record<string, unknown>)[props.disabledField as string] as boolean | undefined) ??\n false,\n }) as SelectOption\n\nconst normalizePrimitive = (el: string | number | boolean): SelectOption =>\n ({value: el, text: String(el), disabled: false}) as SelectOption\n\n// Type-safe normalization of options (supports both simple and complex/grouped)\nconst normalizedOptions = computed(() => {\n const optionsArray = props.options ?? []\n const hasComplexOptions = optionsArray.some(\n (el) =>\n typeof el !== 'string' &&\n typeof el !== 'number' &&\n typeof el !== 'boolean' &&\n (el as Record<string, unknown>)[props.optionsField as string] !== undefined\n )\n\n if (hasComplexOptions) {\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n\n // Check if this is a complex (grouped) option\n const optionsField = (el as Record<string, unknown>)[props.optionsField as string]\n if (optionsField !== undefined && Array.isArray(optionsField)) {\n // Complex option with nested options\n const label =\n ((el as Record<string, unknown>)[props.labelField as string] as string | undefined) ??\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n ''\n return {\n label,\n options: optionsField.map((subOpt: unknown) => {\n if (\n typeof subOpt === 'string' ||\n typeof subOpt === 'number' ||\n typeof subOpt === 'boolean'\n ) {\n return normalizePrimitive(subOpt)\n }\n return normalizeSimpleOption(subOpt as object)\n }),\n } as ComplexSelectOptionRaw\n }\n\n // Simple option - spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n }\n\n return optionsArray.map((el) => {\n if (typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean') {\n return normalizePrimitive(el)\n }\n // Spread all properties from the original object to preserve class, data-*, etc.\n return normalizeSimpleOption(el as object)\n })\n})\n\n// Forward all props except options (which we normalize), modelValue (handled separately),\n// and field mappings (already used for normalization)\nconst forwardedProps = computed(() => ({\n ariaInvalid: props.ariaInvalid,\n autofocus: props.autofocus,\n disabled: props.disabled,\n form: props.form,\n id: props.id,\n multiple: props.multiple,\n name: props.name,\n plain: props.plain,\n required: props.required,\n selectSize: props.selectSize,\n size: props.size,\n state: props.state,\n}))\n</script>\n"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  require("./chunk-CoQrYLCe.js");
2
2
  const require_keys = require("./keys-durSVUrO.js");
3
- const require_dist = require("./dist-B_c893QG.js");
4
- const require_useId = require("./useId-DTrBK9CE.js");
5
- const require_useDefaults = require("./useDefaults-DK6Y9lar.js");
6
- const require_useFormSelect = require("./useFormSelect-DCThI8EA.js");
7
- const require_useAriaInvalid = require("./useAriaInvalid-BYMq9BBX.js");
8
- const require_useStateClass = require("./useStateClass-Cnvy2Hnm.js");
3
+ const require_dist = require("./dist-BJ15ThEs.js");
4
+ const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
5
+ const require_useId = require("./useId-DHrBgM7P.js");
6
+ const require_useStateClass = require("./useStateClass-CJ24hpkn.js");
7
+ const require_useAriaInvalid = require("./useAriaInvalid-CHHPHNLU.js");
8
+ const require_useFormSelect = require("./useFormSelect-nQbGZSi8.js");
9
+ const require_BFormSelectOption = require("./BFormSelectOption-BY4P8HOf.js");
9
10
  let vue = require("vue");
10
11
  //#region src/components/BFormSelect/BFormSelectOptionGroup.vue?vue&type=script&setup=true&lang.ts
11
12
  var _hoisted_1$1 = ["label"];
@@ -27,7 +28,7 @@ var BFormSelectOptionGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
27
28
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("optgroup", { label: (0, vue.unref)(props).label }, [
28
29
  (0, vue.renderSlot)(_ctx.$slots, "first"),
29
30
  ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)((0, vue.unref)(normalizedOptions), (option, index) => {
30
- return (0, vue.openBlock)(), (0, vue.createBlock)(require_useFormSelect.BFormSelectOption_default, (0, vue.mergeProps)({ key: index }, { ref_for: true }, {
31
+ return (0, vue.openBlock)(), (0, vue.createBlock)(require_BFormSelectOption.BFormSelectOption_default, (0, vue.mergeProps)({ key: index }, { ref_for: true }, {
31
32
  ..._ctx.$attrs,
32
33
  ...option
33
34
  }), {
@@ -168,7 +169,7 @@ var BFormSelectBase_default = /* @__PURE__ */ (0, vue.defineComponent)({
168
169
  "value-field",
169
170
  "text-field",
170
171
  "disabled-field"
171
- ])) : ((0, vue.openBlock)(), (0, vue.createBlock)(require_useFormSelect.BFormSelectOption_default, (0, vue.mergeProps)({
172
+ ])) : ((0, vue.openBlock)(), (0, vue.createBlock)(require_BFormSelectOption.BFormSelectOption_default, (0, vue.mergeProps)({
172
173
  key: 1,
173
174
  ref_for: true
174
175
  }, option), {
@@ -305,4 +306,4 @@ Object.defineProperty(exports, "BFormSelect_default", {
305
306
  }
306
307
  });
307
308
 
308
- //# sourceMappingURL=BFormSelect-DFa1-5ez.js.map
309
+ //# sourceMappingURL=BFormSelect-DqSojuY_.js.map