bootstrap-vue-next 0.26.30 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/{BCarouselSlide.vue_vue_type_script_setup_true_lang-Dg7LeUDK.js → BCarouselSlide.vue_vue_type_script_setup_true_lang-D7TF_rjM.js} +2 -2
  2. package/dist/{BCarouselSlide.vue_vue_type_script_setup_true_lang-Dg7LeUDK.js.map → BCarouselSlide.vue_vue_type_script_setup_true_lang-D7TF_rjM.js.map} +1 -1
  3. package/dist/{BCarouselSlide.vue_vue_type_script_setup_true_lang-DvJdLgu_.mjs → BCarouselSlide.vue_vue_type_script_setup_true_lang-DyQMUAVG.mjs} +4 -4
  4. package/dist/{BCarouselSlide.vue_vue_type_script_setup_true_lang-DvJdLgu_.mjs.map → BCarouselSlide.vue_vue_type_script_setup_true_lang-DyQMUAVG.mjs.map} +1 -1
  5. package/dist/BDropdown-BBciwq_T.js +2 -0
  6. package/dist/BDropdown-BBciwq_T.js.map +1 -0
  7. package/dist/{BDropdown-BucS94bu.mjs → BDropdown-DlCQsS9y.mjs} +6 -6
  8. package/dist/BDropdown-DlCQsS9y.mjs.map +1 -0
  9. package/dist/{BNavText.vue_vue_type_script_setup_true_lang-DE6m-KYq.mjs → BNavText.vue_vue_type_script_setup_true_lang-Bq76AlQQ.mjs} +4 -4
  10. package/dist/{BNavText.vue_vue_type_script_setup_true_lang-DE6m-KYq.mjs.map → BNavText.vue_vue_type_script_setup_true_lang-Bq76AlQQ.mjs.map} +1 -1
  11. package/dist/{BNavText.vue_vue_type_script_setup_true_lang-Dx7AVtvl.js → BNavText.vue_vue_type_script_setup_true_lang-DICyqAdD.js} +2 -2
  12. package/dist/{BNavText.vue_vue_type_script_setup_true_lang-Dx7AVtvl.js.map → BNavText.vue_vue_type_script_setup_true_lang-DICyqAdD.js.map} +1 -1
  13. package/dist/{BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-DxYnyvsD.mjs → BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-B-n-7UQK.mjs} +3 -3
  14. package/dist/{BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-DxYnyvsD.mjs.map → BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-B-n-7UQK.mjs.map} +1 -1
  15. package/dist/{BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-CU8FQiDd.js → BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-BIVQbwIJ.js} +2 -2
  16. package/dist/{BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-CU8FQiDd.js.map → BPopoverOrchestrator.vue_vue_type_script_setup_true_lang-BIVQbwIJ.js.map} +1 -1
  17. package/dist/{BTooltip.vue_vue_type_script_setup_true_lang-B1N8oaI-.mjs → BTooltip.vue_vue_type_script_setup_true_lang-CQUUOSBP.mjs} +2 -2
  18. package/dist/{BTooltip.vue_vue_type_script_setup_true_lang-B1N8oaI-.mjs.map → BTooltip.vue_vue_type_script_setup_true_lang-CQUUOSBP.mjs.map} +1 -1
  19. package/dist/{BTooltip.vue_vue_type_script_setup_true_lang-DkOirpCf.js → BTooltip.vue_vue_type_script_setup_true_lang-oyqFrBBh.js} +2 -2
  20. package/dist/{BTooltip.vue_vue_type_script_setup_true_lang-DkOirpCf.js.map → BTooltip.vue_vue_type_script_setup_true_lang-oyqFrBBh.js.map} +1 -1
  21. package/dist/bootstrap-vue-next.css +1 -1
  22. package/dist/bootstrap-vue-next.mjs +7 -7
  23. package/dist/bootstrap-vue-next.umd.js +1 -1
  24. package/dist/{floatingUi-CsxgENev.mjs → floatingUi-CNPoh8hs.mjs} +34 -9
  25. package/dist/{floatingUi-CsxgENev.mjs.map → floatingUi-CNPoh8hs.mjs.map} +1 -1
  26. package/dist/{floatingUi-CDc5Gn8w.js → floatingUi-CYIctREh.js} +2 -2
  27. package/dist/{floatingUi-CDc5Gn8w.js.map → floatingUi-CYIctREh.js.map} +1 -1
  28. package/dist/index-CWsKyx47.js.map +1 -1
  29. package/dist/{index-CqMHwwd-.js → index-CYW8HZEL.js} +2 -2
  30. package/dist/index-CYW8HZEL.js.map +1 -0
  31. package/dist/{index-CmuInluW.mjs → index-DxCtoeO2.mjs} +7 -7
  32. package/dist/{index-CmuInluW.mjs.map → index-DxCtoeO2.mjs.map} +1 -1
  33. package/dist/index-sLCKmIWG.mjs.map +1 -1
  34. package/dist/src/components/BCarousel/BCarousel.vue.d.mts +4 -4
  35. package/dist/src/components/BCarousel/BCarousel.vue.d.ts +4 -4
  36. package/dist/src/components/BCarousel/index.mjs +1 -1
  37. package/dist/src/components/BCarousel/index.umd.js +1 -1
  38. package/dist/src/components/BDropdown/BDropdown.vue.d.mts +2 -2
  39. package/dist/src/components/BDropdown/BDropdown.vue.d.ts +2 -2
  40. package/dist/src/components/BDropdown/index.mjs +1 -1
  41. package/dist/src/components/BDropdown/index.umd.js +1 -1
  42. package/dist/src/components/BNav/BNavItemDropdown.vue.d.mts +7 -7
  43. package/dist/src/components/BNav/BNavItemDropdown.vue.d.ts +7 -7
  44. package/dist/src/components/BNav/index.mjs +1 -1
  45. package/dist/src/components/BNav/index.umd.js +1 -1
  46. package/dist/src/components/BPopover/index.mjs +2 -2
  47. package/dist/src/components/BPopover/index.umd.js +1 -1
  48. package/dist/src/components/BTooltip/index.mjs +1 -1
  49. package/dist/src/components/BTooltip/index.umd.js +1 -1
  50. package/dist/src/components/index.mjs +6 -6
  51. package/dist/src/components/index.umd.js +1 -1
  52. package/dist/src/directives/BPopover/index.mjs +1 -1
  53. package/dist/src/directives/BPopover/index.umd.js +1 -1
  54. package/dist/src/directives/BTooltip/index.mjs +1 -1
  55. package/dist/src/directives/BTooltip/index.umd.js +1 -1
  56. package/dist/src/plugins/createBootstrap/index.d.mts +5 -1
  57. package/dist/src/plugins/createBootstrap/index.d.ts +5 -1
  58. package/dist/src/plugins/createBootstrap/index.mjs.map +1 -1
  59. package/dist/src/plugins/createBootstrap/index.umd.js.map +1 -1
  60. package/dist/src/types/BootstrapVueOptions.d.mts +5 -1
  61. package/dist/src/types/BootstrapVueOptions.d.ts +5 -1
  62. package/dist/src/utils/floatingUi.d.mts +1 -0
  63. package/dist/src/utils/floatingUi.d.ts +1 -0
  64. package/package.json +2 -2
  65. package/dist/BDropdown-BucS94bu.mjs.map +0 -1
  66. package/dist/BDropdown-DGLCwAKK.js +0 -2
  67. package/dist/BDropdown-DGLCwAKK.js.map +0 -1
  68. package/dist/index-CqMHwwd-.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("vue"),l=require("./classes-CXBJXuVd.js"),t=require("./useId-BOa4n5pr.js"),a=require("./index-CNL2tI0w.js"),o=require("./useDefaults-Bq2idhQU.js"),r=require("./keys-C2BcfuxJ.js"),n=require("./index-BqHkgtNq.js"),u=require("./BImg.vue_vue_type_script_setup_true_lang-jzrMwcU2.js"),i=require("./dom-Dzr6gmPm.js"),s=["id"],d=["aria-label","aria-owns"],c=["aria-current","aria-label","aria-controls","aria-describedby","onClick"],v={ref:"_relatedTarget",class:"carousel-inner"},f={class:"visually-hidden"},m={class:"visually-hidden"},p=e.defineComponent({__name:"BCarousel",props:e.mergeModels({background:{default:void 0},controls:{type:Boolean,default:!1},controlsNextText:{default:"Next"},controlsPrevText:{default:"Previous"},fade:{type:Boolean,default:!1},id:{default:void 0},imgHeight:{default:void 0},imgWidth:{default:void 0},indicators:{type:Boolean,default:!1},indicatorsButtonLabel:{default:"Slide"},interval:{default:5e3},labelIndicators:{default:"Select a slide to display"},keyboard:{type:Boolean,default:!0},noAnimation:{type:Boolean,default:!1},noHoverPause:{type:Boolean,default:!1},noTouch:{type:Boolean,default:!1},noWrap:{type:Boolean,default:!1},ride:{type:[Boolean,String],default:!1},rideReverse:{type:Boolean,default:!1},touchThreshold:{default:50}},{modelValue:{default:0},modelModifiers:{}}),emits:e.mergeModels(["slide","slid","click:prev","click:next"],["update:modelValue"]),setup(u,{expose:i,emit:p}){const g=u,k=o.useDefaults(g,"BCarousel"),y=p,h=e.useSlots(),B=t.useId((()=>k.id),"carousel"),b=t.useId(void 0,"carousel-button-ownership"),_=e.useModel(u,"modelValue"),S=e.useTemplateRef("_slideValues"),C=n.useToNumber((()=>k.touchThreshold)),x=e.ref(null);e.onMounted((()=>{var e,l;x.value=(null==(l=null==(e=S.value)?void 0:e.find((e=>"none"!==e.$el.style.display)))?void 0:l._interval)??null}));const V=n.useToNumber((()=>x.value??k.interval)),E=e.ref(!1),T=e.ref(!1),w=e.ref(!0),N=e.useTemplateRef("_relatedTarget"),$=e.useTemplateRef("_element"),D=e.ref(_.value),j=a.useElementHover($),I=e.computed((()=>`carousel-item carousel-item-${w.value?"prev":"next"} carousel-item-${w.value?"end":"start"}`)),R=e.computed((()=>"carousel-item active carousel-item-"+(w.value?"start":"end"))),{pause:q,resume:A}=n.useIntervalFn((()=>{k.rideReverse?M():F()}),V,{immediate:"carousel"===k.ride}),L=e.computed((()=>!0===k.ride&&!0===T.value||"carousel"===k.ride)),W=e.computed((()=>{return e=h.default,l="BCarouselSlide",((null==e?void 0:e())??[]).reduce(((e,l)=>("symbol"==typeof l.type?e=e.concat(l.children):e.push(l),e)),[]).filter((e=>{var t;return(null==(t=e.type)?void 0:t.__name)===l}));var e,l})),H=e.computed((()=>({"carousel-fade":k.fade}))),P=e=>{var t;return new l.BvCarouselEvent(e,{componentId:B.value,cancelable:!1,target:$.value,direction:w.value?"right":"left",from:D.value,to:_.value,relatedTarget:(null==(t=N.value)?void 0:t.children[_.value])??null})},z=e=>{if(!0!==E.value)if(!0===k.ride&&(T.value=!0),!0===L.value&&A(),w.value=!(e<_.value),e>=W.value.length){if(k.noWrap)return;_.value=0}else if(e<0){if(k.noWrap)return;_.value=W.value.length-1}else D.value=_.value,_.value=e},M=()=>{z(_.value-1)},F=()=>{z(_.value+1)},K=e=>{!1!==k.keyboard&&e()},{lengthX:U}=a.useSwipe($,{passive:!0,onSwipeStart(){!0!==k.noTouch&&q()},onSwipeEnd(){if(!0===k.noTouch)return;const e=()=>{!1!==L.value&&A()};if(U.value>=C.value)return F(),void e();U.value<=-C.value&&(M(),e())}}),X=()=>{y("slide",P("slide")),E.value=!0},G=()=>{y("slid",P("slid")),E.value=!1},J=e=>{0!==_.value&&e.classList.add("carousel-item")},O=e=>{var l,t;x.value=(null==(t=null==(l=S.value)?void 0:l.find((l=>l.$el===e)))?void 0:t._interval)??null};a.onKeyStroke("ArrowLeft",(()=>{K(M)}),{target:$}),a.onKeyStroke("ArrowRight",(()=>{K(F)}),{target:$}),e.watch((()=>k.ride),(()=>{T.value=!1})),e.watch(j,(e=>{e?k.noHoverPause||q():L.value&&A()}));const Q=e=>{y("click:prev",e),e.defaultPrevented||M()},Y=e=>{y("click:next",e),e.defaultPrevented||F()};return i({next:F,pause:q,prev:M,resume:A}),e.provide(r.carouselInjectionKey,{background:e.toRef((()=>k.background)),width:e.toRef((()=>k.imgWidth)),height:e.toRef((()=>k.imgHeight))}),(l,t)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(B),ref:"_element",class:e.normalizeClass(["carousel slide pointer-event",H.value])},[e.unref(k).indicators?(e.openBlock(),e.createElementBlock("div",{key:0,class:"carousel-indicators","aria-label":e.unref(k).labelIndicators,"aria-owns":e.unref(b)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value.length,((l,t)=>{var a;return e.openBlock(),e.createElementBlock("button",{key:t,type:"button","data-bs-target":"",class:e.normalizeClass(t===_.value?"active":""),"aria-current":t===_.value||void 0,"aria-label":`${e.unref(k).indicatorsButtonLabel} ${t}`,"aria-controls":e.unref(b),"aria-describedby":null==(a=e.unref(S))?void 0:a[t]._id,onClick:e=>z(t)},null,10,c)})),128))],8,d)):e.createCommentVNode("",!0),e.createElementVNode("div",v,[e.createVNode(e.TransitionGroup,{"enter-from-class":I.value,"enter-active-class":I.value,"enter-to-class":I.value,"leave-from-class":R.value,"leave-active-class":R.value,"leave-to-class":R.value,onBeforeLeave:X,onAfterLeave:G,onAfterEnter:J,onEnter:O},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value,((l,t)=>e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(l),{key:t,ref_for:!0,ref:"_slideValues",class:e.normalizeClass({active:t===_.value&&!1===E.value}),style:e.normalizeStyle(e.unref(k).noAnimation&&{transition:"none"})},null,8,["class","style"])),[[e.vShow,t===_.value]]))),128))])),_:1},8,["enter-from-class","enter-active-class","enter-to-class","leave-from-class","leave-active-class","leave-to-class"])],512),e.unref(k).controls?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{class:"carousel-control-prev",type:"button",onClick:Q},[t[0]||(t[0]=e.createElementVNode("span",{class:"carousel-control-prev-icon","aria-hidden":"true"},null,-1)),e.createElementVNode("span",f,e.toDisplayString(e.unref(k).controlsPrevText),1)]),e.createElementVNode("button",{class:"carousel-control-next",type:"button",onClick:Y},[t[1]||(t[1]=e.createElementVNode("span",{class:"carousel-control-next-icon","aria-hidden":"true"},null,-1)),e.createElementVNode("span",m,e.toDisplayString(e.unref(k).controlsNextText),1)])],64)):e.createCommentVNode("",!0)],10,s))}}),g=["id"],k=e.defineComponent({__name:"BCarouselSlide",props:{background:{default:void 0},caption:{default:void 0},captionTag:{default:"h3"},contentTag:{default:"div"},contentVisibleUp:{default:void 0},id:{default:void 0},imgAlt:{default:void 0},imgBlank:{type:Boolean,default:!1},imgBlankColor:{default:"transparent"},imgHeight:{default:void 0},imgSrc:{default:void 0},imgSrcset:{default:void 0},imgWidth:{default:void 0},interval:{default:void 0},text:{default:void 0},textTag:{default:"p"}},setup(l,{expose:a}){const n=l,s=o.useDefaults(n,"BCarouselSlide"),d=e.useSlots(),c=t.useId((()=>s.id),"carousel-slide"),v=e.inject(r.carouselInjectionKey,null),f=e.computed((()=>s.text||!i.isEmptySlot(d.text))),m=e.computed((()=>s.caption||!i.isEmptySlot(d.caption))),p=e.computed((()=>f.value||m.value||!i.isEmptySlot(d.default))),k=e.computed((()=>({background:`${s.background||(null==v?void 0:v.background.value)||"rgb(171, 171, 171)"} none repeat scroll 0% 0%`}))),y=e.computed((()=>({"d-none":void 0!==s.contentVisibleUp,[`d-${s.contentVisibleUp}-block`]:void 0!==s.contentVisibleUp})));return a({_interval:e.toRef((()=>s.interval)),_id:c}),(l,t)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(c),class:"carousel-item",style:e.normalizeStyle(k.value)},[e.renderSlot(l.$slots,"img",{},(()=>{var l,t;return[e.createVNode(u._sfc_main,{class:"d-block w-100",alt:e.unref(s).imgAlt,srcset:e.unref(s).imgSrcset,src:e.unref(s).imgSrc,width:e.unref(s).imgWidth||(null==(l=e.unref(v))?void 0:l.width.value),height:e.unref(s).imgHeight||(null==(t=e.unref(v))?void 0:t.height.value),blank:e.unref(s).imgBlank,"blank-color":e.unref(s).imgBlankColor},null,8,["alt","srcset","src","width","height","blank","blank-color"])]})),p.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(s).contentTag),{key:0,class:e.normalizeClass(["carousel-caption",y.value])},{default:e.withCtx((()=>[m.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(s).captionTag),{key:0},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"caption",{},(()=>[e.createElementVNode("span",null,e.toDisplayString(e.unref(s).caption),1)]))])),_:3})):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(s).textTag),{key:1},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"text",{},(()=>[e.createElementVNode("span",null,e.toDisplayString(e.unref(s).text),1)]))])),_:3})):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"default")])),_:3},8,["class"])):e.createCommentVNode("",!0)],12,g))}});exports._sfc_main=p,exports._sfc_main$1=k;
