bootstrap-vue-next 0.45.5 → 0.45.7

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 (421) hide show
  1. package/dist/{BAccordion-Gz2SpRmq.mjs → BAccordion-D51b9HVD.mjs} +5 -5
  2. package/dist/{BAccordion-Gz2SpRmq.mjs.map → BAccordion-D51b9HVD.mjs.map} +1 -1
  3. package/dist/{BAccordion-DgXJMqdG.js → BAccordion-DYmuqZIG.js} +5 -5
  4. package/dist/{BAccordion-DgXJMqdG.js.map → BAccordion-DYmuqZIG.js.map} +1 -1
  5. package/dist/{BAlert-BFPBalmr.mjs → BAlert-Ce2uxrJi.mjs} +8 -8
  6. package/dist/{BAlert-BFPBalmr.mjs.map → BAlert-Ce2uxrJi.mjs.map} +1 -1
  7. package/dist/{BAlert-Dk3rgEOI.js → BAlert-croEtrQu.js} +8 -8
  8. package/dist/{BAlert-Dk3rgEOI.js.map → BAlert-croEtrQu.js.map} +1 -1
  9. package/dist/{BApp-CIu-zI8K.mjs → BApp-B-fUrnpK.mjs} +2 -2
  10. package/dist/{BApp-CIu-zI8K.mjs.map → BApp-B-fUrnpK.mjs.map} +1 -1
  11. package/dist/{BApp-cBKQc5Dd.js → BApp-DOvEe1jo.js} +2 -2
  12. package/dist/{BApp-cBKQc5Dd.js.map → BApp-DOvEe1jo.js.map} +1 -1
  13. package/dist/{BAspect-BULTO240.js → BAspect-CUIU48Ck.js} +2 -2
  14. package/dist/{BAspect-BULTO240.js.map → BAspect-CUIU48Ck.js.map} +1 -1
  15. package/dist/{BAspect-CwokVvvn.mjs → BAspect-wfiXM4KA.mjs} +2 -2
  16. package/dist/{BAspect-CwokVvvn.mjs.map → BAspect-wfiXM4KA.mjs.map} +1 -1
  17. package/dist/{BAutocomplete-DRzLhACU.mjs → BAutocomplete-CH-bQzME.mjs} +8 -8
  18. package/dist/{BAutocomplete-DRzLhACU.mjs.map → BAutocomplete-CH-bQzME.mjs.map} +1 -1
  19. package/dist/{BAutocomplete-D8Qkcqcy.js → BAutocomplete-DLDFAV5_.js} +8 -8
  20. package/dist/{BAutocomplete-D8Qkcqcy.js.map → BAutocomplete-DLDFAV5_.js.map} +1 -1
  21. package/dist/{BAvatar-CZn0MQHY.js → BAvatar-FGK0dK0x.js} +5 -5
  22. package/dist/{BAvatar-CZn0MQHY.js.map → BAvatar-FGK0dK0x.js.map} +1 -1
  23. package/dist/{BAvatar-DODGnQMY.mjs → BAvatar-iALHbqVk.mjs} +5 -5
  24. package/dist/{BAvatar-DODGnQMY.mjs.map → BAvatar-iALHbqVk.mjs.map} +1 -1
  25. package/dist/{BBadge-CZ219I7a.mjs → BBadge-Cx_CdauK.mjs} +3 -3
  26. package/dist/{BBadge-CZ219I7a.mjs.map → BBadge-Cx_CdauK.mjs.map} +1 -1
  27. package/dist/{BBadge-DTJcCo9u.js → BBadge-Db6SEnzy.js} +3 -3
  28. package/dist/{BBadge-DTJcCo9u.js.map → BBadge-Db6SEnzy.js.map} +1 -1
  29. package/dist/{BBreadcrumb-DFG2Qxl9.js → BBreadcrumb-B9ra7vg2.js} +3 -3
  30. package/dist/{BBreadcrumb-DFG2Qxl9.js.map → BBreadcrumb-B9ra7vg2.js.map} +1 -1
  31. package/dist/{BBreadcrumb-Dk4ia-9c.mjs → BBreadcrumb-BxADbg0O.mjs} +3 -3
  32. package/dist/{BBreadcrumb-Dk4ia-9c.mjs.map → BBreadcrumb-BxADbg0O.mjs.map} +1 -1
  33. package/dist/{BButton-C0Ylhonf.mjs → BButton-BSa7LfL5.mjs} +5 -5
  34. package/dist/{BButton-C0Ylhonf.mjs.map → BButton-BSa7LfL5.mjs.map} +1 -1
  35. package/dist/{BButton-BZ9eI3ZX.js → BButton-DRRlzkyK.js} +5 -5
  36. package/dist/{BButton-BZ9eI3ZX.js.map → BButton-DRRlzkyK.js.map} +1 -1
  37. package/dist/{BButton-D_sCrjpg.mjs → BButton-PY7AANXJ.mjs} +4 -4
  38. package/dist/{BButton-D_sCrjpg.mjs.map → BButton-PY7AANXJ.mjs.map} +1 -1
  39. package/dist/{BButton-Dr-RadYQ.js → BButton-aYtMnyHu.js} +4 -4
  40. package/dist/{BButton-Dr-RadYQ.js.map → BButton-aYtMnyHu.js.map} +1 -1
  41. package/dist/{BCard-cj8_dIcz.mjs → BCard-BWoruisp.mjs} +3 -3
  42. package/dist/{BCard-cj8_dIcz.mjs.map → BCard-BWoruisp.mjs.map} +1 -1
  43. package/dist/{BCard-BjQkY783.js → BCard-Bh8RLMo_.js} +3 -3
  44. package/dist/{BCard-BjQkY783.js.map → BCard-Bh8RLMo_.js.map} +1 -1
  45. package/dist/{BCard-TS8DtOwm.mjs → BCard-CHbKv2OR.mjs} +3 -3
  46. package/dist/{BCard-TS8DtOwm.mjs.map → BCard-CHbKv2OR.mjs.map} +1 -1
  47. package/dist/{BCard-BkvG5Zzw.js → BCard-DwNYhVmg.js} +3 -3
  48. package/dist/{BCard-BkvG5Zzw.js.map → BCard-DwNYhVmg.js.map} +1 -1
  49. package/dist/{BCarousel-D23rApAX.js → BCarousel-2JB21Pcu.js} +5 -5
  50. package/dist/{BCarousel-D23rApAX.js.map → BCarousel-2JB21Pcu.js.map} +1 -1
  51. package/dist/{BCarousel-VL1gVXpt.mjs → BCarousel-B6_bgQpl.mjs} +5 -5
  52. package/dist/{BCarousel-VL1gVXpt.mjs.map → BCarousel-B6_bgQpl.mjs.map} +1 -1
  53. package/dist/{BCloseButton-CCdRwLDo.mjs → BCloseButton-CKTKr4PS.mjs} +2 -2
  54. package/dist/{BCloseButton-CCdRwLDo.mjs.map → BCloseButton-CKTKr4PS.mjs.map} +1 -1
  55. package/dist/{BCloseButton-fw5ONnhr.js → BCloseButton-D42zHRLP.js} +2 -2
  56. package/dist/{BCloseButton-fw5ONnhr.js.map → BCloseButton-D42zHRLP.js.map} +1 -1
  57. package/dist/{BCol-VPaTVLsM.mjs → BCol-B3VeEk9z.mjs} +2 -2
  58. package/dist/{BCol-VPaTVLsM.mjs.map → BCol-B3VeEk9z.mjs.map} +1 -1
  59. package/dist/{BCol-CArTYHqb.js → BCol-Ck9VydHj.js} +2 -2
  60. package/dist/{BCol-CArTYHqb.js.map → BCol-Ck9VydHj.js.map} +1 -1
  61. package/dist/{BCollapse-CZlDVTpI.js → BCollapse-CDLYLSZo.js} +5 -5
  62. package/dist/{BCollapse-CZlDVTpI.js.map → BCollapse-CDLYLSZo.js.map} +1 -1
  63. package/dist/{BCollapse-CTvK48kB.mjs → BCollapse-kqhe4AmL.mjs} +5 -5
  64. package/dist/{BCollapse-CTvK48kB.mjs.map → BCollapse-kqhe4AmL.mjs.map} +1 -1
  65. package/dist/{BContainer-CeHyMYb_.mjs → BContainer-ATfhaxTc.mjs} +4 -4
  66. package/dist/{BContainer-CeHyMYb_.mjs.map → BContainer-ATfhaxTc.mjs.map} +1 -1
  67. package/dist/{BContainer-CNmEk2mi.js → BContainer-CcF6dgtI.js} +4 -4
  68. package/dist/{BContainer-CNmEk2mi.js.map → BContainer-CcF6dgtI.js.map} +1 -1
  69. package/dist/{BDateField-gRWIwMnA.mjs → BDateField-CccP3H1R.mjs} +3 -3
  70. package/dist/{BDateField-gRWIwMnA.mjs.map → BDateField-CccP3H1R.mjs.map} +1 -1
  71. package/dist/{BDateField-B4yL8Pju.js → BDateField-DzZw5FRX.js} +3 -3
  72. package/dist/{BDateField-B4yL8Pju.js.map → BDateField-DzZw5FRX.js.map} +1 -1
  73. package/dist/{BDatePicker-m2drV1fl.js → BDatePicker-BDkzkOcm.js} +3 -3
  74. package/dist/{BDatePicker-m2drV1fl.js.map → BDatePicker-BDkzkOcm.js.map} +1 -1
  75. package/dist/{BDatePicker-ZuMpgD91.mjs → BDatePicker-BnwnSkBg.mjs} +3 -3
  76. package/dist/{BDatePicker-ZuMpgD91.mjs.map → BDatePicker-BnwnSkBg.mjs.map} +1 -1
  77. package/dist/{BDropdown-D2ep4wKG.mjs → BDropdown-0E8x5kk6.mjs} +5 -5
  78. package/dist/{BDropdown-D2ep4wKG.mjs.map → BDropdown-0E8x5kk6.mjs.map} +1 -1
  79. package/dist/{BDropdown-B2vWJ-u0.mjs → BDropdown-B1DbvVzm.mjs} +7 -7
  80. package/dist/{BDropdown-B2vWJ-u0.mjs.map → BDropdown-B1DbvVzm.mjs.map} +1 -1
  81. package/dist/{BDropdown-BSCasYDc.js → BDropdown-BPFtkX3p.js} +7 -7
  82. package/dist/{BDropdown-BSCasYDc.js.map → BDropdown-BPFtkX3p.js.map} +1 -1
  83. package/dist/{BDropdown-CL-erjq8.js → BDropdown-DKCgBzYS.js} +5 -5
  84. package/dist/{BDropdown-CL-erjq8.js.map → BDropdown-DKCgBzYS.js.map} +1 -1
  85. package/dist/{BForm-B0bPQ4kx.js → BForm-6JlWdQMO.js} +9 -6
  86. package/dist/{BForm-B0bPQ4kx.js.map → BForm-6JlWdQMO.js.map} +1 -1
  87. package/dist/{BForm-CpNuvbIt.mjs → BForm-BVfW08s5.mjs} +2 -2
  88. package/dist/{BForm-CpNuvbIt.mjs.map → BForm-BVfW08s5.mjs.map} +1 -1
  89. package/dist/{BForm-CoQKIJzv.mjs → BForm-DJu2hDV_.mjs} +10 -7
  90. package/dist/{BForm-CoQKIJzv.mjs.map → BForm-DJu2hDV_.mjs.map} +1 -1
  91. package/dist/{BForm-K67Ciyza.js → BForm-cnRpggt9.js} +2 -2
  92. package/dist/{BForm-K67Ciyza.js.map → BForm-cnRpggt9.js.map} +1 -1
  93. package/dist/{BFormCheckbox-xN7AQw4O.mjs → BFormCheckbox-Baf_9BSc.mjs} +9 -6
  94. package/dist/BFormCheckbox-Baf_9BSc.mjs.map +1 -0
  95. package/dist/{BFormCheckbox-g7gtIrhy.js → BFormCheckbox-D5ySHMJ8.js} +9 -6
  96. package/dist/BFormCheckbox-D5ySHMJ8.js.map +1 -0
  97. package/dist/{BFormFile-DXdAyYmv.mjs → BFormFile-CZebm0Cp.mjs} +8 -3
  98. package/dist/BFormFile-CZebm0Cp.mjs.map +1 -0
  99. package/dist/{BFormFile-DC-x9wQo.js → BFormFile-MISLntyJ.js} +8 -3
  100. package/dist/BFormFile-MISLntyJ.js.map +1 -0
  101. package/dist/{BFormGroup-DZTiChgT.js → BFormGroup-Bk1t-D1N.js} +89 -104
  102. package/dist/BFormGroup-Bk1t-D1N.js.map +1 -0
  103. package/dist/{BFormGroup-ayltvQts.mjs → BFormGroup-vysRPb99.mjs} +90 -105
  104. package/dist/BFormGroup-vysRPb99.mjs.map +1 -0
  105. package/dist/{BFormInput-DNuvqbFQ.js → BFormInput-CBwwDjfC.js} +4 -4
  106. package/dist/{BFormInput-DNuvqbFQ.js.map → BFormInput-CBwwDjfC.js.map} +1 -1
  107. package/dist/{BFormInput-NKko58M2.mjs → BFormInput-sEfU3CuN.mjs} +4 -4
  108. package/dist/{BFormInput-NKko58M2.mjs.map → BFormInput-sEfU3CuN.mjs.map} +1 -1
  109. package/dist/{BFormOtp-B4al7MJf.mjs → BFormOtp-C8X3u1od.mjs} +4 -4
  110. package/dist/{BFormOtp-B4al7MJf.mjs.map → BFormOtp-C8X3u1od.mjs.map} +1 -1
  111. package/dist/{BFormOtp-UcLR9oFd.js → BFormOtp-CLrQJRPe.js} +4 -4
  112. package/dist/{BFormOtp-UcLR9oFd.js.map → BFormOtp-CLrQJRPe.js.map} +1 -1
  113. package/dist/{BFormRadio-DX-gM5Rc.js → BFormRadio-B2yu-o2v.js} +9 -6
  114. package/dist/BFormRadio-B2yu-o2v.js.map +1 -0
  115. package/dist/{BFormRadio-DHx68AdL.mjs → BFormRadio-COc_IbxC.mjs} +9 -6
  116. package/dist/BFormRadio-COc_IbxC.mjs.map +1 -0
  117. package/dist/{BFormRating-BR7RMvZG.mjs → BFormRating-CIgPVsH_.mjs} +4 -4
  118. package/dist/{BFormRating-BR7RMvZG.mjs.map → BFormRating-CIgPVsH_.mjs.map} +1 -1
  119. package/dist/{BFormRating-CF-x5qkB.js → BFormRating-CSdRxN5z.js} +4 -4
  120. package/dist/{BFormRating-CF-x5qkB.js.map → BFormRating-CSdRxN5z.js.map} +1 -1
  121. package/dist/{BFormSelect-CtcsnTlz.js → BFormSelect-CI92Dv27.js} +7 -6
  122. package/dist/BFormSelect-CI92Dv27.js.map +1 -0
  123. package/dist/{BFormSelect-eS-C3M0J.mjs → BFormSelect-P-InkOm-.mjs} +7 -6
  124. package/dist/BFormSelect-P-InkOm-.mjs.map +1 -0
  125. package/dist/{BFormSelectOption-B3BO50XB.mjs → BFormSelectOption-DFN4lPRh.mjs} +3 -3
  126. package/dist/{BFormSelectOption-B3BO50XB.mjs.map → BFormSelectOption-DFN4lPRh.mjs.map} +1 -1
  127. package/dist/{BFormSelectOption-CQ3j1Q5j.js → BFormSelectOption-DrwJucNf.js} +3 -3
  128. package/dist/{BFormSelectOption-CQ3j1Q5j.js.map → BFormSelectOption-DrwJucNf.js.map} +1 -1
  129. package/dist/{BFormSpinbutton-DPCXum9q.js → BFormSpinbutton-1gTz4nTo.js} +4 -4
  130. package/dist/{BFormSpinbutton-DPCXum9q.js.map → BFormSpinbutton-1gTz4nTo.js.map} +1 -1
  131. package/dist/{BFormSpinbutton-CPsVUIh9.mjs → BFormSpinbutton-6qkTBF_4.mjs} +4 -4
  132. package/dist/{BFormSpinbutton-CPsVUIh9.mjs.map → BFormSpinbutton-6qkTBF_4.mjs.map} +1 -1
  133. package/dist/{BFormTag-Bsy6Znok.js → BFormTag-CeV0MSRC.js} +4 -4
  134. package/dist/{BFormTag-Bsy6Znok.js.map → BFormTag-CeV0MSRC.js.map} +1 -1
  135. package/dist/{BFormTag-Cjg1R-Lj.mjs → BFormTag-CnzI39y9.mjs} +4 -4
  136. package/dist/{BFormTag-Cjg1R-Lj.mjs.map → BFormTag-CnzI39y9.mjs.map} +1 -1
  137. package/dist/{BFormTags-D2Dk598Q.mjs → BFormTags-BMltSaKL.mjs} +4 -4
  138. package/dist/{BFormTags-D2Dk598Q.mjs.map → BFormTags-BMltSaKL.mjs.map} +1 -1
  139. package/dist/{BFormTags-BIZyBseI.js → BFormTags-BhO60uiL.js} +4 -4
  140. package/dist/{BFormTags-BIZyBseI.js.map → BFormTags-BhO60uiL.js.map} +1 -1
  141. package/dist/{BFormTextarea-CYh47SxL.js → BFormTextarea-C3Cj0DWj.js} +3 -3
  142. package/dist/{BFormTextarea-CYh47SxL.js.map → BFormTextarea-C3Cj0DWj.js.map} +1 -1
  143. package/dist/{BFormTextarea-M21mholw.mjs → BFormTextarea-DN1gAfSo.mjs} +3 -3
  144. package/dist/{BFormTextarea-M21mholw.mjs.map → BFormTextarea-DN1gAfSo.mjs.map} +1 -1
  145. package/dist/{BFormValidFeedback-DWkakzVO.mjs → BFormValidFeedback-CBYxQLDz.mjs} +44 -4
  146. package/dist/BFormValidFeedback-CBYxQLDz.mjs.map +1 -0
  147. package/dist/{BFormValidFeedback-BhkEhSa0.js → BFormValidFeedback-Kwxh798d.js} +48 -2
  148. package/dist/BFormValidFeedback-Kwxh798d.js.map +1 -0
  149. package/dist/{BImg-DFiJSy66.js → BImg-JKJLgYYT.js} +2 -2
  150. package/dist/{BImg-DFiJSy66.js.map → BImg-JKJLgYYT.js.map} +1 -1
  151. package/dist/{BImg-UUMOpbK0.mjs → BImg-QBS2ECBc.mjs} +2 -2
  152. package/dist/{BImg-UUMOpbK0.mjs.map → BImg-QBS2ECBc.mjs.map} +1 -1
  153. package/dist/{BInputGroup-BAC-B_UM.js → BInputGroup-Bvlfv6VD.js} +3 -3
  154. package/dist/{BInputGroup-BAC-B_UM.js.map → BInputGroup-Bvlfv6VD.js.map} +1 -1
  155. package/dist/{BInputGroup-CiKwWBSu.js → BInputGroup-D4fW324B.js} +3 -3
  156. package/dist/{BInputGroup-CiKwWBSu.js.map → BInputGroup-D4fW324B.js.map} +1 -1
  157. package/dist/{BInputGroup-CfELrPhK.mjs → BInputGroup-DiTSexkT.mjs} +3 -3
  158. package/dist/{BInputGroup-CfELrPhK.mjs.map → BInputGroup-DiTSexkT.mjs.map} +1 -1
  159. package/dist/{BInputGroup-3AVRA3U7.mjs → BInputGroup-X2Z53RJx.mjs} +3 -3
  160. package/dist/{BInputGroup-3AVRA3U7.mjs.map → BInputGroup-X2Z53RJx.mjs.map} +1 -1
  161. package/dist/{BLink-CNFWSz0D.mjs → BLink-Dfgte6dQ.mjs} +3 -3
  162. package/dist/{BLink-CNFWSz0D.mjs.map → BLink-Dfgte6dQ.mjs.map} +1 -1
  163. package/dist/{BLink-uLjtY3bY.js → BLink-kLEjleB1.js} +3 -3
  164. package/dist/{BLink-uLjtY3bY.js.map → BLink-kLEjleB1.js.map} +1 -1
  165. package/dist/{BListGroup-CeXKZio1.js → BListGroup-C8JOzHTz.js} +4 -4
  166. package/dist/{BListGroup-CeXKZio1.js.map → BListGroup-C8JOzHTz.js.map} +1 -1
  167. package/dist/{BListGroup-CGxa7ZEu.mjs → BListGroup-DwTLpNiD.mjs} +4 -4
  168. package/dist/{BListGroup-CGxa7ZEu.mjs.map → BListGroup-DwTLpNiD.mjs.map} +1 -1
  169. package/dist/{BModal-BEmloby5.mjs → BModal-C-ZCau2E.mjs} +7 -7
  170. package/dist/{BModal-BEmloby5.mjs.map → BModal-C-ZCau2E.mjs.map} +1 -1
  171. package/dist/{BModal-6hh-azT8.js → BModal-VstTwEq9.js} +7 -7
  172. package/dist/{BModal-6hh-azT8.js.map → BModal-VstTwEq9.js.map} +1 -1
  173. package/dist/{BNav-u9QwSGj3.js → BNav-DCLambmM.js} +5 -5
  174. package/dist/{BNav-u9QwSGj3.js.map → BNav-DCLambmM.js.map} +1 -1
  175. package/dist/{BNav-EHHlEg1E.mjs → BNav-DfYvjfRK.mjs} +5 -5
  176. package/dist/{BNav-EHHlEg1E.mjs.map → BNav-DfYvjfRK.mjs.map} +1 -1
  177. package/dist/{BNavbar-s8yvmhyz.js → BNavbar-BLWaZJRP.js} +4 -4
  178. package/dist/{BNavbar-s8yvmhyz.js.map → BNavbar-BLWaZJRP.js.map} +1 -1
  179. package/dist/{BNavbar-kgHIo_Gr.mjs → BNavbar-xYaikQVY.mjs} +4 -4
  180. package/dist/{BNavbar-kgHIo_Gr.mjs.map → BNavbar-xYaikQVY.mjs.map} +1 -1
  181. package/dist/{BOffcanvas-CwH0DqSG.mjs → BOffcanvas-CQb9XNvS.mjs} +6 -6
  182. package/dist/{BOffcanvas-CwH0DqSG.mjs.map → BOffcanvas-CQb9XNvS.mjs.map} +1 -1
  183. package/dist/{BOffcanvas-DdiP19Xz.js → BOffcanvas-DTRiZzwN.js} +6 -6
  184. package/dist/{BOffcanvas-DdiP19Xz.js.map → BOffcanvas-DTRiZzwN.js.map} +1 -1
  185. package/dist/{BOverlay-DSUoseNJ.mjs → BOverlay-Bh2PIN_q.mjs} +3 -3
  186. package/dist/{BOverlay-DSUoseNJ.mjs.map → BOverlay-Bh2PIN_q.mjs.map} +1 -1
  187. package/dist/{BOverlay--gZBEMlX.js → BOverlay-Bh4ldxgt.js} +3 -3
  188. package/dist/{BOverlay--gZBEMlX.js.map → BOverlay-Bh4ldxgt.js.map} +1 -1
  189. package/dist/{BPagination-C7MKOk8h.mjs → BPagination-D75q-ZNg.mjs} +2 -2
  190. package/dist/{BPagination-C7MKOk8h.mjs.map → BPagination-D75q-ZNg.mjs.map} +1 -1
  191. package/dist/{BPagination-D6W1LdgK.js → BPagination-fbjFAtxu.js} +2 -2
  192. package/dist/{BPagination-D6W1LdgK.js.map → BPagination-fbjFAtxu.js.map} +1 -1
  193. package/dist/{BPlaceholder-Ckvq3tMu.js → BPlaceholder-B3rs_39w.js} +4 -4
  194. package/dist/{BPlaceholder-Ckvq3tMu.js.map → BPlaceholder-B3rs_39w.js.map} +1 -1
  195. package/dist/{BPlaceholder-D__hNPyQ.mjs → BPlaceholder-DPQ6mCLN.mjs} +4 -4
  196. package/dist/{BPlaceholder-D__hNPyQ.mjs.map → BPlaceholder-DPQ6mCLN.mjs.map} +1 -1
  197. package/dist/{BProgress-I1ucNlpA.mjs → BProgress-BZlrPYhA.mjs} +3 -3
  198. package/dist/{BProgress-I1ucNlpA.mjs.map → BProgress-BZlrPYhA.mjs.map} +1 -1
  199. package/dist/{BProgress-ySlPjpRn.js → BProgress-th0-eZWo.js} +3 -3
  200. package/dist/{BProgress-ySlPjpRn.js.map → BProgress-th0-eZWo.js.map} +1 -1
  201. package/dist/{BRow-CmKiMcMZ.js → BRow-7AOuFiSy.js} +2 -2
  202. package/dist/{BRow-CmKiMcMZ.js.map → BRow-7AOuFiSy.js.map} +1 -1
  203. package/dist/{BRow-U3L8AcKV.mjs → BRow-eGSUYGCW.mjs} +2 -2
  204. package/dist/{BRow-U3L8AcKV.mjs.map → BRow-eGSUYGCW.mjs.map} +1 -1
  205. package/dist/{BSpinner-CAo-XD04.mjs → BSpinner-CUfGqviV.mjs} +2 -2
  206. package/dist/{BSpinner-CAo-XD04.mjs.map → BSpinner-CUfGqviV.mjs.map} +1 -1
  207. package/dist/{BSpinner-C1bm8U4-.js → BSpinner-DbYIp-C7.js} +2 -2
  208. package/dist/{BSpinner-C1bm8U4-.js.map → BSpinner-DbYIp-C7.js.map} +1 -1
  209. package/dist/{BTable-Bt75vbNu.mjs → BTable-CzMtFdt5.mjs} +5 -5
  210. package/dist/{BTable-Bt75vbNu.mjs.map → BTable-CzMtFdt5.mjs.map} +1 -1
  211. package/dist/{BTable-CXxJl2ps.js → BTable-DOpSWDaC.js} +5 -5
  212. package/dist/{BTable-CXxJl2ps.js.map → BTable-DOpSWDaC.js.map} +1 -1
  213. package/dist/{BTableSimple-pyz_6D4s.js → BTableSimple-BkdGAAKb.js} +3 -3
  214. package/dist/{BTableSimple-pyz_6D4s.js.map → BTableSimple-BkdGAAKb.js.map} +1 -1
  215. package/dist/{BTableSimple-CThwYBVl.mjs → BTableSimple-C-jn9Nwh.mjs} +3 -3
  216. package/dist/{BTableSimple-CThwYBVl.mjs.map → BTableSimple-C-jn9Nwh.mjs.map} +1 -1
  217. package/dist/{BTabs-C8rUY0Lx.js → BTabs-CvecFg5N.js} +4 -4
  218. package/dist/{BTabs-C8rUY0Lx.js.map → BTabs-CvecFg5N.js.map} +1 -1
  219. package/dist/{BTabs-Krs_Lv-R.mjs → BTabs-D_vWlBjT.mjs} +4 -4
  220. package/dist/{BTabs-Krs_Lv-R.mjs.map → BTabs-D_vWlBjT.mjs.map} +1 -1
  221. package/dist/{BTimeField-DSf4cMpN.mjs → BTimeField-BSDaZogC.mjs} +3 -3
  222. package/dist/{BTimeField-DSf4cMpN.mjs.map → BTimeField-BSDaZogC.mjs.map} +1 -1
  223. package/dist/{BTimeField-W2LqGCjB.js → BTimeField-BT5HXecp.js} +3 -3
  224. package/dist/{BTimeField-W2LqGCjB.js.map → BTimeField-BT5HXecp.js.map} +1 -1
  225. package/dist/{BToast-DZuxMDbe.js → BToast-DR0pek4W.js} +8 -8
  226. package/dist/{BToast-DZuxMDbe.js.map → BToast-DR0pek4W.js.map} +1 -1
  227. package/dist/{BToast-Dcfnqbxt.mjs → BToast-Y8BayxES.mjs} +8 -8
  228. package/dist/{BToast-Dcfnqbxt.mjs.map → BToast-Y8BayxES.mjs.map} +1 -1
  229. package/dist/{BTooltip-BWij0hjE.mjs → BTooltip-CVP8HdkU.mjs} +3 -3
  230. package/dist/{BTooltip-BWij0hjE.mjs.map → BTooltip-CVP8HdkU.mjs.map} +1 -1
  231. package/dist/{BTooltip-BGTjsV1z.js → BTooltip-DPLYtaL1.js} +3 -3
  232. package/dist/{BTooltip-BGTjsV1z.js.map → BTooltip-DPLYtaL1.js.map} +1 -1
  233. package/dist/bootstrap-vue-next.mjs +59 -59
  234. package/dist/bootstrap-vue-next.umd.js +59 -59
  235. package/dist/components/BFormFile/BFormFile.vue.d.mts +2 -1
  236. package/dist/components/BFormFile/BFormFile.vue.d.ts +2 -1
  237. package/dist/composables/useProvideFormGroupData.d.mts +15 -0
  238. package/dist/composables/useProvideFormGroupData.d.ts +15 -0
  239. package/dist/{floatingUi-8xXp54zf.mjs → floatingUi-62aeQtAb.mjs} +4 -4
  240. package/dist/{floatingUi-8xXp54zf.mjs.map → floatingUi-62aeQtAb.mjs.map} +1 -1
  241. package/dist/{floatingUi-9SWu8BgZ.js → floatingUi-DQ5bHmy3.js} +4 -4
  242. package/dist/{floatingUi-9SWu8BgZ.js.map → floatingUi-DQ5bHmy3.js.map} +1 -1
  243. package/dist/{keys-durSVUrO.js → keys-BMye8nSf.js} +10 -1
  244. package/dist/{keys-durSVUrO.js.map → keys-BMye8nSf.js.map} +1 -1
  245. package/dist/{keys-CQKrwmvN.mjs → keys-DU7sQgl3.mjs} +10 -1
  246. package/dist/{keys-CQKrwmvN.mjs.map → keys-DU7sQgl3.mjs.map} +1 -1
  247. package/dist/src/components/BAccordion/index.mjs +1 -1
  248. package/dist/src/components/BAccordion/index.umd.js +1 -1
  249. package/dist/src/components/BAlert/index.mjs +1 -1
  250. package/dist/src/components/BAlert/index.umd.js +1 -1
  251. package/dist/src/components/BApp/index.mjs +1 -1
  252. package/dist/src/components/BApp/index.umd.js +1 -1
  253. package/dist/src/components/BAspect/index.mjs +1 -1
  254. package/dist/src/components/BAspect/index.umd.js +1 -1
  255. package/dist/src/components/BAutocomplete/index.mjs +1 -1
  256. package/dist/src/components/BAutocomplete/index.umd.js +1 -1
  257. package/dist/src/components/BAvatar/index.mjs +1 -1
  258. package/dist/src/components/BAvatar/index.umd.js +1 -1
  259. package/dist/src/components/BBadge/index.mjs +1 -1
  260. package/dist/src/components/BBadge/index.umd.js +1 -1
  261. package/dist/src/components/BBreadcrumb/index.mjs +1 -1
  262. package/dist/src/components/BBreadcrumb/index.umd.js +1 -1
  263. package/dist/src/components/BButton/index.mjs +3 -3
  264. package/dist/src/components/BButton/index.umd.js +3 -3
  265. package/dist/src/components/BCard/index.mjs +2 -2
  266. package/dist/src/components/BCard/index.umd.js +2 -2
  267. package/dist/src/components/BCarousel/index.mjs +1 -1
  268. package/dist/src/components/BCarousel/index.umd.js +1 -1
  269. package/dist/src/components/BCol/index.mjs +1 -1
  270. package/dist/src/components/BCol/index.umd.js +1 -1
  271. package/dist/src/components/BCollapse/index.mjs +1 -1
  272. package/dist/src/components/BCollapse/index.umd.js +1 -1
  273. package/dist/src/components/BContainer/index.mjs +3 -3
  274. package/dist/src/components/BContainer/index.umd.js +3 -3
  275. package/dist/src/components/BDateField/index.mjs +1 -1
  276. package/dist/src/components/BDateField/index.umd.js +1 -1
  277. package/dist/src/components/BDatePicker/index.mjs +1 -1
  278. package/dist/src/components/BDatePicker/index.umd.js +1 -1
  279. package/dist/src/components/BDropdown/index.mjs +2 -2
  280. package/dist/src/components/BDropdown/index.umd.js +2 -2
  281. package/dist/src/components/BForm/index.mjs +3 -3
  282. package/dist/src/components/BForm/index.umd.js +3 -3
  283. package/dist/src/components/BFormCheckbox/index.mjs +1 -1
  284. package/dist/src/components/BFormCheckbox/index.umd.js +1 -1
  285. package/dist/src/components/BFormFile/index.mjs +1 -1
  286. package/dist/src/components/BFormFile/index.umd.js +1 -1
  287. package/dist/src/components/BFormGroup/index.mjs +1 -1
  288. package/dist/src/components/BFormGroup/index.umd.js +1 -1
  289. package/dist/src/components/BFormInput/index.mjs +1 -1
  290. package/dist/src/components/BFormInput/index.umd.js +1 -1
  291. package/dist/src/components/BFormOtp/index.mjs +1 -1
  292. package/dist/src/components/BFormOtp/index.umd.js +1 -1
  293. package/dist/src/components/BFormRadio/index.mjs +1 -1
  294. package/dist/src/components/BFormRadio/index.umd.js +1 -1
  295. package/dist/src/components/BFormRating/index.mjs +1 -1
  296. package/dist/src/components/BFormRating/index.umd.js +1 -1
  297. package/dist/src/components/BFormSelect/index.mjs +2 -2
  298. package/dist/src/components/BFormSelect/index.umd.js +2 -2
  299. package/dist/src/components/BFormSpinbutton/index.mjs +1 -1
  300. package/dist/src/components/BFormSpinbutton/index.umd.js +1 -1
  301. package/dist/src/components/BFormTags/index.mjs +2 -2
  302. package/dist/src/components/BFormTags/index.umd.js +2 -2
  303. package/dist/src/components/BFormTextarea/index.mjs +1 -1
  304. package/dist/src/components/BFormTextarea/index.umd.js +1 -1
  305. package/dist/src/components/BImg/index.mjs +1 -1
  306. package/dist/src/components/BImg/index.umd.js +1 -1
  307. package/dist/src/components/BInputGroup/index.mjs +2 -2
  308. package/dist/src/components/BInputGroup/index.umd.js +2 -2
  309. package/dist/src/components/BLink/index.mjs +1 -1
  310. package/dist/src/components/BLink/index.umd.js +1 -1
  311. package/dist/src/components/BListGroup/index.mjs +1 -1
  312. package/dist/src/components/BListGroup/index.umd.js +1 -1
  313. package/dist/src/components/BModal/index.mjs +1 -1
  314. package/dist/src/components/BModal/index.umd.js +1 -1
  315. package/dist/src/components/BNav/index.mjs +1 -1
  316. package/dist/src/components/BNav/index.umd.js +1 -1
  317. package/dist/src/components/BNavbar/index.mjs +1 -1
  318. package/dist/src/components/BNavbar/index.umd.js +1 -1
  319. package/dist/src/components/BOffcanvas/index.mjs +1 -1
  320. package/dist/src/components/BOffcanvas/index.umd.js +1 -1
  321. package/dist/src/components/BOverlay/index.mjs +1 -1
  322. package/dist/src/components/BOverlay/index.umd.js +1 -1
  323. package/dist/src/components/BPagination/index.mjs +1 -1
  324. package/dist/src/components/BPagination/index.umd.js +1 -1
  325. package/dist/src/components/BPlaceholder/index.mjs +1 -1
  326. package/dist/src/components/BPlaceholder/index.umd.js +1 -1
  327. package/dist/src/components/BPopover/index.mjs +1 -1
  328. package/dist/src/components/BPopover/index.umd.js +1 -1
  329. package/dist/src/components/BProgress/index.mjs +1 -1
  330. package/dist/src/components/BProgress/index.umd.js +1 -1
  331. package/dist/src/components/BRow/index.mjs +1 -1
  332. package/dist/src/components/BRow/index.umd.js +1 -1
  333. package/dist/src/components/BSpinner/index.mjs +1 -1
  334. package/dist/src/components/BSpinner/index.umd.js +1 -1
  335. package/dist/src/components/BTable/index.mjs +2 -2
  336. package/dist/src/components/BTable/index.umd.js +2 -2
  337. package/dist/src/components/BTabs/index.mjs +1 -1
  338. package/dist/src/components/BTabs/index.umd.js +1 -1
  339. package/dist/src/components/BTimeField/index.mjs +1 -1
  340. package/dist/src/components/BTimeField/index.umd.js +1 -1
  341. package/dist/src/components/BToast/index.mjs +1 -1
  342. package/dist/src/components/BToast/index.umd.js +1 -1
  343. package/dist/src/components/BTooltip/index.mjs +1 -1
  344. package/dist/src/components/BTooltip/index.umd.js +1 -1
  345. package/dist/src/components/index.mjs +59 -59
  346. package/dist/src/components/index.umd.js +59 -59
  347. package/dist/src/composables/orchestratorShared/index.mjs +1 -1
  348. package/dist/src/composables/orchestratorShared/index.umd.js +1 -1
  349. package/dist/src/composables/useBreadcrumb/index.mjs +1 -1
  350. package/dist/src/composables/useBreadcrumb/index.umd.js +1 -1
  351. package/dist/src/composables/useModal/index.mjs +2 -2
  352. package/dist/src/composables/useModal/index.umd.js +2 -2
  353. package/dist/src/composables/usePopover/index.mjs +3 -3
  354. package/dist/src/composables/usePopover/index.umd.js +3 -3
  355. package/dist/src/composables/useProvideDefaults/index.mjs +1 -1
  356. package/dist/src/composables/useProvideDefaults/index.umd.js +1 -1
  357. package/dist/src/composables/useRegistry/index.mjs +1 -1
  358. package/dist/src/composables/useRegistry/index.umd.js +1 -1
  359. package/dist/src/composables/useToast/index.mjs +2 -2
  360. package/dist/src/composables/useToast/index.umd.js +2 -2
  361. package/dist/src/composables/useToggle/index.mjs +1 -1
  362. package/dist/src/composables/useToggle/index.umd.js +1 -1
  363. package/dist/src/directives/BPopover/index.mjs +2 -2
  364. package/dist/src/directives/BPopover/index.umd.js +2 -2
  365. package/dist/src/directives/BScrollspy/index.mjs +1 -1
  366. package/dist/src/directives/BScrollspy/index.umd.js +1 -1
  367. package/dist/src/directives/BToggle/index.mjs +2 -2
  368. package/dist/src/directives/BToggle/index.umd.js +2 -2
  369. package/dist/src/directives/BTooltip/index.mjs +2 -2
  370. package/dist/src/directives/BTooltip/index.umd.js +2 -2
  371. package/dist/src/plugins/createBootstrap/index.mjs +1 -1
  372. package/dist/src/plugins/createBootstrap/index.umd.js +1 -1
  373. package/dist/src/plugins/orchestrator/index.mjs +1 -1
  374. package/dist/src/plugins/orchestrator/index.umd.js +1 -1
  375. package/dist/src/plugins/registry/index.mjs +1 -1
  376. package/dist/src/plugins/registry/index.umd.js +1 -1
  377. package/dist/src/plugins/rtl/index.mjs +1 -1
  378. package/dist/src/plugins/rtl/index.umd.js +1 -1
  379. package/dist/types/ComponentProps.d.mts +7 -0
  380. package/dist/types/ComponentProps.d.ts +7 -0
  381. package/dist/{useDefaults-DsLf4iRY.js → useDefaults-C0CYry78.js} +2 -2
  382. package/dist/{useDefaults-DsLf4iRY.js.map → useDefaults-C0CYry78.js.map} +1 -1
  383. package/dist/{useDefaults-BKgBaqOV.mjs → useDefaults-DseelK6y.mjs} +2 -2
  384. package/dist/{useDefaults-BKgBaqOV.mjs.map → useDefaults-DseelK6y.mjs.map} +1 -1
  385. package/dist/{useFormInput-CA4FYoV7.mjs → useFormInput-CXl8rpD0.mjs} +5 -4
  386. package/dist/useFormInput-CXl8rpD0.mjs.map +1 -0
  387. package/dist/{useFormInput-D31FCDxr.js → useFormInput-ip9hN2AU.js} +5 -4
  388. package/dist/useFormInput-ip9hN2AU.js.map +1 -0
  389. package/dist/{useId-DHrBgM7P.js → useId-BkAY2oh6.js} +2 -2
  390. package/dist/{useId-DHrBgM7P.js.map → useId-BkAY2oh6.js.map} +1 -1
  391. package/dist/{useId-BKZFSYm8.mjs → useId-D1sqXtwx.mjs} +2 -2
  392. package/dist/{useId-BKZFSYm8.mjs.map → useId-D1sqXtwx.mjs.map} +1 -1
  393. package/dist/{useRtl-DDPRnA7g.js → useRtl-BSgvbs5F.js} +2 -2
  394. package/dist/{useRtl-DDPRnA7g.js.map → useRtl-BSgvbs5F.js.map} +1 -1
  395. package/dist/{useRtl-VR3M2Txg.mjs → useRtl-CGoXBxNo.mjs} +2 -2
  396. package/dist/{useRtl-VR3M2Txg.mjs.map → useRtl-CGoXBxNo.mjs.map} +1 -1
  397. package/dist/{useShowHide-DKdljnpv.mjs → useShowHide-CBFt1_EW.mjs} +2 -2
  398. package/dist/{useShowHide-DKdljnpv.mjs.map → useShowHide-CBFt1_EW.mjs.map} +1 -1
  399. package/dist/{useShowHide-BhdrR1wG.js → useShowHide-CHm2uUep.js} +2 -2
  400. package/dist/{useShowHide-BhdrR1wG.js.map → useShowHide-CHm2uUep.js.map} +1 -1
  401. package/dist/utils/keys.d.mts +11 -1
  402. package/dist/utils/keys.d.ts +11 -1
  403. package/dist/{utils-BbYwYPyP.mjs → utils-CWvndqPg.mjs} +3 -3
  404. package/dist/{utils-BbYwYPyP.mjs.map → utils-CWvndqPg.mjs.map} +1 -1
  405. package/dist/{utils-ePxMJ7rd.js → utils-Dk9yAtbs.js} +3 -3
  406. package/dist/{utils-ePxMJ7rd.js.map → utils-Dk9yAtbs.js.map} +1 -1
  407. package/package.json +1 -1
  408. package/dist/BFormCheckbox-g7gtIrhy.js.map +0 -1
  409. package/dist/BFormCheckbox-xN7AQw4O.mjs.map +0 -1
  410. package/dist/BFormFile-DC-x9wQo.js.map +0 -1
  411. package/dist/BFormFile-DXdAyYmv.mjs.map +0 -1
  412. package/dist/BFormGroup-DZTiChgT.js.map +0 -1
  413. package/dist/BFormGroup-ayltvQts.mjs.map +0 -1
  414. package/dist/BFormRadio-DHx68AdL.mjs.map +0 -1
  415. package/dist/BFormRadio-DX-gM5Rc.js.map +0 -1
  416. package/dist/BFormSelect-CtcsnTlz.js.map +0 -1
  417. package/dist/BFormSelect-eS-C3M0J.mjs.map +0 -1
  418. package/dist/BFormValidFeedback-BhkEhSa0.js.map +0 -1
  419. package/dist/BFormValidFeedback-DWkakzVO.mjs.map +0 -1
  420. package/dist/useFormInput-CA4FYoV7.mjs.map +0 -1
  421. package/dist/useFormInput-D31FCDxr.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  require("./chunk-CoQrYLCe.js");
