UNPKG

@aplus-frontend/ui

Version:

2 lines (1 loc) 2.44 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../hooks/index.js");require("../config-provider/index.js");const i=require("./utils.js"),f=require("../config-provider/hooks/use-namespace.js"),w=require("../hooks/useControllableValue.js"),B=e.defineComponent({name:"ApMask",__name:"index",props:{open:{type:Boolean},"onUpdate:open":{},deleteOnClose:{type:Boolean},closable:{type:Boolean,default:!0},disabled:{type:Boolean},onBeforeClose:{},contentStyle:{type:[Boolean,null,String,Object,Array]},zIndex:{},escClosable:{type:Boolean,default:!0}},emits:["update:open"],setup(m,{emit:p}){const o=m,{b:v,e:s,em:y}=f.useNamespace("mask"),{b:u}=f.useNamespace("fade"),C=p,k=o.zIndex||i.getMaskZIndex(),{value:t,updateValue:r}=w.useControllableValue(o,C,{valuePropName:"open"}),l=e.ref(o.open);e.watch(()=>t.value,n=>{n&&(l.value=n)});const d=e.ref();e.watch(d,n=>{n&&n.addEventListener("wheel",a=>{a.stopPropagation(),a.preventDefault()})}),e.watchEffect(n=>{if(!t.value)return;const a=i.lockScrollable();n(()=>{a?.()})}),e.onMounted(()=>{document.addEventListener("keydown",c)}),e.onUnmounted(()=>{document.removeEventListener("keydown",c)});function b(){l.value=!1}async function h(){if(o.closable){if(o.onBeforeClose){await o.onBeforeClose()&&r(!1);return}r(!1)}}function c(n){!t.value||!(o.closable&&o.escClosable)||n.key==="Escape"&&r(!1)}return(n,a)=>!n.deleteOnClose||l.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:"body"},[e.createElementVNode("div",{ref_key:"wrapper",ref:d,class:e.normalizeClass(e.unref(v)()),style:e.normalizeStyle({zIndex:e.unref(k),visibility:l.value?void 0:"hidden"})},[e.createVNode(e.Transition,{appear:"",name:e.unref(u)(),onAfterLeave:b},{default:e.withCtx(()=>[e.unref(t)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(s)("mask"),{[e.unref(y)("mask","disabled")]:n.disabled}]),onClick:h},[e.renderSlot(n.$slots,"mask",{},()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(s)("mask-inner"))},null,2)])],2)):e.createCommentVNode("",!0)]),_:3},8,["name"]),e.createElementVNode("div",{style:e.normalizeStyle(n.contentStyle)},[e.createVNode(e.Transition,{appear:"",name:e.unref(u)()},{default:e.withCtx(()=>[e.unref(t)?e.renderSlot(n.$slots,"default",{key:0}):e.createCommentVNode("",!0)]),_:3},8,["name"])],4)],6)])):e.createCommentVNode("",!0)}});exports.default=B;