2
- //# sourceMappingURL=BCarouselSlide.vue_vue_type_script_setup_true_lang-Dg7LeUDK.js.map
1
+ "use strict";const e=require("vue"),l=require("./classes-CXBJXuVd.js"),t=require("./useId-BOa4n5pr.js"),a=require("./index-CNL2tI0w.js"),o=require("./useDefaults-Bq2idhQU.js"),r=require("./keys-C2BcfuxJ.js"),n=require("./index-BqHkgtNq.js"),u=require("./BImg.vue_vue_type_script_setup_true_lang-jzrMwcU2.js"),i=require("./dom-Dzr6gmPm.js"),s=["id"],d=["aria-label","aria-owns"],c=["aria-current","aria-label","aria-controls","aria-describedby","onClick"],v={ref:"_relatedTarget",class:"carousel-inner"},f={class:"visually-hidden"},m={class:"visually-hidden"},p=e.defineComponent({__name:"BCarousel",props:e.mergeModels({background:{default:void 0},controls:{type:Boolean,default:!1},controlsNextText:{default:"Next"},controlsPrevText:{default:"Previous"},fade:{type:Boolean,default:!1},id:{default:void 0},imgHeight:{default:void 0},imgWidth:{default:void 0},indicators:{type:Boolean,default:!1},indicatorsButtonLabel:{default:"Slide"},interval:{default:5e3},labelIndicators:{default:"Select a slide to display"},keyboard:{type:Boolean,default:!0},noAnimation:{type:Boolean,default:!1},noHoverPause:{type:Boolean,default:!1},noTouch:{type:Boolean,default:!1},noWrap:{type:Boolean,default:!1},ride:{type:[Boolean,String],default:!1},rideReverse:{type:Boolean,default:!1},touchThreshold:{default:50}},{modelValue:{default:0},modelModifiers:{}}),emits:e.mergeModels(["slide","slid","prev-click","next-click"],["update:modelValue"]),setup(u,{expose:i,emit:p}){const g=u,k=o.useDefaults(g,"BCarousel"),y=p,h=e.useSlots(),B=t.useId((()=>k.id),"carousel"),b=t.useId(void 0,"carousel-button-ownership"),_=e.useModel(u,"modelValue"),S=e.useTemplateRef("_slideValues"),C=n.useToNumber((()=>k.touchThreshold)),x=e.ref(null);e.onMounted((()=>{var e,l;x.value=(null==(l=null==(e=S.value)?void 0:e.find((e=>"none"!==e.$el.style.display)))?void 0:l._interval)??null}));const V=n.useToNumber((()=>x.value??k.interval)),E=e.ref(!1),T=e.ref(!1),w=e.ref(!0),N=e.useTemplateRef("_relatedTarget"),$=e.useTemplateRef("_element"),D=e.ref(_.value),j=a.useElementHover($),I=e.computed((()=>`carousel-item carousel-item-${w.value?"prev":"next"} carousel-item-${w.value?"end":"start"}`)),R=e.computed((()=>"carousel-item active carousel-item-"+(w.value?"start":"end"))),{pause:q,resume:A}=n.useIntervalFn((()=>{k.rideReverse?M():F()}),V,{immediate:"carousel"===k.ride}),L=e.computed((()=>!0===k.ride&&!0===T.value||"carousel"===k.ride)),W=e.computed((()=>{return e=h.default,l="BCarouselSlide",((null==e?void 0:e())??[]).reduce(((e,l)=>("symbol"==typeof l.type?e=e.concat(l.children):e.push(l),e)),[]).filter((e=>{var t;return(null==(t=e.type)?void 0:t.__name)===l}));var e,l})),H=e.computed((()=>({"carousel-fade":k.fade}))),P=e=>{var t;return new l.BvCarouselEvent(e,{componentId:B.value,cancelable:!1,target:$.value,direction:w.value?"right":"left",from:D.value,to:_.value,relatedTarget:(null==(t=N.value)?void 0:t.children[_.value])??null})},z=e=>{if(!0!==E.value)if(!0===k.ride&&(T.value=!0),!0===L.value&&A(),w.value=!(e<_.value),e>=W.value.length){if(k.noWrap)return;_.value=0}else if(e<0){if(k.noWrap)return;_.value=W.value.length-1}else D.value=_.value,_.value=e},M=()=>{z(_.value-1)},F=()=>{z(_.value+1)},K=e=>{!1!==k.keyboard&&e()},{lengthX:U}=a.useSwipe($,{passive:!0,onSwipeStart(){!0!==k.noTouch&&q()},onSwipeEnd(){if(!0===k.noTouch)return;const e=()=>{!1!==L.value&&A()};if(U.value>=C.value)return F(),void e();U.value<=-C.value&&(M(),e())}}),X=()=>{y("slide",P("slide")),E.value=!0},G=()=>{y("slid",P("slid")),E.value=!1},J=e=>{0!==_.value&&e.classList.add("carousel-item")},O=e=>{var l,t;x.value=(null==(t=null==(l=S.value)?void 0:l.find((l=>l.$el===e)))?void 0:t._interval)??null};a.onKeyStroke("ArrowLeft",(()=>{K(M)}),{target:$}),a.onKeyStroke("ArrowRight",(()=>{K(F)}),{target:$}),e.watch((()=>k.ride),(()=>{T.value=!1})),e.watch(j,(e=>{e?k.noHoverPause||q():L.value&&A()}));const Q=e=>{y("prev-click",e),e.defaultPrevented||M()},Y=e=>{y("next-click",e),e.defaultPrevented||F()};return i({next:F,pause:q,prev:M,resume:A}),e.provide(r.carouselInjectionKey,{background:e.toRef((()=>k.background)),width:e.toRef((()=>k.imgWidth)),height:e.toRef((()=>k.imgHeight))}),(l,t)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(B),ref:"_element",class:e.normalizeClass(["carousel slide pointer-event",H.value])},[e.unref(k).indicators?(e.openBlock(),e.createElementBlock("div",{key:0,class:"carousel-indicators","aria-label":e.unref(k).labelIndicators,"aria-owns":e.unref(b)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value.length,((l,t)=>{var a;return e.openBlock(),e.createElementBlock("button",{key:t,type:"button","data-bs-target":"",class:e.normalizeClass(t===_.value?"active":""),"aria-current":t===_.value||void 0,"aria-label":`${e.unref(k).indicatorsButtonLabel} ${t}`,"aria-controls":e.unref(b),"aria-describedby":null==(a=e.unref(S))?void 0:a[t]._id,onClick:e=>z(t)},null,10,c)})),128))],8,d)):e.createCommentVNode("",!0),e.createElementVNode("div",v,[e.createVNode(e.TransitionGroup,{"enter-from-class":I.value,"enter-active-class":I.value,"enter-to-class":I.value,"leave-from-class":R.value,"leave-active-class":R.value,"leave-to-class":R.value,onBeforeLeave:X,onAfterLeave:G,onAfterEnter:J,onEnter:O},{default:e.withCtx((()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value,((l,t)=>e.withDirectives((e.openBlock(),e.createBlock(e.resolveDynamicComponent(l),{key:t,ref_for:!0,ref:"_slideValues",class:e.normalizeClass({active:t===_.value&&!1===E.value}),style:e.normalizeStyle(e.unref(k).noAnimation&&{transition:"none"})},null,8,["class","style"])),[[e.vShow,t===_.value]]))),128))])),_:1},8,["enter-from-class","enter-active-class","enter-to-class","leave-from-class","leave-active-class","leave-to-class"])],512),e.unref(k).controls?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("button",{class:"carousel-control-prev",type:"button",onClick:Q},[t[0]||(t[0]=e.createElementVNode("span",{class:"carousel-control-prev-icon","aria-hidden":"true"},null,-1)),e.createElementVNode("span",f,e.toDisplayString(e.unref(k).controlsPrevText),1)]),e.createElementVNode("button",{class:"carousel-control-next",type:"button",onClick:Y},[t[1]||(t[1]=e.createElementVNode("span",{class:"carousel-control-next-icon","aria-hidden":"true"},null,-1)),e.createElementVNode("span",m,e.toDisplayString(e.unref(k).controlsNextText),1)])],64)):e.createCommentVNode("",!0)],10,s))}}),g=["id"],k=e.defineComponent({__name:"BCarouselSlide",props:{background:{default:void 0},caption:{default:void 0},captionTag:{default:"h3"},contentTag:{default:"div"},contentVisibleUp:{default:void 0},id:{default:void 0},imgAlt:{default:void 0},imgBlank:{type:Boolean,default:!1},imgBlankColor:{default:"transparent"},imgHeight:{default:void 0},imgSrc:{default:void 0},imgSrcset:{default:void 0},imgWidth:{default:void 0},interval:{default:void 0},text:{default:void 0},textTag:{default:"p"}},setup(l,{expose:a}){const n=l,s=o.useDefaults(n,"BCarouselSlide"),d=e.useSlots(),c=t.useId((()=>s.id),"carousel-slide"),v=e.inject(r.carouselInjectionKey,null),f=e.computed((()=>s.text||!i.isEmptySlot(d.text))),m=e.computed((()=>s.caption||!i.isEmptySlot(d.caption))),p=e.computed((()=>f.value||m.value||!i.isEmptySlot(d.default))),k=e.computed((()=>({background:`${s.background||(null==v?void 0:v.background.value)||"rgb(171, 171, 171)"} none repeat scroll 0% 0%`}))),y=e.computed((()=>({"d-none":void 0!==s.contentVisibleUp,[`d-${s.contentVisibleUp}-block`]:void 0!==s.contentVisibleUp})));return a({_interval:e.toRef((()=>s.interval)),_id:c}),(l,t)=>(e.openBlock(),e.createElementBlock("div",{id:e.unref(c),class:"carousel-item",style:e.normalizeStyle(k.value)},[e.renderSlot(l.$slots,"img",{},(()=>{var l,t;return[e.createVNode(u._sfc_main,{class:"d-block w-100",alt:e.unref(s).imgAlt,srcset:e.unref(s).imgSrcset,src:e.unref(s).imgSrc,width:e.unref(s).imgWidth||(null==(l=e.unref(v))?void 0:l.width.value),height:e.unref(s).imgHeight||(null==(t=e.unref(v))?void 0:t.height.value),blank:e.unref(s).imgBlank,"blank-color":e.unref(s).imgBlankColor},null,8,["alt","srcset","src","width","height","blank","blank-color"])]})),p.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(s).contentTag),{key:0,class:e.normalizeClass(["carousel-caption",y.value])},{default:e.withCtx((()=>[m.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(s).captionTag),{key:0},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"caption",{},(()=>[e.createElementVNode("span",null,e.toDisplayString(e.unref(s).caption),1)]))])),_:3})):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(s).textTag),{key:1},{default:e.withCtx((()=>[e.renderSlot(l.$slots,"text",{},(()=>[e.createElementVNode("span",null,e.toDisplayString(e.unref(s).text),1)]))])),_:3})):e.createCommentVNode("",!0),e.renderSlot(l.$slots,"default")])),_:3},8,["class"])):e.createCommentVNode("",!0)],12,g))}});exports._sfc_main=p,exports._sfc_main$1=k;
2
+ //# sourceMappingURL=BCarouselSlide.vue_vue_type_script_setup_true_lang-D7TF_rjM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BCarouselSlide.vue_vue_type_script_setup_true_lang-Dg7LeUDK.js","sources":["../src/components/BCarousel/BCarousel.vue","../src/utils/getSlotElements.ts","../src/components/BCarousel/BCarouselSlide.vue"],"sourcesContent":["<template>\n <div\n :id=\"computedId\"\n ref=\"_element\"\n class=\"carousel slide pointer-event\"\n :class=\"computedClasses\"\n >\n <div\n v-if=\"props.indicators\"\n class=\"carousel-indicators\"\n :aria-label=\"props.labelIndicators\"\n :aria-owns=\"buttonOwnership\"\n >\n <!-- :data-bs-target=\"`#${computedId}`\" is required since the classes target elems with that attr -->\n <button\n v-for=\"(_, i) in slides.length\"\n :key=\"i\"\n type=\"button\"\n data-bs-target=\"\"\n :class=\"i === modelValue ? 'active' : ''\"\n :aria-current=\"i === modelValue ? true : undefined\"\n :aria-label=\"`${props.indicatorsButtonLabel} ${i}`\"\n :aria-controls=\"buttonOwnership\"\n :aria-describedby=\"slideValues?.[i]._id\"\n @click=\"goToValue(i)\"\n />\n </div>\n\n <div ref=\"_relatedTarget\" class=\"carousel-inner\">\n <TransitionGroup\n :enter-from-class=\"enterClasses\"\n :enter-active-class=\"enterClasses\"\n :enter-to-class=\"enterClasses\"\n :leave-from-class=\"leaveClasses\"\n :leave-active-class=\"leaveClasses\"\n :leave-to-class=\"leaveClasses\"\n @before-leave=\"onBeforeLeave\"\n @after-leave=\"onAfterLeave\"\n @after-enter=\"onAfterEnter\"\n @enter=\"onEnter\"\n >\n <component\n :is=\"slide\"\n v-for=\"(slide, i) in slides\"\n v-show=\"i === modelValue\"\n :key=\"i\"\n ref=\"_slideValues\"\n :class=\"{active: i === modelValue && isTransitioning === false}\"\n :style=\"props.noAnimation && {transition: 'none'}\"\n />\n </TransitionGroup>\n </div>\n\n <template v-if=\"props.controls\">\n <button class=\"carousel-control-prev\" type=\"button\" @click=\"onClickPrev\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\" />\n <span class=\"visually-hidden\">{{ props.controlsPrevText }}</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" @click=\"onClickNext\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\" />\n <span class=\"visually-hidden\">{{ props.controlsNextText }}</span>\n </button>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {BvCarouselEvent} from '../../utils'\nimport {computed, onMounted, provide, ref, toRef, useTemplateRef, watch} from 'vue'\nimport {useId} from '../../composables/useId'\nimport type {BCarouselProps} from '../../types/ComponentProps'\nimport {onKeyStroke, useElementHover, useIntervalFn, useSwipe, useToNumber} from '@vueuse/core'\nimport type BCarouselSlide from './BCarouselSlide.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {Numberish} from '../../types/CommonTypes'\nimport {getSlotElements} from '../../utils/getSlotElements'\nimport {carouselInjectionKey} from '../../utils/keys'\n\nconst _props = withDefaults(defineProps<Omit<BCarouselProps, 'modelValue'>>(), {\n background: undefined,\n controls: false,\n controlsNextText: 'Next',\n controlsPrevText: 'Previous',\n fade: false,\n id: undefined,\n imgHeight: undefined,\n imgWidth: undefined,\n indicators: false,\n indicatorsButtonLabel: 'Slide',\n interval: 5000,\n labelIndicators: 'Select a slide to display',\n keyboard: true,\n noAnimation: false,\n noHoverPause: false,\n noTouch: false,\n noWrap: false,\n ride: false,\n rideReverse: false,\n touchThreshold: 50,\n})\nconst props = useDefaults(_props, 'BCarousel')\n\nconst emit = defineEmits<{\n 'slide': [value: BvCarouselEvent]\n 'slid': [value: BvCarouselEvent]\n 'click:prev': [value: MouseEvent]\n 'click:next': [value: MouseEvent]\n}>()\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'carousel')\nconst buttonOwnership = useId(undefined, 'carousel-button-ownership')\n\nconst modelValue = defineModel<Exclude<BCarouselProps['modelValue'], undefined>>({default: 0})\n\nconst slideValues = useTemplateRef<InstanceType<typeof BCarouselSlide>[]>('_slideValues')\n\nconst touchThresholdNumber = useToNumber(() => props.touchThreshold)\nconst slideInterval = ref<Numberish | null>(null)\nonMounted(() => {\n slideInterval.value =\n slideValues.value?.find((slid) => slid.$el.style.display !== 'none')?._interval ?? null\n})\nconst intervalNumber = useToNumber(() => slideInterval.value ?? props.interval)\n\nconst isTransitioning = ref(false)\nconst rideStarted = ref(false)\nconst direction = ref(true)\nconst relatedTarget = useTemplateRef<HTMLElement>('_relatedTarget')\nconst element = useTemplateRef<HTMLElement>('_element')\nconst previousModelValue = ref(modelValue.value)\n\nconst isHovering = useElementHover(element)\n\n// Class carousel-item is a static property\n// If you make it static, the direction can be reversed -- properly (atm it does the carousel-item-${} logic backwards for entering, a weird hack)\n// So all that would be great. However, when you do this, it will break the transition flow. Something about it breaks and I'm not sure why!\n// Try it by removing carousel-item from below and making `!direction.value` => `direction.value` for enter\n// Then reviewing the behavior\nconst enterClasses = computed(\n () =>\n `carousel-item carousel-item-${!direction.value ? 'next' : 'prev'} carousel-item-${\n !direction.value ? 'start' : 'end'\n }`\n)\nconst leaveClasses = computed(\n () => `carousel-item active carousel-item-${direction.value ? 'start' : 'end'}`\n)\n\nconst {pause, resume} = useIntervalFn(\n () => {\n if (props.rideReverse) {\n prev()\n return\n }\n next()\n },\n intervalNumber,\n {immediate: props.ride === 'carousel'}\n)\n\nconst isRiding = computed(\n () => (props.ride === true && rideStarted.value === true) || props.ride === 'carousel'\n)\nconst slides = computed(() => getSlotElements(slots.default, 'BCarouselSlide'))\nconst computedClasses = computed(() => ({'carousel-fade': props.fade}))\n\nconst buildBvCarouselEvent = (event: 'slid' | 'slide') =>\n new BvCarouselEvent(event, {\n componentId: computedId.value,\n cancelable: false,\n target: element.value,\n direction: direction.value ? 'right' : 'left',\n from: previousModelValue.value,\n to: modelValue.value,\n relatedTarget: relatedTarget.value?.children[modelValue.value] ?? null,\n })\n\nconst goToValue = (value: number): void => {\n if (isTransitioning.value === true) return\n\n if (props.ride === true) {\n rideStarted.value = true\n }\n if (isRiding.value === true) {\n resume()\n }\n direction.value = value < modelValue.value ? false : true\n if (value >= slides.value.length) {\n if (props.noWrap) return\n modelValue.value = 0\n return\n }\n if (value < 0) {\n if (props.noWrap) return\n modelValue.value = slides.value.length - 1\n return\n }\n previousModelValue.value = modelValue.value\n modelValue.value = value\n}\n\nconst prev = (): void => {\n goToValue(modelValue.value - 1)\n}\nconst next = (): void => {\n goToValue(modelValue.value + 1)\n}\n\nconst onKeydown = (fn: () => void) => {\n if (props.keyboard === false) return\n fn()\n}\n\nconst onMouseEnter = () => {\n if (props.noHoverPause) return\n pause()\n}\nconst onMouseLeave = () => {\n if (!isRiding.value) return\n resume()\n}\n\nconst {lengthX} = useSwipe(element, {\n passive: true,\n onSwipeStart() {\n if (props.noTouch === true) return\n pause()\n },\n onSwipeEnd() {\n if (props.noTouch === true) return\n const resumeRiding = () => {\n if (isRiding.value === false) return\n resume()\n }\n if (lengthX.value >= touchThresholdNumber.value) {\n next()\n resumeRiding()\n return\n }\n if (lengthX.value <= -touchThresholdNumber.value) {\n prev()\n resumeRiding()\n }\n },\n})\n\nconst onBeforeLeave = () => {\n emit('slide', buildBvCarouselEvent('slide'))\n isTransitioning.value = true\n}\nconst onAfterLeave = () => {\n emit('slid', buildBvCarouselEvent('slid'))\n isTransitioning.value = false\n}\n// carousel-item class is removed from the slide during the transition,\n// as is included within enter classes.\n// The first slide recovers carousel-item class,\nconst onAfterEnter = (el: Readonly<Element>) => {\n if (modelValue.value !== 0) {\n el.classList.add('carousel-item')\n }\n}\nconst onEnter = (el: Readonly<Element>) => {\n slideInterval.value = slideValues.value?.find((slid) => slid.$el === el)?._interval ?? null\n}\n\nonKeyStroke(\n 'ArrowLeft',\n () => {\n onKeydown(prev)\n },\n {target: element}\n)\nonKeyStroke(\n 'ArrowRight',\n () => {\n onKeydown(next)\n },\n {target: element}\n)\n\nwatch(\n () => props.ride,\n () => {\n rideStarted.value = false\n }\n)\n\nwatch(isHovering, (newValue) => {\n if (newValue) {\n onMouseEnter()\n return\n }\n onMouseLeave()\n})\n\nconst onClickPrev = (event: MouseEvent) => {\n emit('click:prev', event)\n if (event.defaultPrevented) return\n prev()\n}\nconst onClickNext = (event: MouseEvent) => {\n emit('click:next', event)\n if (event.defaultPrevented) return\n next()\n}\n\ndefineExpose({\n next,\n pause,\n prev,\n resume,\n})\n\nprovide(carouselInjectionKey, {\n background: toRef(() => props.background),\n width: toRef(() => props.imgWidth),\n height: toRef(() => props.imgHeight),\n})\n</script>\n","import type {Slot, VNode} from 'vue'\n\nexport const getSlotElements = (slot: Slot | undefined, filterBy: string): VNode[] =>\n (slot?.() ?? [])\n .reduce((arr: VNode[], slot: VNode) => {\n if (typeof slot.type === 'symbol') {\n arr = arr.concat(slot.children as unknown as VNode)\n } else {\n arr.push(slot)\n }\n return arr\n }, [])\n .filter((child) => (child.type as {__name: string} | undefined)?.__name === filterBy)\n","<template>\n <div :id=\"computedId\" class=\"carousel-item\" :style=\"computedStyle\">\n <slot name=\"img\">\n <BImg\n class=\"d-block w-100\"\n :alt=\"props.imgAlt\"\n :srcset=\"props.imgSrcset\"\n :src=\"props.imgSrc\"\n :width=\"props.imgWidth || parentData?.width.value\"\n :height=\"props.imgHeight || parentData?.height.value\"\n :blank=\"props.imgBlank\"\n :blank-color=\"props.imgBlankColor\"\n />\n </slot>\n <component\n :is=\"props.contentTag\"\n v-if=\"hasContent\"\n class=\"carousel-caption\"\n :class=\"computedContentClasses\"\n >\n <component :is=\"props.captionTag\" v-if=\"hasCaption\">\n <slot name=\"caption\">\n <span>{{ props.caption }}</span>\n </slot>\n </component>\n <component :is=\"props.textTag\" v-if=\"hasText\">\n <slot name=\"text\">\n <span>{{ props.text }}</span>\n </slot>\n </component>\n <slot />\n </component>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type CSSProperties, inject, toRef} from 'vue'\nimport type {BCarouselSlideProps} from '../../types/ComponentProps'\nimport {carouselInjectionKey} from '../../utils/keys'\nimport BImg from '../BImg/BImg.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useId} from '../../composables/useId'\n\nconst _props = withDefaults(defineProps<BCarouselSlideProps>(), {\n background: undefined,\n caption: undefined,\n captionTag: 'h3',\n contentTag: 'div',\n contentVisibleUp: undefined,\n id: undefined,\n imgAlt: undefined,\n imgBlank: false,\n imgBlankColor: 'transparent',\n imgHeight: undefined,\n imgSrc: undefined,\n imgSrcset: undefined,\n imgWidth: undefined,\n interval: undefined,\n text: undefined,\n textTag: 'p',\n})\nconst props = useDefaults(_props, 'BCarouselSlide')\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n caption?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n img?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n text?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'carousel-slide')\nconst parentData = inject(carouselInjectionKey, null)\n\nconst hasText = computed(() => props.text || !isEmptySlot(slots.text))\nconst hasCaption = computed(() => props.caption || !isEmptySlot(slots.caption))\nconst hasContent = computed(() => hasText.value || hasCaption.value || !isEmptySlot(slots.default))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n background: `${\n props.background || parentData?.background.value || 'rgb(171, 171, 171)'\n } none repeat scroll 0% 0%`,\n}))\n\nconst computedContentClasses = computed(() => ({\n 'd-none': props.contentVisibleUp !== undefined,\n [`d-${props.contentVisibleUp}-block`]: props.contentVisibleUp !== undefined,\n}))\n\ndefineExpose({\n _interval: toRef(() => props.interval),\n _id: computedId,\n})\n</script>\n"],"names":["_props","__props","props","useDefaults","emit","__emit","slots","_useSlots","computedId","useId","id","buttonOwnership","modelValue","_useModel","slideValues","useTemplateRef","touchThresholdNumber","useToNumber","touchThreshold","slideInterval","ref","onMounted","value","_b","_a","find","slid","$el","style","display","_interval","intervalNumber","interval","isTransitioning","rideStarted","direction","relatedTarget","element","previousModelValue","isHovering","useElementHover","enterClasses","computed","leaveClasses","pause","resume","useIntervalFn","rideReverse","prev","next","immediate","ride","isRiding","slides","getSlotElements","slot","default","filterBy","reduce","arr","type","concat","children","push","filter","child","__name","computedClasses","fade","buildBvCarouselEvent","event","BvCarouselEvent","componentId","cancelable","target","from","to","goToValue","length","noWrap","onKeydown","fn","keyboard","lengthX","useSwipe","passive","onSwipeStart","noTouch","onSwipeEnd","resumeRiding","onBeforeLeave","onAfterLeave","onAfterEnter","el","classList","add","onEnter","index$1","onKeyStroke","vue","watch","newValue","noHoverPause","onClickPrev","defaultPrevented","onClickNext","__expose","provide","carouselInjectionKey","background","toRef","width","imgWidth","height","imgHeight","parentData","inject","hasText","text","isEmptySlot","hasCaption","caption","hasContent","computedStyle","computedContentClasses","contentVisibleUp","_id"],"mappings":"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"}
1
+ {"version":3,"file":"BCarouselSlide.vue_vue_type_script_setup_true_lang-D7TF_rjM.js","sources":["../src/components/BCarousel/BCarousel.vue","../src/utils/getSlotElements.ts","../src/components/BCarousel/BCarouselSlide.vue"],"sourcesContent":["<template>\n <div\n :id=\"computedId\"\n ref=\"_element\"\n class=\"carousel slide pointer-event\"\n :class=\"computedClasses\"\n >\n <div\n v-if=\"props.indicators\"\n class=\"carousel-indicators\"\n :aria-label=\"props.labelIndicators\"\n :aria-owns=\"buttonOwnership\"\n >\n <!-- :data-bs-target=\"`#${computedId}`\" is required since the classes target elems with that attr -->\n <button\n v-for=\"(_, i) in slides.length\"\n :key=\"i\"\n type=\"button\"\n data-bs-target=\"\"\n :class=\"i === modelValue ? 'active' : ''\"\n :aria-current=\"i === modelValue ? true : undefined\"\n :aria-label=\"`${props.indicatorsButtonLabel} ${i}`\"\n :aria-controls=\"buttonOwnership\"\n :aria-describedby=\"slideValues?.[i]._id\"\n @click=\"goToValue(i)\"\n />\n </div>\n\n <div ref=\"_relatedTarget\" class=\"carousel-inner\">\n <TransitionGroup\n :enter-from-class=\"enterClasses\"\n :enter-active-class=\"enterClasses\"\n :enter-to-class=\"enterClasses\"\n :leave-from-class=\"leaveClasses\"\n :leave-active-class=\"leaveClasses\"\n :leave-to-class=\"leaveClasses\"\n @before-leave=\"onBeforeLeave\"\n @after-leave=\"onAfterLeave\"\n @after-enter=\"onAfterEnter\"\n @enter=\"onEnter\"\n >\n <component\n :is=\"slide\"\n v-for=\"(slide, i) in slides\"\n v-show=\"i === modelValue\"\n :key=\"i\"\n ref=\"_slideValues\"\n :class=\"{active: i === modelValue && isTransitioning === false}\"\n :style=\"props.noAnimation && {transition: 'none'}\"\n />\n </TransitionGroup>\n </div>\n\n <template v-if=\"props.controls\">\n <button class=\"carousel-control-prev\" type=\"button\" @click=\"onClickPrev\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\" />\n <span class=\"visually-hidden\">{{ props.controlsPrevText }}</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" @click=\"onClickNext\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\" />\n <span class=\"visually-hidden\">{{ props.controlsNextText }}</span>\n </button>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {BvCarouselEvent} from '../../utils'\nimport {computed, onMounted, provide, ref, toRef, useTemplateRef, watch} from 'vue'\nimport {useId} from '../../composables/useId'\nimport type {BCarouselProps} from '../../types/ComponentProps'\nimport {onKeyStroke, useElementHover, useIntervalFn, useSwipe, useToNumber} from '@vueuse/core'\nimport type BCarouselSlide from './BCarouselSlide.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {Numberish} from '../../types/CommonTypes'\nimport {getSlotElements} from '../../utils/getSlotElements'\nimport {carouselInjectionKey} from '../../utils/keys'\n\nconst _props = withDefaults(defineProps<Omit<BCarouselProps, 'modelValue'>>(), {\n background: undefined,\n controls: false,\n controlsNextText: 'Next',\n controlsPrevText: 'Previous',\n fade: false,\n id: undefined,\n imgHeight: undefined,\n imgWidth: undefined,\n indicators: false,\n indicatorsButtonLabel: 'Slide',\n interval: 5000,\n labelIndicators: 'Select a slide to display',\n keyboard: true,\n noAnimation: false,\n noHoverPause: false,\n noTouch: false,\n noWrap: false,\n ride: false,\n rideReverse: false,\n touchThreshold: 50,\n})\nconst props = useDefaults(_props, 'BCarousel')\n\nconst emit = defineEmits<{\n 'slide': [value: BvCarouselEvent]\n 'slid': [value: BvCarouselEvent]\n 'prev-click': [value: MouseEvent]\n 'next-click': [value: MouseEvent]\n}>()\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'carousel')\nconst buttonOwnership = useId(undefined, 'carousel-button-ownership')\n\nconst modelValue = defineModel<Exclude<BCarouselProps['modelValue'], undefined>>({default: 0})\n\nconst slideValues = useTemplateRef<InstanceType<typeof BCarouselSlide>[]>('_slideValues')\n\nconst touchThresholdNumber = useToNumber(() => props.touchThreshold)\nconst slideInterval = ref<Numberish | null>(null)\nonMounted(() => {\n slideInterval.value =\n slideValues.value?.find((slid) => slid.$el.style.display !== 'none')?._interval ?? null\n})\nconst intervalNumber = useToNumber(() => slideInterval.value ?? props.interval)\n\nconst isTransitioning = ref(false)\nconst rideStarted = ref(false)\nconst direction = ref(true)\nconst relatedTarget = useTemplateRef<HTMLElement>('_relatedTarget')\nconst element = useTemplateRef<HTMLElement>('_element')\nconst previousModelValue = ref(modelValue.value)\n\nconst isHovering = useElementHover(element)\n\n// Class carousel-item is a static property\n// If you make it static, the direction can be reversed -- properly (atm it does the carousel-item-${} logic backwards for entering, a weird hack)\n// So all that would be great. However, when you do this, it will break the transition flow. Something about it breaks and I'm not sure why!\n// Try it by removing carousel-item from below and making `!direction.value` => `direction.value` for enter\n// Then reviewing the behavior\nconst enterClasses = computed(\n () =>\n `carousel-item carousel-item-${!direction.value ? 'next' : 'prev'} carousel-item-${\n !direction.value ? 'start' : 'end'\n }`\n)\nconst leaveClasses = computed(\n () => `carousel-item active carousel-item-${direction.value ? 'start' : 'end'}`\n)\n\nconst {pause, resume} = useIntervalFn(\n () => {\n if (props.rideReverse) {\n prev()\n return\n }\n next()\n },\n intervalNumber,\n {immediate: props.ride === 'carousel'}\n)\n\nconst isRiding = computed(\n () => (props.ride === true && rideStarted.value === true) || props.ride === 'carousel'\n)\nconst slides = computed(() => getSlotElements(slots.default, 'BCarouselSlide'))\nconst computedClasses = computed(() => ({'carousel-fade': props.fade}))\n\nconst buildBvCarouselEvent = (event: 'slid' | 'slide') =>\n new BvCarouselEvent(event, {\n componentId: computedId.value,\n cancelable: false,\n target: element.value,\n direction: direction.value ? 'right' : 'left',\n from: previousModelValue.value,\n to: modelValue.value,\n relatedTarget: relatedTarget.value?.children[modelValue.value] ?? null,\n })\n\nconst goToValue = (value: number): void => {\n if (isTransitioning.value === true) return\n\n if (props.ride === true) {\n rideStarted.value = true\n }\n if (isRiding.value === true) {\n resume()\n }\n direction.value = value < modelValue.value ? false : true\n if (value >= slides.value.length) {\n if (props.noWrap) return\n modelValue.value = 0\n return\n }\n if (value < 0) {\n if (props.noWrap) return\n modelValue.value = slides.value.length - 1\n return\n }\n previousModelValue.value = modelValue.value\n modelValue.value = value\n}\n\nconst prev = (): void => {\n goToValue(modelValue.value - 1)\n}\nconst next = (): void => {\n goToValue(modelValue.value + 1)\n}\n\nconst onKeydown = (fn: () => void) => {\n if (props.keyboard === false) return\n fn()\n}\n\nconst onMouseEnter = () => {\n if (props.noHoverPause) return\n pause()\n}\nconst onMouseLeave = () => {\n if (!isRiding.value) return\n resume()\n}\n\nconst {lengthX} = useSwipe(element, {\n passive: true,\n onSwipeStart() {\n if (props.noTouch === true) return\n pause()\n },\n onSwipeEnd() {\n if (props.noTouch === true) return\n const resumeRiding = () => {\n if (isRiding.value === false) return\n resume()\n }\n if (lengthX.value >= touchThresholdNumber.value) {\n next()\n resumeRiding()\n return\n }\n if (lengthX.value <= -touchThresholdNumber.value) {\n prev()\n resumeRiding()\n }\n },\n})\n\nconst onBeforeLeave = () => {\n emit('slide', buildBvCarouselEvent('slide'))\n isTransitioning.value = true\n}\nconst onAfterLeave = () => {\n emit('slid', buildBvCarouselEvent('slid'))\n isTransitioning.value = false\n}\n// carousel-item class is removed from the slide during the transition,\n// as is included within enter classes.\n// The first slide recovers carousel-item class,\nconst onAfterEnter = (el: Readonly<Element>) => {\n if (modelValue.value !== 0) {\n el.classList.add('carousel-item')\n }\n}\nconst onEnter = (el: Readonly<Element>) => {\n slideInterval.value = slideValues.value?.find((slid) => slid.$el === el)?._interval ?? null\n}\n\nonKeyStroke(\n 'ArrowLeft',\n () => {\n onKeydown(prev)\n },\n {target: element}\n)\nonKeyStroke(\n 'ArrowRight',\n () => {\n onKeydown(next)\n },\n {target: element}\n)\n\nwatch(\n () => props.ride,\n () => {\n rideStarted.value = false\n }\n)\n\nwatch(isHovering, (newValue) => {\n if (newValue) {\n onMouseEnter()\n return\n }\n onMouseLeave()\n})\n\nconst onClickPrev = (event: MouseEvent) => {\n emit('prev-click', event)\n if (event.defaultPrevented) return\n prev()\n}\nconst onClickNext = (event: MouseEvent) => {\n emit('next-click', event)\n if (event.defaultPrevented) return\n next()\n}\n\ndefineExpose({\n next,\n pause,\n prev,\n resume,\n})\n\nprovide(carouselInjectionKey, {\n background: toRef(() => props.background),\n width: toRef(() => props.imgWidth),\n height: toRef(() => props.imgHeight),\n})\n</script>\n","import type {Slot, VNode} from 'vue'\n\nexport const getSlotElements = (slot: Slot | undefined, filterBy: string): VNode[] =>\n (slot?.() ?? [])\n .reduce((arr: VNode[], slot: VNode) => {\n if (typeof slot.type === 'symbol') {\n arr = arr.concat(slot.children as unknown as VNode)\n } else {\n arr.push(slot)\n }\n return arr\n }, [])\n .filter((child) => (child.type as {__name: string} | undefined)?.__name === filterBy)\n","<template>\n <div :id=\"computedId\" class=\"carousel-item\" :style=\"computedStyle\">\n <slot name=\"img\">\n <BImg\n class=\"d-block w-100\"\n :alt=\"props.imgAlt\"\n :srcset=\"props.imgSrcset\"\n :src=\"props.imgSrc\"\n :width=\"props.imgWidth || parentData?.width.value\"\n :height=\"props.imgHeight || parentData?.height.value\"\n :blank=\"props.imgBlank\"\n :blank-color=\"props.imgBlankColor\"\n />\n </slot>\n <component\n :is=\"props.contentTag\"\n v-if=\"hasContent\"\n class=\"carousel-caption\"\n :class=\"computedContentClasses\"\n >\n <component :is=\"props.captionTag\" v-if=\"hasCaption\">\n <slot name=\"caption\">\n <span>{{ props.caption }}</span>\n </slot>\n </component>\n <component :is=\"props.textTag\" v-if=\"hasText\">\n <slot name=\"text\">\n <span>{{ props.text }}</span>\n </slot>\n </component>\n <slot />\n </component>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type CSSProperties, inject, toRef} from 'vue'\nimport type {BCarouselSlideProps} from '../../types/ComponentProps'\nimport {carouselInjectionKey} from '../../utils/keys'\nimport BImg from '../BImg/BImg.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useId} from '../../composables/useId'\n\nconst _props = withDefaults(defineProps<BCarouselSlideProps>(), {\n background: undefined,\n caption: undefined,\n captionTag: 'h3',\n contentTag: 'div',\n contentVisibleUp: undefined,\n id: undefined,\n imgAlt: undefined,\n imgBlank: false,\n imgBlankColor: 'transparent',\n imgHeight: undefined,\n imgSrc: undefined,\n imgSrcset: undefined,\n imgWidth: undefined,\n interval: undefined,\n text: undefined,\n textTag: 'p',\n})\nconst props = useDefaults(_props, 'BCarouselSlide')\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n caption?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n img?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n text?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'carousel-slide')\nconst parentData = inject(carouselInjectionKey, null)\n\nconst hasText = computed(() => props.text || !isEmptySlot(slots.text))\nconst hasCaption = computed(() => props.caption || !isEmptySlot(slots.caption))\nconst hasContent = computed(() => hasText.value || hasCaption.value || !isEmptySlot(slots.default))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n background: `${\n props.background || parentData?.background.value || 'rgb(171, 171, 171)'\n } none repeat scroll 0% 0%`,\n}))\n\nconst computedContentClasses = computed(() => ({\n 'd-none': props.contentVisibleUp !== undefined,\n [`d-${props.contentVisibleUp}-block`]: props.contentVisibleUp !== undefined,\n}))\n\ndefineExpose({\n _interval: toRef(() => props.interval),\n _id: computedId,\n})\n</script>\n"],"names":["_props","__props","props","useDefaults","emit","__emit","slots","_useSlots","computedId","useId","id","buttonOwnership","modelValue","_useModel","slideValues","useTemplateRef","touchThresholdNumber","useToNumber","touchThreshold","slideInterval","ref","onMounted","value","_b","_a","find","slid","$el","style","display","_interval","intervalNumber","interval","isTransitioning","rideStarted","direction","relatedTarget","element","previousModelValue","isHovering","useElementHover","enterClasses","computed","leaveClasses","pause","resume","useIntervalFn","rideReverse","prev","next","immediate","ride","isRiding","slides","getSlotElements","slot","default","filterBy","reduce","arr","type","concat","children","push","filter","child","__name","computedClasses","fade","buildBvCarouselEvent","event","BvCarouselEvent","componentId","cancelable","target","from","to","goToValue","length","noWrap","onKeydown","fn","keyboard","lengthX","useSwipe","passive","onSwipeStart","noTouch","onSwipeEnd","resumeRiding","onBeforeLeave","onAfterLeave","onAfterEnter","el","classList","add","onEnter","index$1","onKeyStroke","vue","watch","newValue","noHoverPause","onClickPrev","defaultPrevented","onClickNext","__expose","provide","carouselInjectionKey","background","toRef","width","imgWidth","height","imgHeight","parentData","inject","hasText","text","isEmptySlot","hasCaption","caption","hasContent","computedStyle","computedContentClasses","contentVisibleUp","_id"],"mappings":"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"}
@@ -54,7 +54,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
54
54
  "modelValue": { default: 0 },