2
- const require_keys = require("./keys-durSVUrO.js");
2
+ const require_keys = require("./keys-BMye8nSf.js");
3
3
  const require_dist = require("./dist-DiXKLh_W.js");
4
4
  const require_dom = require("./dom-Bs6DzM72.js");
5
- const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
6
- const require_useId = require("./useId-DHrBgM7P.js");
5
+ const require_useDefaults = require("./useDefaults-C0CYry78.js");
6
+ const require_useId = require("./useId-BkAY2oh6.js");
7
7
  const require_ConditionalWrapper = require("./ConditionalWrapper-DZH_VSwb.js");
8
8
  const require_useFormCheck = require("./useFormCheck-DYjLG4WA.js");
9
9
  let vue = require("vue");
@@ -101,7 +101,6 @@ var BFormRadio_default = /* @__PURE__ */ (0, vue.defineComponent)({
101
101
  const modelValue = (0, vue.useModel)(__props, "modelValue");
102
102
  const computedId = require_useId.useId(() => props.id, "form-check");
103
103
  const parentData = (0, vue.inject)(require_keys.radioGroupKey, null);
104
- const formGroupData = (0, vue.inject)(require_keys.formGroupKey, null)?.(computedId);
105
104
  const input = (0, vue.useTemplateRef)("_input");
106
105
  const { focused } = require_dist.useFocus(input, { initialValue: props.autofocus });
107
106
  const hasDefaultSlot = (0, vue.computed)(() => !require_dom.isEmptySlot(slots.default));
@@ -124,6 +123,10 @@ var BFormRadio_default = /* @__PURE__ */ (0, vue.defineComponent)({
124
123
  buttonVariant: props.buttonVariant ?? parentData?.buttonVariant.value ?? propDefaults.buttonVariant
125
124
  }));
126
125
  const resolvedPlain = (0, vue.computed)(() => resolvedProps.value.plain);
126
+ const hasOwnLabel = (0, vue.computed)(() => hasDefaultSlot.value || !resolvedPlain.value);
127
+ const labelTargetId = (0, vue.computed)(() => hasOwnLabel.value ? null : computedId.value);
128
+ const formGroupData = (0, vue.inject)(require_keys.formGroupKey, null)?.();
129
+ formGroupData?.track(labelTargetId);
127
130
  const localValue = (0, vue.computed)({
128
131
  get: () => parentData ? parentData.modelValue.value : modelValue.value,
129
132
  set: (newValue) => {
@@ -171,7 +174,7 @@ var BFormRadio_default = /* @__PURE__ */ (0, vue.defineComponent)({
171
174
  "aria-labelledby": (0, vue.unref)(props).ariaLabelledby,
172
175
  value: (0, vue.unref)(props).value,
173
176
  "aria-required": computedRequired.value || void 0
174
- }), null, 16, _hoisted_1$1), [[vue.vModelRadio, localValue.value]]), hasDefaultSlot.value || !resolvedPlain.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
177
+ }), null, 16, _hoisted_1$1), [[vue.vModelRadio, localValue.value]]), hasOwnLabel.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
175
178
  key: 0,
