bootstrap-vue-next 0.45.5 → 0.45.6

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 (415) 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-EXRrATZm.mjs} +3 -3
  98. package/dist/{BFormFile-DXdAyYmv.mjs.map → BFormFile-EXRrATZm.mjs.map} +1 -1
  99. package/dist/{BFormFile-DC-x9wQo.js → BFormFile-X-BQsYko.js} +3 -3
  100. package/dist/{BFormFile-DC-x9wQo.js.map → BFormFile-X-BQsYko.js.map} +1 -1
  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/composables/useProvideFormGroupData.d.mts +15 -0
  236. package/dist/composables/useProvideFormGroupData.d.ts +15 -0
  237. package/dist/{floatingUi-8xXp54zf.mjs → floatingUi-62aeQtAb.mjs} +4 -4
  238. package/dist/{floatingUi-8xXp54zf.mjs.map → floatingUi-62aeQtAb.mjs.map} +1 -1
  239. package/dist/{floatingUi-9SWu8BgZ.js → floatingUi-DQ5bHmy3.js} +4 -4
  240. package/dist/{floatingUi-9SWu8BgZ.js.map → floatingUi-DQ5bHmy3.js.map} +1 -1
  241. package/dist/{keys-durSVUrO.js → keys-BMye8nSf.js} +10 -1
  242. package/dist/{keys-durSVUrO.js.map → keys-BMye8nSf.js.map} +1 -1
  243. package/dist/{keys-CQKrwmvN.mjs → keys-DU7sQgl3.mjs} +10 -1
  244. package/dist/{keys-CQKrwmvN.mjs.map → keys-DU7sQgl3.mjs.map} +1 -1
  245. package/dist/src/components/BAccordion/index.mjs +1 -1
  246. package/dist/src/components/BAccordion/index.umd.js +1 -1
  247. package/dist/src/components/BAlert/index.mjs +1 -1
  248. package/dist/src/components/BAlert/index.umd.js +1 -1
  249. package/dist/src/components/BApp/index.mjs +1 -1
  250. package/dist/src/components/BApp/index.umd.js +1 -1
  251. package/dist/src/components/BAspect/index.mjs +1 -1
  252. package/dist/src/components/BAspect/index.umd.js +1 -1
  253. package/dist/src/components/BAutocomplete/index.mjs +1 -1
  254. package/dist/src/components/BAutocomplete/index.umd.js +1 -1
  255. package/dist/src/components/BAvatar/index.mjs +1 -1
  256. package/dist/src/components/BAvatar/index.umd.js +1 -1
  257. package/dist/src/components/BBadge/index.mjs +1 -1
  258. package/dist/src/components/BBadge/index.umd.js +1 -1
  259. package/dist/src/components/BBreadcrumb/index.mjs +1 -1
  260. package/dist/src/components/BBreadcrumb/index.umd.js +1 -1
  261. package/dist/src/components/BButton/index.mjs +3 -3
  262. package/dist/src/components/BButton/index.umd.js +3 -3
  263. package/dist/src/components/BCard/index.mjs +2 -2
  264. package/dist/src/components/BCard/index.umd.js +2 -2
  265. package/dist/src/components/BCarousel/index.mjs +1 -1
  266. package/dist/src/components/BCarousel/index.umd.js +1 -1
  267. package/dist/src/components/BCol/index.mjs +1 -1
  268. package/dist/src/components/BCol/index.umd.js +1 -1
  269. package/dist/src/components/BCollapse/index.mjs +1 -1
  270. package/dist/src/components/BCollapse/index.umd.js +1 -1
  271. package/dist/src/components/BContainer/index.mjs +3 -3
  272. package/dist/src/components/BContainer/index.umd.js +3 -3
  273. package/dist/src/components/BDateField/index.mjs +1 -1
  274. package/dist/src/components/BDateField/index.umd.js +1 -1
  275. package/dist/src/components/BDatePicker/index.mjs +1 -1
  276. package/dist/src/components/BDatePicker/index.umd.js +1 -1
  277. package/dist/src/components/BDropdown/index.mjs +2 -2
  278. package/dist/src/components/BDropdown/index.umd.js +2 -2
  279. package/dist/src/components/BForm/index.mjs +3 -3
  280. package/dist/src/components/BForm/index.umd.js +3 -3
  281. package/dist/src/components/BFormCheckbox/index.mjs +1 -1
  282. package/dist/src/components/BFormCheckbox/index.umd.js +1 -1
  283. package/dist/src/components/BFormFile/index.mjs +1 -1
  284. package/dist/src/components/BFormFile/index.umd.js +1 -1
  285. package/dist/src/components/BFormGroup/index.mjs +1 -1
  286. package/dist/src/components/BFormGroup/index.umd.js +1 -1
  287. package/dist/src/components/BFormInput/index.mjs +1 -1
  288. package/dist/src/components/BFormInput/index.umd.js +1 -1
  289. package/dist/src/components/BFormOtp/index.mjs +1 -1
  290. package/dist/src/components/BFormOtp/index.umd.js +1 -1
  291. package/dist/src/components/BFormRadio/index.mjs +1 -1
  292. package/dist/src/components/BFormRadio/index.umd.js +1 -1
  293. package/dist/src/components/BFormRating/index.mjs +1 -1
  294. package/dist/src/components/BFormRating/index.umd.js +1 -1
  295. package/dist/src/components/BFormSelect/index.mjs +2 -2
  296. package/dist/src/components/BFormSelect/index.umd.js +2 -2
  297. package/dist/src/components/BFormSpinbutton/index.mjs +1 -1
  298. package/dist/src/components/BFormSpinbutton/index.umd.js +1 -1
  299. package/dist/src/components/BFormTags/index.mjs +2 -2
  300. package/dist/src/components/BFormTags/index.umd.js +2 -2
  301. package/dist/src/components/BFormTextarea/index.mjs +1 -1
  302. package/dist/src/components/BFormTextarea/index.umd.js +1 -1
  303. package/dist/src/components/BImg/index.mjs +1 -1
  304. package/dist/src/components/BImg/index.umd.js +1 -1
  305. package/dist/src/components/BInputGroup/index.mjs +2 -2
  306. package/dist/src/components/BInputGroup/index.umd.js +2 -2
  307. package/dist/src/components/BLink/index.mjs +1 -1
  308. package/dist/src/components/BLink/index.umd.js +1 -1
  309. package/dist/src/components/BListGroup/index.mjs +1 -1
  310. package/dist/src/components/BListGroup/index.umd.js +1 -1
  311. package/dist/src/components/BModal/index.mjs +1 -1
  312. package/dist/src/components/BModal/index.umd.js +1 -1
  313. package/dist/src/components/BNav/index.mjs +1 -1
  314. package/dist/src/components/BNav/index.umd.js +1 -1
  315. package/dist/src/components/BNavbar/index.mjs +1 -1
  316. package/dist/src/components/BNavbar/index.umd.js +1 -1
  317. package/dist/src/components/BOffcanvas/index.mjs +1 -1
  318. package/dist/src/components/BOffcanvas/index.umd.js +1 -1
  319. package/dist/src/components/BOverlay/index.mjs +1 -1
  320. package/dist/src/components/BOverlay/index.umd.js +1 -1
  321. package/dist/src/components/BPagination/index.mjs +1 -1
  322. package/dist/src/components/BPagination/index.umd.js +1 -1
  323. package/dist/src/components/BPlaceholder/index.mjs +1 -1
  324. package/dist/src/components/BPlaceholder/index.umd.js +1 -1
  325. package/dist/src/components/BPopover/index.mjs +1 -1
  326. package/dist/src/components/BPopover/index.umd.js +1 -1
  327. package/dist/src/components/BProgress/index.mjs +1 -1
  328. package/dist/src/components/BProgress/index.umd.js +1 -1
  329. package/dist/src/components/BRow/index.mjs +1 -1
  330. package/dist/src/components/BRow/index.umd.js +1 -1
  331. package/dist/src/components/BSpinner/index.mjs +1 -1
  332. package/dist/src/components/BSpinner/index.umd.js +1 -1
  333. package/dist/src/components/BTable/index.mjs +2 -2
  334. package/dist/src/components/BTable/index.umd.js +2 -2
  335. package/dist/src/components/BTabs/index.mjs +1 -1
  336. package/dist/src/components/BTabs/index.umd.js +1 -1
  337. package/dist/src/components/BTimeField/index.mjs +1 -1
  338. package/dist/src/components/BTimeField/index.umd.js +1 -1
  339. package/dist/src/components/BToast/index.mjs +1 -1
  340. package/dist/src/components/BToast/index.umd.js +1 -1
  341. package/dist/src/components/BTooltip/index.mjs +1 -1
  342. package/dist/src/components/BTooltip/index.umd.js +1 -1
  343. package/dist/src/components/index.mjs +59 -59
  344. package/dist/src/components/index.umd.js +59 -59
  345. package/dist/src/composables/orchestratorShared/index.mjs +1 -1
  346. package/dist/src/composables/orchestratorShared/index.umd.js +1 -1
  347. package/dist/src/composables/useBreadcrumb/index.mjs +1 -1
  348. package/dist/src/composables/useBreadcrumb/index.umd.js +1 -1
  349. package/dist/src/composables/useModal/index.mjs +2 -2
  350. package/dist/src/composables/useModal/index.umd.js +2 -2
  351. package/dist/src/composables/usePopover/index.mjs +3 -3
  352. package/dist/src/composables/usePopover/index.umd.js +3 -3
  353. package/dist/src/composables/useProvideDefaults/index.mjs +1 -1
  354. package/dist/src/composables/useProvideDefaults/index.umd.js +1 -1
  355. package/dist/src/composables/useRegistry/index.mjs +1 -1
  356. package/dist/src/composables/useRegistry/index.umd.js +1 -1
  357. package/dist/src/composables/useToast/index.mjs +2 -2
  358. package/dist/src/composables/useToast/index.umd.js +2 -2
  359. package/dist/src/composables/useToggle/index.mjs +1 -1
  360. package/dist/src/composables/useToggle/index.umd.js +1 -1
  361. package/dist/src/directives/BPopover/index.mjs +2 -2
  362. package/dist/src/directives/BPopover/index.umd.js +2 -2
  363. package/dist/src/directives/BScrollspy/index.mjs +1 -1
  364. package/dist/src/directives/BScrollspy/index.umd.js +1 -1
  365. package/dist/src/directives/BToggle/index.mjs +2 -2
  366. package/dist/src/directives/BToggle/index.umd.js +2 -2
  367. package/dist/src/directives/BTooltip/index.mjs +2 -2
  368. package/dist/src/directives/BTooltip/index.umd.js +2 -2
  369. package/dist/src/plugins/createBootstrap/index.mjs +1 -1
  370. package/dist/src/plugins/createBootstrap/index.umd.js +1 -1
  371. package/dist/src/plugins/orchestrator/index.mjs +1 -1
  372. package/dist/src/plugins/orchestrator/index.umd.js +1 -1
  373. package/dist/src/plugins/registry/index.mjs +1 -1
  374. package/dist/src/plugins/registry/index.umd.js +1 -1
  375. package/dist/src/plugins/rtl/index.mjs +1 -1
  376. package/dist/src/plugins/rtl/index.umd.js +1 -1
  377. package/dist/{useDefaults-DsLf4iRY.js → useDefaults-C0CYry78.js} +2 -2
  378. package/dist/{useDefaults-DsLf4iRY.js.map → useDefaults-C0CYry78.js.map} +1 -1
  379. package/dist/{useDefaults-BKgBaqOV.mjs → useDefaults-DseelK6y.mjs} +2 -2
  380. package/dist/{useDefaults-BKgBaqOV.mjs.map → useDefaults-DseelK6y.mjs.map} +1 -1
  381. package/dist/{useFormInput-CA4FYoV7.mjs → useFormInput-CXl8rpD0.mjs} +5 -4
  382. package/dist/useFormInput-CXl8rpD0.mjs.map +1 -0
  383. package/dist/{useFormInput-D31FCDxr.js → useFormInput-ip9hN2AU.js} +5 -4
  384. package/dist/useFormInput-ip9hN2AU.js.map +1 -0
  385. package/dist/{useId-DHrBgM7P.js → useId-BkAY2oh6.js} +2 -2
  386. package/dist/{useId-DHrBgM7P.js.map → useId-BkAY2oh6.js.map} +1 -1
  387. package/dist/{useId-BKZFSYm8.mjs → useId-D1sqXtwx.mjs} +2 -2
  388. package/dist/{useId-BKZFSYm8.mjs.map → useId-D1sqXtwx.mjs.map} +1 -1
  389. package/dist/{useRtl-DDPRnA7g.js → useRtl-BSgvbs5F.js} +2 -2
  390. package/dist/{useRtl-DDPRnA7g.js.map → useRtl-BSgvbs5F.js.map} +1 -1
  391. package/dist/{useRtl-VR3M2Txg.mjs → useRtl-CGoXBxNo.mjs} +2 -2
  392. package/dist/{useRtl-VR3M2Txg.mjs.map → useRtl-CGoXBxNo.mjs.map} +1 -1
  393. package/dist/{useShowHide-DKdljnpv.mjs → useShowHide-CBFt1_EW.mjs} +2 -2
  394. package/dist/{useShowHide-DKdljnpv.mjs.map → useShowHide-CBFt1_EW.mjs.map} +1 -1
  395. package/dist/{useShowHide-BhdrR1wG.js → useShowHide-CHm2uUep.js} +2 -2
  396. package/dist/{useShowHide-BhdrR1wG.js.map → useShowHide-CHm2uUep.js.map} +1 -1
  397. package/dist/utils/keys.d.mts +11 -1
  398. package/dist/utils/keys.d.ts +11 -1
  399. package/dist/{utils-BbYwYPyP.mjs → utils-CWvndqPg.mjs} +3 -3
  400. package/dist/{utils-BbYwYPyP.mjs.map → utils-CWvndqPg.mjs.map} +1 -1
  401. package/dist/{utils-ePxMJ7rd.js → utils-Dk9yAtbs.js} +3 -3
  402. package/dist/{utils-ePxMJ7rd.js.map → utils-Dk9yAtbs.js.map} +1 -1
  403. package/package.json +1 -1
  404. package/dist/BFormCheckbox-g7gtIrhy.js.map +0 -1
  405. package/dist/BFormCheckbox-xN7AQw4O.mjs.map +0 -1
  406. package/dist/BFormGroup-DZTiChgT.js.map +0 -1
  407. package/dist/BFormGroup-ayltvQts.mjs.map +0 -1
  408. package/dist/BFormRadio-DHx68AdL.mjs.map +0 -1
  409. package/dist/BFormRadio-DX-gM5Rc.js.map +0 -1
  410. package/dist/BFormSelect-CtcsnTlz.js.map +0 -1
  411. package/dist/BFormSelect-eS-C3M0J.mjs.map +0 -1
  412. package/dist/BFormValidFeedback-BhkEhSa0.js.map +0 -1
  413. package/dist/BFormValidFeedback-DWkakzVO.mjs.map +0 -1
  414. package/dist/useFormInput-CA4FYoV7.mjs.map +0 -1
  415. package/dist/useFormInput-D31FCDxr.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { l as defaultsKey } from "./keys-CQKrwmvN.mjs";
2
- import { c as unbind, i as resolveActiveStatus, l as updateBind, o as resolveContent, s as resolveDirectiveProps, t as bind } from "./floatingUi-8xXp54zf.mjs";
1
+ import { l as defaultsKey } from "./keys-DU7sQgl3.mjs";
2
+ import { c as unbind, i as resolveActiveStatus, l as updateBind, o as resolveContent, s as resolveDirectiveProps, t as bind } from "./floatingUi-62aeQtAb.mjs";
3
3
  //#region src/directives/utils.ts
