UNPKG

element-plus

Version:

A Component Library for Vue3.0

63 lines (59 loc) 1.62 kB
import { defineComponent, createVNode, renderSlot, h } from 'vue'; import { PatchFlags } from '../utils/vnode'; var script = defineComponent({ name: "ElOverlay", props: { mask: { type: Boolean, default: true }, overlayClass: { type: [String, Array, Object] }, zIndex: { type: Number } }, emits: ["click"], setup(props, { slots, emit }) { let mousedownTarget = false; let mouseupTarget = false; const onMaskClick = (e) => { if (mousedownTarget && mouseupTarget) { emit("click", e); } mousedownTarget = mouseupTarget = false; }; return () => { return props.mask ? createVNode("div", { class: ["el-overlay", props.overlayClass], style: { zIndex: props.zIndex }, onClick: onMaskClick, onMousedown: (e) => { if (props.mask) { mousedownTarget = e.target === e.currentTarget; } }, onMouseup: (e) => { if (props.mask) { mouseupTarget = e.target === e.currentTarget; } } }, [renderSlot(slots, "default")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, ["onClick", "onMouseup", "onMousedown"]) : h("div", { class: props.overlayClass, style: { zIndex: props.zIndex, position: "fixed", top: "0px", right: "0px", bottom: "0px", left: "0px" } }, [renderSlot(slots, "default")]); }; } }); script.__file = "packages/overlay/src/index.vue"; export { script as Overlay };