bootstrap-vue-next
Version:
BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.
3 lines (2 loc) • 8.42 kB
JavaScript
;const e=require("vue"),t=require("./floatingUi-kHURZrM0.js"),o=require("./index-DiURjA3G.js"),a=require("./useDefaults-q0yyNSBk.js"),l=require("./useId-CVpYZavN.js"),n=require("./BButton.vue_vue_type_script_setup_true_lang-B7BDuhWq.js"),r=require("./ConditionalWrapper.vue_vue_type_script_lang-C1Wk-X46.js"),i=require("./ConditionalTeleport.vue_vue_type_script_lang-DOGq8bM-.js"),u=require("./getElement-Ca6iEV7Z.js"),d=require("./keys-W3DrYQSP.js"),s=require("./useShowHide-BgqT9gR2.js"),p=require("./index-BjjsoN-a.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),$=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 W=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;W.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}])),Y=()=>{E()},Z=e=>{b.split?h("split-click",e):Y()};o.onClickOutside(S,(()=>{!D.value||!0!==b.autoClose&&"outside"!==b.autoClose||A()}),{ignore:[T,N]});const J=()=>{!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:Z},{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:Y},{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),W.value]),class:e.normalizeClass(["dropdown-menu overflow-auto",[e.unref(b).menuClass,$.value]]),"aria-labelledby":e.unref(w),role:e.unref(b).role,onClick:J},[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;
//# sourceMappingURL=BDropdown-BYr5dBKo.js.map