UNPKG

@aplus-frontend/ui

Version:

2 lines (1 loc) 2.49 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 c=require("./utils.js"),h=require("./style/index.js"),w=require("../config-provider/hooks/use-namespace.js"),B=require("../hooks/useControllableValue.js"),N=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(f,{emit:m}){const o=f,{b:r,e:u,em:p}=w.useNamespace("mask"),v=h.default("mask"),y=m,k=o.zIndex||c.getMaskZIndex(),{value:t,updateValue:s}=B.useControllableValue(o,y,{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=c.lockScrollable();n(()=>{a?.()})}),e.onMounted(()=>{document.addEventListener("keydown",i)}),e.onUnmounted(()=>{document.removeEventListener("keydown",i)});function C(){l.value=!1}async function b(){if(o.closable){if(o.onBeforeClose){await o.onBeforeClose()&&s(!1);return}s(!1)}}function i(n){!t.value||!(o.closable&&o.escClosable)||n.key==="Escape"&&s(!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(r)(),e.unref(v)]),style:e.normalizeStyle({zIndex:e.unref(k),visibility:l.value?void 0:"hidden"})},[e.createVNode(e.Transition,{appear:"",name:e.unref(r)("fade"),onAfterLeave:C},{default:e.withCtx(()=>[e.unref(t)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(u)("mask"),{[e.unref(p)("mask","disabled")]:n.disabled}]),onClick:b},[e.renderSlot(n.$slots,"mask",{},()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(u)("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(r)("fade")},{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=N;