1 line
4.3 KiB
Plaintext
1 line
4.3 KiB
Plaintext
{"version":3,"file":"overlay.mjs","sources":["../../../../../../packages/components/overlay/src/overlay.ts"],"sourcesContent":["import { createVNode, defineComponent, h, renderSlot } from 'vue'\nimport { PatchFlags, buildProps, definePropType } from '@element-plus/utils'\nimport { useNamespace, useSameTarget } from '@element-plus/hooks'\n\nimport type {\n CSSProperties,\n ExtractPropTypes,\n ExtractPublicPropTypes,\n} from 'vue'\n\nexport const overlayProps = buildProps({\n mask: {\n type: Boolean,\n default: true,\n },\n customMaskEvent: Boolean,\n overlayClass: {\n type: definePropType<string | string[] | Record<string, boolean>>([\n String,\n Array,\n Object,\n ]),\n },\n zIndex: {\n type: definePropType<CSSProperties['z-index']>([String, Number]),\n },\n} as const)\nexport type OverlayProps = ExtractPropTypes<typeof overlayProps>\nexport type OverlayPropsPublic = ExtractPublicPropTypes<typeof overlayProps>\n\nexport const overlayEmits = {\n click: (evt: MouseEvent) => evt instanceof MouseEvent,\n}\nexport type OverlayEmits = typeof overlayEmits\n\nconst BLOCK = 'overlay'\n\nexport default defineComponent({\n name: 'ElOverlay',\n\n props: overlayProps,\n emits: overlayEmits,\n\n setup(props, { slots, emit }) {\n // No reactivity on this prop because when its rendering with a global\n // component, this will be a constant flag.\n const ns = useNamespace(BLOCK)\n\n const onMaskClick = (e: MouseEvent) => {\n emit('click', e)\n }\n\n const { onClick, onMousedown, onMouseup } = useSameTarget(\n props.customMaskEvent ? undefined : onMaskClick\n )\n\n // init here\n return () => {\n // when the vnode meets the same structure but with different change trigger\n // it will not automatically update, thus we simply use h function to manage updating\n return props.mask\n ? createVNode(\n 'div',\n {\n class: [ns.b(), props.overlayClass],\n style: {\n zIndex: props.zIndex,\n },\n onClick,\n onMousedown,\n onMouseup,\n },\n [renderSlot(slots, 'default')],\n PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS,\n ['onClick', 'onMouseup', 'onMousedown']\n )\n : h(\n 'div',\n {\n class: props.overlayClass,\n style: {\n zIndex: props.zIndex,\n position: 'fixed',\n top: '0px',\n right: '0px',\n bottom: '0px',\n left: '0px',\n } as CSSProperties,\n },\n [renderSlot(slots, 'default')]\n )\n }\n },\n})\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,eAAe,UAAA,CAAW;AAAA,EACrC,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB,OAAA;AAAA,EACjB,YAAA,EAAc;AAAA,IACZ,MAAM,cAAA,CAA4D;AAAA,MAChE,MAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACD;AAAA,GACH;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,cAAA,CAAyC,CAAC,MAAA,EAAQ,MAAM,CAAC;AAAA;AAEnE,CAAU;AAIH,MAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAO,CAAC,GAAA,KAAoB,GAAA,YAAe;AAC7C;AAGA,MAAM,KAAA,GAAQ,SAAA;AAEd,cAAe,eAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,WAAA;AAAA,EAEN,KAAA,EAAO,YAAA;AAAA,EACP,KAAA,EAAO,YAAA;AAAA,EAEP,KAAA,CAAM,KAAA,EAAO,EAAE,KAAA,EAAO,MAAK,EAAG;AAG5B,IAAA,MAAM,EAAA,GAAK,aAAa,KAAK,CAAA;AAE7B,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAkB;AACrC,MAAA,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,EAAE,OAAA,EAAS,WAAA,EAAa,SAAA,EAAU,GAAI,aAAA;AAAA,MAC1C,KAAA,CAAM,kBAAkB,MAAA,GAAY;AAAA,KACtC;AAGA,IAAA,OAAO,MAAM;AAGX,MAAA,OAAO,MAAM,IAAA,GACT,WAAA;AAAA,QACE,KAAA;AAAA,QACA;AAAA,UACE,OAAO,CAAC,EAAA,CAAG,CAAA,EAAE,EAAG,MAAM,YAAY,CAAA;AAAA,UAClC,KAAA,EAAO;AAAA,YACL,QAAQ,KAAA,CAAM;AAAA,WAChB;AAAA,UACA,OAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,CAAC,UAAA,CAAW,KAAA,EAAO,SAAS,CAAC,CAAA;AAAA,QAC7B,UAAA,CAAW,KAAA,GAAQ,UAAA,CAAW,KAAA,GAAQ,UAAA,CAAW,KAAA;AAAA,QACjD,CAAC,SAAA,EAAW,WAAA,EAAa,aAAa;AAAA,OACxC,GACA,CAAA;AAAA,QACE,KAAA;AAAA,QACA;AAAA,UACE,OAAO,KAAA,CAAM,YAAA;AAAA,UACb,KAAA,EAAO;AAAA,YACL,QAAQ,KAAA,CAAM,MAAA;AAAA,YACd,QAAA,EAAU,OAAA;AAAA,YACV,GAAA,EAAK,KAAA;AAAA,YACL,KAAA,EAAO,KAAA;AAAA,YACP,MAAA,EAAQ,KAAA;AAAA,YACR,IAAA,EAAM;AAAA;AACR,SACF;AAAA,QACA,CAAC,UAAA,CAAW,KAAA,EAAO,SAAS,CAAC;AAAA,OAC/B;AAAA,IACN,CAAA;AAAA,EACF;AACF,CAAC,CAAA;;;;"} |