4
4
  /**
5
5
  * Gets the component instance UID from a directive binding
@@ -166,4 +166,4 @@ function createFloatingDirective(propertyName, componentDefaultsKey, buildProps)
166
166
  //#endregion
167
167
  export { findProvides as n, getDirectiveUid as r, createFloatingDirective as t };
168
168
 
169
- //# sourceMappingURL=utils-BbYwYPyP.mjs.map
169
+ //# sourceMappingURL=utils-CWvndqPg.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-BbYwYPyP.mjs","names":[],"sources":["../src/directives/utils.ts"],"sourcesContent":["import type {ComponentInternalInstance, Directive, DirectiveBinding, Ref, VNode} from 'vue'\nimport type {BPopoverProps} from '../types/ComponentProps'\nimport {\n bind,\n type ElementWithPopper,\n resolveActiveStatus,\n resolveContent,\n resolveDirectiveProps,\n unbind,\n updateBind,\n} from '../utils/floatingUi'\nimport {defaultsKey} from '../utils/keys'\n\ninterface _ComponentInternalInstance extends ComponentInternalInstance {\n provides?: Record<string, unknown>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setupState?: any\n}\n\ninterface _VNode extends VNode {\n ctx?: _ComponentInternalInstance | null\n ssContent?: VNode | null\n}\n\n/**\n * Represents per-instance state for directives using UID namespacing\n */\nexport interface DirectiveInstanceState {\n binding: string // JSON.stringify cache for change detection\n destroying: boolean // Flag to prevent race conditions during cleanup\n}\n\n/**\n * Gets the component instance UID from a directive binding\n * @throws Error if binding.instance is not available\n */\nexport function getDirectiveUid(binding: DirectiveBinding): number {\n if (!binding.instance) {\n throw new Error('[Bootstrap-Vue-Next] Directive binding.instance is not available')\n }\n return binding.instance.$.uid\n}\n\n/**\n * Initializes UID-namespaced storage on an element for a directive\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n * @param binding - The directive binding value to cache\n * @returns The initialized instance state\n */\nexport function initDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number,\n binding: DirectiveBinding\n): DirectiveInstanceState {\n // Initialize UID namespace for this directive\n const elWithProps = el as Record<string, unknown>\n elWithProps[propertyName] = elWithProps[propertyName] ?? Object.create(null)\n\n // Store per-instance state with JSON cache for change detection\n const state: DirectiveInstanceState = {\n binding: JSON.stringify([binding.modifiers, binding.value]),\n destroying: false,\n }\n\n ;(elWithProps[propertyName] as Record<string, unknown>)[uid] = state\n return state\n}\n\n/**\n * Gets the instance state for a directive, if it exists\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n * @returns The instance state or undefined if not found\n */\nexport function getDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number\n): DirectiveInstanceState | undefined {\n const elWithProps = el as Record<string, unknown>\n return (elWithProps[propertyName] as Record<string, unknown> | undefined)?.[uid] as\n | DirectiveInstanceState\n | undefined\n}\n\n/**\n * Checks if the directive binding has changed for this instance\n * @param instance - The directive instance state\n * @param binding - The current directive binding\n * @returns true if the binding has changed, false otherwise\n */\nexport function hasBindingChanged(\n instance: DirectiveInstanceState,\n binding: DirectiveBinding\n): boolean {\n const newBinding = JSON.stringify([binding.modifiers, binding.value])\n return instance.binding !== newBinding\n}\n\n/**\n * Updates the cached binding value for a directive instance\n * @param instance - The directive instance state\n * @param binding - The new directive binding\n */\nexport function updateBindingCache(\n instance: DirectiveInstanceState,\n binding: DirectiveBinding\n): void {\n instance.binding = JSON.stringify([binding.modifiers, binding.value])\n}\n\n/**\n * Cleans up a directive instance\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n */\nexport function cleanupDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number\n): void {\n const elWithProps = el as Record<string, unknown>\n const instance = (elWithProps[propertyName] as Record<string, unknown> | undefined)?.[uid] as\n | DirectiveInstanceState\n | undefined\n if (instance) {\n instance.destroying = true\n delete (elWithProps[propertyName] as Record<string, unknown>)[uid]\n }\n}\n\n// taken from vuetify https://github.com/vuetifyjs/vuetify/blob/master/packages/vuetify/src/composables/directiveComponent.ts\n\nexport function findProvides(\n binding: DirectiveBinding,\n vnode: _VNode,\n suppressParentNotFoundError = false\n): Record<string, unknown> {\n const provides =\n (vnode.ctx === binding.instance!.$\n ? findComponentParent(vnode, binding.instance!.$, suppressParentNotFoundError)?.provides\n : vnode.ctx?.provides) ?? binding.instance!.$.provides\n\n return provides\n}\n\nexport function findComponentParent(\n vnode: VNode,\n root: ComponentInternalInstance,\n suppressNotFoundError = false\n): _ComponentInternalInstance | null {\n // Walk the tree from root until we find the child vnode\n const stack = new Set<VNode>()\n const walk = (children: _VNode[]): boolean => {\n for (const child of children) {\n if (!child) continue\n\n if (child === vnode || (child.el && vnode.el && child.el === vnode.el)) {\n return true\n }\n\n stack.add(child)\n let result\n if (child.suspense) {\n result = walk([child.ssContent!])\n } else if (Array.isArray(child.children)) {\n result = walk(child.children as VNode[])\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree])\n }\n if (result) {\n return result\n }\n stack.delete(child)\n }\n\n return false\n }\n if (!walk([root.subTree])) {\n if (!suppressNotFoundError) {\n console.error('Could not find original vnode, will not inherit provides')\n }\n return root\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse()\n for (const child of result) {\n if (child.component) {\n return child.component\n }\n }\n return root\n}\n\n/**\n * Creates a floating UI directive (tooltip or popover) with UID-namespaced state management\n * @param propertyName - The property name for storing state (e.g., '$__tooltip', '$__popover')\n * @param componentDefaultsKey - The key for accessing component defaults (e.g., 'BTooltip', 'BPopover')\n * @param buildProps - Optional function to customize the props passed to bind()\n * @returns A Vue directive object\n */\nexport function createFloatingDirective(\n propertyName: string,\n componentDefaultsKey: string,\n buildProps?: (\n text: {title?: string; body?: string},\n defaults: unknown,\n binding: Readonly<DirectiveBinding>,\n el: Readonly<HTMLElement>\n ) => BPopoverProps\n): Directive<ElementWithPopper> {\n return {\n mounted(el, binding, vnode) {\n const uid = getDirectiveUid(binding)\n const defaultsMap = (findProvides(binding, vnode) as Record<symbol, Ref>)[defaultsKey]\n ?.value as Record<string, unknown> | undefined\n const isActive = resolveActiveStatus(binding.value)\n if (!isActive) return\n\n const text = resolveContent(binding.value, el)\n\n if (!text.body && !text.title) return\n\n // Initialize per-instance state with UID namespacing\n initDirectiveInstance(el, propertyName, uid, binding)\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n bind(el, binding, props)\n },\n\n updated(el, binding, vnode) {\n const uid = getDirectiveUid(binding)\n let instance = getDirectiveInstance(el, propertyName, uid)\n\n const defaultsMap = (findProvides(binding, vnode) as Record<symbol, Ref>)[defaultsKey]\n ?.value as Record<string, unknown> | undefined\n\n const isActive = resolveActiveStatus(binding.value)\n\n // If inactive, clean up existing instance if present\n if (!isActive) {\n if (instance && el.$__element) {\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n }\n return\n }\n\n const text = resolveContent(binding.value, el)\n\n if (!text.body && !text.title) {\n // Clean up if no content\n if (instance && el.$__element) {\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n }\n return\n }\n\n // If instance doesn't exist, this is a transition from inactive/no-content to active\n // Initialize the instance now (similar to mounted)\n if (!instance) {\n instance = initDirectiveInstance(el, propertyName, uid, binding)\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n bind(el, binding, props)\n return\n }\n\n // Check if binding changed for THIS instance\n if (!hasBindingChanged(instance, binding)) return\n\n // Prevent race conditions during update\n if (instance.destroying) return\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n // Update props in-place so the tooltip stays visible if it was open\n updateBind(el, binding, props)\n\n // Update THIS instance's cache\n updateBindingCache(instance, binding)\n },\n\n beforeUnmount(el, binding) {\n const uid = getDirectiveUid(binding)\n const instance = getDirectiveInstance(el, propertyName, uid)\n\n if (!instance) return\n\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n },\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils-CWvndqPg.mjs","names":[],"sources":["../src/directives/utils.ts"],"sourcesContent":["import type {ComponentInternalInstance, Directive, DirectiveBinding, Ref, VNode} from 'vue'\nimport type {BPopoverProps} from '../types/ComponentProps'\nimport {\n bind,\n type ElementWithPopper,\n resolveActiveStatus,\n resolveContent,\n resolveDirectiveProps,\n unbind,\n updateBind,\n} from '../utils/floatingUi'\nimport {defaultsKey} from '../utils/keys'\n\ninterface _ComponentInternalInstance extends ComponentInternalInstance {\n provides?: Record<string, unknown>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setupState?: any\n}\n\ninterface _VNode extends VNode {\n ctx?: _ComponentInternalInstance | null\n ssContent?: VNode | null\n}\n\n/**\n * Represents per-instance state for directives using UID namespacing\n */\nexport interface DirectiveInstanceState {\n binding: string // JSON.stringify cache for change detection\n destroying: boolean // Flag to prevent race conditions during cleanup\n}\n\n/**\n * Gets the component instance UID from a directive binding\n * @throws Error if binding.instance is not available\n */\nexport function getDirectiveUid(binding: DirectiveBinding): number {\n if (!binding.instance) {\n throw new Error('[Bootstrap-Vue-Next] Directive binding.instance is not available')\n }\n return binding.instance.$.uid\n}\n\n/**\n * Initializes UID-namespaced storage on an element for a directive\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n * @param binding - The directive binding value to cache\n * @returns The initialized instance state\n */\nexport function initDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number,\n binding: DirectiveBinding\n): DirectiveInstanceState {\n // Initialize UID namespace for this directive\n const elWithProps = el as Record<string, unknown>\n elWithProps[propertyName] = elWithProps[propertyName] ?? Object.create(null)\n\n // Store per-instance state with JSON cache for change detection\n const state: DirectiveInstanceState = {\n binding: JSON.stringify([binding.modifiers, binding.value]),\n destroying: false,\n }\n\n ;(elWithProps[propertyName] as Record<string, unknown>)[uid] = state\n return state\n}\n\n/**\n * Gets the instance state for a directive, if it exists\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n * @returns The instance state or undefined if not found\n */\nexport function getDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number\n): DirectiveInstanceState | undefined {\n const elWithProps = el as Record<string, unknown>\n return (elWithProps[propertyName] as Record<string, unknown> | undefined)?.[uid] as\n | DirectiveInstanceState\n | undefined\n}\n\n/**\n * Checks if the directive binding has changed for this instance\n * @param instance - The directive instance state\n * @param binding - The current directive binding\n * @returns true if the binding has changed, false otherwise\n */\nexport function hasBindingChanged(\n instance: DirectiveInstanceState,\n binding: DirectiveBinding\n): boolean {\n const newBinding = JSON.stringify([binding.modifiers, binding.value])\n return instance.binding !== newBinding\n}\n\n/**\n * Updates the cached binding value for a directive instance\n * @param instance - The directive instance state\n * @param binding - The new directive binding\n */\nexport function updateBindingCache(\n instance: DirectiveInstanceState,\n binding: DirectiveBinding\n): void {\n instance.binding = JSON.stringify([binding.modifiers, binding.value])\n}\n\n/**\n * Cleans up a directive instance\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n */\nexport function cleanupDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number\n): void {\n const elWithProps = el as Record<string, unknown>\n const instance = (elWithProps[propertyName] as Record<string, unknown> | undefined)?.[uid] as\n | DirectiveInstanceState\n | undefined\n if (instance) {\n instance.destroying = true\n delete (elWithProps[propertyName] as Record<string, unknown>)[uid]\n }\n}\n\n// taken from vuetify https://github.com/vuetifyjs/vuetify/blob/master/packages/vuetify/src/composables/directiveComponent.ts\n\nexport function findProvides(\n binding: DirectiveBinding,\n vnode: _VNode,\n suppressParentNotFoundError = false\n): Record<string, unknown> {\n const provides =\n (vnode.ctx === binding.instance!.$\n ? findComponentParent(vnode, binding.instance!.$, suppressParentNotFoundError)?.provides\n : vnode.ctx?.provides) ?? binding.instance!.$.provides\n\n return provides\n}\n\nexport function findComponentParent(\n vnode: VNode,\n root: ComponentInternalInstance,\n suppressNotFoundError = false\n): _ComponentInternalInstance | null {\n // Walk the tree from root until we find the child vnode\n const stack = new Set<VNode>()\n const walk = (children: _VNode[]): boolean => {\n for (const child of children) {\n if (!child) continue\n\n if (child === vnode || (child.el && vnode.el && child.el === vnode.el)) {\n return true\n }\n\n stack.add(child)\n let result\n if (child.suspense) {\n result = walk([child.ssContent!])\n } else if (Array.isArray(child.children)) {\n result = walk(child.children as VNode[])\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree])\n }\n if (result) {\n return result\n }\n stack.delete(child)\n }\n\n return false\n }\n if (!walk([root.subTree])) {\n if (!suppressNotFoundError) {\n console.error('Could not find original vnode, will not inherit provides')\n }\n return root\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse()\n for (const child of result) {\n if (child.component) {\n return child.component\n }\n }\n return root\n}\n\n/**\n * Creates a floating UI directive (tooltip or popover) with UID-namespaced state management\n * @param propertyName - The property name for storing state (e.g., '$__tooltip', '$__popover')\n * @param componentDefaultsKey - The key for accessing component defaults (e.g., 'BTooltip', 'BPopover')\n * @param buildProps - Optional function to customize the props passed to bind()\n * @returns A Vue directive object\n */\nexport function createFloatingDirective(\n propertyName: string,\n componentDefaultsKey: string,\n buildProps?: (\n text: {title?: string; body?: string},\n defaults: unknown,\n binding: Readonly<DirectiveBinding>,\n el: Readonly<HTMLElement>\n ) => BPopoverProps\n): Directive<ElementWithPopper> {\n return {\n mounted(el, binding, vnode) {\n const uid = getDirectiveUid(binding)\n const defaultsMap = (findProvides(binding, vnode) as Record<symbol, Ref>)[defaultsKey]\n ?.value as Record<string, unknown> | undefined\n const isActive = resolveActiveStatus(binding.value)\n if (!isActive) return\n\n const text = resolveContent(binding.value, el)\n\n if (!text.body && !text.title) return\n\n // Initialize per-instance state with UID namespacing\n initDirectiveInstance(el, propertyName, uid, binding)\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n bind(el, binding, props)\n },\n\n updated(el, binding, vnode) {\n const uid = getDirectiveUid(binding)\n let instance = getDirectiveInstance(el, propertyName, uid)\n\n const defaultsMap = (findProvides(binding, vnode) as Record<symbol, Ref>)[defaultsKey]\n ?.value as Record<string, unknown> | undefined\n\n const isActive = resolveActiveStatus(binding.value)\n\n // If inactive, clean up existing instance if present\n if (!isActive) {\n if (instance && el.$__element) {\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n }\n return\n }\n\n const text = resolveContent(binding.value, el)\n\n if (!text.body && !text.title) {\n // Clean up if no content\n if (instance && el.$__element) {\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n }\n return\n }\n\n // If instance doesn't exist, this is a transition from inactive/no-content to active\n // Initialize the instance now (similar to mounted)\n if (!instance) {\n instance = initDirectiveInstance(el, propertyName, uid, binding)\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n bind(el, binding, props)\n return\n }\n\n // Check if binding changed for THIS instance\n if (!hasBindingChanged(instance, binding)) return\n\n // Prevent race conditions during update\n if (instance.destroying) return\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n // Update props in-place so the tooltip stays visible if it was open\n updateBind(el, binding, props)\n\n // Update THIS instance's cache\n updateBindingCache(instance, binding)\n },\n\n beforeUnmount(el, binding) {\n const uid = getDirectiveUid(binding)\n const instance = getDirectiveInstance(el, propertyName, uid)\n\n if (!instance) return\n\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n },\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- const require_keys = require("./keys-durSVUrO.js");
2
- const require_floatingUi = require("./floatingUi-9SWu8BgZ.js");
1
+ const require_keys = require("./keys-BMye8nSf.js");
2
+ const require_floatingUi = require("./floatingUi-DQ5bHmy3.js");
3
3
  //#region src/directives/utils.ts
4
4
  /**
5
5
  * Gets the component instance UID from a directive binding
@@ -183,4 +183,4 @@ Object.defineProperty(exports, "getDirectiveUid", {
183
183
  }
184
184
  });
185
185
 
186
- //# sourceMappingURL=utils-ePxMJ7rd.js.map
186
+ //# sourceMappingURL=utils-Dk9yAtbs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-ePxMJ7rd.js","names":[],"sources":["../src/directives/utils.ts"],"sourcesContent":["import type {ComponentInternalInstance, Directive, DirectiveBinding, Ref, VNode} from 'vue'\nimport type {BPopoverProps} from '../types/ComponentProps'\nimport {\n bind,\n type ElementWithPopper,\n resolveActiveStatus,\n resolveContent,\n resolveDirectiveProps,\n unbind,\n updateBind,\n} from '../utils/floatingUi'\nimport {defaultsKey} from '../utils/keys'\n\ninterface _ComponentInternalInstance extends ComponentInternalInstance {\n provides?: Record<string, unknown>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setupState?: any\n}\n\ninterface _VNode extends VNode {\n ctx?: _ComponentInternalInstance | null\n ssContent?: VNode | null\n}\n\n/**\n * Represents per-instance state for directives using UID namespacing\n */\nexport interface DirectiveInstanceState {\n binding: string // JSON.stringify cache for change detection\n destroying: boolean // Flag to prevent race conditions during cleanup\n}\n\n/**\n * Gets the component instance UID from a directive binding\n * @throws Error if binding.instance is not available\n */\nexport function getDirectiveUid(binding: DirectiveBinding): number {\n if (!binding.instance) {\n throw new Error('[Bootstrap-Vue-Next] Directive binding.instance is not available')\n }\n return binding.instance.$.uid\n}\n\n/**\n * Initializes UID-namespaced storage on an element for a directive\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n * @param binding - The directive binding value to cache\n * @returns The initialized instance state\n */\nexport function initDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number,\n binding: DirectiveBinding\n): DirectiveInstanceState {\n // Initialize UID namespace for this directive\n const elWithProps = el as Record<string, unknown>\n elWithProps[propertyName] = elWithProps[propertyName] ?? Object.create(null)\n\n // Store per-instance state with JSON cache for change detection\n const state: DirectiveInstanceState = {\n binding: JSON.stringify([binding.modifiers, binding.value]),\n destroying: false,\n }\n\n ;(elWithProps[propertyName] as Record<string, unknown>)[uid] = state\n return state\n}\n\n/**\n * Gets the instance state for a directive, if it exists\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n * @returns The instance state or undefined if not found\n */\nexport function getDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number\n): DirectiveInstanceState | undefined {\n const elWithProps = el as Record<string, unknown>\n return (elWithProps[propertyName] as Record<string, unknown> | undefined)?.[uid] as\n | DirectiveInstanceState\n | undefined\n}\n\n/**\n * Checks if the directive binding has changed for this instance\n * @param instance - The directive instance state\n * @param binding - The current directive binding\n * @returns true if the binding has changed, false otherwise\n */\nexport function hasBindingChanged(\n instance: DirectiveInstanceState,\n binding: DirectiveBinding\n): boolean {\n const newBinding = JSON.stringify([binding.modifiers, binding.value])\n return instance.binding !== newBinding\n}\n\n/**\n * Updates the cached binding value for a directive instance\n * @param instance - The directive instance state\n * @param binding - The new directive binding\n */\nexport function updateBindingCache(\n instance: DirectiveInstanceState,\n binding: DirectiveBinding\n): void {\n instance.binding = JSON.stringify([binding.modifiers, binding.value])\n}\n\n/**\n * Cleans up a directive instance\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n */\nexport function cleanupDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number\n): void {\n const elWithProps = el as Record<string, unknown>\n const instance = (elWithProps[propertyName] as Record<string, unknown> | undefined)?.[uid] as\n | DirectiveInstanceState\n | undefined\n if (instance) {\n instance.destroying = true\n delete (elWithProps[propertyName] as Record<string, unknown>)[uid]\n }\n}\n\n// taken from vuetify https://github.com/vuetifyjs/vuetify/blob/master/packages/vuetify/src/composables/directiveComponent.ts\n\nexport function findProvides(\n binding: DirectiveBinding,\n vnode: _VNode,\n suppressParentNotFoundError = false\n): Record<string, unknown> {\n const provides =\n (vnode.ctx === binding.instance!.$\n ? findComponentParent(vnode, binding.instance!.$, suppressParentNotFoundError)?.provides\n : vnode.ctx?.provides) ?? binding.instance!.$.provides\n\n return provides\n}\n\nexport function findComponentParent(\n vnode: VNode,\n root: ComponentInternalInstance,\n suppressNotFoundError = false\n): _ComponentInternalInstance | null {\n // Walk the tree from root until we find the child vnode\n const stack = new Set<VNode>()\n const walk = (children: _VNode[]): boolean => {\n for (const child of children) {\n if (!child) continue\n\n if (child === vnode || (child.el && vnode.el && child.el === vnode.el)) {\n return true\n }\n\n stack.add(child)\n let result\n if (child.suspense) {\n result = walk([child.ssContent!])\n } else if (Array.isArray(child.children)) {\n result = walk(child.children as VNode[])\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree])\n }\n if (result) {\n return result\n }\n stack.delete(child)\n }\n\n return false\n }\n if (!walk([root.subTree])) {\n if (!suppressNotFoundError) {\n console.error('Could not find original vnode, will not inherit provides')\n }\n return root\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse()\n for (const child of result) {\n if (child.component) {\n return child.component\n }\n }\n return root\n}\n\n/**\n * Creates a floating UI directive (tooltip or popover) with UID-namespaced state management\n * @param propertyName - The property name for storing state (e.g., '$__tooltip', '$__popover')\n * @param componentDefaultsKey - The key for accessing component defaults (e.g., 'BTooltip', 'BPopover')\n * @param buildProps - Optional function to customize the props passed to bind()\n * @returns A Vue directive object\n */\nexport function createFloatingDirective(\n propertyName: string,\n componentDefaultsKey: string,\n buildProps?: (\n text: {title?: string; body?: string},\n defaults: unknown,\n binding: Readonly<DirectiveBinding>,\n el: Readonly<HTMLElement>\n ) => BPopoverProps\n): Directive<ElementWithPopper> {\n return {\n mounted(el, binding, vnode) {\n const uid = getDirectiveUid(binding)\n const defaultsMap = (findProvides(binding, vnode) as Record<symbol, Ref>)[defaultsKey]\n ?.value as Record<string, unknown> | undefined\n const isActive = resolveActiveStatus(binding.value)\n if (!isActive) return\n\n const text = resolveContent(binding.value, el)\n\n if (!text.body && !text.title) return\n\n // Initialize per-instance state with UID namespacing\n initDirectiveInstance(el, propertyName, uid, binding)\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n bind(el, binding, props)\n },\n\n updated(el, binding, vnode) {\n const uid = getDirectiveUid(binding)\n let instance = getDirectiveInstance(el, propertyName, uid)\n\n const defaultsMap = (findProvides(binding, vnode) as Record<symbol, Ref>)[defaultsKey]\n ?.value as Record<string, unknown> | undefined\n\n const isActive = resolveActiveStatus(binding.value)\n\n // If inactive, clean up existing instance if present\n if (!isActive) {\n if (instance && el.$__element) {\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n }\n return\n }\n\n const text = resolveContent(binding.value, el)\n\n if (!text.body && !text.title) {\n // Clean up if no content\n if (instance && el.$__element) {\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n }\n return\n }\n\n // If instance doesn't exist, this is a transition from inactive/no-content to active\n // Initialize the instance now (similar to mounted)\n if (!instance) {\n instance = initDirectiveInstance(el, propertyName, uid, binding)\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n bind(el, binding, props)\n return\n }\n\n // Check if binding changed for THIS instance\n if (!hasBindingChanged(instance, binding)) return\n\n // Prevent race conditions during update\n if (instance.destroying) return\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n // Update props in-place so the tooltip stays visible if it was open\n updateBind(el, binding, props)\n\n // Update THIS instance's cache\n updateBindingCache(instance, binding)\n },\n\n beforeUnmount(el, binding) {\n const uid = getDirectiveUid(binding)\n const instance = getDirectiveInstance(el, propertyName, uid)\n\n if (!instance) return\n\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n },\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils-Dk9yAtbs.js","names":[],"sources":["../src/directives/utils.ts"],"sourcesContent":["import type {ComponentInternalInstance, Directive, DirectiveBinding, Ref, VNode} from 'vue'\nimport type {BPopoverProps} from '../types/ComponentProps'\nimport {\n bind,\n type ElementWithPopper,\n resolveActiveStatus,\n resolveContent,\n resolveDirectiveProps,\n unbind,\n updateBind,\n} from '../utils/floatingUi'\nimport {defaultsKey} from '../utils/keys'\n\ninterface _ComponentInternalInstance extends ComponentInternalInstance {\n provides?: Record<string, unknown>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setupState?: any\n}\n\ninterface _VNode extends VNode {\n ctx?: _ComponentInternalInstance | null\n ssContent?: VNode | null\n}\n\n/**\n * Represents per-instance state for directives using UID namespacing\n */\nexport interface DirectiveInstanceState {\n binding: string // JSON.stringify cache for change detection\n destroying: boolean // Flag to prevent race conditions during cleanup\n}\n\n/**\n * Gets the component instance UID from a directive binding\n * @throws Error if binding.instance is not available\n */\nexport function getDirectiveUid(binding: DirectiveBinding): number {\n if (!binding.instance) {\n throw new Error('[Bootstrap-Vue-Next] Directive binding.instance is not available')\n }\n return binding.instance.$.uid\n}\n\n/**\n * Initializes UID-namespaced storage on an element for a directive\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n * @param binding - The directive binding value to cache\n * @returns The initialized instance state\n */\nexport function initDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number,\n binding: DirectiveBinding\n): DirectiveInstanceState {\n // Initialize UID namespace for this directive\n const elWithProps = el as Record<string, unknown>\n elWithProps[propertyName] = elWithProps[propertyName] ?? Object.create(null)\n\n // Store per-instance state with JSON cache for change detection\n const state: DirectiveInstanceState = {\n binding: JSON.stringify([binding.modifiers, binding.value]),\n destroying: false,\n }\n\n ;(elWithProps[propertyName] as Record<string, unknown>)[uid] = state\n return state\n}\n\n/**\n * Gets the instance state for a directive, if it exists\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n * @returns The instance state or undefined if not found\n */\nexport function getDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number\n): DirectiveInstanceState | undefined {\n const elWithProps = el as Record<string, unknown>\n return (elWithProps[propertyName] as Record<string, unknown> | undefined)?.[uid] as\n | DirectiveInstanceState\n | undefined\n}\n\n/**\n * Checks if the directive binding has changed for this instance\n * @param instance - The directive instance state\n * @param binding - The current directive binding\n * @returns true if the binding has changed, false otherwise\n */\nexport function hasBindingChanged(\n instance: DirectiveInstanceState,\n binding: DirectiveBinding\n): boolean {\n const newBinding = JSON.stringify([binding.modifiers, binding.value])\n return instance.binding !== newBinding\n}\n\n/**\n * Updates the cached binding value for a directive instance\n * @param instance - The directive instance state\n * @param binding - The new directive binding\n */\nexport function updateBindingCache(\n instance: DirectiveInstanceState,\n binding: DirectiveBinding\n): void {\n instance.binding = JSON.stringify([binding.modifiers, binding.value])\n}\n\n/**\n * Cleans up a directive instance\n * @param el - The HTML element\n * @param propertyName - The property name (e.g., '$__tooltip', '$__popover')\n * @param uid - The component instance UID\n */\nexport function cleanupDirectiveInstance(\n el: HTMLElement & Record<string, unknown>,\n propertyName: string,\n uid: number\n): void {\n const elWithProps = el as Record<string, unknown>\n const instance = (elWithProps[propertyName] as Record<string, unknown> | undefined)?.[uid] as\n | DirectiveInstanceState\n | undefined\n if (instance) {\n instance.destroying = true\n delete (elWithProps[propertyName] as Record<string, unknown>)[uid]\n }\n}\n\n// taken from vuetify https://github.com/vuetifyjs/vuetify/blob/master/packages/vuetify/src/composables/directiveComponent.ts\n\nexport function findProvides(\n binding: DirectiveBinding,\n vnode: _VNode,\n suppressParentNotFoundError = false\n): Record<string, unknown> {\n const provides =\n (vnode.ctx === binding.instance!.$\n ? findComponentParent(vnode, binding.instance!.$, suppressParentNotFoundError)?.provides\n : vnode.ctx?.provides) ?? binding.instance!.$.provides\n\n return provides\n}\n\nexport function findComponentParent(\n vnode: VNode,\n root: ComponentInternalInstance,\n suppressNotFoundError = false\n): _ComponentInternalInstance | null {\n // Walk the tree from root until we find the child vnode\n const stack = new Set<VNode>()\n const walk = (children: _VNode[]): boolean => {\n for (const child of children) {\n if (!child) continue\n\n if (child === vnode || (child.el && vnode.el && child.el === vnode.el)) {\n return true\n }\n\n stack.add(child)\n let result\n if (child.suspense) {\n result = walk([child.ssContent!])\n } else if (Array.isArray(child.children)) {\n result = walk(child.children as VNode[])\n } else if (child.component?.vnode) {\n result = walk([child.component?.subTree])\n }\n if (result) {\n return result\n }\n stack.delete(child)\n }\n\n return false\n }\n if (!walk([root.subTree])) {\n if (!suppressNotFoundError) {\n console.error('Could not find original vnode, will not inherit provides')\n }\n return root\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse()\n for (const child of result) {\n if (child.component) {\n return child.component\n }\n }\n return root\n}\n\n/**\n * Creates a floating UI directive (tooltip or popover) with UID-namespaced state management\n * @param propertyName - The property name for storing state (e.g., '$__tooltip', '$__popover')\n * @param componentDefaultsKey - The key for accessing component defaults (e.g., 'BTooltip', 'BPopover')\n * @param buildProps - Optional function to customize the props passed to bind()\n * @returns A Vue directive object\n */\nexport function createFloatingDirective(\n propertyName: string,\n componentDefaultsKey: string,\n buildProps?: (\n text: {title?: string; body?: string},\n defaults: unknown,\n binding: Readonly<DirectiveBinding>,\n el: Readonly<HTMLElement>\n ) => BPopoverProps\n): Directive<ElementWithPopper> {\n return {\n mounted(el, binding, vnode) {\n const uid = getDirectiveUid(binding)\n const defaultsMap = (findProvides(binding, vnode) as Record<symbol, Ref>)[defaultsKey]\n ?.value as Record<string, unknown> | undefined\n const isActive = resolveActiveStatus(binding.value)\n if (!isActive) return\n\n const text = resolveContent(binding.value, el)\n\n if (!text.body && !text.title) return\n\n // Initialize per-instance state with UID namespacing\n initDirectiveInstance(el, propertyName, uid, binding)\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n bind(el, binding, props)\n },\n\n updated(el, binding, vnode) {\n const uid = getDirectiveUid(binding)\n let instance = getDirectiveInstance(el, propertyName, uid)\n\n const defaultsMap = (findProvides(binding, vnode) as Record<symbol, Ref>)[defaultsKey]\n ?.value as Record<string, unknown> | undefined\n\n const isActive = resolveActiveStatus(binding.value)\n\n // If inactive, clean up existing instance if present\n if (!isActive) {\n if (instance && el.$__element) {\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n }\n return\n }\n\n const text = resolveContent(binding.value, el)\n\n if (!text.body && !text.title) {\n // Clean up if no content\n if (instance && el.$__element) {\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n }\n return\n }\n\n // If instance doesn't exist, this is a transition from inactive/no-content to active\n // Initialize the instance now (similar to mounted)\n if (!instance) {\n instance = initDirectiveInstance(el, propertyName, uid, binding)\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n bind(el, binding, props)\n return\n }\n\n // Check if binding changed for THIS instance\n if (!hasBindingChanged(instance, binding)) return\n\n // Prevent race conditions during update\n if (instance.destroying) return\n\n const props = buildProps\n ? buildProps(text, defaultsMap?.[componentDefaultsKey], binding, el)\n : {\n ...(defaultsMap?.[componentDefaultsKey] || undefined),\n ...resolveDirectiveProps(binding, el),\n ...text,\n }\n\n // Update props in-place so the tooltip stays visible if it was open\n updateBind(el, binding, props)\n\n // Update THIS instance's cache\n updateBindingCache(instance, binding)\n },\n\n beforeUnmount(el, binding) {\n const uid = getDirectiveUid(binding)\n const instance = getDirectiveInstance(el, propertyName, uid)\n\n if (!instance) return\n\n unbind(el)\n cleanupDirectiveInstance(el, propertyName, uid)\n },\n }\n}\n"],"mappings":";;;;;;;AAoCA,SAAgB,gBAAgB,SAAmC;AACjE,KAAI,CAAC,QAAQ,SACX,OAAM,IAAI,MAAM,mEAAmE;AAErF,QAAO,QAAQ,SAAS,EAAE;;;;;;;;;;AAW5B,SAAgB,sBACd,IACA,cACA,KACA,SACwB;CAExB,MAAM,cAAc;AACpB,aAAY,gBAAgB,YAAY,iBAAiB,OAAO,OAAO,KAAK;CAG5E,MAAM,QAAgC;EACpC,SAAS,KAAK,UAAU,CAAC,QAAQ,WAAW,QAAQ,MAAM,CAAC;EAC3D,YAAY;EACb;AAEC,aAAY,cAA0C,OAAO;AAC/D,QAAO;;;;;;;;;AAUT,SAAgB,qBACd,IACA,cACA,KACoC;AAEpC,QADoB,GACA,gBAAwD;;;;;;;;AAW9E,SAAgB,kBACd,UACA,SACS;CACT,MAAM,aAAa,KAAK,UAAU,CAAC,QAAQ,WAAW,QAAQ,MAAM,CAAC;AACrE,QAAO,SAAS,YAAY;;;;;;;AAQ9B,SAAgB,mBACd,UACA,SACM;AACN,UAAS,UAAU,KAAK,UAAU,CAAC,QAAQ,WAAW,QAAQ,MAAM,CAAC;;;;;;;;AASvE,SAAgB,yBACd,IACA,cACA,KACM;CACN,MAAM,cAAc;CACpB,MAAM,WAAY,YAAY,gBAAwD;AAGtF,KAAI,UAAU;AACZ,WAAS,aAAa;AACtB,SAAQ,YAAY,cAA0C;;;AAMlE,SAAgB,aACd,SACA,OACA,8BAA8B,OACL;AAMzB,SAJG,MAAM,QAAQ,QAAQ,SAAU,IAC7B,oBAAoB,OAAO,QAAQ,SAAU,GAAG,4BAA4B,EAAE,WAC9E,MAAM,KAAK,aAAa,QAAQ,SAAU,EAAE;;AAKpD,SAAgB,oBACd,OACA,MACA,wBAAwB,OACW;CAEnC,MAAM,wBAAQ,IAAI,KAAY;CAC9B,MAAM,QAAQ,aAAgC;AAC5C,OAAK,MAAM,SAAS,UAAU;AAC5B,OAAI,CAAC,MAAO;AAEZ,OAAI,UAAU,SAAU,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,GACjE,QAAO;AAGT,SAAM,IAAI,MAAM;GAChB,IAAI;AACJ,OAAI,MAAM,SACR,UAAS,KAAK,CAAC,MAAM,UAAW,CAAC;YACxB,MAAM,QAAQ,MAAM,SAAS,CACtC,UAAS,KAAK,MAAM,SAAoB;YAC/B,MAAM,WAAW,MAC1B,UAAS,KAAK,CAAC,MAAM,WAAW,QAAQ,CAAC;AAE3C,OAAI,OACF,QAAO;AAET,SAAM,OAAO,MAAM;;AAGrB,SAAO;;AAET,KAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,EAAE;AACzB,MAAI,CAAC,sBACH,SAAQ,MAAM,2DAA2D;AAE3E,SAAO;;CAIT,MAAM,SAAS,MAAM,KAAK,MAAM,CAAC,SAAS;AAC1C,MAAK,MAAM,SAAS,OAClB,KAAI,MAAM,UACR,QAAO,MAAM;AAGjB,QAAO;;;;;;;;;AAUT,SAAgB,wBACd,cACA,sBACA,YAM8B;AAC9B,QAAO;EACL,QAAQ,IAAI,SAAS,OAAO;GAC1B,MAAM,MAAM,gBAAgB,QAAQ;GACpC,MAAM,cAAe,aAAa,SAAS,MAAM,CAAyB,aAAA,cACtE;AAEJ,OAAI,CADa,mBAAA,oBAAoB,QAAQ,MAAM,CACpC;GAEf,MAAM,OAAO,mBAAA,eAAe,QAAQ,OAAO,GAAG;AAE9C,OAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,MAAO;AAG/B,yBAAsB,IAAI,cAAc,KAAK,QAAQ;AAUrD,sBAAA,KAAK,IAAI,SARK,aACV,WAAW,MAAM,cAAc,uBAAuB,SAAS,GAAG,GAClE;IACE,GAAI,cAAc,yBAAyB,KAAA;IAC3C,GAAG,mBAAA,sBAAsB,SAAS,GAAG;IACrC,GAAG;IACJ,CAEmB;;EAG1B,QAAQ,IAAI,SAAS,OAAO;GAC1B,MAAM,MAAM,gBAAgB,QAAQ;GACpC,IAAI,WAAW,qBAAqB,IAAI,cAAc,IAAI;GAE1D,MAAM,cAAe,aAAa,SAAS,MAAM,CAAyB,aAAA,cACtE;AAKJ,OAAI,CAHa,mBAAA,oBAAoB,QAAQ,MAAM,EAGpC;AACb,QAAI,YAAY,GAAG,YAAY;AAC7B,wBAAA,OAAO,GAAG;AACV,8BAAyB,IAAI,cAAc,IAAI;;AAEjD;;GAGF,MAAM,OAAO,mBAAA,eAAe,QAAQ,OAAO,GAAG;AAE9C,OAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,OAAO;AAE7B,QAAI,YAAY,GAAG,YAAY;AAC7B,wBAAA,OAAO,GAAG;AACV,8BAAyB,IAAI,cAAc,IAAI;;AAEjD;;AAKF,OAAI,CAAC,UAAU;AACb,eAAW,sBAAsB,IAAI,cAAc,KAAK,QAAQ;AAUhE,uBAAA,KAAK,IAAI,SARK,aACV,WAAW,MAAM,cAAc,uBAAuB,SAAS,GAAG,GAClE;KACE,GAAI,cAAc,yBAAyB,KAAA;KAC3C,GAAG,mBAAA,sBAAsB,SAAS,GAAG;KACrC,GAAG;KACJ,CAEmB;AACxB;;AAIF,OAAI,CAAC,kBAAkB,UAAU,QAAQ,CAAE;AAG3C,OAAI,SAAS,WAAY;AAWzB,sBAAA,WAAW,IAAI,SATD,aACV,WAAW,MAAM,cAAc,uBAAuB,SAAS,GAAG,GAClE;IACE,GAAI,cAAc,yBAAyB,KAAA;IAC3C,GAAG,mBAAA,sBAAsB,SAAS,GAAG;IACrC,GAAG;IACJ,CAGyB;AAG9B,sBAAmB,UAAU,QAAQ;;EAGvC,cAAc,IAAI,SAAS;GACzB,MAAM,MAAM,gBAAgB,QAAQ;AAGpC,OAAI,CAFa,qBAAqB,IAAI,cAAc,IAAI,CAE7C;AAEf,sBAAA,OAAO,GAAG;AACV,4BAAyB,IAAI,cAAc,IAAI;;EAElD"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "bootstrap-vue-next",
3
3
  "displayName": "BootstrapVueNext",
4
4
  "description": "Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development",
5
- "version": "0.45.5",
5
+ "version": "0.45.6",
6
6
  "license": "MIT",
7
7
  "main": "./dist/bootstrap-vue-next.umd.js",
8
8
  "module": "./dist/bootstrap-vue-next.mjs",
@@ -1 +0,0 @@
1
- {"version":3,"file":"BFormCheckbox-g7gtIrhy.js","names":[],"sources":["../src/components/BFormCheckbox/BFormCheckbox.vue","../src/components/BFormCheckbox/BFormCheckbox.vue","../src/components/BFormCheckbox/BFormCheckboxGroupBase.vue","../src/components/BFormCheckbox/BFormCheckboxGroupBase.vue","../src/components/BFormCheckbox/BFormCheckboxGroup.vue","../src/components/BFormCheckbox/BFormCheckboxGroup.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"isButtonGroup\"\n v-bind=\"props.wrapperAttrs\"\n :class=\"computedWrapperClasses\"\n >\n <input\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedInputClasses\"\n type=\"checkbox\"\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 :aria-required=\"computedRequired || undefined\"\n :value=\"props.value\"\n :true-value=\"props.value\"\n :false-value=\"props.uncheckedValue\"\n :indeterminate=\"indeterminate || undefined\"\n v-bind=\"processedAttrs.inputAttrs\"\n />\n <label v-if=\"hasDefaultSlot || !resolvedPlain\" :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, useAttrs, useTemplateRef} from 'vue'\nimport {getClasses, getInputClasses, getLabelClasses} from '../../composables/useFormCheck'\nimport {checkboxGroupKey, formGroupKey} from '../../utils/keys'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormCheckboxProps, BFormCheckboxSlots, CheckboxValue} from '../../types'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(\n defineProps<Omit<BFormCheckboxProps, 'modelValue' | 'indeterminate'>>(),\n {\n wrapperAttrs: undefined,\n inputClass: undefined,\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 switch: undefined,\n uncheckedValue: false,\n value: true,\n }\n)\nconst props = useDefaults(_props, 'BFormCheckbox')\nconst slots = defineSlots<BFormCheckboxSlots>()\nconst attrs = useAttrs()\n\nconst modelValue = defineModel<BFormCheckboxProps['modelValue']>({\n default: undefined,\n})\nconst indeterminate = defineModel<Exclude<BFormCheckboxProps['indeterminate'], undefined>>(\n 'indeterminate',\n {\n default: false,\n }\n)\n\nconst processedAttrs = computed(() => {\n const {class: wrapperClass, ...inputAttrs} = attrs\n return {wrapperClass, inputAttrs}\n})\n\nconst computedId = useId(() => props.id, 'form-check')\n\nconst parentData = inject(checkboxGroupKey, null)\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\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 switch: 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 switch: props.switch ?? parentData?.switch.value ?? propDefaults.switch,\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)\n\nconst localValue = computed({\n get: () => (parentData ? parentData.modelValue.value : modelValue.value),\n set: (newVal) => {\n if (newVal === undefined) return\n // Indeterminate is implicitly cleared when the checked state is changed to any value\n // by the user. We reflect that here by setting our indetermiate model to false\n // which will emit the indeterminate event to the parent\n indeterminate.value = false\n if (parentData !== null && Array.isArray(newVal)) {\n // The type cast isn't perfect. Array.isArray detects CheckboxValue.unknown[],\n // but since it's parentData, it should always be CheckboxValue[]\n // It doesn't quite work when props.value is an [], but this is more of a Vue issue\n parentData.modelValue.value = newVal as CheckboxValue[]\n return\n }\n modelValue.value = newVal as CheckboxValue\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 wrapperClasses = getClasses(classesObject)\nconst computedWrapperClasses = computed(() => [\n wrapperClasses.value,\n processedAttrs.value.wrapperClass,\n])\nconst inputClasses = getInputClasses(classesObject)\nconst computedInputClasses = computed(() => [inputClasses.value, props.inputClass])\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\n :skip=\"isButtonGroup\"\n v-bind=\"props.wrapperAttrs\"\n :class=\"computedWrapperClasses\"\n >\n <input\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedInputClasses\"\n type=\"checkbox\"\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 :aria-required=\"computedRequired || undefined\"\n :value=\"props.value\"\n :true-value=\"props.value\"\n :false-value=\"props.uncheckedValue\"\n :indeterminate=\"indeterminate || undefined\"\n v-bind=\"processedAttrs.inputAttrs\"\n />\n <label v-if=\"hasDefaultSlot || !resolvedPlain\" :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, useAttrs, useTemplateRef} from 'vue'\nimport {getClasses, getInputClasses, getLabelClasses} from '../../composables/useFormCheck'\nimport {checkboxGroupKey, formGroupKey} from '../../utils/keys'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormCheckboxProps, BFormCheckboxSlots, CheckboxValue} from '../../types'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(\n defineProps<Omit<BFormCheckboxProps, 'modelValue' | 'indeterminate'>>(),\n {\n wrapperAttrs: undefined,\n inputClass: undefined,\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 switch: undefined,\n uncheckedValue: false,\n value: true,\n }\n)\nconst props = useDefaults(_props, 'BFormCheckbox')\nconst slots = defineSlots<BFormCheckboxSlots>()\nconst attrs = useAttrs()\n\nconst modelValue = defineModel<BFormCheckboxProps['modelValue']>({\n default: undefined,\n})\nconst indeterminate = defineModel<Exclude<BFormCheckboxProps['indeterminate'], undefined>>(\n 'indeterminate',\n {\n default: false,\n }\n)\n\nconst processedAttrs = computed(() => {\n const {class: wrapperClass, ...inputAttrs} = attrs\n return {wrapperClass, inputAttrs}\n})\n\nconst computedId = useId(() => props.id, 'form-check')\n\nconst parentData = inject(checkboxGroupKey, null)\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\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 switch: 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 switch: props.switch ?? parentData?.switch.value ?? propDefaults.switch,\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)\n\nconst localValue = computed({\n get: () => (parentData ? parentData.modelValue.value : modelValue.value),\n set: (newVal) => {\n if (newVal === undefined) return\n // Indeterminate is implicitly cleared when the checked state is changed to any value\n // by the user. We reflect that here by setting our indetermiate model to false\n // which will emit the indeterminate event to the parent\n indeterminate.value = false\n if (parentData !== null && Array.isArray(newVal)) {\n // The type cast isn't perfect. Array.isArray detects CheckboxValue.unknown[],\n // but since it's parentData, it should always be CheckboxValue[]\n // It doesn't quite work when props.value is an [], but this is more of a Vue issue\n parentData.modelValue.value = newVal as CheckboxValue[]\n return\n }\n modelValue.value = newVal as CheckboxValue\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 wrapperClasses = getClasses(classesObject)\nconst computedWrapperClasses = computed(() => [\n wrapperClasses.value,\n processedAttrs.value.wrapperClass,\n])\nconst inputClasses = getInputClasses(classesObject)\nconst computedInputClasses = computed(() => [inputClasses.value, props.inputClass])\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=\"attrs\"\n :id=\"computedId\"\n ref=\"_element\"\n role=\"group\"\n :class=\"classes\"\n class=\"bv-no-focus-ring\"\n tabindex=\"-1\"\n >\n <slot name=\"first\" />\n <BFormCheckbox v-for=\"(item, index) in normalizedOptions\" :key=\"index\" v-bind=\"item\">\n <slot name=\"option\" v-bind=\"item\">\n {{ item.text }}\n </slot>\n </BFormCheckbox>\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, toRef, useTemplateRef} from 'vue'\nimport type {BFormCheckboxGroupBaseProps, CheckboxValue} from '../../types'\nimport BFormCheckbox from './BFormCheckbox.vue'\nimport {checkboxGroupKey} from '../../utils/keys'\nimport {getGroupAttr, getGroupClasses} from '../../composables/useFormCheck'\nimport {useFocus} from '@vueuse/core'\nimport {useId} from '../../composables/useId'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<Omit<BFormCheckboxGroupBaseProps, '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 switches: false,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormCheckboxGroup')\n\nconst modelValue = defineModel<CheckboxValue[]>({\n default: () => [],\n})\n\nconst computedId = useId(() => props.id, 'checkbox')\nconst computedName = useId(() => props.name, 'checkbox')\nconst _element = useTemplateRef('_element')\n\nconst {focused} = useFocus(_element, {\n initialValue: props.autofocus,\n})\n\n// Provide context to child checkboxes\nprovide(checkboxGroupKey, {\n modelValue: modelValue as import('vue').Ref<\n readonly import('../../types/CheckboxTypes').CheckboxValue[]\n >,\n switch: toRef(() => props.switches),\n buttonVariant: toRef(() => props.buttonVariant),\n form: toRef(() => props.form),\n name: computedName,\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 buttons: toRef(() => props.buttons),\n disabled: toRef(() => props.disabled),\n})\n\n// Normalize options to always be objects with text/value fields\nconst normalizedOptions = computed<Array<{text: string; value: CheckboxValue; disabled: boolean}>>(\n () =>\n props.options.map((option) => {\n if (typeof option === 'object' && option !== null) {\n // Ensure text and disabled are defined, with group disabled taking precedence\n return {\n ...option,\n text: option.text ?? String(option.value ?? ''),\n value: option.value ?? null,\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\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 attrs = getGroupAttr(classesObject)\nconst classes = 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=\"attrs\"\n :id=\"computedId\"\n ref=\"_element\"\n role=\"group\"\n :class=\"classes\"\n class=\"bv-no-focus-ring\"\n tabindex=\"-1\"\n >\n <slot name=\"first\" />\n <BFormCheckbox v-for=\"(item, index) in normalizedOptions\" :key=\"index\" v-bind=\"item\">\n <slot name=\"option\" v-bind=\"item\">\n {{ item.text }}\n </slot>\n </BFormCheckbox>\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, toRef, useTemplateRef} from 'vue'\nimport type {BFormCheckboxGroupBaseProps, CheckboxValue} from '../../types'\nimport BFormCheckbox from './BFormCheckbox.vue'\nimport {checkboxGroupKey} from '../../utils/keys'\nimport {getGroupAttr, getGroupClasses} from '../../composables/useFormCheck'\nimport {useFocus} from '@vueuse/core'\nimport {useId} from '../../composables/useId'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<Omit<BFormCheckboxGroupBaseProps, '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 switches: false,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormCheckboxGroup')\n\nconst modelValue = defineModel<CheckboxValue[]>({\n default: () => [],\n})\n\nconst computedId = useId(() => props.id, 'checkbox')\nconst computedName = useId(() => props.name, 'checkbox')\nconst _element = useTemplateRef('_element')\n\nconst {focused} = useFocus(_element, {\n initialValue: props.autofocus,\n})\n\n// Provide context to child checkboxes\nprovide(checkboxGroupKey, {\n modelValue: modelValue as import('vue').Ref<\n readonly import('../../types/CheckboxTypes').CheckboxValue[]\n >,\n switch: toRef(() => props.switches),\n buttonVariant: toRef(() => props.buttonVariant),\n form: toRef(() => props.form),\n name: computedName,\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 buttons: toRef(() => props.buttons),\n disabled: toRef(() => props.disabled),\n})\n\n// Normalize options to always be objects with text/value fields\nconst normalizedOptions = computed<Array<{text: string; value: CheckboxValue; disabled: boolean}>>(\n () =>\n props.options.map((option) => {\n if (typeof option === 'object' && option !== null) {\n // Ensure text and disabled are defined, with group disabled taking precedence\n return {\n ...option,\n text: option.text ?? String(option.value ?? ''),\n value: option.value ?? null,\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\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 attrs = getGroupAttr(classesObject)\nconst classes = getGroupClasses(classesObject)\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <BFormCheckboxGroupBase\n v-bind=\"forwardedProps\"\n v-model=\"modelValue as unknown as CheckboxValue[]\"\n :options=\"normalizedOptions\"\n >\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps\" />\n </template>\n\n <slot />\n </BFormCheckboxGroupBase>\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 {\n BFormCheckboxGroupProps,\n BFormCheckboxGroupSlots,\n CheckboxValue,\n OptionsValues,\n} from '../../types'\nimport {computed} from 'vue'\nimport BFormCheckboxGroupBase from './BFormCheckboxGroupBase.vue'\n\n/**\n * Type-safe wrapper component for BFormCheckboxGroup.\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 * Supports both complex objects and simple scalar types (string, number, boolean).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is array of those value types\n * - Object arrays with 'value' field: modelValue is array of value field types\n * - Use 'as const' on options for literal type inference\n */\n\n// Generic props - type safety happens here\nconst props = withDefaults(defineProps<Omit<BFormCheckboxGroupProps<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 switches: false,\n textField: 'text',\n validated: false,\n valueField: 'value',\n})\ndefineSlots<BFormCheckboxGroupSlots>()\n\n// Type-safe model value - extracts union from options, wraps in array.\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 default: () => [],\n})\n\n// Type-safe normalization of options\nconst normalizedOptions = computed(() =>\n (props.options ?? []).map(\n (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 String((el as Record<string, unknown>)[props.valueField as string]),\n }) as {text: string; value: CheckboxValue; disabled: boolean}\n )\n)\n\n// Forward all non-option-related props\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 switches: props.switches,\n}))\n</script>\n","<template>\n <BFormCheckboxGroupBase\n v-bind=\"forwardedProps\"\n v-model=\"modelValue as unknown as CheckboxValue[]\"\n :options=\"normalizedOptions\"\n >\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps\" />\n </template>\n\n <slot />\n </BFormCheckboxGroupBase>\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 {\n BFormCheckboxGroupProps,\n BFormCheckboxGroupSlots,\n CheckboxValue,\n OptionsValues,\n} from '../../types'\nimport {computed} from 'vue'\nimport BFormCheckboxGroupBase from './BFormCheckboxGroupBase.vue'\n\n/**\n * Type-safe wrapper component for BFormCheckboxGroup.\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 * Supports both complex objects and simple scalar types (string, number, boolean).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is array of those value types\n * - Object arrays with 'value' field: modelValue is array of value field types\n * - Use 'as const' on options for literal type inference\n */\n\n// Generic props - type safety happens here\nconst props = withDefaults(defineProps<Omit<BFormCheckboxGroupProps<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 switches: false,\n textField: 'text',\n validated: false,\n valueField: 'value',\n})\ndefineSlots<BFormCheckboxGroupSlots>()\n\n// Type-safe model value - extracts union from options, wraps in array.\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 default: () => [],\n})\n\n// Type-safe normalization of options\nconst normalizedOptions = computed(() =>\n (props.options ?? []).map(\n (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 String((el as Record<string, unknown>)[props.valueField as string]),\n }) as {text: string; value: CheckboxValue; disabled: boolean}\n )\n)\n\n// Forward all non-option-related props\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 switches: props.switches,\n}))\n</script>\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BFormCheckbox-xN7AQw4O.mjs","names":[],"sources":["../src/components/BFormCheckbox/BFormCheckbox.vue","../src/components/BFormCheckbox/BFormCheckbox.vue","../src/components/BFormCheckbox/BFormCheckboxGroupBase.vue","../src/components/BFormCheckbox/BFormCheckboxGroupBase.vue","../src/components/BFormCheckbox/BFormCheckboxGroup.vue","../src/components/BFormCheckbox/BFormCheckboxGroup.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"isButtonGroup\"\n v-bind=\"props.wrapperAttrs\"\n :class=\"computedWrapperClasses\"\n >\n <input\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedInputClasses\"\n type=\"checkbox\"\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 :aria-required=\"computedRequired || undefined\"\n :value=\"props.value\"\n :true-value=\"props.value\"\n :false-value=\"props.uncheckedValue\"\n :indeterminate=\"indeterminate || undefined\"\n v-bind=\"processedAttrs.inputAttrs\"\n />\n <label v-if=\"hasDefaultSlot || !resolvedPlain\" :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, useAttrs, useTemplateRef} from 'vue'\nimport {getClasses, getInputClasses, getLabelClasses} from '../../composables/useFormCheck'\nimport {checkboxGroupKey, formGroupKey} from '../../utils/keys'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormCheckboxProps, BFormCheckboxSlots, CheckboxValue} from '../../types'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(\n defineProps<Omit<BFormCheckboxProps, 'modelValue' | 'indeterminate'>>(),\n {\n wrapperAttrs: undefined,\n inputClass: undefined,\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 switch: undefined,\n uncheckedValue: false,\n value: true,\n }\n)\nconst props = useDefaults(_props, 'BFormCheckbox')\nconst slots = defineSlots<BFormCheckboxSlots>()\nconst attrs = useAttrs()\n\nconst modelValue = defineModel<BFormCheckboxProps['modelValue']>({\n default: undefined,\n})\nconst indeterminate = defineModel<Exclude<BFormCheckboxProps['indeterminate'], undefined>>(\n 'indeterminate',\n {\n default: false,\n }\n)\n\nconst processedAttrs = computed(() => {\n const {class: wrapperClass, ...inputAttrs} = attrs\n return {wrapperClass, inputAttrs}\n})\n\nconst computedId = useId(() => props.id, 'form-check')\n\nconst parentData = inject(checkboxGroupKey, null)\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\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 switch: 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 switch: props.switch ?? parentData?.switch.value ?? propDefaults.switch,\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)\n\nconst localValue = computed({\n get: () => (parentData ? parentData.modelValue.value : modelValue.value),\n set: (newVal) => {\n if (newVal === undefined) return\n // Indeterminate is implicitly cleared when the checked state is changed to any value\n // by the user. We reflect that here by setting our indetermiate model to false\n // which will emit the indeterminate event to the parent\n indeterminate.value = false\n if (parentData !== null && Array.isArray(newVal)) {\n // The type cast isn't perfect. Array.isArray detects CheckboxValue.unknown[],\n // but since it's parentData, it should always be CheckboxValue[]\n // It doesn't quite work when props.value is an [], but this is more of a Vue issue\n parentData.modelValue.value = newVal as CheckboxValue[]\n return\n }\n modelValue.value = newVal as CheckboxValue\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 wrapperClasses = getClasses(classesObject)\nconst computedWrapperClasses = computed(() => [\n wrapperClasses.value,\n processedAttrs.value.wrapperClass,\n])\nconst inputClasses = getInputClasses(classesObject)\nconst computedInputClasses = computed(() => [inputClasses.value, props.inputClass])\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\n :skip=\"isButtonGroup\"\n v-bind=\"props.wrapperAttrs\"\n :class=\"computedWrapperClasses\"\n >\n <input\n :id=\"computedId\"\n ref=\"_input\"\n v-model=\"localValue\"\n :class=\"computedInputClasses\"\n type=\"checkbox\"\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 :aria-required=\"computedRequired || undefined\"\n :value=\"props.value\"\n :true-value=\"props.value\"\n :false-value=\"props.uncheckedValue\"\n :indeterminate=\"indeterminate || undefined\"\n v-bind=\"processedAttrs.inputAttrs\"\n />\n <label v-if=\"hasDefaultSlot || !resolvedPlain\" :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, useAttrs, useTemplateRef} from 'vue'\nimport {getClasses, getInputClasses, getLabelClasses} from '../../composables/useFormCheck'\nimport {checkboxGroupKey, formGroupKey} from '../../utils/keys'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BFormCheckboxProps, BFormCheckboxSlots, CheckboxValue} from '../../types'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(\n defineProps<Omit<BFormCheckboxProps, 'modelValue' | 'indeterminate'>>(),\n {\n wrapperAttrs: undefined,\n inputClass: undefined,\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 switch: undefined,\n uncheckedValue: false,\n value: true,\n }\n)\nconst props = useDefaults(_props, 'BFormCheckbox')\nconst slots = defineSlots<BFormCheckboxSlots>()\nconst attrs = useAttrs()\n\nconst modelValue = defineModel<BFormCheckboxProps['modelValue']>({\n default: undefined,\n})\nconst indeterminate = defineModel<Exclude<BFormCheckboxProps['indeterminate'], undefined>>(\n 'indeterminate',\n {\n default: false,\n }\n)\n\nconst processedAttrs = computed(() => {\n const {class: wrapperClass, ...inputAttrs} = attrs\n return {wrapperClass, inputAttrs}\n})\n\nconst computedId = useId(() => props.id, 'form-check')\n\nconst parentData = inject(checkboxGroupKey, null)\nconst formGroupData = inject(formGroupKey, null)?.(computedId)\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 switch: 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 switch: props.switch ?? parentData?.switch.value ?? propDefaults.switch,\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)\n\nconst localValue = computed({\n get: () => (parentData ? parentData.modelValue.value : modelValue.value),\n set: (newVal) => {\n if (newVal === undefined) return\n // Indeterminate is implicitly cleared when the checked state is changed to any value\n // by the user. We reflect that here by setting our indetermiate model to false\n // which will emit the indeterminate event to the parent\n indeterminate.value = false\n if (parentData !== null && Array.isArray(newVal)) {\n // The type cast isn't perfect. Array.isArray detects CheckboxValue.unknown[],\n // but since it's parentData, it should always be CheckboxValue[]\n // It doesn't quite work when props.value is an [], but this is more of a Vue issue\n parentData.modelValue.value = newVal as CheckboxValue[]\n return\n }\n modelValue.value = newVal as CheckboxValue\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 wrapperClasses = getClasses(classesObject)\nconst computedWrapperClasses = computed(() => [\n wrapperClasses.value,\n processedAttrs.value.wrapperClass,\n])\nconst inputClasses = getInputClasses(classesObject)\nconst computedInputClasses = computed(() => [inputClasses.value, props.inputClass])\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=\"attrs\"\n :id=\"computedId\"\n ref=\"_element\"\n role=\"group\"\n :class=\"classes\"\n class=\"bv-no-focus-ring\"\n tabindex=\"-1\"\n >\n <slot name=\"first\" />\n <BFormCheckbox v-for=\"(item, index) in normalizedOptions\" :key=\"index\" v-bind=\"item\">\n <slot name=\"option\" v-bind=\"item\">\n {{ item.text }}\n </slot>\n </BFormCheckbox>\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, toRef, useTemplateRef} from 'vue'\nimport type {BFormCheckboxGroupBaseProps, CheckboxValue} from '../../types'\nimport BFormCheckbox from './BFormCheckbox.vue'\nimport {checkboxGroupKey} from '../../utils/keys'\nimport {getGroupAttr, getGroupClasses} from '../../composables/useFormCheck'\nimport {useFocus} from '@vueuse/core'\nimport {useId} from '../../composables/useId'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<Omit<BFormCheckboxGroupBaseProps, '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 switches: false,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormCheckboxGroup')\n\nconst modelValue = defineModel<CheckboxValue[]>({\n default: () => [],\n})\n\nconst computedId = useId(() => props.id, 'checkbox')\nconst computedName = useId(() => props.name, 'checkbox')\nconst _element = useTemplateRef('_element')\n\nconst {focused} = useFocus(_element, {\n initialValue: props.autofocus,\n})\n\n// Provide context to child checkboxes\nprovide(checkboxGroupKey, {\n modelValue: modelValue as import('vue').Ref<\n readonly import('../../types/CheckboxTypes').CheckboxValue[]\n >,\n switch: toRef(() => props.switches),\n buttonVariant: toRef(() => props.buttonVariant),\n form: toRef(() => props.form),\n name: computedName,\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 buttons: toRef(() => props.buttons),\n disabled: toRef(() => props.disabled),\n})\n\n// Normalize options to always be objects with text/value fields\nconst normalizedOptions = computed<Array<{text: string; value: CheckboxValue; disabled: boolean}>>(\n () =>\n props.options.map((option) => {\n if (typeof option === 'object' && option !== null) {\n // Ensure text and disabled are defined, with group disabled taking precedence\n return {\n ...option,\n text: option.text ?? String(option.value ?? ''),\n value: option.value ?? null,\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\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 attrs = getGroupAttr(classesObject)\nconst classes = 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=\"attrs\"\n :id=\"computedId\"\n ref=\"_element\"\n role=\"group\"\n :class=\"classes\"\n class=\"bv-no-focus-ring\"\n tabindex=\"-1\"\n >\n <slot name=\"first\" />\n <BFormCheckbox v-for=\"(item, index) in normalizedOptions\" :key=\"index\" v-bind=\"item\">\n <slot name=\"option\" v-bind=\"item\">\n {{ item.text }}\n </slot>\n </BFormCheckbox>\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, toRef, useTemplateRef} from 'vue'\nimport type {BFormCheckboxGroupBaseProps, CheckboxValue} from '../../types'\nimport BFormCheckbox from './BFormCheckbox.vue'\nimport {checkboxGroupKey} from '../../utils/keys'\nimport {getGroupAttr, getGroupClasses} from '../../composables/useFormCheck'\nimport {useFocus} from '@vueuse/core'\nimport {useId} from '../../composables/useId'\nimport {useDefaults} from '../../composables/useDefaults'\n\nconst _props = withDefaults(defineProps<Omit<BFormCheckboxGroupBaseProps, '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 switches: false,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormCheckboxGroup')\n\nconst modelValue = defineModel<CheckboxValue[]>({\n default: () => [],\n})\n\nconst computedId = useId(() => props.id, 'checkbox')\nconst computedName = useId(() => props.name, 'checkbox')\nconst _element = useTemplateRef('_element')\n\nconst {focused} = useFocus(_element, {\n initialValue: props.autofocus,\n})\n\n// Provide context to child checkboxes\nprovide(checkboxGroupKey, {\n modelValue: modelValue as import('vue').Ref<\n readonly import('../../types/CheckboxTypes').CheckboxValue[]\n >,\n switch: toRef(() => props.switches),\n buttonVariant: toRef(() => props.buttonVariant),\n form: toRef(() => props.form),\n name: computedName,\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 buttons: toRef(() => props.buttons),\n disabled: toRef(() => props.disabled),\n})\n\n// Normalize options to always be objects with text/value fields\nconst normalizedOptions = computed<Array<{text: string; value: CheckboxValue; disabled: boolean}>>(\n () =>\n props.options.map((option) => {\n if (typeof option === 'object' && option !== null) {\n // Ensure text and disabled are defined, with group disabled taking precedence\n return {\n ...option,\n text: option.text ?? String(option.value ?? ''),\n value: option.value ?? null,\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\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 attrs = getGroupAttr(classesObject)\nconst classes = getGroupClasses(classesObject)\n\ndefineExpose({\n blur: () => {\n focused.value = false\n },\n focus: () => {\n focused.value = true\n },\n})\n</script>\n","<template>\n <BFormCheckboxGroupBase\n v-bind=\"forwardedProps\"\n v-model=\"modelValue as unknown as CheckboxValue[]\"\n :options=\"normalizedOptions\"\n >\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps\" />\n </template>\n\n <slot />\n </BFormCheckboxGroupBase>\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 {\n BFormCheckboxGroupProps,\n BFormCheckboxGroupSlots,\n CheckboxValue,\n OptionsValues,\n} from '../../types'\nimport {computed} from 'vue'\nimport BFormCheckboxGroupBase from './BFormCheckboxGroupBase.vue'\n\n/**\n * Type-safe wrapper component for BFormCheckboxGroup.\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 * Supports both complex objects and simple scalar types (string, number, boolean).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is array of those value types\n * - Object arrays with 'value' field: modelValue is array of value field types\n * - Use 'as const' on options for literal type inference\n */\n\n// Generic props - type safety happens here\nconst props = withDefaults(defineProps<Omit<BFormCheckboxGroupProps<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 switches: false,\n textField: 'text',\n validated: false,\n valueField: 'value',\n})\ndefineSlots<BFormCheckboxGroupSlots>()\n\n// Type-safe model value - extracts union from options, wraps in array.\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 default: () => [],\n})\n\n// Type-safe normalization of options\nconst normalizedOptions = computed(() =>\n (props.options ?? []).map(\n (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 String((el as Record<string, unknown>)[props.valueField as string]),\n }) as {text: string; value: CheckboxValue; disabled: boolean}\n )\n)\n\n// Forward all non-option-related props\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 switches: props.switches,\n}))\n</script>\n","<template>\n <BFormCheckboxGroupBase\n v-bind=\"forwardedProps\"\n v-model=\"modelValue as unknown as CheckboxValue[]\"\n :options=\"normalizedOptions\"\n >\n <!-- Forward all slots -->\n <template #first>\n <slot name=\"first\" />\n </template>\n\n <template #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps\" />\n </template>\n\n <slot />\n </BFormCheckboxGroupBase>\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 {\n BFormCheckboxGroupProps,\n BFormCheckboxGroupSlots,\n CheckboxValue,\n OptionsValues,\n} from '../../types'\nimport {computed} from 'vue'\nimport BFormCheckboxGroupBase from './BFormCheckboxGroupBase.vue'\n\n/**\n * Type-safe wrapper component for BFormCheckboxGroup.\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 * Supports both complex objects and simple scalar types (string, number, boolean).\n *\n * For strongly-typed modelValue:\n * - Primitive arrays: modelValue is array of those value types\n * - Object arrays with 'value' field: modelValue is array of value field types\n * - Use 'as const' on options for literal type inference\n */\n\n// Generic props - type safety happens here\nconst props = withDefaults(defineProps<Omit<BFormCheckboxGroupProps<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 switches: false,\n textField: 'text',\n validated: false,\n valueField: 'value',\n})\ndefineSlots<BFormCheckboxGroupSlots>()\n\n// Type-safe model value - extracts union from options, wraps in array.\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 default: () => [],\n})\n\n// Type-safe normalization of options\nconst normalizedOptions = computed(() =>\n (props.options ?? []).map(\n (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 String((el as Record<string, unknown>)[props.valueField as string]),\n }) as {text: string; value: CheckboxValue; disabled: boolean}\n )\n)\n\n// Forward all non-option-related props\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 switches: props.switches,\n}))\n</script>\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BFormGroup-DZTiChgT.js","names":["$attrs"],"sources":["../src/utils/props.ts","../src/components/BFormGroupContent.vue","../src/components/BFormGroupContent.vue","../src/components/BFormGroupLabel.vue","../src/components/BFormGroupLabel.vue","../src/components/BFormGroup/BFormGroup.vue","../src/components/BFormGroup/BFormGroup.vue"],"sourcesContent":["// Suffix can be a falsey value so nothing is appended to string\n// (helps when looping over props & some shouldn't change)\n\nimport {upperFirst} from './stringUtils'\n\n/**\n * Use data last parameters to allow for currying\n *\n * @param suffix\n * @param value\n * @returns\n */\nexport const suffixPropName = (suffix: string, value: string): string =>\n value + (suffix ? upperFirst(suffix) : '')\n","<template>\n <BFormInvalidFeedback\n v-if=\"hasInvalidFeedbackSlot || invalidFeedback\"\n :id=\"invalidFeedbackId\"\n :aria-live=\"feedbackAriaLive\"\n :state=\"state\"\n :tooltip=\"tooltip\"\n >\n <slot name=\"invalid-feedback\">{{ invalidFeedback }}</slot>\n </BFormInvalidFeedback>\n <BFormValidFeedback\n v-if=\"hasValidFeedbackSlot || validFeedback\"\n :id=\"validFeedbackId\"\n :aria-live=\"feedbackAriaLive\"\n :state=\"state\"\n :tooltip=\"tooltip\"\n >\n <slot name=\"valid-feedback\">{{ validFeedback }}</slot>\n </BFormValidFeedback>\n <BFormText v-if=\"hasDescriptionSlot || description\" :id=\"descriptionId\">\n <slot name=\"description\">{{ description }}</slot>\n </BFormText>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useSlots} from 'vue'\nimport type {ValidationState} from '../types'\nimport BFormInvalidFeedback from './BForm/BFormInvalidFeedback.vue'\nimport BFormValidFeedback from './BForm/BFormValidFeedback.vue'\nimport BFormText from './BForm/BFormText.vue'\n\ndefineProps<{\n invalidFeedback: string | undefined\n validFeedback: string | undefined\n description: string | undefined\n feedbackAriaLive: string | undefined\n state: ValidationState | undefined\n tooltip: boolean | undefined\n invalidFeedbackId: string | undefined\n validFeedbackId: string | undefined\n descriptionId: string | undefined\n}>()\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ndefineSlots<{\n 'invalid-feedback'?: (props: Record<string, never>) => any\n 'valid-feedback'?: (props: Record<string, never>) => any\n 'description'?: (props: Record<string, never>) => any\n}>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst slots = useSlots()\nconst hasInvalidFeedbackSlot = computed(() => !!slots['invalid-feedback'])\nconst hasValidFeedbackSlot = computed(() => !!slots['valid-feedback'])\nconst hasDescriptionSlot = computed(() => !!slots['description'])\n</script>\n","<template>\n <BFormInvalidFeedback\n v-if=\"hasInvalidFeedbackSlot || invalidFeedback\"\n :id=\"invalidFeedbackId\"\n :aria-live=\"feedbackAriaLive\"\n :state=\"state\"\n :tooltip=\"tooltip\"\n >\n <slot name=\"invalid-feedback\">{{ invalidFeedback }}</slot>\n </BFormInvalidFeedback>\n <BFormValidFeedback\n v-if=\"hasValidFeedbackSlot || validFeedback\"\n :id=\"validFeedbackId\"\n :aria-live=\"feedbackAriaLive\"\n :state=\"state\"\n :tooltip=\"tooltip\"\n >\n <slot name=\"valid-feedback\">{{ validFeedback }}</slot>\n </BFormValidFeedback>\n <BFormText v-if=\"hasDescriptionSlot || description\" :id=\"descriptionId\">\n <slot name=\"description\">{{ description }}</slot>\n </BFormText>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useSlots} from 'vue'\nimport type {ValidationState} from '../types'\nimport BFormInvalidFeedback from './BForm/BFormInvalidFeedback.vue'\nimport BFormValidFeedback from './BForm/BFormValidFeedback.vue'\nimport BFormText from './BForm/BFormText.vue'\n\ndefineProps<{\n invalidFeedback: string | undefined\n validFeedback: string | undefined\n description: string | undefined\n feedbackAriaLive: string | undefined\n state: ValidationState | undefined\n tooltip: boolean | undefined\n invalidFeedbackId: string | undefined\n validFeedbackId: string | undefined\n descriptionId: string | undefined\n}>()\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ndefineSlots<{\n 'invalid-feedback'?: (props: Record<string, never>) => any\n 'valid-feedback'?: (props: Record<string, never>) => any\n 'description'?: (props: Record<string, never>) => any\n}>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst slots = useSlots()\nconst hasInvalidFeedbackSlot = computed(() => !!slots['invalid-feedback'])\nconst hasValidFeedbackSlot = computed(() => !!slots['valid-feedback'])\nconst hasDescriptionSlot = computed(() => !!slots['description'])\n</script>\n","<template>\n <BCol\n v-if=\"isHorizontal\"\n v-bind=\"labelColProps\"\n :id=\"labelId\"\n :tag=\"labelTag\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"[labelAlignClasses, labelClasses]\"\n @click=\"isFieldset ? (e: MouseEvent) => emit('legendClick', e) : undefined\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </BCol>\n <component\n :is=\"labelTag\"\n v-else\n :id=\"labelId\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"labelClasses\"\n @click=\"isFieldset ? (e: MouseEvent) => emit('legendClick', e) : undefined\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {ClassValue} from '../types/AnyValuedAttributes'\nimport BCol from './BContainer/BCol.vue'\n\ndefineProps<{\n label: string | undefined\n labelTag: string\n labelId: string | undefined\n computedLabelFor: string | null\n isFieldset: boolean\n isHorizontal: boolean\n labelColProps: Record<string, unknown>\n labelAlignClasses: string[]\n labelClasses: ClassValue\n}>()\n\nconst emit = defineEmits<{\n legendClick: [event: MouseEvent]\n}>()\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ndefineSlots<{\n label?: (props: Record<string, never>) => any\n}>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n</script>\n","<template>\n <BCol\n v-if=\"isHorizontal\"\n v-bind=\"labelColProps\"\n :id=\"labelId\"\n :tag=\"labelTag\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"[labelAlignClasses, labelClasses]\"\n @click=\"isFieldset ? (e: MouseEvent) => emit('legendClick', e) : undefined\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </BCol>\n <component\n :is=\"labelTag\"\n v-else\n :id=\"labelId\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"labelClasses\"\n @click=\"isFieldset ? (e: MouseEvent) => emit('legendClick', e) : undefined\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {ClassValue} from '../types/AnyValuedAttributes'\nimport BCol from './BContainer/BCol.vue'\n\ndefineProps<{\n label: string | undefined\n labelTag: string\n labelId: string | undefined\n computedLabelFor: string | null\n isFieldset: boolean\n isHorizontal: boolean\n labelColProps: Record<string, unknown>\n labelAlignClasses: string[]\n labelClasses: ClassValue\n}>()\n\nconst emit = defineEmits<{\n legendClick: [event: MouseEvent]\n}>()\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ndefineSlots<{\n label?: (props: Record<string, never>) => any\n}>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n</script>\n","<template>\n <component\n :is=\"isFieldset ? 'fieldset' : 'div'\"\n :id=\"computedId\"\n :disabled=\"isFieldset ? props.disabled : null\"\n :role=\"isFieldset ? null : 'group'\"\n :aria-invalid=\"computedAriaInvalid\"\n :aria-labelledby=\"isFieldset && isHorizontal ? labelId : null\"\n v-bind=\"$attrs\"\n :class=\"[stateClass, {'was-validated': props.validated}]\"\n class=\"b-form-group\"\n >\n <!-- End of definitions -->\n <BFormRow v-if=\"isHorizontal\">\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <BCol v-bind=\"contentColProps\" ref=\"_content\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </BCol>\n </BFormRow>\n <template v-else>\n <div v-if=\"props.floating && !isHorizontal\" ref=\"_content\" class=\"form-floating\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </div>\n <template v-else>\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </template>\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type Ref, ref, toRef, useTemplateRef} from 'vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {attemptFocus, isVisible} from '../../utils/dom'\nimport BCol from '../BContainer/BCol.vue'\nimport BFormRow from '../BForm/BFormRow.vue'\nimport {suffixPropName} from '../../utils/props'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useId} from '../../composables/useId'\nimport type {BFormGroupProps, BFormGroupSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {formGroupKey} from '../../utils/keys'\nimport BFormGroupContent from '../BFormGroupContent.vue'\nimport BFormGroupLabel from '../BFormGroupLabel.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst INPUTS = ['input', 'select', 'textarea']\n\nconst _props = withDefaults(defineProps<BFormGroupProps>(), {\n ariaInvalid: undefined,\n contentCols: undefined,\n contentColsLg: undefined,\n contentColsMd: undefined,\n contentColsSm: undefined,\n contentColsXl: undefined,\n description: undefined,\n disabled: false,\n feedbackAriaLive: 'assertive',\n floating: false,\n id: undefined,\n invalidFeedback: undefined,\n label: undefined,\n labelAlign: undefined,\n labelAlignLg: undefined,\n labelAlignMd: undefined,\n labelAlignSm: undefined,\n labelAlignXl: undefined,\n labelClass: undefined,\n labelCols: undefined,\n labelColsLg: undefined,\n labelColsMd: undefined,\n labelColsSm: undefined,\n labelColsXl: undefined,\n labelFor: undefined,\n labelSize: undefined,\n labelVisuallyHidden: false,\n state: null,\n tooltip: false,\n validFeedback: undefined,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormGroup')\nconst slots = defineSlots<BFormGroupSlots>()\n\nconst computedState = toRef(() => props.state)\nconst computedDisabled = toRef(() => props.disabled)\nconst childId = ref<Ref<string>[]>([])\nprovide(formGroupKey, (id) => {\n childId.value = [id]\n\n return {\n state: computedState,\n disabled: computedDisabled,\n }\n})\nconst computedLabelFor = computed(() => {\n if (props.labelFor !== undefined) return props.labelFor\n if (childId.value[0] && childId.value[0].value) return childId.value[0].value\n return null\n})\n\nconst breakPoints = ['xs', 'sm', 'md', 'lg', 'xl']\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getColProps = (props: any, prefix: string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n breakPoints.reduce((result: any, breakpoint: string) => {\n const suffix = suffixPropName(breakpoint === 'xs' ? '' : breakpoint, `${prefix}Cols`)\n let propValue = props[suffix]\n propValue = propValue === '' ? true : propValue || false\n\n if (!(typeof propValue === 'boolean') && propValue !== 'auto') {\n const val = Number.parseInt(propValue)\n propValue = Number.isNaN(val) ? 0 : val\n propValue = propValue > 0 ? propValue : false\n }\n\n if (propValue) {\n if (breakpoint === 'xs') {\n result[typeof propValue === 'boolean' ? 'col' : 'cols'] = propValue\n } else {\n result[breakpoint || (typeof propValue === 'boolean' ? 'col' : 'cols')] = propValue\n }\n }\n return result\n }, {})\n\nconst content = useTemplateRef<HTMLDivElement | InstanceType<typeof BCol> | null>('_content')\n\nconst contentColProps = computed(() => getColProps(props, 'content'))\nconst labelAlignClasses = computed(() =>\n ((props: BFormGroupProps, prefix: string) =>\n breakPoints.reduce((result: string[], breakpoint) => {\n const suffix = suffixPropName(\n breakpoint === 'xs' ? '' : breakpoint,\n `${prefix}Align`\n ) as keyof BFormGroupProps\n const propValue: string = props[suffix] || null\n if (propValue) {\n if (breakpoint === 'xs') {\n result.push(`text-${propValue}`)\n } else {\n result.push(`text-${breakpoint}-${propValue}`)\n }\n }\n return result\n }, []))(props, 'label')\n)\nconst labelColProps = computed(() => getColProps(props, 'label'))\nconst isHorizontal = computed(\n () => Object.keys(contentColProps.value).length > 0 || Object.keys(labelColProps.value).length > 0\n)\n\nconst stateClass = useStateClass(computedState)\nconst computedAriaInvalid = useAriaInvalid(() => props.ariaInvalid, computedState)\n\nconst onLegendClick = (event: Readonly<MouseEvent>) => {\n if (computedLabelFor.value || content.value === null) return\n\n const {target} = event\n const tagName = target ? (target as HTMLElement).tagName : ''\n\n if ([...INPUTS, 'a', 'button', 'label'].indexOf(tagName) !== -1) return\n\n // In horizontal mode, content.value is a BCol component instance, not a DOM element\n // Access the DOM element via $el property\n const contentElement =\n isHorizontal.value && content.value && '$el' in content.value\n ? (content.value.$el as HTMLElement)\n : (content.value as HTMLDivElement | null)\n if (!contentElement) return\n\n const inputs = [\n ...contentElement.querySelectorAll(INPUTS.map((v) => `${v}:not([disabled])`).join()),\n ].filter(isVisible)\n const [inp] = inputs\n if (inputs.length === 1 && inp instanceof HTMLElement) {\n attemptFocus(inp)\n }\n}\n\nconst computedId = useId(() => props.id)\nconst labelId = useId(undefined, '_BV_label_')\nconst labelTag = computed(() => (!computedLabelFor.value ? 'legend' : 'label'))\nconst labelClasses = computed(() => [\n isHorizontal.value ? 'col-form-label' : 'form-label',\n {\n 'bv-no-focus-ring': !computedLabelFor.value,\n 'col-form-label': isHorizontal.value || !computedLabelFor.value,\n 'pt-0': !isHorizontal.value && !computedLabelFor.value,\n 'd-block': !isHorizontal.value && computedLabelFor.value,\n [`col-form-label-${props.labelSize}`]: !!props.labelSize,\n 'visually-hidden': props.labelVisuallyHidden,\n },\n isHorizontal.value ? null : labelAlignClasses.value,\n props.labelClass,\n])\n\nconst invalidFeedbackId = useId(undefined, '_BV_feedback_invalid_')\n\nconst validFeedbackId = useId(undefined, '_BV_feedback_valid_')\nconst descriptionId = useId(undefined, '_BV_description_')\n\nconst isFieldset = computed(() => !computedLabelFor.value)\n\nconst labelShowing = computed(() => !!slots.label || !!props.label || isHorizontal.value)\n\nconst labelComponentProps = computed(() => ({\n label: props.label,\n labelTag: labelTag.value,\n labelId: labelId.value,\n computedLabelFor: computedLabelFor.value,\n isFieldset: isFieldset.value,\n isHorizontal: isHorizontal.value,\n labelColProps: labelColProps.value,\n labelAlignClasses: labelAlignClasses.value,\n labelClasses: labelClasses.value,\n}))\n\nconst contentComponentProps = computed(() => ({\n invalidFeedback: props.invalidFeedback,\n validFeedback: props.validFeedback,\n description: props.description,\n feedbackAriaLive: props.feedbackAriaLive,\n state: computedState.value,\n tooltip: props.tooltip,\n invalidFeedbackId: invalidFeedbackId.value,\n validFeedbackId: validFeedbackId.value,\n descriptionId: descriptionId.value,\n}))\n</script>\n","<template>\n <component\n :is=\"isFieldset ? 'fieldset' : 'div'\"\n :id=\"computedId\"\n :disabled=\"isFieldset ? props.disabled : null\"\n :role=\"isFieldset ? null : 'group'\"\n :aria-invalid=\"computedAriaInvalid\"\n :aria-labelledby=\"isFieldset && isHorizontal ? labelId : null\"\n v-bind=\"$attrs\"\n :class=\"[stateClass, {'was-validated': props.validated}]\"\n class=\"b-form-group\"\n >\n <!-- End of definitions -->\n <BFormRow v-if=\"isHorizontal\">\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <BCol v-bind=\"contentColProps\" ref=\"_content\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </BCol>\n </BFormRow>\n <template v-else>\n <div v-if=\"props.floating && !isHorizontal\" ref=\"_content\" class=\"form-floating\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </div>\n <template v-else>\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </template>\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type Ref, ref, toRef, useTemplateRef} from 'vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {attemptFocus, isVisible} from '../../utils/dom'\nimport BCol from '../BContainer/BCol.vue'\nimport BFormRow from '../BForm/BFormRow.vue'\nimport {suffixPropName} from '../../utils/props'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useId} from '../../composables/useId'\nimport type {BFormGroupProps, BFormGroupSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {formGroupKey} from '../../utils/keys'\nimport BFormGroupContent from '../BFormGroupContent.vue'\nimport BFormGroupLabel from '../BFormGroupLabel.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst INPUTS = ['input', 'select', 'textarea']\n\nconst _props = withDefaults(defineProps<BFormGroupProps>(), {\n ariaInvalid: undefined,\n contentCols: undefined,\n contentColsLg: undefined,\n contentColsMd: undefined,\n contentColsSm: undefined,\n contentColsXl: undefined,\n description: undefined,\n disabled: false,\n feedbackAriaLive: 'assertive',\n floating: false,\n id: undefined,\n invalidFeedback: undefined,\n label: undefined,\n labelAlign: undefined,\n labelAlignLg: undefined,\n labelAlignMd: undefined,\n labelAlignSm: undefined,\n labelAlignXl: undefined,\n labelClass: undefined,\n labelCols: undefined,\n labelColsLg: undefined,\n labelColsMd: undefined,\n labelColsSm: undefined,\n labelColsXl: undefined,\n labelFor: undefined,\n labelSize: undefined,\n labelVisuallyHidden: false,\n state: null,\n tooltip: false,\n validFeedback: undefined,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormGroup')\nconst slots = defineSlots<BFormGroupSlots>()\n\nconst computedState = toRef(() => props.state)\nconst computedDisabled = toRef(() => props.disabled)\nconst childId = ref<Ref<string>[]>([])\nprovide(formGroupKey, (id) => {\n childId.value = [id]\n\n return {\n state: computedState,\n disabled: computedDisabled,\n }\n})\nconst computedLabelFor = computed(() => {\n if (props.labelFor !== undefined) return props.labelFor\n if (childId.value[0] && childId.value[0].value) return childId.value[0].value\n return null\n})\n\nconst breakPoints = ['xs', 'sm', 'md', 'lg', 'xl']\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getColProps = (props: any, prefix: string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n breakPoints.reduce((result: any, breakpoint: string) => {\n const suffix = suffixPropName(breakpoint === 'xs' ? '' : breakpoint, `${prefix}Cols`)\n let propValue = props[suffix]\n propValue = propValue === '' ? true : propValue || false\n\n if (!(typeof propValue === 'boolean') && propValue !== 'auto') {\n const val = Number.parseInt(propValue)\n propValue = Number.isNaN(val) ? 0 : val\n propValue = propValue > 0 ? propValue : false\n }\n\n if (propValue) {\n if (breakpoint === 'xs') {\n result[typeof propValue === 'boolean' ? 'col' : 'cols'] = propValue\n } else {\n result[breakpoint || (typeof propValue === 'boolean' ? 'col' : 'cols')] = propValue\n }\n }\n return result\n }, {})\n\nconst content = useTemplateRef<HTMLDivElement | InstanceType<typeof BCol> | null>('_content')\n\nconst contentColProps = computed(() => getColProps(props, 'content'))\nconst labelAlignClasses = computed(() =>\n ((props: BFormGroupProps, prefix: string) =>\n breakPoints.reduce((result: string[], breakpoint) => {\n const suffix = suffixPropName(\n breakpoint === 'xs' ? '' : breakpoint,\n `${prefix}Align`\n ) as keyof BFormGroupProps\n const propValue: string = props[suffix] || null\n if (propValue) {\n if (breakpoint === 'xs') {\n result.push(`text-${propValue}`)\n } else {\n result.push(`text-${breakpoint}-${propValue}`)\n }\n }\n return result\n }, []))(props, 'label')\n)\nconst labelColProps = computed(() => getColProps(props, 'label'))\nconst isHorizontal = computed(\n () => Object.keys(contentColProps.value).length > 0 || Object.keys(labelColProps.value).length > 0\n)\n\nconst stateClass = useStateClass(computedState)\nconst computedAriaInvalid = useAriaInvalid(() => props.ariaInvalid, computedState)\n\nconst onLegendClick = (event: Readonly<MouseEvent>) => {\n if (computedLabelFor.value || content.value === null) return\n\n const {target} = event\n const tagName = target ? (target as HTMLElement).tagName : ''\n\n if ([...INPUTS, 'a', 'button', 'label'].indexOf(tagName) !== -1) return\n\n // In horizontal mode, content.value is a BCol component instance, not a DOM element\n // Access the DOM element via $el property\n const contentElement =\n isHorizontal.value && content.value && '$el' in content.value\n ? (content.value.$el as HTMLElement)\n : (content.value as HTMLDivElement | null)\n if (!contentElement) return\n\n const inputs = [\n ...contentElement.querySelectorAll(INPUTS.map((v) => `${v}:not([disabled])`).join()),\n ].filter(isVisible)\n const [inp] = inputs\n if (inputs.length === 1 && inp instanceof HTMLElement) {\n attemptFocus(inp)\n }\n}\n\nconst computedId = useId(() => props.id)\nconst labelId = useId(undefined, '_BV_label_')\nconst labelTag = computed(() => (!computedLabelFor.value ? 'legend' : 'label'))\nconst labelClasses = computed(() => [\n isHorizontal.value ? 'col-form-label' : 'form-label',\n {\n 'bv-no-focus-ring': !computedLabelFor.value,\n 'col-form-label': isHorizontal.value || !computedLabelFor.value,\n 'pt-0': !isHorizontal.value && !computedLabelFor.value,\n 'd-block': !isHorizontal.value && computedLabelFor.value,\n [`col-form-label-${props.labelSize}`]: !!props.labelSize,\n 'visually-hidden': props.labelVisuallyHidden,\n },\n isHorizontal.value ? null : labelAlignClasses.value,\n props.labelClass,\n])\n\nconst invalidFeedbackId = useId(undefined, '_BV_feedback_invalid_')\n\nconst validFeedbackId = useId(undefined, '_BV_feedback_valid_')\nconst descriptionId = useId(undefined, '_BV_description_')\n\nconst isFieldset = computed(() => !computedLabelFor.value)\n\nconst labelShowing = computed(() => !!slots.label || !!props.label || isHorizontal.value)\n\nconst labelComponentProps = computed(() => ({\n label: props.label,\n labelTag: labelTag.value,\n labelId: labelId.value,\n computedLabelFor: computedLabelFor.value,\n isFieldset: isFieldset.value,\n isHorizontal: isHorizontal.value,\n labelColProps: labelColProps.value,\n labelAlignClasses: labelAlignClasses.value,\n labelClasses: labelClasses.value,\n}))\n\nconst contentComponentProps = computed(() => ({\n invalidFeedback: props.invalidFeedback,\n validFeedback: props.validFeedback,\n description: props.description,\n feedbackAriaLive: props.feedbackAriaLive,\n state: computedState.value,\n tooltip: props.tooltip,\n invalidFeedbackId: invalidFeedbackId.value,\n validFeedbackId: validFeedbackId.value,\n descriptionId: descriptionId.value,\n}))\n</script>\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BFormGroup-ayltvQts.mjs","names":["$attrs"],"sources":["../src/utils/props.ts","../src/components/BFormGroupContent.vue","../src/components/BFormGroupContent.vue","../src/components/BFormGroupLabel.vue","../src/components/BFormGroupLabel.vue","../src/components/BFormGroup/BFormGroup.vue","../src/components/BFormGroup/BFormGroup.vue"],"sourcesContent":["// Suffix can be a falsey value so nothing is appended to string\n// (helps when looping over props & some shouldn't change)\n\nimport {upperFirst} from './stringUtils'\n\n/**\n * Use data last parameters to allow for currying\n *\n * @param suffix\n * @param value\n * @returns\n */\nexport const suffixPropName = (suffix: string, value: string): string =>\n value + (suffix ? upperFirst(suffix) : '')\n","<template>\n <BFormInvalidFeedback\n v-if=\"hasInvalidFeedbackSlot || invalidFeedback\"\n :id=\"invalidFeedbackId\"\n :aria-live=\"feedbackAriaLive\"\n :state=\"state\"\n :tooltip=\"tooltip\"\n >\n <slot name=\"invalid-feedback\">{{ invalidFeedback }}</slot>\n </BFormInvalidFeedback>\n <BFormValidFeedback\n v-if=\"hasValidFeedbackSlot || validFeedback\"\n :id=\"validFeedbackId\"\n :aria-live=\"feedbackAriaLive\"\n :state=\"state\"\n :tooltip=\"tooltip\"\n >\n <slot name=\"valid-feedback\">{{ validFeedback }}</slot>\n </BFormValidFeedback>\n <BFormText v-if=\"hasDescriptionSlot || description\" :id=\"descriptionId\">\n <slot name=\"description\">{{ description }}</slot>\n </BFormText>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useSlots} from 'vue'\nimport type {ValidationState} from '../types'\nimport BFormInvalidFeedback from './BForm/BFormInvalidFeedback.vue'\nimport BFormValidFeedback from './BForm/BFormValidFeedback.vue'\nimport BFormText from './BForm/BFormText.vue'\n\ndefineProps<{\n invalidFeedback: string | undefined\n validFeedback: string | undefined\n description: string | undefined\n feedbackAriaLive: string | undefined\n state: ValidationState | undefined\n tooltip: boolean | undefined\n invalidFeedbackId: string | undefined\n validFeedbackId: string | undefined\n descriptionId: string | undefined\n}>()\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ndefineSlots<{\n 'invalid-feedback'?: (props: Record<string, never>) => any\n 'valid-feedback'?: (props: Record<string, never>) => any\n 'description'?: (props: Record<string, never>) => any\n}>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst slots = useSlots()\nconst hasInvalidFeedbackSlot = computed(() => !!slots['invalid-feedback'])\nconst hasValidFeedbackSlot = computed(() => !!slots['valid-feedback'])\nconst hasDescriptionSlot = computed(() => !!slots['description'])\n</script>\n","<template>\n <BFormInvalidFeedback\n v-if=\"hasInvalidFeedbackSlot || invalidFeedback\"\n :id=\"invalidFeedbackId\"\n :aria-live=\"feedbackAriaLive\"\n :state=\"state\"\n :tooltip=\"tooltip\"\n >\n <slot name=\"invalid-feedback\">{{ invalidFeedback }}</slot>\n </BFormInvalidFeedback>\n <BFormValidFeedback\n v-if=\"hasValidFeedbackSlot || validFeedback\"\n :id=\"validFeedbackId\"\n :aria-live=\"feedbackAriaLive\"\n :state=\"state\"\n :tooltip=\"tooltip\"\n >\n <slot name=\"valid-feedback\">{{ validFeedback }}</slot>\n </BFormValidFeedback>\n <BFormText v-if=\"hasDescriptionSlot || description\" :id=\"descriptionId\">\n <slot name=\"description\">{{ description }}</slot>\n </BFormText>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useSlots} from 'vue'\nimport type {ValidationState} from '../types'\nimport BFormInvalidFeedback from './BForm/BFormInvalidFeedback.vue'\nimport BFormValidFeedback from './BForm/BFormValidFeedback.vue'\nimport BFormText from './BForm/BFormText.vue'\n\ndefineProps<{\n invalidFeedback: string | undefined\n validFeedback: string | undefined\n description: string | undefined\n feedbackAriaLive: string | undefined\n state: ValidationState | undefined\n tooltip: boolean | undefined\n invalidFeedbackId: string | undefined\n validFeedbackId: string | undefined\n descriptionId: string | undefined\n}>()\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ndefineSlots<{\n 'invalid-feedback'?: (props: Record<string, never>) => any\n 'valid-feedback'?: (props: Record<string, never>) => any\n 'description'?: (props: Record<string, never>) => any\n}>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst slots = useSlots()\nconst hasInvalidFeedbackSlot = computed(() => !!slots['invalid-feedback'])\nconst hasValidFeedbackSlot = computed(() => !!slots['valid-feedback'])\nconst hasDescriptionSlot = computed(() => !!slots['description'])\n</script>\n","<template>\n <BCol\n v-if=\"isHorizontal\"\n v-bind=\"labelColProps\"\n :id=\"labelId\"\n :tag=\"labelTag\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"[labelAlignClasses, labelClasses]\"\n @click=\"isFieldset ? (e: MouseEvent) => emit('legendClick', e) : undefined\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </BCol>\n <component\n :is=\"labelTag\"\n v-else\n :id=\"labelId\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"labelClasses\"\n @click=\"isFieldset ? (e: MouseEvent) => emit('legendClick', e) : undefined\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {ClassValue} from '../types/AnyValuedAttributes'\nimport BCol from './BContainer/BCol.vue'\n\ndefineProps<{\n label: string | undefined\n labelTag: string\n labelId: string | undefined\n computedLabelFor: string | null\n isFieldset: boolean\n isHorizontal: boolean\n labelColProps: Record<string, unknown>\n labelAlignClasses: string[]\n labelClasses: ClassValue\n}>()\n\nconst emit = defineEmits<{\n legendClick: [event: MouseEvent]\n}>()\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ndefineSlots<{\n label?: (props: Record<string, never>) => any\n}>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n</script>\n","<template>\n <BCol\n v-if=\"isHorizontal\"\n v-bind=\"labelColProps\"\n :id=\"labelId\"\n :tag=\"labelTag\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"[labelAlignClasses, labelClasses]\"\n @click=\"isFieldset ? (e: MouseEvent) => emit('legendClick', e) : undefined\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </BCol>\n <component\n :is=\"labelTag\"\n v-else\n :id=\"labelId\"\n :for=\"computedLabelFor || null\"\n :tabindex=\"isFieldset ? '-1' : null\"\n :class=\"labelClasses\"\n @click=\"isFieldset ? (e: MouseEvent) => emit('legendClick', e) : undefined\"\n >\n <slot name=\"label\">{{ label }}</slot>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {ClassValue} from '../types/AnyValuedAttributes'\nimport BCol from './BContainer/BCol.vue'\n\ndefineProps<{\n label: string | undefined\n labelTag: string\n labelId: string | undefined\n computedLabelFor: string | null\n isFieldset: boolean\n isHorizontal: boolean\n labelColProps: Record<string, unknown>\n labelAlignClasses: string[]\n labelClasses: ClassValue\n}>()\n\nconst emit = defineEmits<{\n legendClick: [event: MouseEvent]\n}>()\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ndefineSlots<{\n label?: (props: Record<string, never>) => any\n}>()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n</script>\n","<template>\n <component\n :is=\"isFieldset ? 'fieldset' : 'div'\"\n :id=\"computedId\"\n :disabled=\"isFieldset ? props.disabled : null\"\n :role=\"isFieldset ? null : 'group'\"\n :aria-invalid=\"computedAriaInvalid\"\n :aria-labelledby=\"isFieldset && isHorizontal ? labelId : null\"\n v-bind=\"$attrs\"\n :class=\"[stateClass, {'was-validated': props.validated}]\"\n class=\"b-form-group\"\n >\n <!-- End of definitions -->\n <BFormRow v-if=\"isHorizontal\">\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <BCol v-bind=\"contentColProps\" ref=\"_content\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </BCol>\n </BFormRow>\n <template v-else>\n <div v-if=\"props.floating && !isHorizontal\" ref=\"_content\" class=\"form-floating\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </div>\n <template v-else>\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </template>\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type Ref, ref, toRef, useTemplateRef} from 'vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {attemptFocus, isVisible} from '../../utils/dom'\nimport BCol from '../BContainer/BCol.vue'\nimport BFormRow from '../BForm/BFormRow.vue'\nimport {suffixPropName} from '../../utils/props'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useId} from '../../composables/useId'\nimport type {BFormGroupProps, BFormGroupSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {formGroupKey} from '../../utils/keys'\nimport BFormGroupContent from '../BFormGroupContent.vue'\nimport BFormGroupLabel from '../BFormGroupLabel.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst INPUTS = ['input', 'select', 'textarea']\n\nconst _props = withDefaults(defineProps<BFormGroupProps>(), {\n ariaInvalid: undefined,\n contentCols: undefined,\n contentColsLg: undefined,\n contentColsMd: undefined,\n contentColsSm: undefined,\n contentColsXl: undefined,\n description: undefined,\n disabled: false,\n feedbackAriaLive: 'assertive',\n floating: false,\n id: undefined,\n invalidFeedback: undefined,\n label: undefined,\n labelAlign: undefined,\n labelAlignLg: undefined,\n labelAlignMd: undefined,\n labelAlignSm: undefined,\n labelAlignXl: undefined,\n labelClass: undefined,\n labelCols: undefined,\n labelColsLg: undefined,\n labelColsMd: undefined,\n labelColsSm: undefined,\n labelColsXl: undefined,\n labelFor: undefined,\n labelSize: undefined,\n labelVisuallyHidden: false,\n state: null,\n tooltip: false,\n validFeedback: undefined,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormGroup')\nconst slots = defineSlots<BFormGroupSlots>()\n\nconst computedState = toRef(() => props.state)\nconst computedDisabled = toRef(() => props.disabled)\nconst childId = ref<Ref<string>[]>([])\nprovide(formGroupKey, (id) => {\n childId.value = [id]\n\n return {\n state: computedState,\n disabled: computedDisabled,\n }\n})\nconst computedLabelFor = computed(() => {\n if (props.labelFor !== undefined) return props.labelFor\n if (childId.value[0] && childId.value[0].value) return childId.value[0].value\n return null\n})\n\nconst breakPoints = ['xs', 'sm', 'md', 'lg', 'xl']\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getColProps = (props: any, prefix: string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n breakPoints.reduce((result: any, breakpoint: string) => {\n const suffix = suffixPropName(breakpoint === 'xs' ? '' : breakpoint, `${prefix}Cols`)\n let propValue = props[suffix]\n propValue = propValue === '' ? true : propValue || false\n\n if (!(typeof propValue === 'boolean') && propValue !== 'auto') {\n const val = Number.parseInt(propValue)\n propValue = Number.isNaN(val) ? 0 : val\n propValue = propValue > 0 ? propValue : false\n }\n\n if (propValue) {\n if (breakpoint === 'xs') {\n result[typeof propValue === 'boolean' ? 'col' : 'cols'] = propValue\n } else {\n result[breakpoint || (typeof propValue === 'boolean' ? 'col' : 'cols')] = propValue\n }\n }\n return result\n }, {})\n\nconst content = useTemplateRef<HTMLDivElement | InstanceType<typeof BCol> | null>('_content')\n\nconst contentColProps = computed(() => getColProps(props, 'content'))\nconst labelAlignClasses = computed(() =>\n ((props: BFormGroupProps, prefix: string) =>\n breakPoints.reduce((result: string[], breakpoint) => {\n const suffix = suffixPropName(\n breakpoint === 'xs' ? '' : breakpoint,\n `${prefix}Align`\n ) as keyof BFormGroupProps\n const propValue: string = props[suffix] || null\n if (propValue) {\n if (breakpoint === 'xs') {\n result.push(`text-${propValue}`)\n } else {\n result.push(`text-${breakpoint}-${propValue}`)\n }\n }\n return result\n }, []))(props, 'label')\n)\nconst labelColProps = computed(() => getColProps(props, 'label'))\nconst isHorizontal = computed(\n () => Object.keys(contentColProps.value).length > 0 || Object.keys(labelColProps.value).length > 0\n)\n\nconst stateClass = useStateClass(computedState)\nconst computedAriaInvalid = useAriaInvalid(() => props.ariaInvalid, computedState)\n\nconst onLegendClick = (event: Readonly<MouseEvent>) => {\n if (computedLabelFor.value || content.value === null) return\n\n const {target} = event\n const tagName = target ? (target as HTMLElement).tagName : ''\n\n if ([...INPUTS, 'a', 'button', 'label'].indexOf(tagName) !== -1) return\n\n // In horizontal mode, content.value is a BCol component instance, not a DOM element\n // Access the DOM element via $el property\n const contentElement =\n isHorizontal.value && content.value && '$el' in content.value\n ? (content.value.$el as HTMLElement)\n : (content.value as HTMLDivElement | null)\n if (!contentElement) return\n\n const inputs = [\n ...contentElement.querySelectorAll(INPUTS.map((v) => `${v}:not([disabled])`).join()),\n ].filter(isVisible)\n const [inp] = inputs\n if (inputs.length === 1 && inp instanceof HTMLElement) {\n attemptFocus(inp)\n }\n}\n\nconst computedId = useId(() => props.id)\nconst labelId = useId(undefined, '_BV_label_')\nconst labelTag = computed(() => (!computedLabelFor.value ? 'legend' : 'label'))\nconst labelClasses = computed(() => [\n isHorizontal.value ? 'col-form-label' : 'form-label',\n {\n 'bv-no-focus-ring': !computedLabelFor.value,\n 'col-form-label': isHorizontal.value || !computedLabelFor.value,\n 'pt-0': !isHorizontal.value && !computedLabelFor.value,\n 'd-block': !isHorizontal.value && computedLabelFor.value,\n [`col-form-label-${props.labelSize}`]: !!props.labelSize,\n 'visually-hidden': props.labelVisuallyHidden,\n },\n isHorizontal.value ? null : labelAlignClasses.value,\n props.labelClass,\n])\n\nconst invalidFeedbackId = useId(undefined, '_BV_feedback_invalid_')\n\nconst validFeedbackId = useId(undefined, '_BV_feedback_valid_')\nconst descriptionId = useId(undefined, '_BV_description_')\n\nconst isFieldset = computed(() => !computedLabelFor.value)\n\nconst labelShowing = computed(() => !!slots.label || !!props.label || isHorizontal.value)\n\nconst labelComponentProps = computed(() => ({\n label: props.label,\n labelTag: labelTag.value,\n labelId: labelId.value,\n computedLabelFor: computedLabelFor.value,\n isFieldset: isFieldset.value,\n isHorizontal: isHorizontal.value,\n labelColProps: labelColProps.value,\n labelAlignClasses: labelAlignClasses.value,\n labelClasses: labelClasses.value,\n}))\n\nconst contentComponentProps = computed(() => ({\n invalidFeedback: props.invalidFeedback,\n validFeedback: props.validFeedback,\n description: props.description,\n feedbackAriaLive: props.feedbackAriaLive,\n state: computedState.value,\n tooltip: props.tooltip,\n invalidFeedbackId: invalidFeedbackId.value,\n validFeedbackId: validFeedbackId.value,\n descriptionId: descriptionId.value,\n}))\n</script>\n","<template>\n <component\n :is=\"isFieldset ? 'fieldset' : 'div'\"\n :id=\"computedId\"\n :disabled=\"isFieldset ? props.disabled : null\"\n :role=\"isFieldset ? null : 'group'\"\n :aria-invalid=\"computedAriaInvalid\"\n :aria-labelledby=\"isFieldset && isHorizontal ? labelId : null\"\n v-bind=\"$attrs\"\n :class=\"[stateClass, {'was-validated': props.validated}]\"\n class=\"b-form-group\"\n >\n <!-- End of definitions -->\n <BFormRow v-if=\"isHorizontal\">\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <BCol v-bind=\"contentColProps\" ref=\"_content\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </BCol>\n </BFormRow>\n <template v-else>\n <div v-if=\"props.floating && !isHorizontal\" ref=\"_content\" class=\"form-floating\">\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </div>\n <template v-else>\n <BFormGroupLabel\n v-if=\"labelShowing\"\n v-bind=\"labelComponentProps\"\n @legend-click=\"onLegendClick\"\n >\n <template v-if=\"slots.label\" #label>\n <slot name=\"label\" />\n </template>\n </BFormGroupLabel>\n <slot\n :id=\"computedId\"\n :aria-describedby=\"null\"\n :description-id=\"descriptionId\"\n :label-id=\"labelId\"\n />\n <BFormGroupContent v-bind=\"contentComponentProps\">\n <template v-if=\"slots['invalid-feedback']\" #invalid-feedback>\n <slot name=\"invalid-feedback\" />\n </template>\n <template v-if=\"slots['valid-feedback']\" #valid-feedback>\n <slot name=\"valid-feedback\" />\n </template>\n <template v-if=\"slots.description\" #description>\n <slot name=\"description\" />\n </template>\n </BFormGroupContent>\n </template>\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, provide, type Ref, ref, toRef, useTemplateRef} from 'vue'\nimport {useAriaInvalid} from '../../composables/useAriaInvalid'\nimport {attemptFocus, isVisible} from '../../utils/dom'\nimport BCol from '../BContainer/BCol.vue'\nimport BFormRow from '../BForm/BFormRow.vue'\nimport {suffixPropName} from '../../utils/props'\nimport {useStateClass} from '../../composables/useStateClass'\nimport {useId} from '../../composables/useId'\nimport type {BFormGroupProps, BFormGroupSlots} from '../../types'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {formGroupKey} from '../../utils/keys'\nimport BFormGroupContent from '../BFormGroupContent.vue'\nimport BFormGroupLabel from '../BFormGroupLabel.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst INPUTS = ['input', 'select', 'textarea']\n\nconst _props = withDefaults(defineProps<BFormGroupProps>(), {\n ariaInvalid: undefined,\n contentCols: undefined,\n contentColsLg: undefined,\n contentColsMd: undefined,\n contentColsSm: undefined,\n contentColsXl: undefined,\n description: undefined,\n disabled: false,\n feedbackAriaLive: 'assertive',\n floating: false,\n id: undefined,\n invalidFeedback: undefined,\n label: undefined,\n labelAlign: undefined,\n labelAlignLg: undefined,\n labelAlignMd: undefined,\n labelAlignSm: undefined,\n labelAlignXl: undefined,\n labelClass: undefined,\n labelCols: undefined,\n labelColsLg: undefined,\n labelColsMd: undefined,\n labelColsSm: undefined,\n labelColsXl: undefined,\n labelFor: undefined,\n labelSize: undefined,\n labelVisuallyHidden: false,\n state: null,\n tooltip: false,\n validFeedback: undefined,\n validated: false,\n})\nconst props = useDefaults(_props, 'BFormGroup')\nconst slots = defineSlots<BFormGroupSlots>()\n\nconst computedState = toRef(() => props.state)\nconst computedDisabled = toRef(() => props.disabled)\nconst childId = ref<Ref<string>[]>([])\nprovide(formGroupKey, (id) => {\n childId.value = [id]\n\n return {\n state: computedState,\n disabled: computedDisabled,\n }\n})\nconst computedLabelFor = computed(() => {\n if (props.labelFor !== undefined) return props.labelFor\n if (childId.value[0] && childId.value[0].value) return childId.value[0].value\n return null\n})\n\nconst breakPoints = ['xs', 'sm', 'md', 'lg', 'xl']\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getColProps = (props: any, prefix: string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n breakPoints.reduce((result: any, breakpoint: string) => {\n const suffix = suffixPropName(breakpoint === 'xs' ? '' : breakpoint, `${prefix}Cols`)\n let propValue = props[suffix]\n propValue = propValue === '' ? true : propValue || false\n\n if (!(typeof propValue === 'boolean') && propValue !== 'auto') {\n const val = Number.parseInt(propValue)\n propValue = Number.isNaN(val) ? 0 : val\n propValue = propValue > 0 ? propValue : false\n }\n\n if (propValue) {\n if (breakpoint === 'xs') {\n result[typeof propValue === 'boolean' ? 'col' : 'cols'] = propValue\n } else {\n result[breakpoint || (typeof propValue === 'boolean' ? 'col' : 'cols')] = propValue\n }\n }\n return result\n }, {})\n\nconst content = useTemplateRef<HTMLDivElement | InstanceType<typeof BCol> | null>('_content')\n\nconst contentColProps = computed(() => getColProps(props, 'content'))\nconst labelAlignClasses = computed(() =>\n ((props: BFormGroupProps, prefix: string) =>\n breakPoints.reduce((result: string[], breakpoint) => {\n const suffix = suffixPropName(\n breakpoint === 'xs' ? '' : breakpoint,\n `${prefix}Align`\n ) as keyof BFormGroupProps\n const propValue: string = props[suffix] || null\n if (propValue) {\n if (breakpoint === 'xs') {\n result.push(`text-${propValue}`)\n } else {\n result.push(`text-${breakpoint}-${propValue}`)\n }\n }\n return result\n }, []))(props, 'label')\n)\nconst labelColProps = computed(() => getColProps(props, 'label'))\nconst isHorizontal = computed(\n () => Object.keys(contentColProps.value).length > 0 || Object.keys(labelColProps.value).length > 0\n)\n\nconst stateClass = useStateClass(computedState)\nconst computedAriaInvalid = useAriaInvalid(() => props.ariaInvalid, computedState)\n\nconst onLegendClick = (event: Readonly<MouseEvent>) => {\n if (computedLabelFor.value || content.value === null) return\n\n const {target} = event\n const tagName = target ? (target as HTMLElement).tagName : ''\n\n if ([...INPUTS, 'a', 'button', 'label'].indexOf(tagName) !== -1) return\n\n // In horizontal mode, content.value is a BCol component instance, not a DOM element\n // Access the DOM element via $el property\n const contentElement =\n isHorizontal.value && content.value && '$el' in content.value\n ? (content.value.$el as HTMLElement)\n : (content.value as HTMLDivElement | null)\n if (!contentElement) return\n\n const inputs = [\n ...contentElement.querySelectorAll(INPUTS.map((v) => `${v}:not([disabled])`).join()),\n ].filter(isVisible)\n const [inp] = inputs\n if (inputs.length === 1 && inp instanceof HTMLElement) {\n attemptFocus(inp)\n }\n}\n\nconst computedId = useId(() => props.id)\nconst labelId = useId(undefined, '_BV_label_')\nconst labelTag = computed(() => (!computedLabelFor.value ? 'legend' : 'label'))\nconst labelClasses = computed(() => [\n isHorizontal.value ? 'col-form-label' : 'form-label',\n {\n 'bv-no-focus-ring': !computedLabelFor.value,\n 'col-form-label': isHorizontal.value || !computedLabelFor.value,\n 'pt-0': !isHorizontal.value && !computedLabelFor.value,\n 'd-block': !isHorizontal.value && computedLabelFor.value,\n [`col-form-label-${props.labelSize}`]: !!props.labelSize,\n 'visually-hidden': props.labelVisuallyHidden,\n },\n isHorizontal.value ? null : labelAlignClasses.value,\n props.labelClass,\n])\n\nconst invalidFeedbackId = useId(undefined, '_BV_feedback_invalid_')\n\nconst validFeedbackId = useId(undefined, '_BV_feedback_valid_')\nconst descriptionId = useId(undefined, '_BV_description_')\n\nconst isFieldset = computed(() => !computedLabelFor.value)\n\nconst labelShowing = computed(() => !!slots.label || !!props.label || isHorizontal.value)\n\nconst labelComponentProps = computed(() => ({\n label: props.label,\n labelTag: labelTag.value,\n labelId: labelId.value,\n computedLabelFor: computedLabelFor.value,\n isFieldset: isFieldset.value,\n isHorizontal: isHorizontal.value,\n labelColProps: labelColProps.value,\n labelAlignClasses: labelAlignClasses.value,\n labelClasses: labelClasses.value,\n}))\n\nconst contentComponentProps = computed(() => ({\n invalidFeedback: props.invalidFeedback,\n validFeedback: props.validFeedback,\n description: props.description,\n feedbackAriaLive: props.feedbackAriaLive,\n state: computedState.value,\n tooltip: props.tooltip,\n invalidFeedbackId: invalidFeedbackId.value,\n validFeedbackId: validFeedbackId.value,\n descriptionId: descriptionId.value,\n}))\n</script>\n"],"mappings":"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"}