55
55
  "modelModifiers": {}
56
56
  }),
57
- emits: /* @__PURE__ */ mergeModels(["slide", "slid", "click:prev", "click:next"], ["update:modelValue"]),
57
+ emits: /* @__PURE__ */ mergeModels(["slide", "slid", "prev-click", "next-click"], ["update:modelValue"]),
58
58
  setup(__props, { expose: __expose, emit: __emit }) {
59
59
  const _props = __props;
60
60
  const props = useDefaults(_props, "BCarousel");
@@ -220,12 +220,12 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
220
220
  onMouseLeave();
221
221
  });
222
222
  const onClickPrev = (event) => {
223
- emit("click:prev", event);
223
+ emit("prev-click", event);
224
224
  if (event.defaultPrevented) return;
225
225
  prev();
226
226
  };
227
227
  const onClickNext = (event) => {
228
- emit("click:next", event);
228
+ emit("next-click", event);
229
229
  if (event.defaultPrevented) return;
230
230
  next();
231
231
  };
@@ -419,4 +419,4 @@ export {
419
419
  _sfc_main$1 as _,
420
420
  _sfc_main as a
421
421
  };
422
- //# sourceMappingURL=BCarouselSlide.vue_vue_type_script_setup_true_lang-DvJdLgu_.mjs.map
422
+ //# sourceMappingURL=BCarouselSlide.vue_vue_type_script_setup_true_lang-DyQMUAVG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BCarouselSlide.vue_vue_type_script_setup_true_lang-DvJdLgu_.mjs","sources":["../src/utils/getSlotElements.ts","../src/components/BCarousel/BCarousel.vue","../src/components/BCarousel/BCarouselSlide.vue"],"sourcesContent":["import type {Slot, VNode} from 'vue'\n\nexport const getSlotElements = (slot: Slot | undefined, filterBy: string): VNode[] =>\n (slot?.() ?? [])\n .reduce((arr: VNode[], slot: VNode) => {\n if (typeof slot.type === 'symbol') {\n arr = arr.concat(slot.children as unknown as VNode)\n } else {\n arr.push(slot)\n }\n return arr\n }, [])\n .filter((child) => (child.type as {__name: string} | undefined)?.__name === filterBy)\n","<template>\n <div\n :id=\"computedId\"\n ref=\"_element\"\n class=\"carousel slide pointer-event\"\n :class=\"computedClasses\"\n >\n <div\n v-if=\"props.indicators\"\n class=\"carousel-indicators\"\n :aria-label=\"props.labelIndicators\"\n :aria-owns=\"buttonOwnership\"\n >\n <!-- :data-bs-target=\"`#${computedId}`\" is required since the classes target elems with that attr -->\n <button\n v-for=\"(_, i) in slides.length\"\n :key=\"i\"\n type=\"button\"\n data-bs-target=\"\"\n :class=\"i === modelValue ? 'active' : ''\"\n :aria-current=\"i === modelValue ? true : undefined\"\n :aria-label=\"`${props.indicatorsButtonLabel} ${i}`\"\n :aria-controls=\"buttonOwnership\"\n :aria-describedby=\"slideValues?.[i]._id\"\n @click=\"goToValue(i)\"\n />\n </div>\n\n <div ref=\"_relatedTarget\" class=\"carousel-inner\">\n <TransitionGroup\n :enter-from-class=\"enterClasses\"\n :enter-active-class=\"enterClasses\"\n :enter-to-class=\"enterClasses\"\n :leave-from-class=\"leaveClasses\"\n :leave-active-class=\"leaveClasses\"\n :leave-to-class=\"leaveClasses\"\n @before-leave=\"onBeforeLeave\"\n @after-leave=\"onAfterLeave\"\n @after-enter=\"onAfterEnter\"\n @enter=\"onEnter\"\n >\n <component\n :is=\"slide\"\n v-for=\"(slide, i) in slides\"\n v-show=\"i === modelValue\"\n :key=\"i\"\n ref=\"_slideValues\"\n :class=\"{active: i === modelValue && isTransitioning === false}\"\n :style=\"props.noAnimation && {transition: 'none'}\"\n />\n </TransitionGroup>\n </div>\n\n <template v-if=\"props.controls\">\n <button class=\"carousel-control-prev\" type=\"button\" @click=\"onClickPrev\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\" />\n <span class=\"visually-hidden\">{{ props.controlsPrevText }}</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" @click=\"onClickNext\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\" />\n <span class=\"visually-hidden\">{{ props.controlsNextText }}</span>\n </button>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {BvCarouselEvent} from '../../utils'\nimport {computed, onMounted, provide, ref, toRef, useTemplateRef, watch} from 'vue'\nimport {useId} from '../../composables/useId'\nimport type {BCarouselProps} from '../../types/ComponentProps'\nimport {onKeyStroke, useElementHover, useIntervalFn, useSwipe, useToNumber} from '@vueuse/core'\nimport type BCarouselSlide from './BCarouselSlide.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {Numberish} from '../../types/CommonTypes'\nimport {getSlotElements} from '../../utils/getSlotElements'\nimport {carouselInjectionKey} from '../../utils/keys'\n\nconst _props = withDefaults(defineProps<Omit<BCarouselProps, 'modelValue'>>(), {\n background: undefined,\n controls: false,\n controlsNextText: 'Next',\n controlsPrevText: 'Previous',\n fade: false,\n id: undefined,\n imgHeight: undefined,\n imgWidth: undefined,\n indicators: false,\n indicatorsButtonLabel: 'Slide',\n interval: 5000,\n labelIndicators: 'Select a slide to display',\n keyboard: true,\n noAnimation: false,\n noHoverPause: false,\n noTouch: false,\n noWrap: false,\n ride: false,\n rideReverse: false,\n touchThreshold: 50,\n})\nconst props = useDefaults(_props, 'BCarousel')\n\nconst emit = defineEmits<{\n 'slide': [value: BvCarouselEvent]\n 'slid': [value: BvCarouselEvent]\n 'click:prev': [value: MouseEvent]\n 'click:next': [value: MouseEvent]\n}>()\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'carousel')\nconst buttonOwnership = useId(undefined, 'carousel-button-ownership')\n\nconst modelValue = defineModel<Exclude<BCarouselProps['modelValue'], undefined>>({default: 0})\n\nconst slideValues = useTemplateRef<InstanceType<typeof BCarouselSlide>[]>('_slideValues')\n\nconst touchThresholdNumber = useToNumber(() => props.touchThreshold)\nconst slideInterval = ref<Numberish | null>(null)\nonMounted(() => {\n slideInterval.value =\n slideValues.value?.find((slid) => slid.$el.style.display !== 'none')?._interval ?? null\n})\nconst intervalNumber = useToNumber(() => slideInterval.value ?? props.interval)\n\nconst isTransitioning = ref(false)\nconst rideStarted = ref(false)\nconst direction = ref(true)\nconst relatedTarget = useTemplateRef<HTMLElement>('_relatedTarget')\nconst element = useTemplateRef<HTMLElement>('_element')\nconst previousModelValue = ref(modelValue.value)\n\nconst isHovering = useElementHover(element)\n\n// Class carousel-item is a static property\n// If you make it static, the direction can be reversed -- properly (atm it does the carousel-item-${} logic backwards for entering, a weird hack)\n// So all that would be great. However, when you do this, it will break the transition flow. Something about it breaks and I'm not sure why!\n// Try it by removing carousel-item from below and making `!direction.value` => `direction.value` for enter\n// Then reviewing the behavior\nconst enterClasses = computed(\n () =>\n `carousel-item carousel-item-${!direction.value ? 'next' : 'prev'} carousel-item-${\n !direction.value ? 'start' : 'end'\n }`\n)\nconst leaveClasses = computed(\n () => `carousel-item active carousel-item-${direction.value ? 'start' : 'end'}`\n)\n\nconst {pause, resume} = useIntervalFn(\n () => {\n if (props.rideReverse) {\n prev()\n return\n }\n next()\n },\n intervalNumber,\n {immediate: props.ride === 'carousel'}\n)\n\nconst isRiding = computed(\n () => (props.ride === true && rideStarted.value === true) || props.ride === 'carousel'\n)\nconst slides = computed(() => getSlotElements(slots.default, 'BCarouselSlide'))\nconst computedClasses = computed(() => ({'carousel-fade': props.fade}))\n\nconst buildBvCarouselEvent = (event: 'slid' | 'slide') =>\n new BvCarouselEvent(event, {\n componentId: computedId.value,\n cancelable: false,\n target: element.value,\n direction: direction.value ? 'right' : 'left',\n from: previousModelValue.value,\n to: modelValue.value,\n relatedTarget: relatedTarget.value?.children[modelValue.value] ?? null,\n })\n\nconst goToValue = (value: number): void => {\n if (isTransitioning.value === true) return\n\n if (props.ride === true) {\n rideStarted.value = true\n }\n if (isRiding.value === true) {\n resume()\n }\n direction.value = value < modelValue.value ? false : true\n if (value >= slides.value.length) {\n if (props.noWrap) return\n modelValue.value = 0\n return\n }\n if (value < 0) {\n if (props.noWrap) return\n modelValue.value = slides.value.length - 1\n return\n }\n previousModelValue.value = modelValue.value\n modelValue.value = value\n}\n\nconst prev = (): void => {\n goToValue(modelValue.value - 1)\n}\nconst next = (): void => {\n goToValue(modelValue.value + 1)\n}\n\nconst onKeydown = (fn: () => void) => {\n if (props.keyboard === false) return\n fn()\n}\n\nconst onMouseEnter = () => {\n if (props.noHoverPause) return\n pause()\n}\nconst onMouseLeave = () => {\n if (!isRiding.value) return\n resume()\n}\n\nconst {lengthX} = useSwipe(element, {\n passive: true,\n onSwipeStart() {\n if (props.noTouch === true) return\n pause()\n },\n onSwipeEnd() {\n if (props.noTouch === true) return\n const resumeRiding = () => {\n if (isRiding.value === false) return\n resume()\n }\n if (lengthX.value >= touchThresholdNumber.value) {\n next()\n resumeRiding()\n return\n }\n if (lengthX.value <= -touchThresholdNumber.value) {\n prev()\n resumeRiding()\n }\n },\n})\n\nconst onBeforeLeave = () => {\n emit('slide', buildBvCarouselEvent('slide'))\n isTransitioning.value = true\n}\nconst onAfterLeave = () => {\n emit('slid', buildBvCarouselEvent('slid'))\n isTransitioning.value = false\n}\n// carousel-item class is removed from the slide during the transition,\n// as is included within enter classes.\n// The first slide recovers carousel-item class,\nconst onAfterEnter = (el: Readonly<Element>) => {\n if (modelValue.value !== 0) {\n el.classList.add('carousel-item')\n }\n}\nconst onEnter = (el: Readonly<Element>) => {\n slideInterval.value = slideValues.value?.find((slid) => slid.$el === el)?._interval ?? null\n}\n\nonKeyStroke(\n 'ArrowLeft',\n () => {\n onKeydown(prev)\n },\n {target: element}\n)\nonKeyStroke(\n 'ArrowRight',\n () => {\n onKeydown(next)\n },\n {target: element}\n)\n\nwatch(\n () => props.ride,\n () => {\n rideStarted.value = false\n }\n)\n\nwatch(isHovering, (newValue) => {\n if (newValue) {\n onMouseEnter()\n return\n }\n onMouseLeave()\n})\n\nconst onClickPrev = (event: MouseEvent) => {\n emit('click:prev', event)\n if (event.defaultPrevented) return\n prev()\n}\nconst onClickNext = (event: MouseEvent) => {\n emit('click:next', event)\n if (event.defaultPrevented) return\n next()\n}\n\ndefineExpose({\n next,\n pause,\n prev,\n resume,\n})\n\nprovide(carouselInjectionKey, {\n background: toRef(() => props.background),\n width: toRef(() => props.imgWidth),\n height: toRef(() => props.imgHeight),\n})\n</script>\n","<template>\n <div :id=\"computedId\" class=\"carousel-item\" :style=\"computedStyle\">\n <slot name=\"img\">\n <BImg\n class=\"d-block w-100\"\n :alt=\"props.imgAlt\"\n :srcset=\"props.imgSrcset\"\n :src=\"props.imgSrc\"\n :width=\"props.imgWidth || parentData?.width.value\"\n :height=\"props.imgHeight || parentData?.height.value\"\n :blank=\"props.imgBlank\"\n :blank-color=\"props.imgBlankColor\"\n />\n </slot>\n <component\n :is=\"props.contentTag\"\n v-if=\"hasContent\"\n class=\"carousel-caption\"\n :class=\"computedContentClasses\"\n >\n <component :is=\"props.captionTag\" v-if=\"hasCaption\">\n <slot name=\"caption\">\n <span>{{ props.caption }}</span>\n </slot>\n </component>\n <component :is=\"props.textTag\" v-if=\"hasText\">\n <slot name=\"text\">\n <span>{{ props.text }}</span>\n </slot>\n </component>\n <slot />\n </component>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type CSSProperties, inject, toRef} from 'vue'\nimport type {BCarouselSlideProps} from '../../types/ComponentProps'\nimport {carouselInjectionKey} from '../../utils/keys'\nimport BImg from '../BImg/BImg.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useId} from '../../composables/useId'\n\nconst _props = withDefaults(defineProps<BCarouselSlideProps>(), {\n background: undefined,\n caption: undefined,\n captionTag: 'h3',\n contentTag: 'div',\n contentVisibleUp: undefined,\n id: undefined,\n imgAlt: undefined,\n imgBlank: false,\n imgBlankColor: 'transparent',\n imgHeight: undefined,\n imgSrc: undefined,\n imgSrcset: undefined,\n imgWidth: undefined,\n interval: undefined,\n text: undefined,\n textTag: 'p',\n})\nconst props = useDefaults(_props, 'BCarouselSlide')\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n caption?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n img?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n text?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'carousel-slide')\nconst parentData = inject(carouselInjectionKey, null)\n\nconst hasText = computed(() => props.text || !isEmptySlot(slots.text))\nconst hasCaption = computed(() => props.caption || !isEmptySlot(slots.caption))\nconst hasContent = computed(() => hasText.value || hasCaption.value || !isEmptySlot(slots.default))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n background: `${\n props.background || parentData?.background.value || 'rgb(171, 171, 171)'\n } none repeat scroll 0% 0%`,\n}))\n\nconst computedContentClasses = computed(() => ({\n 'd-none': props.contentVisibleUp !== undefined,\n [`d-${props.contentVisibleUp}-block`]: props.contentVisibleUp !== undefined,\n}))\n\ndefineExpose({\n _interval: toRef(() => props.interval),\n _id: computedId,\n})\n</script>\n"],"names":["slot","_useSlots","_useModel"],"mappings":"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"}
1
+ {"version":3,"file":"BCarouselSlide.vue_vue_type_script_setup_true_lang-DyQMUAVG.mjs","sources":["../src/utils/getSlotElements.ts","../src/components/BCarousel/BCarousel.vue","../src/components/BCarousel/BCarouselSlide.vue"],"sourcesContent":["import type {Slot, VNode} from 'vue'\n\nexport const getSlotElements = (slot: Slot | undefined, filterBy: string): VNode[] =>\n (slot?.() ?? [])\n .reduce((arr: VNode[], slot: VNode) => {\n if (typeof slot.type === 'symbol') {\n arr = arr.concat(slot.children as unknown as VNode)\n } else {\n arr.push(slot)\n }\n return arr\n }, [])\n .filter((child) => (child.type as {__name: string} | undefined)?.__name === filterBy)\n","<template>\n <div\n :id=\"computedId\"\n ref=\"_element\"\n class=\"carousel slide pointer-event\"\n :class=\"computedClasses\"\n >\n <div\n v-if=\"props.indicators\"\n class=\"carousel-indicators\"\n :aria-label=\"props.labelIndicators\"\n :aria-owns=\"buttonOwnership\"\n >\n <!-- :data-bs-target=\"`#${computedId}`\" is required since the classes target elems with that attr -->\n <button\n v-for=\"(_, i) in slides.length\"\n :key=\"i\"\n type=\"button\"\n data-bs-target=\"\"\n :class=\"i === modelValue ? 'active' : ''\"\n :aria-current=\"i === modelValue ? true : undefined\"\n :aria-label=\"`${props.indicatorsButtonLabel} ${i}`\"\n :aria-controls=\"buttonOwnership\"\n :aria-describedby=\"slideValues?.[i]._id\"\n @click=\"goToValue(i)\"\n />\n </div>\n\n <div ref=\"_relatedTarget\" class=\"carousel-inner\">\n <TransitionGroup\n :enter-from-class=\"enterClasses\"\n :enter-active-class=\"enterClasses\"\n :enter-to-class=\"enterClasses\"\n :leave-from-class=\"leaveClasses\"\n :leave-active-class=\"leaveClasses\"\n :leave-to-class=\"leaveClasses\"\n @before-leave=\"onBeforeLeave\"\n @after-leave=\"onAfterLeave\"\n @after-enter=\"onAfterEnter\"\n @enter=\"onEnter\"\n >\n <component\n :is=\"slide\"\n v-for=\"(slide, i) in slides\"\n v-show=\"i === modelValue\"\n :key=\"i\"\n ref=\"_slideValues\"\n :class=\"{active: i === modelValue && isTransitioning === false}\"\n :style=\"props.noAnimation && {transition: 'none'}\"\n />\n </TransitionGroup>\n </div>\n\n <template v-if=\"props.controls\">\n <button class=\"carousel-control-prev\" type=\"button\" @click=\"onClickPrev\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\" />\n <span class=\"visually-hidden\">{{ props.controlsPrevText }}</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" @click=\"onClickNext\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\" />\n <span class=\"visually-hidden\">{{ props.controlsNextText }}</span>\n </button>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {BvCarouselEvent} from '../../utils'\nimport {computed, onMounted, provide, ref, toRef, useTemplateRef, watch} from 'vue'\nimport {useId} from '../../composables/useId'\nimport type {BCarouselProps} from '../../types/ComponentProps'\nimport {onKeyStroke, useElementHover, useIntervalFn, useSwipe, useToNumber} from '@vueuse/core'\nimport type BCarouselSlide from './BCarouselSlide.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {Numberish} from '../../types/CommonTypes'\nimport {getSlotElements} from '../../utils/getSlotElements'\nimport {carouselInjectionKey} from '../../utils/keys'\n\nconst _props = withDefaults(defineProps<Omit<BCarouselProps, 'modelValue'>>(), {\n background: undefined,\n controls: false,\n controlsNextText: 'Next',\n controlsPrevText: 'Previous',\n fade: false,\n id: undefined,\n imgHeight: undefined,\n imgWidth: undefined,\n indicators: false,\n indicatorsButtonLabel: 'Slide',\n interval: 5000,\n labelIndicators: 'Select a slide to display',\n keyboard: true,\n noAnimation: false,\n noHoverPause: false,\n noTouch: false,\n noWrap: false,\n ride: false,\n rideReverse: false,\n touchThreshold: 50,\n})\nconst props = useDefaults(_props, 'BCarousel')\n\nconst emit = defineEmits<{\n 'slide': [value: BvCarouselEvent]\n 'slid': [value: BvCarouselEvent]\n 'prev-click': [value: MouseEvent]\n 'next-click': [value: MouseEvent]\n}>()\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'carousel')\nconst buttonOwnership = useId(undefined, 'carousel-button-ownership')\n\nconst modelValue = defineModel<Exclude<BCarouselProps['modelValue'], undefined>>({default: 0})\n\nconst slideValues = useTemplateRef<InstanceType<typeof BCarouselSlide>[]>('_slideValues')\n\nconst touchThresholdNumber = useToNumber(() => props.touchThreshold)\nconst slideInterval = ref<Numberish | null>(null)\nonMounted(() => {\n slideInterval.value =\n slideValues.value?.find((slid) => slid.$el.style.display !== 'none')?._interval ?? null\n})\nconst intervalNumber = useToNumber(() => slideInterval.value ?? props.interval)\n\nconst isTransitioning = ref(false)\nconst rideStarted = ref(false)\nconst direction = ref(true)\nconst relatedTarget = useTemplateRef<HTMLElement>('_relatedTarget')\nconst element = useTemplateRef<HTMLElement>('_element')\nconst previousModelValue = ref(modelValue.value)\n\nconst isHovering = useElementHover(element)\n\n// Class carousel-item is a static property\n// If you make it static, the direction can be reversed -- properly (atm it does the carousel-item-${} logic backwards for entering, a weird hack)\n// So all that would be great. However, when you do this, it will break the transition flow. Something about it breaks and I'm not sure why!\n// Try it by removing carousel-item from below and making `!direction.value` => `direction.value` for enter\n// Then reviewing the behavior\nconst enterClasses = computed(\n () =>\n `carousel-item carousel-item-${!direction.value ? 'next' : 'prev'} carousel-item-${\n !direction.value ? 'start' : 'end'\n }`\n)\nconst leaveClasses = computed(\n () => `carousel-item active carousel-item-${direction.value ? 'start' : 'end'}`\n)\n\nconst {pause, resume} = useIntervalFn(\n () => {\n if (props.rideReverse) {\n prev()\n return\n }\n next()\n },\n intervalNumber,\n {immediate: props.ride === 'carousel'}\n)\n\nconst isRiding = computed(\n () => (props.ride === true && rideStarted.value === true) || props.ride === 'carousel'\n)\nconst slides = computed(() => getSlotElements(slots.default, 'BCarouselSlide'))\nconst computedClasses = computed(() => ({'carousel-fade': props.fade}))\n\nconst buildBvCarouselEvent = (event: 'slid' | 'slide') =>\n new BvCarouselEvent(event, {\n componentId: computedId.value,\n cancelable: false,\n target: element.value,\n direction: direction.value ? 'right' : 'left',\n from: previousModelValue.value,\n to: modelValue.value,\n relatedTarget: relatedTarget.value?.children[modelValue.value] ?? null,\n })\n\nconst goToValue = (value: number): void => {\n if (isTransitioning.value === true) return\n\n if (props.ride === true) {\n rideStarted.value = true\n }\n if (isRiding.value === true) {\n resume()\n }\n direction.value = value < modelValue.value ? false : true\n if (value >= slides.value.length) {\n if (props.noWrap) return\n modelValue.value = 0\n return\n }\n if (value < 0) {\n if (props.noWrap) return\n modelValue.value = slides.value.length - 1\n return\n }\n previousModelValue.value = modelValue.value\n modelValue.value = value\n}\n\nconst prev = (): void => {\n goToValue(modelValue.value - 1)\n}\nconst next = (): void => {\n goToValue(modelValue.value + 1)\n}\n\nconst onKeydown = (fn: () => void) => {\n if (props.keyboard === false) return\n fn()\n}\n\nconst onMouseEnter = () => {\n if (props.noHoverPause) return\n pause()\n}\nconst onMouseLeave = () => {\n if (!isRiding.value) return\n resume()\n}\n\nconst {lengthX} = useSwipe(element, {\n passive: true,\n onSwipeStart() {\n if (props.noTouch === true) return\n pause()\n },\n onSwipeEnd() {\n if (props.noTouch === true) return\n const resumeRiding = () => {\n if (isRiding.value === false) return\n resume()\n }\n if (lengthX.value >= touchThresholdNumber.value) {\n next()\n resumeRiding()\n return\n }\n if (lengthX.value <= -touchThresholdNumber.value) {\n prev()\n resumeRiding()\n }\n },\n})\n\nconst onBeforeLeave = () => {\n emit('slide', buildBvCarouselEvent('slide'))\n isTransitioning.value = true\n}\nconst onAfterLeave = () => {\n emit('slid', buildBvCarouselEvent('slid'))\n isTransitioning.value = false\n}\n// carousel-item class is removed from the slide during the transition,\n// as is included within enter classes.\n// The first slide recovers carousel-item class,\nconst onAfterEnter = (el: Readonly<Element>) => {\n if (modelValue.value !== 0) {\n el.classList.add('carousel-item')\n }\n}\nconst onEnter = (el: Readonly<Element>) => {\n slideInterval.value = slideValues.value?.find((slid) => slid.$el === el)?._interval ?? null\n}\n\nonKeyStroke(\n 'ArrowLeft',\n () => {\n onKeydown(prev)\n },\n {target: element}\n)\nonKeyStroke(\n 'ArrowRight',\n () => {\n onKeydown(next)\n },\n {target: element}\n)\n\nwatch(\n () => props.ride,\n () => {\n rideStarted.value = false\n }\n)\n\nwatch(isHovering, (newValue) => {\n if (newValue) {\n onMouseEnter()\n return\n }\n onMouseLeave()\n})\n\nconst onClickPrev = (event: MouseEvent) => {\n emit('prev-click', event)\n if (event.defaultPrevented) return\n prev()\n}\nconst onClickNext = (event: MouseEvent) => {\n emit('next-click', event)\n if (event.defaultPrevented) return\n next()\n}\n\ndefineExpose({\n next,\n pause,\n prev,\n resume,\n})\n\nprovide(carouselInjectionKey, {\n background: toRef(() => props.background),\n width: toRef(() => props.imgWidth),\n height: toRef(() => props.imgHeight),\n})\n</script>\n","<template>\n <div :id=\"computedId\" class=\"carousel-item\" :style=\"computedStyle\">\n <slot name=\"img\">\n <BImg\n class=\"d-block w-100\"\n :alt=\"props.imgAlt\"\n :srcset=\"props.imgSrcset\"\n :src=\"props.imgSrc\"\n :width=\"props.imgWidth || parentData?.width.value\"\n :height=\"props.imgHeight || parentData?.height.value\"\n :blank=\"props.imgBlank\"\n :blank-color=\"props.imgBlankColor\"\n />\n </slot>\n <component\n :is=\"props.contentTag\"\n v-if=\"hasContent\"\n class=\"carousel-caption\"\n :class=\"computedContentClasses\"\n >\n <component :is=\"props.captionTag\" v-if=\"hasCaption\">\n <slot name=\"caption\">\n <span>{{ props.caption }}</span>\n </slot>\n </component>\n <component :is=\"props.textTag\" v-if=\"hasText\">\n <slot name=\"text\">\n <span>{{ props.text }}</span>\n </slot>\n </component>\n <slot />\n </component>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, type CSSProperties, inject, toRef} from 'vue'\nimport type {BCarouselSlideProps} from '../../types/ComponentProps'\nimport {carouselInjectionKey} from '../../utils/keys'\nimport BImg from '../BImg/BImg.vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {isEmptySlot} from '../../utils/dom'\nimport {useId} from '../../composables/useId'\n\nconst _props = withDefaults(defineProps<BCarouselSlideProps>(), {\n background: undefined,\n caption: undefined,\n captionTag: 'h3',\n contentTag: 'div',\n contentVisibleUp: undefined,\n id: undefined,\n imgAlt: undefined,\n imgBlank: false,\n imgBlankColor: 'transparent',\n imgHeight: undefined,\n imgSrc: undefined,\n imgSrcset: undefined,\n imgWidth: undefined,\n interval: undefined,\n text: undefined,\n textTag: 'p',\n})\nconst props = useDefaults(_props, 'BCarouselSlide')\n\nconst slots = defineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n caption?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n img?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n text?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'carousel-slide')\nconst parentData = inject(carouselInjectionKey, null)\n\nconst hasText = computed(() => props.text || !isEmptySlot(slots.text))\nconst hasCaption = computed(() => props.caption || !isEmptySlot(slots.caption))\nconst hasContent = computed(() => hasText.value || hasCaption.value || !isEmptySlot(slots.default))\n\nconst computedStyle = computed<CSSProperties>(() => ({\n background: `${\n props.background || parentData?.background.value || 'rgb(171, 171, 171)'\n } none repeat scroll 0% 0%`,\n}))\n\nconst computedContentClasses = computed(() => ({\n 'd-none': props.contentVisibleUp !== undefined,\n [`d-${props.contentVisibleUp}-block`]: props.contentVisibleUp !== undefined,\n}))\n\ndefineExpose({\n _interval: toRef(() => props.interval),\n _id: computedId,\n})\n</script>\n"],"names":["slot","_useSlots","_useModel"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("vue"),t=require("./floatingUi-CYIctREh.js"),o=require("./index-CNL2tI0w.js"),a=require("./useDefaults-Bq2idhQU.js"),l=require("./useId-BOa4n5pr.js"),n=require("./BButton.vue_vue_type_script_setup_true_lang-BQI4HK70.js"),r=require("./ConditionalWrapper.vue_vue_type_script_lang-Du33jXia.js"),i=require("./ConditionalTeleport.vue_vue_type_script_lang-6a2bI705.js"),u=require("./getElement-Ca6iEV7Z.js"),d=require("./keys-C2BcfuxJ.js"),s=require("./useShowHide-hdpWiB0K.js"),p=require("./index-BqHkgtNq.js"),f=require("./_plugin-vue_export-helper-CC_fc8JW.js"),v={class:"visually-hidden"},c=["id","aria-labelledby","role"],g=e.defineComponent({__name:"BDropdown",props:e.mergeModels({ariaLabel:{default:void 0},autoClose:{type:[Boolean,String],default:!0},boundary:{default:"clippingAncestors"},boundaryPadding:{default:void 0},disabled:{type:Boolean,default:!1},floatingMiddleware:{default:void 0},id:{default:void 0},isNav:{type:Boolean,default:!1},menuClass:{default:void 0},noCaret:{type:Boolean,default:!1},noFlip:{type:Boolean,default:!1},noShift:{type:Boolean,default:!1},noSize:{type:Boolean,default:!1},offset:{default:0},role:{default:"menu"},size:{default:"md"},noWrapper:{type:Boolean,default:!1},split:{type:Boolean,default:!1},splitButtonType:{default:"button"},splitClass:{default:void 0},splitDisabled:{type:Boolean,default:void 0},splitHref:{default:void 0},splitTo:{default:void 0},splitVariant:{default:void 0},strategy:{default:"absolute"},text:{default:void 0},toggleClass:{default:void 0},toggleText:{default:"Toggle dropdown"},variant:{default:"secondary"},wrapperClass:{default:void 0},placement:{default:"bottom-start"},teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:void 0},initialAnimation:{type:Boolean,default:!1},noAnimation:{type:Boolean},noFade:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},unmountLazy:{type:Boolean,default:!1},show:{type:Boolean,default:!1},transProps:{default:void 0},visible:{type:Boolean,default:!1}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:e.mergeModels(["split-click","hide","hide-prevented","hidden","show","show-prevented","shown","toggle","toggle-prevented"],["update:modelValue"]),setup(f,{expose:g,emit:y}){const m=f,b=a.useDefaults(m,"BDropdown"),h=y,w=l.useId((()=>b.id),"dropdown"),_=e.useModel(f,"modelValue"),B=e.inject(d.inputGroupKey,!1),C=e.inject(d.buttonGroupKey,!1),x=e.computed((()=>"string"==typeof b.offset||"number"==typeof b.offset?b.offset:NaN)),k=p.useToNumber(x),S=e.useTemplateRef("_floating"),T=e.useTemplateRef("_button"),N=e.useTemplateRef("_splitButton"),z=e.computed((()=>t.isBoundary(b.boundary)?b.boundary:void 0)),j=e.computed((()=>t.isRootBoundary(b.boundary)?b.boundary:void 0)),q=e.computed((()=>b.split?T.value:N.value)),{showRef:D,renderRef:V,hide:A,show:M,toggle:E,computedNoAnimation:K,transitionProps:R,contentShowing:H,isVisible:P}=s.useShowHide(_,b,h,q,w),W=e.computed((()=>[{show:P.value,fade:!K.value}]));o.onKeyStroke("Escape",(()=>{var e;A(),null==(e=u.getElement(q.value))||e.focus()}),{target:q}),o.onKeyStroke("Escape",(()=>{var e;A(),null==(e=u.getElement(q.value))||e.focus()}),{target:S});const I=(t,o)=>{var a,l,n,r,i,u,d;if(null==(l=S.value)?void 0:l.contains(null==(a=t.target)?void 0:a.closest("form")))return;if(/input|select|option|textarea|form/i.test(null==(n=t.target)?void 0:n.tagName))return;if(t.preventDefault(),!D.value){M();const a=setInterval((()=>{P.value&&(clearInterval(a),e.nextTick((()=>I(t,o))))}),16);return}const s=null==(r=S.value)?void 0:r.querySelectorAll(".dropdown-item:not(.disabled):not(:disabled)");if(s)if(null==(i=S.value)?void 0:i.contains(document.activeElement)){const e=S.value.querySelector(".dropdown-item:focus"),t=Array.prototype.indexOf.call(s,e)+o;t>=0&&t<(null==s?void 0:s.length)&&(null==(u=s[t])||u.focus())}else null==(d=s[-1===o?s.length-1:0])||d.focus()};o.onKeyStroke("ArrowUp",(e=>I(e,-1)),{target:q}),o.onKeyStroke("ArrowDown",(e=>I(e,1)),{target:q}),o.onKeyStroke("ArrowUp",(e=>I(e,-1)),{target:S}),o.onKeyStroke("ArrowDown",(e=>I(e,1)),{target:S});const $=e.ref({}),F=e.computed((()=>{if(void 0!==b.floatingMiddleware)return b.floatingMiddleware;const e="string"==typeof b.offset||"number"==typeof b.offset?k.value:b.offset,o=[t.offset(e)];return!1===b.noFlip&&o.push(t.flip({boundary:z.value,rootBoundary:j.value,padding:b.boundaryPadding})),!1===b.noShift&&o.push(t.shift({boundary:z.value,rootBoundary:j.value,padding:b.boundaryPadding})),!1===b.noSize&&o.push(t.size({boundary:z.value,rootBoundary:j.value,padding:b.boundaryPadding,apply({availableWidth:e,availableHeight:t}){var o,a;$.value={maxHeight:t>=((null==(o=S.value)?void 0:o.scrollHeight)??0)?void 0:t?`${Math.max(0,t)}px`:void 0,maxWidth:e>=((null==(a=S.value)?void 0:a.scrollWidth)??0)?void 0:e?`${Math.max(0,e)}px`:void 0}}})),o})),{update:U,floatingStyles:G}=t.useFloating(q,S,{placement:()=>b.placement,middleware:F,strategy:e.toRef((()=>b.strategy)),whileElementsMounted:t.autoUpdate}),L=C?{class:"btn-group",role:"group"}:void 0,O=e.computed((()=>[null==L?void 0:L.class,b.wrapperClass,{"btn-group":!b.wrapperClass&&b.split,[`drop${t.resolveBootstrapCaret(b.placement)}`]:!b.wrapperClass,"position-static":"clippingAncestors"!==b.boundary&&!b.isNav}])),X=e.computed((()=>[b.split?b.splitClass:b.toggleClass,{"nav-link":b.isNav,"dropdown-toggle":!b.split,"dropdown-toggle-no-caret":b.noCaret&&!b.split,show:b.split?void 0:D.value}])),Z=()=>{E()},J=e=>{b.split?h("split-click",e):Z()};o.onClickOutside(S,(()=>{!D.value||!0!==b.autoClose&&"outside"!==b.autoClose||A()}),{ignore:[T,N]});const Q=()=>{!D.value||!0!==b.autoClose&&"inside"!==b.autoClose||A()};return e.watch(P,(()=>{U()})),g({hide:A,show:M,toggle:E}),e.provide(d.dropdownInjectionKey,{id:w,show:M,hide:A,toggle:E,visible:e.toRef((()=>D.value)),isNav:e.toRef((()=>b.isNav))}),(t,o)=>{var a;return e.openBlock(),e.createBlock(r._sfc_main,{skip:e.unref(B)||e.unref(b).noWrapper,class:e.normalizeClass(O.value),role:null==(a=e.unref(L))?void 0:a.role},{default:e.withCtx((()=>[e.createVNode(n._sfc_main,{id:e.unref(w),ref:"_splitButton",variant:e.unref(b).splitVariant||e.unref(b).variant,size:e.unref(b).size,class:e.normalizeClass(X.value),disabled:e.unref(b).splitDisabled||e.unref(b).disabled,type:e.unref(b).splitButtonType,"aria-label":e.unref(b).ariaLabel,"aria-expanded":e.unref(b).split?void 0:e.unref(D),"aria-haspopup":e.unref(b).split?void 0:"menu",href:e.unref(b).split?e.unref(b).splitHref:void 0,to:e.unref(b).split&&e.unref(b).splitTo?e.unref(b).splitTo:void 0,onClick:J},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"button-content",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(b).text),1)]),!0)])),_:3},8,["id","variant","size","class","disabled","type","aria-label","aria-expanded","aria-haspopup","href","to"]),e.unref(b).split?(e.openBlock(),e.createBlock(n._sfc_main,{key:0,id:e.unref(w)+"-split",ref:"_button",variant:e.unref(b).variant,size:e.unref(b).size,disabled:e.unref(b).disabled,class:e.normalizeClass([[e.unref(b).toggleClass,{show:e.unref(D)}],"dropdown-toggle-split dropdown-toggle"]),"aria-expanded":e.unref(D),"aria-haspopup":"menu",onClick:Z},{default:e.withCtx((()=>[e.createElementVNode("span",v,[e.renderSlot(t.$slots,"toggle-text",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(b).toggleText),1)]),!0)])])),_:3},8,["id","variant","size","disabled","class","aria-expanded"])):e.createCommentVNode("",!0),e.createVNode(i._sfc_main,{to:e.unref(b).teleportTo,disabled:!e.unref(b).teleportTo||e.unref(b).teleportDisabled},{default:e.withCtx((()=>[e.unref(V)||e.unref(H)?(e.openBlock(),e.createBlock(e.Transition,e.mergeProps({key:0},e.unref(R),{appear:_.value||e.unref(b).visible}),{default:e.withCtx((()=>[e.withDirectives(e.createElementVNode("ul",{id:e.unref(w)+"-menu",ref:"_floating",style:e.normalizeStyle([e.unref(G),$.value]),class:e.normalizeClass(["dropdown-menu overflow-auto",[e.unref(b).menuClass,W.value]]),"aria-labelledby":e.unref(w),role:e.unref(b).role,onClick:Q},[e.unref(H)?e.renderSlot(t.$slots,"default",{key:0,hide:e.unref(A),show:e.unref(M),visible:e.unref(D)},void 0,!0):e.createCommentVNode("",!0)],14,c),[[e.vShow,e.unref(D)]])])),_:3},16,["appear"])):e.createCommentVNode("",!0)])),_:3},8,["to","disabled"])])),_:3},8,["skip","class","role"])}}}),y=f._export_sfc(g,[["__scopeId","data-v-8ac2524d"]]);exports.BDropdown=y;
2
+ //# sourceMappingURL=BDropdown-BBciwq_T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BDropdown-BBciwq_T.js","sources":["../src/components/BDropdown/BDropdown.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles]\"\n class=\"dropdown-menu overflow-auto\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot v-if=\"contentShowing\" :hide=\"hide\" :show=\"show\" :visible=\"showRef\" />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BDropdownProps} from '../../types/ComponentProps'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {type showHideEmits, useShowHide} from '../../composables/useShowHide'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\n\nconst emit = defineEmits<\n {\n 'split-click': [event: MouseEvent]\n } & showHideEmits\n>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'button-content'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: {hide: () => void; show: () => void; visible: boolean}) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'toggle-text'?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floating = useTemplateRef<HTMLElement>('_floating')\nconst button = useTemplateRef<HTMLElement>('_button')\nconst splitButton = useTemplateRef<HTMLElement>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referencePlacement = computed(() => (!props.split ? splitButton.value : button.value))\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, referencePlacement, computedId)\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referencePlacement.value)?.focus()\n },\n {target: referencePlacement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referencePlacement.value)?.focus()\n },\n {target: floating}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floating.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floating.value?.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)')\n if (!list) return\n if (floating.value?.contains(document.activeElement)) {\n const active = floating.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referencePlacement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referencePlacement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floating})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floating})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n maxHeight:\n availableHeight >= (floating.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n maxWidth:\n availableWidth >= (floating.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referencePlacement, floating, {\n placement: () => props.placement,\n middleware: floatingMiddleware,\n strategy: toRef(() => props.strategy),\n whileElementsMounted: autoUpdate,\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floating,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: toRef(() => showRef.value),\n isNav: toRef(() => props.isNav),\n})\n</script>\n<style lang=\"scss\" scoped>\n.dropdown-menu {\n &.fade {\n display: block;\n }\n}\n</style>\n"],"names":["_props","__props","props","useDefaults","emit","__emit","computedId","useId","id","modelValue","_useModel","inInputGroup","inject","inputGroupKey","inButtonGroup","buttonGroupKey","computedOffset","computed","offset","NaN","offsetToNumber","useToNumber","floating","useTemplateRef","button","splitButton","boundary","isBoundary","rootBoundary","isRootBoundary","referencePlacement","split","value","showRef","renderRef","hide","show","toggle","computedNoAnimation","transitionProps","contentShowing","isVisible","useShowHide","computedMenuClasses","fade","index$1","onKeyStroke","getElement","_a","focus","target","keynav","e","v","_b","contains","closest","test","_c","tagName","preventDefault","loop","setInterval","clearInterval","nextTick","list","_d","querySelectorAll","_e","document","activeElement","active","querySelector","index","Array","prototype","indexOf","call","length","_f","_g","sizeStyles","ref","floatingMiddleware","localOffset","arr","offsetMiddleware","noFlip","push","flip","padding","boundaryPadding","noShift","shift","noSize","sizeMiddleware","apply","availableWidth","availableHeight","maxHeight","scrollHeight","Math","max","maxWidth","scrollWidth","update","floatingStyles","useFloating","placement","middleware","strategy","toRef","whileElementsMounted","autoUpdate","inButtonGroupAttributes","class","role","computedClasses","wrapperClass","resolveBootstrapCaret","isNav","buttonClasses","splitClass","toggleClass","noCaret","onButtonClick","onSplitClick","event","onClickOutside","autoClose","ignore","onClickInside","vue","watch","__expose","provide","dropdownInjectionKey","visible"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, mergeModels, useModel, inject, computed, useTemplateRef, ref, toRef, watch, provide, openBlock, createBlock, unref, normalizeClass, withCtx, createVNode, renderSlot, createTextVNode, toDisplayString, createElementVNode, createCommentVNode, Transition, mergeProps, withDirectives, normalizeStyle, vShow, nextTick } from "vue";
2
- import { i as isBoundary, d as isRootBoundary, f as flip, s as shift, e as size, g as useFloating, h as autoUpdate, o as offset } from "./floatingUi-CsxgENev.mjs";
2
+ import { i as isBoundary, d as isRootBoundary, f as flip, s as shift, e as size, g as useFloating, h as autoUpdate, j as resolveBootstrapCaret, o as offset } from "./floatingUi-CNPoh8hs.mjs";
3
3
  import { o as onKeyStroke, k as onClickOutside } from "./index-Bkyn4R9C.mjs";
