UNPKG

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) 15.2 kB
"use strict";const e=require("vue"),o=require("./index-BwrAUj83.js"),a=require("./keys-D59bcWpQ.js"),t=require("./index-CDlPJrTO.js"),l=require("./orchestratorShared-Q1kU-Xan.js");require("./BootstrapVueOptions-mtwZDuI4.js");const r=require("./ConditionalTeleport.vue_vue_type_script_lang-BLAPKacY.js");require("./ConditionalWrapper.vue_vue_type_script_lang-CdLqzk6C.js");const n=require("./useSafeScrollLock-YUrvv4qW.js"),s=require("./BButton.vue_vue_type_script_setup_true_lang-Cq_BnPop.js"),d=require("./BCloseButton.vue_vue_type_script_setup_true_lang-Bi3v74Q5.js"),u=require("./useDefaults-DspAih6L.js"),i=require("./useId-owZCNodL.js"),c=require("./dom-Cbel14Rh.js"),f=require("./useColorVariantClasses-RCwkMsGc.js"),p=require("./useShowHide-DxqjmDCO.js"),m=require("./getElement-BIaUkSEc.js");require("./useTransitions-DlVeAHwl.js"),require("./tableUtils-BGOX5AJ8.js");const v="modal-open",y=()=>{const l=e.inject(a.modalManagerKey),r=o.getSSRHandler("updateHTMLAttrs",(e,a,t)=>{const l="string"==typeof e?window?.document.querySelector(e):o.unrefElement(e);l&&("class"===a?l.classList.toggle(v,t===v):l.setAttribute(a,t))});return t.tryOnScopeDispose(()=>{0===l?.countStack.value&&r("body","class","")}),e.watch(()=>l?.countStack.value,e=>{void 0!==e&&r("body","class",e>0?v:"")}),{...l,dispose:e=>{l?.removeStack(e),l?.removeRegistry(e)}}},h=["id","aria-labelledby","aria-describedby"],k=["id"],b="modal-fallback-focus",g=e.defineComponent({inheritAttrs:!1,__name:"BModal",props:e.mergeModels({focus:{type:[String,Boolean,Object,null],default:void 0},backdropFirst:{type:Boolean,default:!1},body:{default:void 0},bodyAttrs:{default:void 0},bodyBgVariant:{default:null},bodyClass:{default:null},bodyScrolling:{type:Boolean,default:!1},bodyTextVariant:{default:null},bodyVariant:{default:null},busy:{type:Boolean,default:!1},buttonSize:{default:"md"},cancelClass:{default:void 0},cancelDisabled:{type:Boolean,default:!1},cancelTitle:{default:"Cancel"},cancelVariant:{default:"secondary"},centered:{type:Boolean,default:!1},contentClass:{default:void 0},dialogClass:{default:void 0},footerBgVariant:{default:null},footerBorderVariant:{default:null},footerClass:{default:void 0},footerTextVariant:{default:null},footerVariant:{default:null},fullscreen:{type:[Boolean,String],default:!1},headerAttrs:{default:void 0},headerBgVariant:{default:null},headerBorderVariant:{default:null},headerClass:{default:void 0},headerCloseClass:{default:void 0},headerCloseLabel:{default:"Close"},headerCloseVariant:{default:"secondary"},headerTextVariant:{default:null},headerVariant:{default:null},noBackdrop:{type:Boolean,default:!1},noFooter:{type:Boolean,default:!1},noHeader:{type:Boolean,default:!1},noHeaderClose:{type:Boolean,default:!1},id:{default:void 0},modalClass:{default:void 0},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noTrap:{type:Boolean,default:!1},noStacking:{type:Boolean},okClass:{default:void 0},okDisabled:{type:Boolean,default:!1},okOnly:{type:Boolean,default:!1},okTitle:{default:"OK"},okVariant:{default:"primary"},scrollable:{type:Boolean,default:!1},size:{default:"md"},title:{default:void 0},titleClass:{default:void 0},titleVisuallyHidden:{type:Boolean,default:!1},titleTag:{default:"h5"},teleportDisabled:{type:Boolean,default:!1},teleportTo:{default:"body"},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(["backdrop","close","esc","hide","hide-prevented","hidden","show","show-prevented","shown","toggle","toggle-prevented","cancel","ok"],["update:modelValue"]),setup(a,{expose:l,emit:v}){const g=a,B=u.useDefaults(g,"BModal"),V=v,C=e.useSlots(),_=i.useId(()=>B.id,"modal"),w=e.useModel(a,"modelValue"),x=e.useTemplateRef("_element"),S=e.useTemplateRef("_fallbackFocusElement"),T=e.useTemplateRef("_okButton"),z=e.useTemplateRef("_cancelButton"),P=e.useTemplateRef("_closeButton"),R=()=>B.focus&&"boolean"!=typeof B.focus?"ok"===B.focus?T:"close"===B.focus?P:"cancel"===B.focus?z:m.getElement(B.focus,x.value??void 0)??x.value:x;let E=null;const{showRef:M,renderRef:j,renderBackdropRef:N,hide:q,show:A,toggle:D,computedNoAnimation:$,transitionProps:F,backdropTransitionProps:O,isLeaving:H,isVisible:I,trapActive:L,contentShowing:U,backdropReady:K,backdropVisible:W}=p.useShowHide(w,B,V,x,_,{transitionProps:{onAfterEnter:()=>{if(B.noTrap&&!1!==B.focus){E=document.activeElement,E===x.value&&(E=null);const e=o.unrefElement(R());if(!e)return;e?.focus(),e.tagName&&"input"===e.tagName.toLowerCase()&&"function"==typeof e.select&&e.select()}},onAfterLeave:()=>{B.noTrap&&!1!==B.focus&&E&&(E?.focus(),E=null)}}}),{needsFallback:Z}=n.useActivatedFocusTrap({element:x,isActive:L,noTrap:()=>B.noTrap,fallbackFocus:{ref:S,classSelector:b},focus:()=>!1!==B.focus&&(o.unrefElement(R())??void 0)});o.onKeyStroke("Escape",()=>{q("esc")},{target:x}),n.useSafeScrollLock(M,()=>B.bodyScrolling);const Y=e.computed(()=>!c.isEmptySlot(C["header-close"])),G=e.computed(()=>[B.dialogClass,{"modal-fullscreen":!0===B.fullscreen,[`modal-fullscreen-${B.fullscreen}-down`]:"string"==typeof B.fullscreen,[`modal-${B.size}`]:"md"!==B.size,"modal-dialog-centered":B.centered,"modal-dialog-scrollable":B.scrollable}]),J=f.useColorVariantClasses(()=>({bgVariant:B.bodyBgVariant,textVariant:B.bodyTextVariant,variant:B.bodyVariant})),Q=e.computed(()=>[B.bodyClass,J.value]),X=f.useColorVariantClasses(()=>({bgVariant:B.headerBgVariant,textVariant:B.headerTextVariant,variant:B.headerVariant,borderVariant:B.headerBorderVariant})),ee=e.computed(()=>[B.headerClass,X.value]),oe=e.computed(()=>({variant:Y.value?B.headerCloseVariant:void 0,class:B.headerCloseClass})),ae=f.useColorVariantClasses(()=>({bgVariant:B.footerBgVariant,textVariant:B.footerTextVariant,variant:B.footerVariant,borderVariant:B.footerBorderVariant})),te=e.computed(()=>[B.footerClass,ae.value]),le=e.computed(()=>[B.titleClass,{"visually-hidden":B.titleVisuallyHidden}]),re=e.computed(()=>B.cancelDisabled||B.busy),ne=e.computed(()=>B.okDisabled||B.busy),{activePosition:se,activeModalCount:de,stackWithoutSelf:ue}=((o,a)=>{const{pushRegistry:l,pushStack:r,removeStack:n,stack:s,dispose:d,countStack:u}=y(),i=e.getCurrentInstance();if(!i||"BModal"!==i.type.__name)throw new Error("useModalManager must only use in BModal component");l?.(i),t.tryOnScopeDispose(()=>{d(i)});const c=(e,o)=>{e?r?.(i):o&&!e&&n?.(i)};return c(a,a),e.watch(o,c),{activePosition:e.computed(()=>s?.value.findIndex(o=>e.toValue(o.exposed?.id)===e.toValue(i.exposed?.id))),activeModalCount:u,stackWithoutSelf:e.computed(()=>s?.value.filter(o=>e.toValue(o.exposed?.id)!==e.toValue(i.exposed?.id))??[])}})(M,w.value),ie=e.computed(()=>({[`stack-position-${se?.value??0}`]:!0,["stack-inverse-position-"+((de?.value??1)-1-(se?.value??0))]:!0}));e.watch(ue,(e,o)=>{e.length>o.length&&!0===M.value&&!0===B.noStacking&&q()});const ce=e.ref(c.getModalZIndex(x.value??("undefined"!=typeof document?document.body:void 0)));e.onMounted(()=>{e.watch(j,o=>{o&&e.nextTick(()=>{x.value&&(ce.value=c.getModalZIndex(x.value))})},{immediate:!0})});const fe=e.computed(()=>M.value||H.value?ce.value-(2*(de?.value??0)-2*(se?.value??0)):ce.value),pe=e.computed(()=>({"z-index":fe.value,"--b-position":se?.value??0,"--b-inverse-position":(de?.value??1)-1-(se?.value??0),"--b-count":de?.value??0})),me=e.computed(()=>({"z-index":fe.value-1,"--b-position":se?.value??0,"--b-inverse-position":(de?.value??1)-1-(se?.value??0),"--b-count":de?.value??0})),ve=e.computed(()=>({id:_.value,cancel:()=>{q("cancel")},close:()=>{q("close")},hide:q,show:A,toggle:D,ok:()=>{q("ok")},active:M.value,visible:M.value}));return l({hide:q,id:_,show:A,toggle:D,visible:M}),(o,a)=>(e.openBlock(),e.createBlock(r._sfc_main,{to:e.unref(B).teleportTo,disabled:e.unref(B).teleportDisabled},{default:e.withCtx(()=>[e.unref(j)||e.unref(U)?(e.openBlock(),e.createBlock(e.Transition,e.mergeProps({key:0},e.unref(F),{appear:w.value||e.unref(B).visible}),{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",e.mergeProps({id:e.unref(_),ref:"_element",class:["modal",[e.unref(B).modalClass,{fade:!e.unref($),show:e.unref(I),...ie.value}]],role:"dialog","aria-labelledby":e.unref(B).noHeader?void 0:`${e.unref(_)}-label`,"aria-describedby":`${e.unref(_)}-body`,tabindex:"-1"},o.$attrs,{style:[pe.value,{display:"block"}],onMousedown:a[4]||(a[4]=e.withModifiers(o=>e.unref(q)("backdrop"),["left","self"]))}),[e.createElementVNode("div",{class:e.normalizeClass(["modal-dialog",G.value])},[e.unref(U)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["modal-content",e.unref(B).contentClass])},[e.unref(B).noHeader?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",e.mergeProps({key:0,class:["modal-header",ee.value]},e.unref(B).headerAttrs),[e.renderSlot(o.$slots,"header",e.normalizeProps(e.guardReactiveProps(ve.value)),()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(B).titleTag),{id:`${e.unref(_)}-label`,class:e.normalizeClass(["modal-title",le.value])},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"title",e.normalizeProps(e.guardReactiveProps(ve.value)),()=>[e.createTextVNode(e.toDisplayString(e.unref(B).title),1)])]),_:3},8,["id","class"])),e.unref(B).noHeaderClose?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Y.value?(e.openBlock(),e.createBlock(s._sfc_main,e.mergeProps({key:0,ref:"_closeButton"},oe.value,{onClick:a[0]||(a[0]=o=>e.unref(q)("close"))}),{default:e.withCtx(()=>[e.renderSlot(o.$slots,"header-close",e.normalizeProps(e.guardReactiveProps(ve.value)))]),_:3},16)):(e.openBlock(),e.createBlock(d._sfc_main,e.mergeProps({key:1,ref:"_closeButton","aria-label":e.unref(B).headerCloseLabel},oe.value,{onClick:a[1]||(a[1]=o=>e.unref(q)("close"))}),null,16,["aria-label"]))],64))])],16)),e.createElementVNode("div",e.mergeProps({id:`${e.unref(_)}-body`,class:["modal-body",Q.value]},e.unref(B).bodyAttrs),[e.renderSlot(o.$slots,"default",e.normalizeProps(e.guardReactiveProps(ve.value)),()=>[e.createTextVNode(e.toDisplayString(e.unref(B).body),1)])],16,k),e.unref(B).noFooter?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["modal-footer",te.value])},[e.renderSlot(o.$slots,"footer",e.normalizeProps(e.guardReactiveProps(ve.value)),()=>[e.renderSlot(o.$slots,"cancel",e.normalizeProps(e.guardReactiveProps(ve.value)),()=>[e.unref(B).okOnly?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(s._sfc_main,{key:0,ref:"_cancelButton",disabled:re.value,size:e.unref(B).buttonSize,variant:e.unref(B).cancelVariant,class:e.normalizeClass(e.unref(B).cancelClass),onClick:a[2]||(a[2]=o=>e.unref(q)("cancel"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(B).cancelTitle),1)]),_:1},8,["disabled","size","variant","class"]))]),e.renderSlot(o.$slots,"ok",e.normalizeProps(e.guardReactiveProps(ve.value)),()=>[e.createVNode(s._sfc_main,{ref:"_okButton",disabled:ne.value,size:e.unref(B).buttonSize,variant:e.unref(B).okVariant,class:e.normalizeClass(e.unref(B).okClass),onClick:a[3]||(a[3]=o=>e.unref(q)("ok"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(B).okTitle),1)]),_:1},8,["disabled","size","variant","class"])])])],2))],2)):e.createCommentVNode("",!0)],2),e.unref(Z)?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"_fallbackFocusElement",class:e.normalizeClass(b),tabindex:"0",style:{width:"0",height:"0",overflow:"hidden"}},null,512)):e.createCommentVNode("",!0)],16,h),[[e.vShow,e.unref(M)&&(e.unref(K)&&e.unref(B).backdropFirst||!e.unref(B).backdropFirst)]])]),_:3},16,["appear"])):e.createCommentVNode("",!0),e.unref(B).noBackdrop?e.createCommentVNode("",!0):e.renderSlot(o.$slots,"backdrop",e.normalizeProps(e.mergeProps({key:1},ve.value)),()=>[e.unref(N)?(e.openBlock(),e.createBlock(e.Transition,e.normalizeProps(e.mergeProps({key:0},e.unref(O))),{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["modal-backdrop",{fade:!e.unref($),show:e.unref(W)||e.unref($),...ie.value}]),style:e.normalizeStyle(me.value),onClick:a[5]||(a[5]=o=>e.unref(q)("backdrop"))},null,6),[[e.vShow,e.unref(M)||e.unref(H)&&e.unref(B).backdropFirst&&!e.unref($)]])]),_:1},16)):e.createCommentVNode("",!0)])]),_:3},8,["to","disabled"]))}}),B=()=>{const o=e.inject(a.orchestratorRegistryKey);if(!o)throw Error("useModal() must be called within setup(), and BApp, useRegistry or plugin must be installed/provided.");const{store:t,_isOrchestratorInstalled:r}=o,{lastStack:n,stack:s,registry:d}=y(),u=e.getCurrentInstance();return{show:e=>{if(void 0===e)n?.value&&n?.value.exposed?.show();else{const o=s?.value.find(o=>o.exposed?.id===e);if(o)return void o.exposed?.show();const a=t.value.find(o=>o._self===e);a?(a.modelValue=!0,a["onUpdate:modelValue"]?.(!0)):s?.value.forEach(o=>{o.exposed?.id===e&&o.exposed?.show()})}},hide:(e,o)=>{if(void 0===o)n?.value&&n?.value.exposed?.hide(e);else{const a=s?.value.find(e=>e.exposed?.id===o);if(a)return void a.exposed?.hide(e);const l=t.value.find(e=>e._self===o);l?(l.modelValue=!1,l["onUpdate:modelValue"]?.(!1)):s?.value.forEach(a=>{a.exposed?.id===o&&a.exposed?.hide(e,!0)})}},hideAll:e=>{s?.value.forEach(o=>{o.exposed?.hide(e,!0)})},get:o=>{const a=t.value.find(e=>e._self===o);if(a)return{modal:a,show(){a?.promise.value.show()},hide(e){a?.promise.value.hide(e)}};if(d?.value)for(const[,t]of d?.value.entries()??[])if(e.toValue(t.exposed?.id)===o)return{modal:t,show(){t.exposed?.show()},hide(e){t.exposed?.hide(e,!0)}};return null},current:()=>{const o=e=>e.parent?e.parent.type===g?e.parent:o(e.parent):null;if(!u)return null;const a=e.computed(()=>o(u)),t=e.computed(()=>a.value?.proxy);return{show(){a.value?.exposed?.show()},hide(e){a.value?.exposed?.hide(e,!0)},modal:t}},create:(o={},a={})=>{if(!r.value)throw new Error("BApp or BOrchestrator component must be mounted to use the modal controller");const n=e.toRef(o),s=n.value?.id||Symbol("Modals controller"),d=l.buildPromise(s,t);return d.stop=e.watch(n,l=>{const r={...e.toValue(l)},n=t.value.findIndex(e=>e._self===s),u=-1===n?{_component:e.markRaw(g)}:t.value[n],i={type:"modal",_self:s,position:"modal",...u,options:a,promise:d};for(const o in r)o.startsWith("on")?i[o]=r[o]:"component"===o&&r.component?i._component=e.markRaw(r.component):"slots"===o&&r.slots?i.slots=e.markRaw(r.slots):i[o]=e.toValue(r[o]);i.modelValue=i.modelValue??!1,i["onUpdate:modelValue"]=a=>{r["onUpdate:modelValue"]?.(a);const{modelValue:l}=e.toValue(o);e.isRef(o)&&!e.isRef(l)&&(o.value.modelValue=a),e.isRef(l)&&!e.isReadonly(l)&&(l.value=a);const n=t.value.find(e=>e._self===s);n&&(n.modelValue=a)},-1===n?t.value.push(i):t.value.splice(n,1,i)},{immediate:!0,deep:!0}),e.onScopeDispose(()=>{const e=t.value.find(e=>e._self===s);e&&e.promise.value.destroy?.()},!0),d.value},_isOrchestratorInstalled:r,store:t}},V=B;exports._sfc_main=g,exports.useModal=B,exports.useModalController=V; //# sourceMappingURL=index-OwZ4UA6v.js.map