176
179
  for: (0, vue.unref)(computedId),
177
180
  class: (0, vue.normalizeClass)((0, vue.unref)(labelClasses))
@@ -426,4 +429,4 @@ Object.defineProperty(exports, "BFormRadio_default", {
426
429
  }
427
430
  });
428
431
 
429
- //# sourceMappingURL=BFormRadio-DX-gM5Rc.js.map
432
+ //# sourceMappingURL=BFormRadio-B2yu-o2v.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BFormRadio-B2yu-o2v.js","names":["$attrs"],"sources":["../src/components/BFormRadio/BFormRadio.vue","../src/components/BFormRadio/BFormRadio.vue","../src/components/BFormRadio/BFormRadioGroupBase.vue","../src/components/BFormRadio/BFormRadioGroupBase.vue","../src/components/BFormRadio/BFormRadioGroup.vue","../src/components/BFormRadio/BFormRadioGroup.vue"],"sourcesContent":["<template>\n <ConditionalWrapper :skip=\"isButtonGroup\" :class=\"computedClasses\">\n <input\n :id=\"computedId\"\n v-bind=\"$attrs\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"inputClasses\"\n type=\"radio\"\n :disabled=\"props.disabled || parentData?.disabled.value || formGroupData?.disabled.value\"\n :required=\"computedRequired || undefined\"\n :name=\"props.name || parentData?.name.value\"\n :form=\"props.form || parentData?.form.value\"\n :aria-label=\"props.ariaLabel\"\n :aria-labelledby=\"props.ariaLabelledby\"\n :value=\"props.value\"\n :aria-required=\"computedRequired || undefined\"\n />\n <label v-if=\"hasOwnLabel\" :for=\"computedId\" :class=\"labelClasses\">\n <slot />\n </label>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {useFocus} from '@vueuse/core'\nimport {computed, inject, useTemplateRef} from 'vue'\nimport {getClasses, getInputClasses, getLabelClasses} from '../../composables/useFormCheck'\nimport {isEmptySlot} from '../../utils/dom'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {formGroupKey, radioGroupKey} from '../../utils/keys'\nimport type {BFormRadioProps, BFormRadioSlots, RadioValue} from '../../types'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BFormRadioProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n autofocus: false,\n button: undefined,\n buttonGroup: false,\n buttonVariant: undefined,\n disabled: false,\n form: undefined,\n id: undefined,\n inline: undefined,\n name: undefined,\n plain: undefined,\n required: false,\n reverse: undefined,\n size: undefined,\n state: undefined,\n value: true,\n})\nconst props = useDefaults(_props, 'BFormRadio')\nconst slots = defineSlots<BFormRadioSlots>()\n\nconst modelValue = defineModel<BFormRadioProps['modelValue']>({\n default: undefined,\n})\n\nconst computedId = useId(() => props.id, 'form-check')\n\nconst parentData = inject(radioGroupKey, null)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst hasDefaultSlot = computed(() => !isEmptySlot(slots.default))\n\n// True default values for props that are undefined to support inheritance\nconst propDefaults = {\n plain: false,\n button: false,\n inline: false,\n reverse: false,\n size: undefined,\n buttonVariant: 'secondary' as const,\n state: null,\n}\n\n// Single source of truth for resolved prop values with parent inheritance and defaults\nconst resolvedProps = computed(() => ({\n plain: props.plain ?? parentData?.plain.value ?? propDefaults.plain,\n button: props.button ?? parentData?.buttons.value ?? propDefaults.button,\n inline: props.inline ?? parentData?.inline.value ?? propDefaults.inline,\n reverse: props.reverse ?? parentData?.reverse.value ?? propDefaults.reverse,\n state: props.state ?? parentData?.state.value ?? propDefaults.state,\n size: props.size ?? parentData?.size.value ?? propDefaults.size,\n buttonVariant:\n props.buttonVariant ?? parentData?.buttonVariant.value ?? propDefaults.buttonVariant,\n}))\n\n// Shorthand for template usage\nconst resolvedPlain = computed(() => resolvedProps.value.plain)\nconst hasOwnLabel = computed(() => hasDefaultSlot.value || !resolvedPlain.value)\n\nconst labelTargetId = computed(() => (hasOwnLabel.value ? null : computedId.value))\nconst formGroupData = inject(formGroupKey, null)?.()\nformGroupData?.track(labelTargetId)\n\nconst localValue = computed({\n get: () => (parentData ? parentData.modelValue.value : modelValue.value),\n set: (newValue) => {\n if (newValue === undefined) return\n if (parentData !== null) {\n parentData.modelValue.value = newValue as RadioValue\n return\n }\n modelValue.value = newValue as RadioValue\n },\n})\n\nconst computedRequired = computed(\n () => !!(props.name ?? parentData?.name.value) && (props.required || parentData?.required.value)\n)\n\nconst isButtonGroup = computed(() => props.buttonGroup || (parentData?.buttons.value ?? false))\n\nconst classesObject = computed(() => ({\n ...resolvedProps.value,\n hasDefaultSlot: hasDefaultSlot.value,\n}))\nconst computedClasses = getClasses(classesObject)\nconst inputClasses = getInputClasses(classesObject)\nconst labelClasses = getLabelClasses(classesObject)\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 <ConditionalWrapper :skip=\"isButtonGroup\" :class=\"computedClasses\">\n <input\n :id=\"computedId\"\n v-bind=\"$attrs\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"inputClasses\"\n type=\"radio\"\n :disabled=\"props.disabled || parentData?.disabled.value || formGroupData?.disabled.value\"\n :required=\"computedRequired || undefined\"\n :name=\"props.name || parentData?.name.value\"\n :form=\"props.form || parentData?.form.value\"\n :aria-label=\"props.ariaLabel\"\n :aria-labelledby=\"props.ariaLabelledby\"\n :value=\"props.value\"\n :aria-required=\"computedRequired || undefined\"\n />\n <label v-if=\"hasOwnLabel\" :for=\"computedId\" :class=\"labelClasses\">\n <slot />\n </label>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {useFocus} from '@vueuse/core'\nimport {computed, inject, useTemplateRef} from 'vue'\nimport {getClasses, getInputClasses, getLabelClasses} from '../../composables/useFormCheck'\nimport {isEmptySlot} from '../../utils/dom'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {formGroupKey, radioGroupKey} from '../../utils/keys'\nimport type {BFormRadioProps, BFormRadioSlots, RadioValue} from '../../types'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BFormRadioProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n autofocus: false,\n button: undefined,\n buttonGroup: false,\n buttonVariant: undefined,\n disabled: false,\n form: undefined,\n id: undefined,\n inline: undefined,\n name: undefined,\n plain: undefined,\n required: false,\n reverse: undefined,\n size: undefined,\n state: undefined,\n value: true,\n})\nconst props = useDefaults(_props, 'BFormRadio')\nconst slots = defineSlots<BFormRadioSlots>()\n\nconst modelValue = defineModel<BFormRadioProps['modelValue']>({\n default: undefined,\n})\n\nconst computedId = useId(() => props.id, 'form-check')\n\nconst parentData = inject(radioGroupKey, null)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst hasDefaultSlot = computed(() => !isEmptySlot(slots.default))\n\n// True default values for props that are undefined to support inheritance\nconst propDefaults = {\n plain: false,\n button: false,\n inline: false,\n reverse: false,\n size: undefined,\n buttonVariant: 'secondary' as const,\n state: null,\n}\n\n// Single source of truth for resolved prop values with parent inheritance and defaults\nconst resolvedProps = computed(() => ({\n plain: props.plain ?? parentData?.plain.value ?? propDefaults.plain,\n button: props.button ?? parentData?.buttons.value ?? propDefaults.button,\n inline: props.inline ?? parentData?.inline.value ?? propDefaults.inline,\n reverse: props.reverse ?? parentData?.reverse.value ?? propDefaults.reverse,\n state: props.state ?? parentData?.state.value ?? propDefaults.state,\n size: props.size ?? parentData?.size.value ?? propDefaults.size,\n buttonVariant:\n props.buttonVariant ?? parentData?.buttonVariant.value ?? propDefaults.buttonVariant,\n}))\n\n// Shorthand for template usage\nconst resolvedPlain = computed(() => resolvedProps.value.plain)\nconst hasOwnLabel = computed(() => hasDefaultSlot.value || !resolvedPlain.value)\n\nconst labelTargetId = computed(() => (hasOwnLabel.value ? null : computedId.value))\nconst formGroupData = inject(formGroupKey, null)?.()\nformGroupData?.track(labelTargetId)\n\nconst localValue = computed({\n get: () => (parentData ? parentData.modelValue.value : modelValue.value),\n set: (newValue) => {\n if (newValue === undefined) return\n if (parentData !== null) {\n parentData.modelValue.value = newValue as RadioValue\n return\n }\n modelValue.value = newValue as RadioValue\n },\n})\n\nconst computedRequired = computed(\n () => !!(props.name ?? parentData?.name.value) && (props.required || parentData?.required.value)\n)\n\nconst isButtonGroup = computed(() => props.buttonGroup || (parentData?.buttons.value ?? false))\n\nconst classesObject = computed(() => ({\n ...resolvedProps.value,\n hasDefaultSlot: hasDefaultSlot.value,\n}))\nconst computedClasses = getClasses(classesObject)\nconst inputClasses = getInputClasses(classesObject)\nconst labelClasses = getLabelClasses(classesObject)\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 <div\n v-bind=\"computedAttrs\"\n :id=\"computedId\"\n ref=\"_element\"\n role=\"radiogroup\"\n :class=\"computedClasses\"\n class=\"bv-no-focus-ring\"\n tabindex=\"-1\"\n >\n <slot name=\"first\" />\n <BFormRadio v-for=\"(item, index) in normalizedOptions\" :key=\"index\" v-bind=\"item\">\n <slot name=\"option\" v-bind=\"item\">\n {{ item.text }}\n </slot>\n </BFormRadio>\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, toRef, useTemplateRef} from 'vue'\nimport {radioGroupKey} from '../../utils/keys'\nimport BFormRadio from './BFormRadio.vue'\nimport {getGroupAttr, getGroupClasses} from '../../composables/useFormCheck'\nimport {useFocus} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormRadioGroupBaseProps, BFormRadioGroupSlots} from '../../types'\n\n/**\n * Internal base component for BFormRadioGroup.\n * This component is non-generic and uses useDefaults for complete default support.\n * Users should use BFormRadioGroup (the type-safe wrapper) instead.\n * @internal\n */\nconst _props = withDefaults(defineProps<Omit<BFormRadioGroupBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n buttonVariant: 'secondary',\n buttons: false,\n disabled: false,\n form: undefined,\n id: undefined,\n name: undefined,\n options: () => [],\n plain: false,\n required: false,\n reverse: false,\n size: undefined,\n stacked: false,\n state: null,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormRadioGroup')\ndefineSlots<BFormRadioGroupSlots>()\n\nconst modelValue = defineModel<unknown>({\n default: null,\n})\n\nconst computedId = useId(() => props.id, 'radio')\nconst computedName = useId(() => props.name, 'radio')\n\nconst element = useTemplateRef('_element')\n\nconst {focused} = useFocus(element, {\n initialValue: props.autofocus,\n})\n\n// Normalize options to always be objects with text/value fields\nconst normalizedOptions = computed(() =>\n props.options.map((option) => {\n if (typeof option === 'object' && option !== null) {\n // Ensure disabled respects group-level disabled taking precedence\n return {\n ...option,\n disabled: props.disabled ? true : (option.disabled ?? false),\n }\n }\n // Primitive value - normalize to {text, value}, with group disabled taking precedence\n return {\n text: String(option),\n value: option,\n disabled: props.disabled,\n }\n })\n)\n\nprovide(radioGroupKey, {\n modelValue: modelValue as import('vue').Ref<import('../../types/RadioTypes').RadioValue>,\n buttonVariant: toRef(() => props.buttonVariant),\n form: toRef(() => props.form),\n name: computedName,\n buttons: toRef(() => props.buttons),\n state: toRef(() => props.state),\n plain: toRef(() => props.plain),\n size: toRef(() => props.size),\n inline: toRef(() => !props.stacked),\n reverse: toRef(() => props.reverse),\n required: toRef(() => props.required),\n disabled: toRef(() => props.disabled),\n})\n\nconst classesObject = computed(() => ({\n required: props.required,\n ariaInvalid: props.ariaInvalid,\n state: props.state,\n validated: props.validated,\n buttons: props.buttons,\n stacked: props.stacked,\n size: props.size,\n}))\nconst computedAttrs = getGroupAttr(classesObject)\nconst computedClasses = getGroupClasses(classesObject)\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <div\n v-bind=\"computedAttrs\"\n :id=\"computedId\"\n ref=\"_element\"\n role=\"radiogroup\"\n :class=\"computedClasses\"\n class=\"bv-no-focus-ring\"\n tabindex=\"-1\"\n >\n <slot name=\"first\" />\n <BFormRadio v-for=\"(item, index) in normalizedOptions\" :key=\"index\" v-bind=\"item\">\n <slot name=\"option\" v-bind=\"item\">\n {{ item.text }}\n </slot>\n </BFormRadio>\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, toRef, useTemplateRef} from 'vue'\nimport {radioGroupKey} from '../../utils/keys'\nimport BFormRadio from './BFormRadio.vue'\nimport {getGroupAttr, getGroupClasses} from '../../composables/useFormCheck'\nimport {useFocus} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormRadioGroupBaseProps, BFormRadioGroupSlots} from '../../types'\n\n/**\n * Internal base component for BFormRadioGroup.\n * This component is non-generic and uses useDefaults for complete default support.\n * Users should use BFormRadioGroup (the type-safe wrapper) instead.\n * @internal\n */\nconst _props = withDefaults(defineProps<Omit<BFormRadioGroupBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n buttonVariant: 'secondary',\n buttons: false,\n disabled: false,\n form: undefined,\n id: undefined,\n name: undefined,\n options: () => [],\n plain: false,\n required: false,\n reverse: false,\n size: undefined,\n stacked: false,\n state: null,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormRadioGroup')\ndefineSlots<BFormRadioGroupSlots>()\n\nconst modelValue = defineModel<unknown>({\n default: null,\n})\n\nconst computedId = useId(() => props.id, 'radio')\nconst computedName = useId(() => props.name, 'radio')\n\nconst element = useTemplateRef('_element')\n\nconst {focused} = useFocus(element, {\n initialValue: props.autofocus,\n})\n\n// Normalize options to always be objects with text/value fields\nconst normalizedOptions = computed(() =>\n props.options.map((option) => {\n if (typeof option === 'object' && option !== null) {\n // Ensure disabled respects group-level disabled taking precedence\n return {\n ...option,\n disabled: props.disabled ? true : (option.disabled ?? false),\n }\n }\n // Primitive value - normalize to {text, value}, with group disabled taking precedence\n return {\n text: String(option),\n value: option,\n disabled: props.disabled,\n }\n })\n)\n\nprovide(radioGroupKey, {\n modelValue: modelValue as import('vue').Ref<import('../../types/RadioTypes').RadioValue>,\n buttonVariant: toRef(() => props.buttonVariant),\n form: toRef(() => props.form),\n name: computedName,\n buttons: toRef(() => props.buttons),\n state: toRef(() => props.state),\n plain: toRef(() => props.plain),\n size: toRef(() => props.size),\n inline: toRef(() => !props.stacked),\n reverse: toRef(() => props.reverse),\n required: toRef(() => props.required),\n disabled: toRef(() => props.disabled),\n})\n\nconst classesObject = computed(() => ({\n required: props.required,\n ariaInvalid: props.ariaInvalid,\n state: props.state,\n validated: props.validated,\n buttons: props.buttons,\n stacked: props.stacked,\n size: props.size,\n}))\nconst computedAttrs = getGroupAttr(classesObject)\nconst computedClasses = getGroupClasses(classesObject)\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <BFormRadioGroupBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions\">\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\" />\n </template>\n\n <slot />\n </BFormRadioGroupBase>\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 {BFormRadioGroupProps, OptionsValues, RadioOption} from '../../types'\nimport {computed} from 'vue'\nimport BFormRadioGroupBase from './BFormRadioGroupBase.vue'\n\n/**\n * Type-safe wrapper component for BFormRadioGroup.\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 BFormRadioGroupBase for rendering.\n * Supports both complex objects and simple scalar types (string, number, boolean).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values\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<BFormRadioGroupProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n buttonVariant: 'secondary',\n buttons: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n name: undefined,\n options: () => [] as unknown as Options,\n plain: false,\n required: false,\n reverse: false,\n size: undefined,\n stacked: false,\n state: null,\n textField: 'text',\n validated: false,\n valueField: 'value',\n})\n\n// Type-safe model value - extracts union from options.\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> | undefined>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: undefined as any,\n})\n\n// Type-safe normalization of options\nconst normalizedOptions = computed(\n () =>\n (props.options ?? []).map((el) =>\n typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean'\n ? {\n value: el,\n disabled: props.disabled,\n text: el.toString(),\n }\n : {\n value: (el as Record<string, unknown>)[props.valueField as string],\n disabled:\n props.disabled ||\n (((el as Record<string, unknown>)[props.disabledField as string] as\n | boolean\n | undefined) ??\n false),\n text:\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n '',\n }\n ) as RadioOption[]\n)\n\n// Forward all non-option-related props to base component\nconst forwardedProps = computed(() => ({\n id: props.id,\n name: props.name,\n size: props.size,\n state: props.state,\n buttonVariant: props.buttonVariant,\n buttons: props.buttons,\n stacked: props.stacked,\n disabled: props.disabled,\n required: props.required,\n validated: props.validated,\n autofocus: props.autofocus,\n form: props.form,\n ariaInvalid: props.ariaInvalid,\n plain: props.plain,\n reverse: props.reverse,\n}))\n</script>\n","<template>\n <BFormRadioGroupBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions\">\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\" />\n </template>\n\n <slot />\n </BFormRadioGroupBase>\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 {BFormRadioGroupProps, OptionsValues, RadioOption} from '../../types'\nimport {computed} from 'vue'\nimport BFormRadioGroupBase from './BFormRadioGroupBase.vue'\n\n/**\n * Type-safe wrapper component for BFormRadioGroup.\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 BFormRadioGroupBase for rendering.\n * Supports both complex objects and simple scalar types (string, number, boolean).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values\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<BFormRadioGroupProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n buttonVariant: 'secondary',\n buttons: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n name: undefined,\n options: () => [] as unknown as Options,\n plain: false,\n required: false,\n reverse: false,\n size: undefined,\n stacked: false,\n state: null,\n textField: 'text',\n validated: false,\n valueField: 'value',\n})\n\n// Type-safe model value - extracts union from options.\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> | undefined>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: undefined as any,\n})\n\n// Type-safe normalization of options\nconst normalizedOptions = computed(\n () =>\n (props.options ?? []).map((el) =>\n typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean'\n ? {\n value: el,\n disabled: props.disabled,\n text: el.toString(),\n }\n : {\n value: (el as Record<string, unknown>)[props.valueField as string],\n disabled:\n props.disabled ||\n (((el as Record<string, unknown>)[props.disabledField as string] as\n | boolean\n | undefined) ??\n false),\n text:\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n '',\n }\n ) as RadioOption[]\n)\n\n// Forward all non-option-related props to base component\nconst forwardedProps = computed(() => ({\n id: props.id,\n name: props.name,\n size: props.size,\n state: props.state,\n buttonVariant: props.buttonVariant,\n buttons: props.buttons,\n stacked: props.stacked,\n disabled: props.disabled,\n required: props.required,\n validated: props.validated,\n autofocus: props.autofocus,\n form: props.form,\n ariaInvalid: props.ariaInvalid,\n plain: props.plain,\n reverse: props.reverse,\n}))\n</script>\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { d as formGroupKey, y as radioGroupKey } from "./keys-CQKrwmvN.mjs";
1
+ import { d as formGroupKey, y as radioGroupKey } from "./keys-DU7sQgl3.mjs";
2
2
  import { m as useFocus } from "./dist-Dk9C_HFS.mjs";