4
4
  import { u as useDefaults } from "./useDefaults-BTLXvYhO.mjs";
5
5
  import { u as useId } from "./useId-c2wnQbyL.mjs";
@@ -61,7 +61,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
61
61
  "modelValue": { type: Boolean, ...{ default: false } },
62
62
  "modelModifiers": {}
63
63
  }),
64
- emits: /* @__PURE__ */ mergeModels(["click", "hide", "hide-prevented", "hidden", "show", "show-prevented", "shown", "toggle", "toggle-prevented"], ["update:modelValue"]),
64
+ emits: /* @__PURE__ */ mergeModels(["split-click", "hide", "hide-prevented", "hidden", "show", "show-prevented", "shown", "toggle", "toggle-prevented"], ["update:modelValue"]),
65
65
  setup(__props, { expose: __expose, emit: __emit }) {
66
66
  const _props = __props;
67
67
  const props = useDefaults(_props, "BDropdown");
@@ -206,7 +206,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
206
206
  props.wrapperClass,
207
207
  {
208
208
  "btn-group": !props.wrapperClass && props.split,
209
- "dropdown": !props.wrapperClass && !props.split,
209
+ [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,
210
210
  "position-static": props.boundary !== "clippingAncestors" && !props.isNav
211
211
  }
212
212
  ]);
