You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

0 lines
6.5 KiB

1 month ago
  1. {"ast":null,"code":"import { defineComponent, createVNode, renderSlot, h } from 'vue';\nimport { useSameTarget } from '../../../hooks/use-same-target/index.mjs';\nimport { PatchFlags } from '../../../utils/vue/vnode.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nconst overlayProps = buildProps({\n mask: {\n type: Boolean,\n default: true\n },\n customMaskEvent: Boolean,\n overlayClass: {\n type: definePropType([String, Array, Object])\n },\n zIndex: {\n type: definePropType([String, Number])\n }\n});\nconst overlayEmits = {\n click: evt => evt instanceof MouseEvent\n};\nconst BLOCK = \"overlay\";\nvar Overlay = defineComponent({\n name: \"ElOverlay\",\n props: overlayProps,\n emits: overlayEmits,\n setup(props, {\n slots,\n emit\n }) {\n const ns = useNamespace(BLOCK);\n const onMaskClick = e => {\n emit(\"click\", e);\n };\n const {\n onClick,\n onMousedown,\n onMouseup\n } = useSameTarget(props.customMaskEvent ? void 0 : onMaskClick);\n return () => {\n return props.mask ? createVNode(\"div\", {\n class: [ns.b(), props.overlayClass],\n style: {\n zIndex: props.zIndex\n },\n onClick,\n onMousedown,\n onMouseup\n }, [renderSlot(slots, \"default\")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, [\"onClick\", \"onMouseup\", \"onMousedown\"]) : h(\"div\", {\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 }\n }, [renderSlot(slots, \"default\")]);\n };\n }\n});\nexport { Overlay as default, overlayEmits, overlayProps };","map":{"version":3,"names":["overlayProps","buildProps","mask","type","Boolean","default","customMaskEvent","overlayClass","definePropType","String","Array","Object","zIndex","Number","overlayEmits","click","evt","MouseEvent","BLOCK","Overlay","defineComponent","name","props","emits","setup","slots","emit","ns","useNamespace","onMaskClick","e","onClick","onMousedown","onMouseup","useSameTarget","createVNode","class","b","style","renderSlot","PatchFlags","STYLE","CLASS","PROPS","h","position","top","right","bottom","left"],"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 { CSSProperties, ExtractPropTypes } from 'vue'\nimport type { ZIndexProperty } from 'csstype'\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<ZIndexProperty>([String, Number]),\n },\n} as const)\nexport type OverlayProps = ExtractPropTypes<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 wil