3
3
  import { o as isEmptySlot } from "./dom-AhkaSoh8.mjs";
4
- import { t as useDefaults } from "./useDefaults-BKgBaqOV.mjs";
5
- import { t as useId$1 } from "./useId-BKZFSYm8.mjs";
4
+ import { t as useDefaults } from "./useDefaults-DseelK6y.mjs";
5
+ import { t as useId$1 } from "./useId-D1sqXtwx.mjs";
6
6
  import { t as ConditionalWrapper_default } from "./ConditionalWrapper-Dbc_O6qe.mjs";
7
7
  import { a as getLabelClasses, i as getInputClasses, n as getGroupAttr, r as getGroupClasses, t as getClasses } from "./useFormCheck-BKXrwS3g.mjs";
8
8
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, guardReactiveProps, inject, mergeModels, mergeProps, normalizeClass, normalizeProps, openBlock, provide, renderList, renderSlot, toDisplayString, toRef, unref, useModel, useSlots, useTemplateRef, vModelRadio, withCtx, withDirectives } from "vue";
@@ -100,7 +100,6 @@ var BFormRadio_default = /* @__PURE__ */ defineComponent({
100
100
  const modelValue = useModel(__props, "modelValue");
101
101
  const computedId = useId$1(() => props.id, "form-check");
102
102
  const parentData = inject(radioGroupKey, null);
103
- const formGroupData = inject(formGroupKey, null)?.(computedId);
104
103
  const input = useTemplateRef("_input");
105
104
  const { focused } = useFocus(input, { initialValue: props.autofocus });
106
105
  const hasDefaultSlot = computed(() => !isEmptySlot(slots.default));
@@ -123,6 +122,10 @@ var BFormRadio_default = /* @__PURE__ */ defineComponent({
123
122
  buttonVariant: props.buttonVariant ?? parentData?.buttonVariant.value ?? propDefaults.buttonVariant
124
123
  }));
125
124
  const resolvedPlain = computed(() => resolvedProps.value.plain);
125
+ const hasOwnLabel = computed(() => hasDefaultSlot.value || !resolvedPlain.value);
126
+ const labelTargetId = computed(() => hasOwnLabel.value ? null : computedId.value);
127
+ const formGroupData = inject(formGroupKey, null)?.();
128
+ formGroupData?.track(labelTargetId);
126
129
  const localValue = computed({
127
130
  get: () => parentData ? parentData.modelValue.value : modelValue.value,
128
131
  set: (newValue) => {
@@ -170,7 +173,7 @@ var BFormRadio_default = /* @__PURE__ */ defineComponent({
170
173
  "aria-labelledby": unref(props).ariaLabelledby,
171
174
  value: unref(props).value,
172
175
  "aria-required": computedRequired.value || void 0
173
- }), null, 16, _hoisted_1$1), [[vModelRadio, localValue.value]]), hasDefaultSlot.value || !resolvedPlain.value ? (openBlock(), createElementBlock("label", {
176
+ }), null, 16, _hoisted_1$1), [[vModelRadio, localValue.value]]), hasOwnLabel.value ? (openBlock(), createElementBlock("label", {
174
177
  key: 0,
175
178
  for: unref(computedId),
176
179
  class: normalizeClass(unref(labelClasses))
@@ -414,4 +417,4 @@ var BFormRadioGroup_default = /* @__PURE__ */ defineComponent({
414
417
  //#endregion
415
418
  export { BFormRadio_default as n, BFormRadioGroup_default as t };
416
419
 
417
- //# sourceMappingURL=BFormRadio-DHx68AdL.mjs.map
420
+ //# sourceMappingURL=BFormRadio-COc_IbxC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BFormRadio-COc_IbxC.mjs","names":["$attrs"],"sources":["../src/components/BFormRadio/BFormRadio.vue","../src/components/BFormRadio/BFormRadio.vue","../src/components/BFormRadio/BFormRadioGroupBase.vue","../src/components/BFormRadio/BFormRadioGroupBase.vue","../src/components/BFormRadio/BFormRadioGroup.vue","../src/components/BFormRadio/BFormRadioGroup.vue"],"sourcesContent":["<template>\n <ConditionalWrapper :skip=\"isButtonGroup\" :class=\"computedClasses\">\n <input\n :id=\"computedId\"\n v-bind=\"$attrs\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"inputClasses\"\n type=\"radio\"\n :disabled=\"props.disabled || parentData?.disabled.value || formGroupData?.disabled.value\"\n :required=\"computedRequired || undefined\"\n :name=\"props.name || parentData?.name.value\"\n :form=\"props.form || parentData?.form.value\"\n :aria-label=\"props.ariaLabel\"\n :aria-labelledby=\"props.ariaLabelledby\"\n :value=\"props.value\"\n :aria-required=\"computedRequired || undefined\"\n />\n <label v-if=\"hasOwnLabel\" :for=\"computedId\" :class=\"labelClasses\">\n <slot />\n </label>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {useFocus} from '@vueuse/core'\nimport {computed, inject, useTemplateRef} from 'vue'\nimport {getClasses, getInputClasses, getLabelClasses} from '../../composables/useFormCheck'\nimport {isEmptySlot} from '../../utils/dom'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {formGroupKey, radioGroupKey} from '../../utils/keys'\nimport type {BFormRadioProps, BFormRadioSlots, RadioValue} from '../../types'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BFormRadioProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n autofocus: false,\n button: undefined,\n buttonGroup: false,\n buttonVariant: undefined,\n disabled: false,\n form: undefined,\n id: undefined,\n inline: undefined,\n name: undefined,\n plain: undefined,\n required: false,\n reverse: undefined,\n size: undefined,\n state: undefined,\n value: true,\n})\nconst props = useDefaults(_props, 'BFormRadio')\nconst slots = defineSlots<BFormRadioSlots>()\n\nconst modelValue = defineModel<BFormRadioProps['modelValue']>({\n default: undefined,\n})\n\nconst computedId = useId(() => props.id, 'form-check')\n\nconst parentData = inject(radioGroupKey, null)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst hasDefaultSlot = computed(() => !isEmptySlot(slots.default))\n\n// True default values for props that are undefined to support inheritance\nconst propDefaults = {\n plain: false,\n button: false,\n inline: false,\n reverse: false,\n size: undefined,\n buttonVariant: 'secondary' as const,\n state: null,\n}\n\n// Single source of truth for resolved prop values with parent inheritance and defaults\nconst resolvedProps = computed(() => ({\n plain: props.plain ?? parentData?.plain.value ?? propDefaults.plain,\n button: props.button ?? parentData?.buttons.value ?? propDefaults.button,\n inline: props.inline ?? parentData?.inline.value ?? propDefaults.inline,\n reverse: props.reverse ?? parentData?.reverse.value ?? propDefaults.reverse,\n state: props.state ?? parentData?.state.value ?? propDefaults.state,\n size: props.size ?? parentData?.size.value ?? propDefaults.size,\n buttonVariant:\n props.buttonVariant ?? parentData?.buttonVariant.value ?? propDefaults.buttonVariant,\n}))\n\n// Shorthand for template usage\nconst resolvedPlain = computed(() => resolvedProps.value.plain)\nconst hasOwnLabel = computed(() => hasDefaultSlot.value || !resolvedPlain.value)\n\nconst labelTargetId = computed(() => (hasOwnLabel.value ? null : computedId.value))\nconst formGroupData = inject(formGroupKey, null)?.()\nformGroupData?.track(labelTargetId)\n\nconst localValue = computed({\n get: () => (parentData ? parentData.modelValue.value : modelValue.value),\n set: (newValue) => {\n if (newValue === undefined) return\n if (parentData !== null) {\n parentData.modelValue.value = newValue as RadioValue\n return\n }\n modelValue.value = newValue as RadioValue\n },\n})\n\nconst computedRequired = computed(\n () => !!(props.name ?? parentData?.name.value) && (props.required || parentData?.required.value)\n)\n\nconst isButtonGroup = computed(() => props.buttonGroup || (parentData?.buttons.value ?? false))\n\nconst classesObject = computed(() => ({\n ...resolvedProps.value,\n hasDefaultSlot: hasDefaultSlot.value,\n}))\nconst computedClasses = getClasses(classesObject)\nconst inputClasses = getInputClasses(classesObject)\nconst labelClasses = getLabelClasses(classesObject)\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 <ConditionalWrapper :skip=\"isButtonGroup\" :class=\"computedClasses\">\n <input\n :id=\"computedId\"\n v-bind=\"$attrs\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"inputClasses\"\n type=\"radio\"\n :disabled=\"props.disabled || parentData?.disabled.value || formGroupData?.disabled.value\"\n :required=\"computedRequired || undefined\"\n :name=\"props.name || parentData?.name.value\"\n :form=\"props.form || parentData?.form.value\"\n :aria-label=\"props.ariaLabel\"\n :aria-labelledby=\"props.ariaLabelledby\"\n :value=\"props.value\"\n :aria-required=\"computedRequired || undefined\"\n />\n <label v-if=\"hasOwnLabel\" :for=\"computedId\" :class=\"labelClasses\">\n <slot />\n </label>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {useFocus} from '@vueuse/core'\nimport {computed, inject, useTemplateRef} from 'vue'\nimport {getClasses, getInputClasses, getLabelClasses} from '../../composables/useFormCheck'\nimport {isEmptySlot} from '../../utils/dom'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport {formGroupKey, radioGroupKey} from '../../utils/keys'\nimport type {BFormRadioProps, BFormRadioSlots, RadioValue} from '../../types'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<Omit<BFormRadioProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n autofocus: false,\n button: undefined,\n buttonGroup: false,\n buttonVariant: undefined,\n disabled: false,\n form: undefined,\n id: undefined,\n inline: undefined,\n name: undefined,\n plain: undefined,\n required: false,\n reverse: undefined,\n size: undefined,\n state: undefined,\n value: true,\n})\nconst props = useDefaults(_props, 'BFormRadio')\nconst slots = defineSlots<BFormRadioSlots>()\n\nconst modelValue = defineModel<BFormRadioProps['modelValue']>({\n default: undefined,\n})\n\nconst computedId = useId(() => props.id, 'form-check')\n\nconst parentData = inject(radioGroupKey, null)\n\nconst input = useTemplateRef('_input')\n\nconst {focused} = useFocus(input, {\n initialValue: props.autofocus,\n})\n\nconst hasDefaultSlot = computed(() => !isEmptySlot(slots.default))\n\n// True default values for props that are undefined to support inheritance\nconst propDefaults = {\n plain: false,\n button: false,\n inline: false,\n reverse: false,\n size: undefined,\n buttonVariant: 'secondary' as const,\n state: null,\n}\n\n// Single source of truth for resolved prop values with parent inheritance and defaults\nconst resolvedProps = computed(() => ({\n plain: props.plain ?? parentData?.plain.value ?? propDefaults.plain,\n button: props.button ?? parentData?.buttons.value ?? propDefaults.button,\n inline: props.inline ?? parentData?.inline.value ?? propDefaults.inline,\n reverse: props.reverse ?? parentData?.reverse.value ?? propDefaults.reverse,\n state: props.state ?? parentData?.state.value ?? propDefaults.state,\n size: props.size ?? parentData?.size.value ?? propDefaults.size,\n buttonVariant:\n props.buttonVariant ?? parentData?.buttonVariant.value ?? propDefaults.buttonVariant,\n}))\n\n// Shorthand for template usage\nconst resolvedPlain = computed(() => resolvedProps.value.plain)\nconst hasOwnLabel = computed(() => hasDefaultSlot.value || !resolvedPlain.value)\n\nconst labelTargetId = computed(() => (hasOwnLabel.value ? null : computedId.value))\nconst formGroupData = inject(formGroupKey, null)?.()\nformGroupData?.track(labelTargetId)\n\nconst localValue = computed({\n get: () => (parentData ? parentData.modelValue.value : modelValue.value),\n set: (newValue) => {\n if (newValue === undefined) return\n if (parentData !== null) {\n parentData.modelValue.value = newValue as RadioValue\n return\n }\n modelValue.value = newValue as RadioValue\n },\n})\n\nconst computedRequired = computed(\n () => !!(props.name ?? parentData?.name.value) && (props.required || parentData?.required.value)\n)\n\nconst isButtonGroup = computed(() => props.buttonGroup || (parentData?.buttons.value ?? false))\n\nconst classesObject = computed(() => ({\n ...resolvedProps.value,\n hasDefaultSlot: hasDefaultSlot.value,\n}))\nconst computedClasses = getClasses(classesObject)\nconst inputClasses = getInputClasses(classesObject)\nconst labelClasses = getLabelClasses(classesObject)\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 <div\n v-bind=\"computedAttrs\"\n :id=\"computedId\"\n ref=\"_element\"\n role=\"radiogroup\"\n :class=\"computedClasses\"\n class=\"bv-no-focus-ring\"\n tabindex=\"-1\"\n >\n <slot name=\"first\" />\n <BFormRadio v-for=\"(item, index) in normalizedOptions\" :key=\"index\" v-bind=\"item\">\n <slot name=\"option\" v-bind=\"item\">\n {{ item.text }}\n </slot>\n </BFormRadio>\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, toRef, useTemplateRef} from 'vue'\nimport {radioGroupKey} from '../../utils/keys'\nimport BFormRadio from './BFormRadio.vue'\nimport {getGroupAttr, getGroupClasses} from '../../composables/useFormCheck'\nimport {useFocus} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormRadioGroupBaseProps, BFormRadioGroupSlots} from '../../types'\n\n/**\n * Internal base component for BFormRadioGroup.\n * This component is non-generic and uses useDefaults for complete default support.\n * Users should use BFormRadioGroup (the type-safe wrapper) instead.\n * @internal\n */\nconst _props = withDefaults(defineProps<Omit<BFormRadioGroupBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n buttonVariant: 'secondary',\n buttons: false,\n disabled: false,\n form: undefined,\n id: undefined,\n name: undefined,\n options: () => [],\n plain: false,\n required: false,\n reverse: false,\n size: undefined,\n stacked: false,\n state: null,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormRadioGroup')\ndefineSlots<BFormRadioGroupSlots>()\n\nconst modelValue = defineModel<unknown>({\n default: null,\n})\n\nconst computedId = useId(() => props.id, 'radio')\nconst computedName = useId(() => props.name, 'radio')\n\nconst element = useTemplateRef('_element')\n\nconst {focused} = useFocus(element, {\n initialValue: props.autofocus,\n})\n\n// Normalize options to always be objects with text/value fields\nconst normalizedOptions = computed(() =>\n props.options.map((option) => {\n if (typeof option === 'object' && option !== null) {\n // Ensure disabled respects group-level disabled taking precedence\n return {\n ...option,\n disabled: props.disabled ? true : (option.disabled ?? false),\n }\n }\n // Primitive value - normalize to {text, value}, with group disabled taking precedence\n return {\n text: String(option),\n value: option,\n disabled: props.disabled,\n }\n })\n)\n\nprovide(radioGroupKey, {\n modelValue: modelValue as import('vue').Ref<import('../../types/RadioTypes').RadioValue>,\n buttonVariant: toRef(() => props.buttonVariant),\n form: toRef(() => props.form),\n name: computedName,\n buttons: toRef(() => props.buttons),\n state: toRef(() => props.state),\n plain: toRef(() => props.plain),\n size: toRef(() => props.size),\n inline: toRef(() => !props.stacked),\n reverse: toRef(() => props.reverse),\n required: toRef(() => props.required),\n disabled: toRef(() => props.disabled),\n})\n\nconst classesObject = computed(() => ({\n required: props.required,\n ariaInvalid: props.ariaInvalid,\n state: props.state,\n validated: props.validated,\n buttons: props.buttons,\n stacked: props.stacked,\n size: props.size,\n}))\nconst computedAttrs = getGroupAttr(classesObject)\nconst computedClasses = getGroupClasses(classesObject)\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <div\n v-bind=\"computedAttrs\"\n :id=\"computedId\"\n ref=\"_element\"\n role=\"radiogroup\"\n :class=\"computedClasses\"\n class=\"bv-no-focus-ring\"\n tabindex=\"-1\"\n >\n <slot name=\"first\" />\n <BFormRadio v-for=\"(item, index) in normalizedOptions\" :key=\"index\" v-bind=\"item\">\n <slot name=\"option\" v-bind=\"item\">\n {{ item.text }}\n </slot>\n </BFormRadio>\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, toRef, useTemplateRef} from 'vue'\nimport {radioGroupKey} from '../../utils/keys'\nimport BFormRadio from './BFormRadio.vue'\nimport {getGroupAttr, getGroupClasses} from '../../composables/useFormCheck'\nimport {useFocus} from '@vueuse/core'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormRadioGroupBaseProps, BFormRadioGroupSlots} from '../../types'\n\n/**\n * Internal base component for BFormRadioGroup.\n * This component is non-generic and uses useDefaults for complete default support.\n * Users should use BFormRadioGroup (the type-safe wrapper) instead.\n * @internal\n */\nconst _props = withDefaults(defineProps<Omit<BFormRadioGroupBaseProps, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n buttonVariant: 'secondary',\n buttons: false,\n disabled: false,\n form: undefined,\n id: undefined,\n name: undefined,\n options: () => [],\n plain: false,\n required: false,\n reverse: false,\n size: undefined,\n stacked: false,\n state: null,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormRadioGroup')\ndefineSlots<BFormRadioGroupSlots>()\n\nconst modelValue = defineModel<unknown>({\n default: null,\n})\n\nconst computedId = useId(() => props.id, 'radio')\nconst computedName = useId(() => props.name, 'radio')\n\nconst element = useTemplateRef('_element')\n\nconst {focused} = useFocus(element, {\n initialValue: props.autofocus,\n})\n\n// Normalize options to always be objects with text/value fields\nconst normalizedOptions = computed(() =>\n props.options.map((option) => {\n if (typeof option === 'object' && option !== null) {\n // Ensure disabled respects group-level disabled taking precedence\n return {\n ...option,\n disabled: props.disabled ? true : (option.disabled ?? false),\n }\n }\n // Primitive value - normalize to {text, value}, with group disabled taking precedence\n return {\n text: String(option),\n value: option,\n disabled: props.disabled,\n }\n })\n)\n\nprovide(radioGroupKey, {\n modelValue: modelValue as import('vue').Ref<import('../../types/RadioTypes').RadioValue>,\n buttonVariant: toRef(() => props.buttonVariant),\n form: toRef(() => props.form),\n name: computedName,\n buttons: toRef(() => props.buttons),\n state: toRef(() => props.state),\n plain: toRef(() => props.plain),\n size: toRef(() => props.size),\n inline: toRef(() => !props.stacked),\n reverse: toRef(() => props.reverse),\n required: toRef(() => props.required),\n disabled: toRef(() => props.disabled),\n})\n\nconst classesObject = computed(() => ({\n required: props.required,\n ariaInvalid: props.ariaInvalid,\n state: props.state,\n validated: props.validated,\n buttons: props.buttons,\n stacked: props.stacked,\n size: props.size,\n}))\nconst computedAttrs = getGroupAttr(classesObject)\nconst computedClasses = getGroupClasses(classesObject)\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <BFormRadioGroupBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions\">\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\" />\n </template>\n\n <slot />\n </BFormRadioGroupBase>\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 {BFormRadioGroupProps, OptionsValues, RadioOption} from '../../types'\nimport {computed} from 'vue'\nimport BFormRadioGroupBase from './BFormRadioGroupBase.vue'\n\n/**\n * Type-safe wrapper component for BFormRadioGroup.\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 BFormRadioGroupBase for rendering.\n * Supports both complex objects and simple scalar types (string, number, boolean).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values\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<BFormRadioGroupProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n buttonVariant: 'secondary',\n buttons: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n name: undefined,\n options: () => [] as unknown as Options,\n plain: false,\n required: false,\n reverse: false,\n size: undefined,\n stacked: false,\n state: null,\n textField: 'text',\n validated: false,\n valueField: 'value',\n})\n\n// Type-safe model value - extracts union from options.\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> | undefined>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: undefined as any,\n})\n\n// Type-safe normalization of options\nconst normalizedOptions = computed(\n () =>\n (props.options ?? []).map((el) =>\n typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean'\n ? {\n value: el,\n disabled: props.disabled,\n text: el.toString(),\n }\n : {\n value: (el as Record<string, unknown>)[props.valueField as string],\n disabled:\n props.disabled ||\n (((el as Record<string, unknown>)[props.disabledField as string] as\n | boolean\n | undefined) ??\n false),\n text:\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n '',\n }\n ) as RadioOption[]\n)\n\n// Forward all non-option-related props to base component\nconst forwardedProps = computed(() => ({\n id: props.id,\n name: props.name,\n size: props.size,\n state: props.state,\n buttonVariant: props.buttonVariant,\n buttons: props.buttons,\n stacked: props.stacked,\n disabled: props.disabled,\n required: props.required,\n validated: props.validated,\n autofocus: props.autofocus,\n form: props.form,\n ariaInvalid: props.ariaInvalid,\n plain: props.plain,\n reverse: props.reverse,\n}))\n</script>\n","<template>\n <BFormRadioGroupBase v-bind=\"forwardedProps\" v-model=\"modelValue\" :options=\"normalizedOptions\">\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\" />\n </template>\n\n <slot />\n </BFormRadioGroupBase>\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 {BFormRadioGroupProps, OptionsValues, RadioOption} from '../../types'\nimport {computed} from 'vue'\nimport BFormRadioGroupBase from './BFormRadioGroupBase.vue'\n\n/**\n * Type-safe wrapper component for BFormRadioGroup.\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 BFormRadioGroupBase for rendering.\n * Supports both complex objects and simple scalar types (string, number, boolean).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is union of those values\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<BFormRadioGroupProps<Options>, 'modelValue'>>(), {\n ariaInvalid: undefined,\n autofocus: false,\n buttonVariant: 'secondary',\n buttons: false,\n disabled: false,\n disabledField: 'disabled',\n form: undefined,\n id: undefined,\n name: undefined,\n options: () => [] as unknown as Options,\n plain: false,\n required: false,\n reverse: false,\n size: undefined,\n stacked: false,\n state: null,\n textField: 'text',\n validated: false,\n valueField: 'value',\n})\n\n// Type-safe model value - extracts union from options.\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> | undefined>({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default: undefined as any,\n})\n\n// Type-safe normalization of options\nconst normalizedOptions = computed(\n () =>\n (props.options ?? []).map((el) =>\n typeof el === 'string' || typeof el === 'number' || typeof el === 'boolean'\n ? {\n value: el,\n disabled: props.disabled,\n text: el.toString(),\n }\n : {\n value: (el as Record<string, unknown>)[props.valueField as string],\n disabled:\n props.disabled ||\n (((el as Record<string, unknown>)[props.disabledField as string] as\n | boolean\n | undefined) ??\n false),\n text:\n ((el as Record<string, unknown>)[props.textField as string] as string | undefined) ??\n '',\n }\n ) as RadioOption[]\n)\n\n// Forward all non-option-related props to base component\nconst forwardedProps = computed(() => ({\n id: props.id,\n name: props.name,\n size: props.size,\n state: props.state,\n buttonVariant: props.buttonVariant,\n buttons: props.buttons,\n stacked: props.stacked,\n disabled: props.disabled,\n required: props.required,\n validated: props.validated,\n autofocus: props.autofocus,\n form: props.form,\n ariaInvalid: props.ariaInvalid,\n plain: props.plain,\n reverse: props.reverse,\n}))\n</script>\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { t as useDefaults } from "./useDefaults-BKgBaqOV.mjs";
2
- import { t as useId$1 } from "./useId-BKZFSYm8.mjs";
3
- import { t as useRtl } from "./useRtl-VR3M2Txg.mjs";
1
+ import { t as useDefaults } from "./useDefaults-DseelK6y.mjs";
2
+ import { t as useId$1 } from "./useId-D1sqXtwx.mjs";
3
+ import { t as useRtl } from "./useRtl-CGoXBxNo.mjs";
4
4
  import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeModels, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useModel } from "vue";
5
5
  //#region src/components/BFormRating/BFormRating.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = [
@@ -254,4 +254,4 @@ var BFormRating_default = /* @__PURE__ */ defineComponent({
254
254
  //#endregion
255
255
  export { BFormRating_default as t };
256
256
 
257
- //# sourceMappingURL=BFormRating-BR7RMvZG.mjs.map
257
+ //# sourceMappingURL=BFormRating-CIgPVsH_.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BFormRating-BR7RMvZG.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 rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${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 rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"BFormRating-CIgPVsH_.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 rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${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 rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  require("./chunk-CoQrYLCe.js");
2
- const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
3
- const require_useId = require("./useId-DHrBgM7P.js");
4
- const require_useRtl = require("./useRtl-DDPRnA7g.js");
2
+ const require_useDefaults = require("./useDefaults-C0CYry78.js");
3
+ const require_useId = require("./useId-BkAY2oh6.js");
4
+ const require_useRtl = require("./useRtl-BSgvbs5F.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-CF-x5qkB.js.map
263
+ //# sourceMappingURL=BFormRating-CSdRxN5z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BFormRating-CF-x5qkB.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 rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${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 rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"BFormRating-CSdRxN5z.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 rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n","<template>\n <output\n :id=\"computedId\"\n :class=\"computedClasses\"\n :dir=\"computedRtl ? 'rtl' : 'ltr'\"\n :form=\"props.form ? props.form : undefined\"\n role=\"slider\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"clampedStars\"\n :aria-valuenow=\"displayValue\"\n :aria-valuetext=\"`${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 rendered to 3\nconst clampedStars = computed(() => Math.max(3, props.stars))\n\nconst computedSize = computed(() => {\n if (props.size === 'sm') return '.875rem'\n if (props.size === 'lg') return '1.25rem'\n return props.size\n})\n\nconst computedFormatter = computed(\n () =>\n new Intl.NumberFormat(computedLocale.value, {\n style: 'decimal',\n useGrouping: false,\n minimumFractionDigits: props.precision > 0 ? props.precision : 0,\n maximumFractionDigits: props.precision > 0 ? props.precision : 0,\n notation: 'standard',\n })\n)\n\nconst displayValueText = computed(() => {\n const val = props.precision > 0 ? roundedValue.value : displayValue.value\n const formattedValue = computedFormatter.value.format(val)\n if (props.showValueMax) {\n const formattedMax = computedFormatter.value.format(clampedStars.value)\n return `${formattedValue}/${formattedMax}`\n }\n if (props.showValue) {\n return formattedValue\n }\n return ''\n})\n\nconst roundedValue = computed(() => {\n const val = displayValue.value\n const factor = 10 ** props.precision\n return Math.round((val + Number.EPSILON) * factor) / factor\n})\n\nconst iconColors = computed(() =>\n Array.from({length: clampedStars.value}, () => {\n if (props.disabled) {\n return {class: 'is-disabled', style: {}}\n }\n if (props.variant) {\n return {class: `text-${props.variant}`, style: {}}\n }\n if (props.color) {\n return {class: '', style: {color: props.color}}\n }\n return {class: '', style: {}}\n })\n)\n\n//add keyboard support\nfunction onKeydown(e: KeyboardEvent) {\n if (props.readonly || props.disabled) return\n\n let newValue = modelValue.value\n\n const isRtlMode = computedRtl.value\n\n switch (e.key) {\n case 'ArrowRight':\n newValue = isRtlMode ? Math.max(newValue - 1, 0) : Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowUp':\n newValue = Math.min(newValue + 1, clampedStars.value)\n break\n case 'ArrowLeft':\n newValue = isRtlMode ? Math.min(newValue + 1, clampedStars.value) : Math.max(newValue - 1, 0)\n break\n case 'ArrowDown':\n newValue = Math.max(newValue - 1, 0)\n break\n default:\n return\n }\n\n e.preventDefault()\n modelValue.value = newValue\n}\n\nfunction selectRating(starIndex: number) {\n if (props.readonly || props.disabled) return\n modelValue.value = hoverValue.value !== null ? hoverValue.value : starIndex\n}\n\n// clear\nfunction clearRating() {\n hoverValue.value = null\n modelValue.value = 0\n}\n\ndefineExpose({\n hoverValue,\n})\n</script>\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  require("./chunk-CoQrYLCe.js");
2
- const require_keys = require("./keys-durSVUrO.js");
2
+ const require_keys = require("./keys-BMye8nSf.js");
3
3
  const require_dist = require("./dist-DiXKLh_W.js");
4
- const require_useDefaults = require("./useDefaults-DsLf4iRY.js");
5
- const require_useId = require("./useId-DHrBgM7P.js");
4
+ const require_useDefaults = require("./useDefaults-C0CYry78.js");
5
+ const require_useId = require("./useId-BkAY2oh6.js");
6
6
  const require_useAriaInvalid = require("./useAriaInvalid-CHHPHNLU.js");
7
7
  const require_useStateClass = require("./useStateClass-CXK3nCg9.js");
8
8
  const require_useFormSelect = require("./useFormSelect-ClmzGzOy.js");
9
- const require_BFormSelectOption = require("./BFormSelectOption-CQ3j1Q5j.js");
9
+ const require_BFormSelectOption = require("./BFormSelectOption-DrwJucNf.js");
10
10
  let vue = require("vue");
11
11
  //#region src/components/BFormSelect/BFormSelectOptionGroup.vue?vue&type=script&setup=true&lang.ts
12
12
  var _hoisted_1$1 = ["label"];
@@ -107,7 +107,8 @@ var BFormSelectBase_default = /* @__PURE__ */ (0, vue.defineComponent)({
107
107
  const props = require_useDefaults.useDefaults(__props, "BFormSelect");
108
108
  const modelValue = (0, vue.useModel)(__props, "modelValue");
109
109
  const computedId = require_useId.useId(() => props.id, "input");
110
- const formGroupData = (0, vue.inject)(require_keys.formGroupKey, null)?.(computedId);
110
+ const formGroupData = (0, vue.inject)(require_keys.formGroupKey, null)?.();
111
+ formGroupData?.track(computedId);
111
112
  const isDisabled = (0, vue.computed)(() => props.disabled || (formGroupData?.disabled.value ?? false));
112
113
  const selectSizeNumber = require_dist.useToNumber(() => props.selectSize);
113
114
  const stateClass = require_useStateClass.useStateClass(() => props.state);
@@ -306,4 +307,4 @@ Object.defineProperty(exports, "BFormSelect_default", {
306
307
  }
307
308
  });
308
309
 
309
- //# sourceMappingURL=BFormSelect-CtcsnTlz.js.map
310
+ //# sourceMappingURL=BFormSelect-CI92Dv27.js.map