@@ -224,7 +224,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
224
224
  };
225
225
  const onSplitClick = (event) => {
226
226
  if (props.split) {
227
- emit("click", event);
227
+ emit("split-click", event);
228
228
  return;
229
229
  }
230
230
  onButtonClick();
@@ -349,8 +349,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
349
349
  };
350
350
  }
351
351
  });
352
- const BDropdown = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5ca1e58b"]]);
352
+ const BDropdown = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8ac2524d"]]);
353
353
  export {
354
354
  BDropdown as B
355
355
  };
356
- //# sourceMappingURL=BDropdown-BucS94bu.mjs.map
356
+ //# sourceMappingURL=BDropdown-DlCQsS9y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BDropdown-DlCQsS9y.mjs","sources":["../src/components/BDropdown/BDropdown.vue"],"sourcesContent":["<template>\n <ConditionalWrapper\n :skip=\"inInputGroup || props.noWrapper\"\n :class=\"computedClasses\"\n :role=\"inButtonGroupAttributes?.role\"\n >\n <BButton\n :id=\"computedId\"\n ref=\"_splitButton\"\n :variant=\"props.splitVariant || props.variant\"\n :size=\"props.size\"\n :class=\"buttonClasses\"\n :disabled=\"props.splitDisabled || props.disabled\"\n :type=\"props.splitButtonType\"\n :aria-label=\"props.ariaLabel\"\n :aria-expanded=\"props.split ? undefined : showRef\"\n :aria-haspopup=\"props.split ? undefined : 'menu'\"\n :href=\"props.split ? props.splitHref : undefined\"\n :to=\"props.split && props.splitTo ? props.splitTo : undefined\"\n @click=\"onSplitClick\"\n >\n <slot name=\"button-content\"> {{ props.text }} </slot>\n </BButton>\n <BButton\n v-if=\"props.split\"\n :id=\"computedId + '-split'\"\n ref=\"_button\"\n :variant=\"props.variant\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :class=\"[props.toggleClass, {show: showRef}]\"\n class=\"dropdown-toggle-split dropdown-toggle\"\n :aria-expanded=\"showRef\"\n aria-haspopup=\"menu\"\n @click=\"onButtonClick\"\n >\n <span class=\"visually-hidden\">\n <slot name=\"toggle-text\">\n {{ props.toggleText }}\n </slot>\n </span>\n </BButton>\n <ConditionalTeleport\n :to=\"props.teleportTo\"\n :disabled=\"!props.teleportTo || props.teleportDisabled\"\n >\n <Transition\n v-if=\"renderRef || contentShowing\"\n v-bind=\"transitionProps\"\n :appear=\"modelValue || props.visible\"\n >\n <ul\n v-show=\"showRef\"\n :id=\"computedId + '-menu'\"\n ref=\"_floating\"\n :style=\"[floatingStyles, sizeStyles]\"\n class=\"dropdown-menu overflow-auto\"\n :class=\"[props.menuClass, computedMenuClasses]\"\n :aria-labelledby=\"computedId\"\n :role=\"props.role\"\n @click=\"onClickInside\"\n >\n <slot v-if=\"contentShowing\" :hide=\"hide\" :show=\"show\" :visible=\"showRef\" />\n </ul>\n </Transition>\n </ConditionalTeleport>\n </ConditionalWrapper>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n autoUpdate,\n type Boundary,\n flip,\n type Middleware,\n offset as offsetMiddleware,\n type RootBoundary,\n shift,\n size as sizeMiddleware,\n useFloating,\n} from '@floating-ui/vue'\nimport {onClickOutside, onKeyStroke, useToNumber} from '@vueuse/core'\nimport {\n computed,\n type CSSProperties,\n type EmitFn,\n inject,\n nextTick,\n provide,\n ref,\n toRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {useId} from '../../composables/useId'\nimport type {BDropdownProps} from '../../types/ComponentProps'\nimport BButton from '../BButton/BButton.vue'\nimport ConditionalWrapper from '../ConditionalWrapper.vue'\nimport ConditionalTeleport from '../ConditionalTeleport.vue'\nimport {isBoundary, isRootBoundary, resolveBootstrapCaret} from '../../utils/floatingUi'\nimport {getElement} from '../../utils/getElement'\nimport {buttonGroupKey, dropdownInjectionKey, inputGroupKey} from '../../utils/keys'\nimport {type showHideEmits, useShowHide} from '../../composables/useShowHide'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n id: undefined,\n initialAnimation: false,\n isNav: false,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFade: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n unmountLazy: false,\n role: 'menu',\n size: 'md',\n noWrapper: false,\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n placement: 'bottom-start',\n splitVariant: undefined,\n strategy: 'absolute',\n text: undefined,\n show: false,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n transProps: undefined,\n variant: 'secondary',\n visible: false,\n wrapperClass: undefined,\n})\nconst props = useDefaults(_props, 'BDropdown')\n\nconst emit = defineEmits<\n {\n 'split-click': [event: MouseEvent]\n } & showHideEmits\n>()\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'button-content'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: {hide: () => void; show: () => void; visible: boolean}) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'toggle-text'?: (props: Record<string, never>) => any\n}>()\n\nconst computedId = useId(() => props.id, 'dropdown')\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\nconst inInputGroup = inject(inputGroupKey, false)\nconst inButtonGroup = inject(buttonGroupKey, false)\n\nconst computedOffset = computed(() =>\n typeof props.offset === 'string' || typeof props.offset === 'number' ? props.offset : NaN\n)\nconst offsetToNumber = useToNumber(computedOffset)\n\nconst floating = useTemplateRef<HTMLElement>('_floating')\nconst button = useTemplateRef<HTMLElement>('_button')\nconst splitButton = useTemplateRef<HTMLElement>('_splitButton')\n\nconst boundary = computed<Boundary | undefined>(() =>\n isBoundary(props.boundary) ? props.boundary : undefined\n)\nconst rootBoundary = computed<RootBoundary | undefined>(() =>\n isRootBoundary(props.boundary) ? props.boundary : undefined\n)\n\nconst referencePlacement = computed(() => (!props.split ? splitButton.value : button.value))\n\nconst {\n showRef,\n renderRef,\n hide,\n show,\n toggle,\n computedNoAnimation,\n transitionProps,\n contentShowing,\n isVisible,\n} = useShowHide(modelValue, props, emit as EmitFn, referencePlacement, computedId)\n\nconst computedMenuClasses = computed(() => [\n {\n show: isVisible.value,\n fade: !computedNoAnimation.value,\n },\n])\n\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referencePlacement.value)?.focus()\n },\n {target: referencePlacement}\n)\nonKeyStroke(\n 'Escape',\n () => {\n hide()\n getElement(referencePlacement.value)?.focus()\n },\n {target: floating}\n)\n\nconst keynav = (e: Readonly<Event>, v: number) => {\n if (floating.value?.contains((e.target as HTMLElement)?.closest('form'))) return\n if (/input|select|option|textarea|form/i.test((e.target as HTMLElement)?.tagName)) return\n e.preventDefault()\n if (!showRef.value) {\n show()\n const loop = setInterval(() => {\n if (isVisible.value) {\n clearInterval(loop)\n nextTick(() => keynav(e, v))\n }\n }, 16)\n return\n }\n const list = floating.value?.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)')\n if (!list) return\n if (floating.value?.contains(document.activeElement)) {\n const active = floating.value.querySelector('.dropdown-item:focus')\n const index = Array.prototype.indexOf.call(list, active) + v\n if (index >= 0 && index < list?.length) (list[index] as HTMLElement)?.focus()\n } else {\n ;(list[v === -1 ? list.length - 1 : 0] as HTMLElement)?.focus()\n }\n}\n\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: referencePlacement})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: referencePlacement})\nonKeyStroke('ArrowUp', (e) => keynav(e, -1), {target: floating})\nonKeyStroke('ArrowDown', (e) => keynav(e, 1), {target: floating})\n\nconst sizeStyles = ref<CSSProperties>({})\nconst floatingMiddleware = computed<Middleware[]>(() => {\n if (props.floatingMiddleware !== undefined) {\n return props.floatingMiddleware\n }\n const localOffset =\n typeof props.offset === 'string' || typeof props.offset === 'number'\n ? offsetToNumber.value\n : props.offset\n const arr: Middleware[] = [offsetMiddleware(localOffset)]\n if (props.noFlip === false) {\n arr.push(\n flip({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noShift === false) {\n arr.push(\n shift({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n })\n )\n }\n if (props.noSize === false) {\n arr.push(\n sizeMiddleware({\n boundary: boundary.value,\n rootBoundary: rootBoundary.value,\n padding: props.boundaryPadding,\n apply({availableWidth, availableHeight}) {\n sizeStyles.value = {\n maxHeight:\n availableHeight >= (floating.value?.scrollHeight ?? 0)\n ? undefined\n : availableHeight\n ? `${Math.max(0, availableHeight)}px`\n : undefined,\n maxWidth:\n availableWidth >= (floating.value?.scrollWidth ?? 0)\n ? undefined\n : availableWidth\n ? `${Math.max(0, availableWidth)}px`\n : undefined,\n }\n },\n })\n )\n }\n return arr\n})\nconst {update, floatingStyles} = useFloating(referencePlacement, floating, {\n placement: () => props.placement,\n middleware: floatingMiddleware,\n strategy: toRef(() => props.strategy),\n whileElementsMounted: autoUpdate,\n})\n\nconst inButtonGroupAttributes = inButtonGroup\n ? {\n class: 'btn-group',\n role: 'group',\n }\n : undefined\n\nconst computedClasses = computed(() => [\n inButtonGroupAttributes?.class,\n props.wrapperClass,\n {\n 'btn-group': !props.wrapperClass && props.split,\n [`drop${resolveBootstrapCaret(props.placement)}`]: !props.wrapperClass,\n 'position-static': props.boundary !== 'clippingAncestors' && !props.isNav,\n },\n])\n\nconst buttonClasses = computed(() => [\n props.split ? props.splitClass : props.toggleClass,\n {\n 'nav-link': props.isNav,\n 'dropdown-toggle': !props.split,\n 'dropdown-toggle-no-caret': props.noCaret && !props.split,\n 'show': props.split ? undefined : showRef.value,\n },\n])\n\nconst onButtonClick = () => {\n toggle()\n}\n\nconst onSplitClick = (event: Readonly<MouseEvent>) => {\n if (props.split) {\n emit('split-click', event)\n return\n }\n onButtonClick()\n}\n\nonClickOutside(\n floating,\n () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'outside')) {\n hide()\n }\n },\n {ignore: [button, splitButton]}\n)\nconst onClickInside = () => {\n if (showRef.value && (props.autoClose === true || props.autoClose === 'inside')) {\n hide()\n }\n}\n\nwatch(isVisible, () => {\n update()\n})\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n\nprovide(dropdownInjectionKey, {\n id: computedId,\n show,\n hide,\n toggle,\n visible: toRef(() => showRef.value),\n isNav: toRef(() => props.isNav),\n})\n</script>\n<style lang=\"scss\" scoped>\n.dropdown-menu {\n &.fade {\n display: block;\n }\n}\n</style>\n"],"names":["_useModel","offsetMiddleware","sizeMiddleware"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { u as useDefaults } from "./useDefaults-BTLXvYhO.mjs";
4
4
  import { _ as _sfc_main$5 } from "./BForm.vue_vue_type_script_setup_true_lang-Crnxo4h0.mjs";
