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) • 6.2 kB
JavaScript
const e=require("vue"),t=require("./keys-D59bcWpQ.js"),r=require("./classes-Jfk71KSq.js"),o=require("./index-BwrAUj83.js"),n=require("./index-CDlPJrTO.js"),a={name:"fade",enterActiveClass:"",enterFromClass:"showing",enterToClass:"",leaveActiveClass:"",leaveFromClass:"",leaveToClass:"showing",css:!0};exports.useShowHide=(l,i,s,v,u,d={transitionProps:{},showFn:()=>{},hideFn:()=>{}})=>{let c=!1;const g=!!l.value&&!i.initialAnimation||i.visible||!1,p=e.ref(g),m=e.ref(g),f=e.ref(g);let h="boolean"!=typeof l.value;e.watch(l,()=>{h="boolean"!=typeof l.value,c?c=!1:l.value?k():B("modelValue",!0)});const w=e.ref(g),A=e.ref(!1),b=e.computed(()=>i.noAnimation||i.noFade||w.value||!1);let P=!1;e.onMounted(()=>{if(P=!0,!i.show&&g){const e=y("show",{cancelable:!0});if(s("show",e),e.defaultPrevented)return void s("show-prevented",y("show-prevented"));w.value=!0,l.value||(c=!0,l.value=!0),m.value=!0,f.value=!0,K.value=!0,G.value=!0,J.value=!0,p.value=!0,d.showFn?.()}else(i.show||l.value&&i.initialAnimation)&&k()}),e.watch(()=>i.visible,t=>{w.value=!0,e.nextTick(()=>{t&&(K.value=!0),t?k():B("visible-prop",!0)})}),e.watch(()=>i.show,e=>{e?k():B("show-prop",!0)}),o.useEventListener(v,"bv-toggle",()=>{l.value=!l.value});const y=(e,t={})=>new r.BvTriggerableEvent(e,{cancelable:!1,target:v?.value||null,relatedTarget:null,trigger:null,...t,componentId:u?.value});let L,T,F,E,q;const k=(t=!1)=>{if(p.value&&!T&&!E)return Promise.resolve(!0);if(q=t,p.value&&!T&&E)return E;E=new Promise(e=>{F=e});const r=y("show",{cancelable:!0});return s("show",r),r.defaultPrevented?(s("show-prevented",y("show-prevented")),K.value&&(K.value=!1),l.value&&!h&&(c=!0,e.nextTick(()=>{l.value=!1})),F?.("show-prevented"),E):(T&&(clearTimeout(T),T=void 0),m.value=!0,f.value=!0,requestAnimationFrame(()=>{if(w.value||void 0===i.delay){if(!P)return;return L=void 0,p.value=!0,d.showFn?.(),void(l.value||(c=!0,e.nextTick(()=>{l.value=!0})))}L=setTimeout(()=>{P&&(L=void 0,p.value=!0,d.showFn?.(),l.value||(c=!0,e.nextTick(()=>{l.value=!0})))},"number"==typeof i.delay?i.delay:i.delay?.show||0)}),E)};let x;const B=(t,r)=>{if(!p.value&&!L)return Promise.resolve("");E||(E=new Promise(e=>{F=e})),"string"!=typeof t&&(t=void 0),x=t;const o=y("hide",{cancelable:!0,trigger:t}),n=y(t||"ignore",{cancelable:!0,trigger:t});return"backdrop"===t&&i.noCloseOnBackdrop||"esc"===t&&i.noCloseOnEsc?(s("hide-prevented",y("hide-prevented",{trigger:t})),F?.("hide-prevented"),E):(L&&(clearTimeout(L),L=void 0),t&&!r&&s(t,n),s("hide",o),o.defaultPrevented||n.defaultPrevented?(s("hide-prevented",y("hide-prevented",{trigger:t})),l.value||e.nextTick(()=>{c=!0,l.value=!0}),F?.("hide-prevented"),E):(D.value=!1,L&&(clearTimeout(L),L=void 0,A.value||(m.value=!1),f.value=!1),T=setTimeout(()=>{P&&(T=void 0,O.value=!0,p.value=!1,d.hideFn?.(),l.value&&(c=!0,l.value=!!h&&0))},w.value?0:"number"==typeof i.delay?i.delay:i.delay?.hide||0),E))},C=n.useThrottleFn(e=>B(e),500),z=n.useThrottleFn(()=>k(),500),j=(e=!1)=>{const t=y("toggle",{cancelable:!0});return s("toggle",t),t.defaultPrevented?(s("toggle-prevented",y("toggle-prevented")),Promise.resolve("toggle-prevented")):p.value?B("toggle-function",!0):k(e)},R=()=>{const e=y("toggle",{cancelable:!0});s("toggle",e),e.defaultPrevented?s("toggle-prevented",y("toggle-prevented")):p.value?B("toggle-trigger",!0):k()},H=[],I=e.inject(t.showHideRegistryKey,void 0)?.register({id:u.value,toggle:j,show:k,hide:B,value:e.readonly(p),registerTrigger:(e,t)=>{H.push({trigger:e,el:t}),t.addEventListener(e,R),S(t)},unregisterTrigger:(e,t,r=!0)=>{const o=H.findIndex(r=>r?.trigger===e&&r.el===t);o>-1&&(H.splice(o,1),t.removeEventListener(e,R),r&&(t.removeAttribute("aria-expanded"),t.classList.remove("collapsed"),t.classList.remove("not-collapsed")))},component:e.getCurrentInstance()}),S=e=>{e.setAttribute("aria-expanded",l.value?"true":"false"),e.classList.toggle("collapsed",!l.value),e.classList.toggle("not-collapsed",!!l.value)};e.watch(l,()=>{H.forEach(e=>{S(e.el)})}),e.watch(u,(e,t)=>{I?.updateId(e,t)}),e.onBeforeUnmount(()=>{I?.unregister(),H.forEach(e=>{e.el.removeEventListener(e.trigger,R)})}),e.onUnmounted(()=>{P=!1,clearTimeout(L),clearTimeout(T),L=void 0,T=void 0});const V=e.ref(!1),N=()=>{!0===i.lazy&&(V.value=!0)},O=e.ref(!1),U=e.ref(g),K=e.ref(g),M=e.computed(()=>!0===A.value||!0===U.value||!1===i.lazy||!0===i.lazy&&!0===V.value&&!1===i.unmountLazy),D=e.ref(!1),G=e.ref(!1),J=e.ref(!1),Q={...d.transitionProps,onBeforeEnter:e=>{d.transitionProps?.onBeforeEnter?.(e),i.transitionProps?.onBeforeEnter?.(e),U.value=!0},onEnter:e=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{K.value=!0})}),d.transitionProps?.onEnter?.(e),i.transitionProps?.onEnter?.(e)},onAfterEnter:t=>{N(),d.transitionProps?.onAfterEnter?.(t),i.transitionProps?.onAfterEnter?.(t),w.value&&requestAnimationFrame(()=>{w.value=!1}),A.value&&(A.value=!1),requestAnimationFrame(()=>{D.value=!0,e.nextTick(()=>{s("shown",y("shown",{cancelable:!1}))})}),q||(F?.(!0),E=void 0,F=void 0)},onBeforeLeave:e=>{O.value||(O.value=!0),d.transitionProps?.onBeforeLeave?.(e),i.transitionProps?.onBeforeLeave?.(e),D.value=!1},onLeave:e=>{K.value=!1,d.transitionProps?.onLeave?.(e),i.transitionProps?.onLeave?.(e)},onAfterLeave:e=>{s("hidden",y("hidden",{trigger:x,cancelable:!1})),d.transitionProps?.onAfterLeave?.(e),i.transitionProps?.onAfterLeave?.(e),O.value=!1,U.value=!1,w.value&&requestAnimationFrame(()=>{w.value=!1}),requestAnimationFrame(()=>{A.value||(m.value=!1)}),F?.(x||""),E=void 0,F=void 0,x=void 0}};return{showRef:p,renderRef:m,renderBackdropRef:f,isVisible:K,isActive:U,trapActive:D,show:k,hide:B,toggle:j,throttleHide:C,throttleShow:z,buildTriggerableEvent:y,computedNoAnimation:b,localNoAnimation:w,localTemporaryHide:A,isLeaving:O,transitionProps:{...a,...i.transitionProps,...Q},lazyLoadCompleted:V,markLazyLoadCompleted:N,contentShowing:M,backdropReady:J,backdropVisible:G,backdropTransitionProps:{...a,onBeforeEnter:()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{G.value=!0})}),J.value=!1},onAfterEnter:()=>{J.value=!0},onBeforeLeave:()=>{G.value=!1},onAfterLeave:()=>{J.value=!1,requestAnimationFrame(()=>{f.value=!1})}}}};
//# sourceMappingURL=useShowHide-DxqjmDCO.js.map
;