5
5
  import { _ as _sfc_main$6 } from "./BLink.vue_vue_type_script_setup_true_lang-X9oGQtcq.mjs";
6
6
  import { p as pick } from "./object-DIbMZaP9.mjs";
7
- import { B as BDropdown } from "./BDropdown-BucS94bu.mjs";
7
+ import { B as BDropdown } from "./BDropdown-DlCQsS9y.mjs";
8
8
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
9
9
  __name: "BNav",
10
10
  props: {
@@ -230,7 +230,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
230
230
  "modelValue": { type: Boolean, ...{ default: false } },
231
231
  "modelModifiers": {}
232
232
  }),
233
- emits: /* @__PURE__ */ mergeModels(["click", "hide", "hide-prevented", "hidden", "show", "show-prevented", "shown", "toggle", "toggle-prevented"], ["update:modelValue"]),
233
+ emits: /* @__PURE__ */ mergeModels(["split-click", "hide", "hide-prevented", "hidden", "show", "show-prevented", "shown", "toggle", "toggle-prevented"], ["update:modelValue"]),
234
234
  setup(__props, { expose: __expose, emit: __emit }) {
235
235
  const _props = __props;
236
236
  const props = useDefaults(_props, "BNavItemDropdown");
@@ -268,7 +268,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
268
268
  onShowPrevented: _cache[6] || (_cache[6] = ($event) => emit("show-prevented", $event)),
269
269
  onTogglePrevented: _cache[7] || (_cache[7] = ($event) => emit("toggle-prevented", $event)),
270
270
  onToggle: _cache[8] || (_cache[8] = ($event) => emit("toggle", $event)),
271
- onClick: _cache[9] || (_cache[9] = ($event) => emit("click", $event))
271
+ onSplitClick: _cache[9] || (_cache[9] = ($event) => emit("split-click", $event))
272
272
  }), {
273
273
  "button-content": withCtx(() => [
274
274
  renderSlot(_ctx.$slots, "button-content")
@@ -313,4 +313,4 @@ export {
313
313
  _sfc_main$1 as c,
314
314
  _sfc_main as d
315
315
  };
316
- //# sourceMappingURL=BNavText.vue_vue_type_script_setup_true_lang-DE6m-KYq.mjs.map
316
+ //# sourceMappingURL=BNavText.vue_vue_type_script_setup_true_lang-Bq76AlQQ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"BNavText.vue_vue_type_script_setup_true_lang-DE6m-KYq.mjs","sources":["../src/components/BNav/BNav.vue","../src/components/BNav/BNavForm.vue","../src/components/BNav/BNavItem.vue","../src/components/BNav/BNavItemDropdown.vue","../src/components/BNav/BNavText.vue"],"sourcesContent":["<template>\n <component :is=\"props.tag\" class=\"nav\" :class=\"computedClasses\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BNavProps} from '../../types/ComponentProps'\nimport {useAlignment} from '../../composables/useAlignment'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BNavProps>(), {\n align: undefined,\n cardHeader: false,\n fill: false,\n justified: false,\n pills: false,\n small: false,\n tabs: false,\n tag: 'ul',\n underline: false,\n vertical: false,\n})\nconst props = useDefaults(_props, 'BNav')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst alignment = useAlignment(() => props.align)\n\nconst computedClasses = computed(() => ({\n 'nav-tabs': props.tabs,\n 'nav-pills': props.pills && !props.tabs,\n 'card-header-tabs': !props.vertical && props.cardHeader && props.tabs,\n 'card-header-pills': !props.vertical && props.cardHeader && props.pills && !props.tabs,\n 'flex-column': props.vertical,\n 'nav-fill': !props.vertical && props.fill,\n 'nav-justified': !props.vertical && props.justified,\n [alignment.value]: !props.vertical && props.align !== undefined,\n 'small': props.small,\n 'nav-underline': props.underline,\n}))\n</script>\n","<template>\n <li :class=\"liClasses\" v-bind=\"wrapperAttrs\">\n <BForm\n v-bind=\"processedAttrs.formAttrs\"\n :id=\"props.id\"\n :floating=\"props.floating\"\n :role=\"props.role\"\n :novalidate=\"props.novalidate\"\n :validated=\"props.validated\"\n class=\"d-flex\"\n :class=\"props.formClass\"\n @submit.prevent=\"submitted\"\n >\n <slot />\n </BForm>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useAttrs} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BNavFormProps} from '../../types/ComponentProps'\nimport BForm from '../BForm/BForm.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<BNavFormProps>(), {\n role: undefined,\n wrapperAttrs: undefined,\n formClass: undefined,\n // BForm props\n floating: undefined,\n id: undefined,\n novalidate: undefined,\n validated: undefined,\n // End BForm props\n})\nconst props = useDefaults(_props, 'BNavForm')\n\nconst emit = defineEmits<{\n submit: [value: Event]\n}>()\n\nconst attrs = useAttrs()\nconst processedAttrs = computed(() => {\n const {class: wrapperClass, ...formAttrs} = attrs\n return {wrapperClass, formAttrs}\n})\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst submitted = (e: Readonly<Event>) => {\n emit('submit', e)\n}\n\nconst liClasses = computed(() => [\n 'd-flex',\n 'flex-row',\n 'align-items-center',\n 'flex-wrap',\n processedAttrs.value.wrapperClass,\n])\n</script>\n","<template>\n <li class=\"nav-item\">\n <BLink\n class=\"nav-link\"\n :class=\"linkClass\"\n :tabindex=\"props.disabled ? -1 : undefined\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n v-bind=\"{...computedLinkProps, ...linkAttrs}\"\n @click=\"emit('click', $event)\"\n >\n <slot />\n </BLink>\n <slot name=\"after\" />\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport BLink from '../BLink/BLink.vue'\nimport type {BNavItemProps} from '../../types/ComponentProps'\nimport {pick} from '../../utils/object'\nimport {useDefaults} from '../../composables/useDefaults'\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n after?: (props: Record<string, never>) => any\n}>()\n\nconst _props = withDefaults(defineProps<BNavItemProps>(), {\n // Link props\n active: undefined,\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n href: undefined,\n icon: undefined,\n linkAttrs: undefined,\n linkClass: undefined,\n opacity: undefined,\n stretched: false,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n routerComponentName: undefined,\n target: undefined,\n to: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: undefined,\n variant: undefined,\n // End link props\n})\nconst props = useDefaults(_props, 'BNavItem')\n\nconst emit = defineEmits<{\n click: [value: MouseEvent]\n}>()\n\nconst computedLinkProps = computed(() =>\n pick(props, [\n 'active',\n 'activeClass',\n 'exactActiveClass',\n 'append',\n 'disabled',\n 'href',\n 'icon',\n 'opacity',\n 'opacityHover',\n 'rel',\n 'replace',\n 'routerComponentName',\n 'target',\n 'to',\n 'underlineOffset',\n 'underlineOffsetHover',\n 'underlineOpacity',\n 'underlineOpacityHover',\n 'underlineVariant',\n 'variant',\n ])\n)\n</script>\n","<template>\n <li class=\"nav-item dropdown\">\n <BDropdown\n ref=\"_dropdown\"\n v-bind=\"props\"\n v-model=\"modelValue\"\n is-nav\n @show=\"emit('show', $event)\"\n @shown=\"emit('shown', $event)\"\n @hide=\"emit('hide', $event)\"\n @hidden=\"emit('hidden', $event)\"\n @hide-prevented=\"emit('hide-prevented', $event)\"\n @show-prevented=\"emit('show-prevented', $event)\"\n @toggle-prevented=\"emit('toggle-prevented', $event)\"\n @toggle=\"emit('toggle', $event)\"\n @click=\"emit('click', $event)\"\n >\n <template #button-content>\n <slot name=\"button-content\" />\n </template>\n <template #toggle-text>\n <slot name=\"toggle-text\" />\n </template>\n <template #default>\n <slot :hide=\"hide\" :show=\"show\" />\n </template>\n </BDropdown>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport {useTemplateRef} from 'vue'\nimport BDropdown from '../BDropdown/BDropdown.vue'\nimport type {BDropdownProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {showHideEmits} from '../../composables/useShowHide'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n block: false,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n id: undefined,\n initialAnimation: false,\n isNav: true,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n role: 'menu',\n size: 'md',\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n splitVariant: undefined,\n placement: undefined,\n noWrapper: undefined,\n wrapperClass: undefined,\n strategy: 'absolute',\n text: undefined,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n variant: 'link',\n})\nconst props = useDefaults(_props, 'BNavItemDropdown')\n\nconst emit = defineEmits<\n {\n click: [event: MouseEvent]\n } & showHideEmits\n>()\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'button-content'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: {hide: () => void; show: () => void}) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'toggle-text'?: (props: Record<string, never>) => any\n}>()\nconst dropdown = useTemplateRef<InstanceType<typeof BDropdown>>('_dropdown')\n\nconst hide = () => {\n dropdown.value?.hide()\n}\nconst show = () => {\n dropdown.value?.show()\n}\nconst toggle = () => {\n dropdown.value?.toggle()\n}\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n</script>\n","<template>\n <li class=\"navbar-text\">\n <slot>\n {{ props.text }}\n </slot>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BNavTextProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BNavTextProps>(), {text: undefined})\nconst props = useDefaults(_props, 'BNavText')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n</script>\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAYA,UAAM,SAAS;AAYT,UAAA,QAAQ,YAAY,QAAQ,MAAM;AAOxC,UAAM,YAAY,aAAa,MAAM,MAAM,KAAK;AAE1C,UAAA,kBAAkB,SAAS,OAAO;AAAA,MACtC,YAAY,MAAM;AAAA,MAClB,aAAa,MAAM,SAAS,CAAC,MAAM;AAAA,MACnC,oBAAoB,CAAC,MAAM,YAAY,MAAM,cAAc,MAAM;AAAA,MACjE,qBAAqB,CAAC,MAAM,YAAY,MAAM,cAAc,MAAM,SAAS,CAAC,MAAM;AAAA,MAClF,eAAe,MAAM;AAAA,MACrB,YAAY,CAAC,MAAM,YAAY,MAAM;AAAA,MACrC,iBAAiB,CAAC,MAAM,YAAY,MAAM;AAAA,MAC1C,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,YAAY,MAAM,UAAU;AAAA,MACtD,SAAS,MAAM;AAAA,MACf,iBAAiB,MAAM;AAAA,IAAA,EACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBF,UAAM,SAAS;AAWT,UAAA,QAAQ,YAAY,QAAQ,UAAU;AAE5C,UAAM,OAAO;AAIb,UAAM,QAAQ,SAAS;AACjB,UAAA,iBAAiB,SAAS,MAAM;AACpC,YAAM,EAAC,OAAO,cAAc,GAAG,UAAa,IAAA;AACrC,aAAA,EAAC,cAAc,UAAS;AAAA,IAAA,CAChC;AAOK,UAAA,YAAY,CAAC,MAAuB;AACxC,WAAK,UAAU,CAAC;AAAA,IAClB;AAEM,UAAA,YAAY,SAAS,MAAM;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,MAAM;AAAA,IAAA,CACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCD,UAAM,SAAS;AA0BT,UAAA,QAAQ,YAAY,QAAQ,UAAU;AAE5C,UAAM,OAAO;AAIb,UAAM,oBAAoB;AAAA,MAAS,MACjC,KAAK,OAAO;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAA;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChDA,UAAM,SAAS;AAsCT,UAAA,QAAQ,YAAY,QAAQ,kBAAkB;AAEpD,UAAM,OAAO;AAMP,UAAA,aAAaA,SAA8E,SAAA,YAAA;AAU3F,UAAA,WAAW,eAA+C,WAAW;AAE3E,UAAM,OAAO,MAAM;;AACjB,qBAAS,UAAT,mBAAgB;AAAA,IAClB;AACA,UAAM,OAAO,MAAM;;AACjB,qBAAS,UAAT,mBAAgB;AAAA,IAClB;AACA,UAAM,SAAS,MAAM;;AACnB,qBAAS,UAAT,mBAAgB;AAAA,IAClB;AAEa,aAAA;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjGD,UAAM,SAAS;AACT,UAAA,QAAQ,YAAY,QAAQ,UAAU;;;;;;;;;;"}
1
+ {"version":3,"file":"BNavText.vue_vue_type_script_setup_true_lang-Bq76AlQQ.mjs","sources":["../src/components/BNav/BNav.vue","../src/components/BNav/BNavForm.vue","../src/components/BNav/BNavItem.vue","../src/components/BNav/BNavItemDropdown.vue","../src/components/BNav/BNavText.vue"],"sourcesContent":["<template>\n <component :is=\"props.tag\" class=\"nav\" :class=\"computedClasses\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport type {BNavProps} from '../../types/ComponentProps'\nimport {useAlignment} from '../../composables/useAlignment'\nimport {useDefaults} from '../../composables/useDefaults'\nimport {computed} from 'vue'\n\nconst _props = withDefaults(defineProps<BNavProps>(), {\n align: undefined,\n cardHeader: false,\n fill: false,\n justified: false,\n pills: false,\n small: false,\n tabs: false,\n tag: 'ul',\n underline: false,\n vertical: false,\n})\nconst props = useDefaults(_props, 'BNav')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst alignment = useAlignment(() => props.align)\n\nconst computedClasses = computed(() => ({\n 'nav-tabs': props.tabs,\n 'nav-pills': props.pills && !props.tabs,\n 'card-header-tabs': !props.vertical && props.cardHeader && props.tabs,\n 'card-header-pills': !props.vertical && props.cardHeader && props.pills && !props.tabs,\n 'flex-column': props.vertical,\n 'nav-fill': !props.vertical && props.fill,\n 'nav-justified': !props.vertical && props.justified,\n [alignment.value]: !props.vertical && props.align !== undefined,\n 'small': props.small,\n 'nav-underline': props.underline,\n}))\n</script>\n","<template>\n <li :class=\"liClasses\" v-bind=\"wrapperAttrs\">\n <BForm\n v-bind=\"processedAttrs.formAttrs\"\n :id=\"props.id\"\n :floating=\"props.floating\"\n :role=\"props.role\"\n :novalidate=\"props.novalidate\"\n :validated=\"props.validated\"\n class=\"d-flex\"\n :class=\"props.formClass\"\n @submit.prevent=\"submitted\"\n >\n <slot />\n </BForm>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed, useAttrs} from 'vue'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BNavFormProps} from '../../types/ComponentProps'\nimport BForm from '../BForm/BForm.vue'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst _props = withDefaults(defineProps<BNavFormProps>(), {\n role: undefined,\n wrapperAttrs: undefined,\n formClass: undefined,\n // BForm props\n floating: undefined,\n id: undefined,\n novalidate: undefined,\n validated: undefined,\n // End BForm props\n})\nconst props = useDefaults(_props, 'BNavForm')\n\nconst emit = defineEmits<{\n submit: [value: Event]\n}>()\n\nconst attrs = useAttrs()\nconst processedAttrs = computed(() => {\n const {class: wrapperClass, ...formAttrs} = attrs\n return {wrapperClass, formAttrs}\n})\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n\nconst submitted = (e: Readonly<Event>) => {\n emit('submit', e)\n}\n\nconst liClasses = computed(() => [\n 'd-flex',\n 'flex-row',\n 'align-items-center',\n 'flex-wrap',\n processedAttrs.value.wrapperClass,\n])\n</script>\n","<template>\n <li class=\"nav-item\">\n <BLink\n class=\"nav-link\"\n :class=\"linkClass\"\n :tabindex=\"props.disabled ? -1 : undefined\"\n :aria-disabled=\"props.disabled ? true : undefined\"\n v-bind=\"{...computedLinkProps, ...linkAttrs}\"\n @click=\"emit('click', $event)\"\n >\n <slot />\n </BLink>\n <slot name=\"after\" />\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport {computed} from 'vue'\nimport BLink from '../BLink/BLink.vue'\nimport type {BNavItemProps} from '../../types/ComponentProps'\nimport {pick} from '../../utils/object'\nimport {useDefaults} from '../../composables/useDefaults'\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n after?: (props: Record<string, never>) => any\n}>()\n\nconst _props = withDefaults(defineProps<BNavItemProps>(), {\n // Link props\n active: undefined,\n activeClass: undefined,\n disabled: undefined,\n exactActiveClass: undefined,\n href: undefined,\n icon: undefined,\n linkAttrs: undefined,\n linkClass: undefined,\n opacity: undefined,\n stretched: false,\n opacityHover: undefined,\n rel: undefined,\n replace: undefined,\n routerComponentName: undefined,\n target: undefined,\n to: undefined,\n underlineOffset: undefined,\n underlineOffsetHover: undefined,\n underlineOpacity: undefined,\n underlineOpacityHover: undefined,\n underlineVariant: undefined,\n variant: undefined,\n // End link props\n})\nconst props = useDefaults(_props, 'BNavItem')\n\nconst emit = defineEmits<{\n click: [value: MouseEvent]\n}>()\n\nconst computedLinkProps = computed(() =>\n pick(props, [\n 'active',\n 'activeClass',\n 'exactActiveClass',\n 'append',\n 'disabled',\n 'href',\n 'icon',\n 'opacity',\n 'opacityHover',\n 'rel',\n 'replace',\n 'routerComponentName',\n 'target',\n 'to',\n 'underlineOffset',\n 'underlineOffsetHover',\n 'underlineOpacity',\n 'underlineOpacityHover',\n 'underlineVariant',\n 'variant',\n ])\n)\n</script>\n","<template>\n <li class=\"nav-item dropdown\">\n <BDropdown\n ref=\"_dropdown\"\n v-bind=\"props\"\n v-model=\"modelValue\"\n is-nav\n @show=\"emit('show', $event)\"\n @shown=\"emit('shown', $event)\"\n @hide=\"emit('hide', $event)\"\n @hidden=\"emit('hidden', $event)\"\n @hide-prevented=\"emit('hide-prevented', $event)\"\n @show-prevented=\"emit('show-prevented', $event)\"\n @toggle-prevented=\"emit('toggle-prevented', $event)\"\n @toggle=\"emit('toggle', $event)\"\n @split-click=\"emit('split-click', $event)\"\n >\n <template #button-content>\n <slot name=\"button-content\" />\n </template>\n <template #toggle-text>\n <slot name=\"toggle-text\" />\n </template>\n <template #default>\n <slot :hide=\"hide\" :show=\"show\" />\n </template>\n </BDropdown>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport {useTemplateRef} from 'vue'\nimport BDropdown from '../BDropdown/BDropdown.vue'\nimport type {BDropdownProps} from '../../types/ComponentProps'\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {showHideEmits} from '../../composables/useShowHide'\n\nconst _props = withDefaults(defineProps<Omit<BDropdownProps, 'modelValue'>>(), {\n ariaLabel: undefined,\n autoClose: true,\n block: false,\n boundary: 'clippingAncestors',\n boundaryPadding: undefined,\n teleportTo: undefined,\n teleportDisabled: false,\n disabled: false,\n floatingMiddleware: undefined,\n id: undefined,\n initialAnimation: false,\n isNav: true,\n lazy: false,\n menuClass: undefined,\n noCaret: false,\n noFlip: false,\n noShift: false,\n noSize: false,\n offset: 0,\n role: 'menu',\n size: 'md',\n split: false,\n splitButtonType: 'button',\n splitClass: undefined,\n splitDisabled: undefined,\n splitHref: undefined,\n splitTo: undefined,\n splitVariant: undefined,\n placement: undefined,\n noWrapper: undefined,\n wrapperClass: undefined,\n strategy: 'absolute',\n text: undefined,\n toggleClass: undefined,\n toggleText: 'Toggle dropdown',\n variant: 'link',\n})\nconst props = useDefaults(_props, 'BNavItemDropdown')\n\nconst emit = defineEmits<\n {\n 'split-click': [event: MouseEvent]\n } & showHideEmits\n>()\n\nconst modelValue = defineModel<Exclude<BDropdownProps['modelValue'], undefined>>({default: false})\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'button-content'?: (props: Record<string, never>) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'default'?: (props: {hide: () => void; show: () => void}) => any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n 'toggle-text'?: (props: Record<string, never>) => any\n}>()\nconst dropdown = useTemplateRef<InstanceType<typeof BDropdown>>('_dropdown')\n\nconst hide = () => {\n dropdown.value?.hide()\n}\nconst show = () => {\n dropdown.value?.show()\n}\nconst toggle = () => {\n dropdown.value?.toggle()\n}\n\ndefineExpose({\n hide,\n show,\n toggle,\n})\n</script>\n","<template>\n <li class=\"navbar-text\">\n <slot>\n {{ props.text }}\n </slot>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport {useDefaults} from '../../composables/useDefaults'\nimport type {BNavTextProps} from '../../types/ComponentProps'\n\nconst _props = withDefaults(defineProps<BNavTextProps>(), {text: undefined})\nconst props = useDefaults(_props, 'BNavText')\n\ndefineSlots<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n default?: (props: Record<string, never>) => any\n}>()\n</script>\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAYA,UAAM,SAAS;AAYT,UAAA,QAAQ,YAAY,QAAQ,MAAM;AAOxC,UAAM,YAAY,aAAa,MAAM,MAAM,KAAK;AAE1C,UAAA,kBAAkB,SAAS,OAAO;AAAA,MACtC,YAAY,MAAM;AAAA,MAClB,aAAa,MAAM,SAAS,CAAC,MAAM;AAAA,MACnC,oBAAoB,CAAC,MAAM,YAAY,MAAM,cAAc,MAAM;AAAA,MACjE,qBAAqB,CAAC,MAAM,YAAY,MAAM,cAAc,MAAM,SAAS,CAAC,MAAM;AAAA,MAClF,eAAe,MAAM;AAAA,MACrB,YAAY,CAAC,MAAM,YAAY,MAAM;AAAA,MACrC,iBAAiB,CAAC,MAAM,YAAY,MAAM;AAAA,MAC1C,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,YAAY,MAAM,UAAU;AAAA,MACtD,SAAS,MAAM;AAAA,MACf,iBAAiB,MAAM;AAAA,IAAA,EACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBF,UAAM,SAAS;AAWT,UAAA,QAAQ,YAAY,QAAQ,UAAU;AAE5C,UAAM,OAAO;AAIb,UAAM,QAAQ,SAAS;AACjB,UAAA,iBAAiB,SAAS,MAAM;AACpC,YAAM,EAAC,OAAO,cAAc,GAAG,UAAa,IAAA;AACrC,aAAA,EAAC,cAAc,UAAS;AAAA,IAAA,CAChC;AAOK,UAAA,YAAY,CAAC,MAAuB;AACxC,WAAK,UAAU,CAAC;AAAA,IAClB;AAEM,UAAA,YAAY,SAAS,MAAM;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,MAAM;AAAA,IAAA,CACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCD,UAAM,SAAS;AA0BT,UAAA,QAAQ,YAAY,QAAQ,UAAU;AAE5C,UAAM,OAAO;AAIb,UAAM,oBAAoB;AAAA,MAAS,MACjC,KAAK,OAAO;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAA;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChDA,UAAM,SAAS;AAsCT,UAAA,QAAQ,YAAY,QAAQ,kBAAkB;AAEpD,UAAM,OAAO;AAMP,UAAA,aAAaA,SAA8E,SAAA,YAAA;AAU3F,UAAA,WAAW,eAA+C,WAAW;AAE3E,UAAM,OAAO,MAAM;;AACjB,qBAAS,UAAT,mBAAgB;AAAA,IAClB;AACA,UAAM,OAAO,MAAM;;AACjB,qBAAS,UAAT,mBAAgB;AAAA,IAClB;AACA,UAAM,SAAS,MAAM;;AACnB,qBAAS,UAAT,mBAAgB;AAAA,IAClB;AAEa,aAAA;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjGD,UAAM,SAAS;AACT,UAAA,QAAQ,YAAY,QAAQ,UAAU;;;;;;;;;;"}