UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 11.3 kB
{"version":3,"file":"message2.mjs","sources":["../../../../../../packages/components/message/src/message.vue"],"sourcesContent":["<template>\n <transition\n :name=\"ns.b('fade')\"\n @before-enter=\"isStartTransition = true\"\n @before-leave=\"onClose\"\n @after-leave=\"$emit('destroy')\"\n >\n <div\n v-show=\"visible\"\n :id=\"id\"\n ref=\"messageRef\"\n :class=\"[\n ns.b(),\n { [ns.m(type)]: type },\n ns.is('closable', showClose),\n ns.is('plain', plain),\n ns.is('bottom', verticalProperty === 'bottom'),\n horizontalClass,\n customClass,\n ]\"\n :style=\"customStyle\"\n role=\"alert\"\n @mouseenter=\"clearTimer\"\n @mouseleave=\"startTimer\"\n >\n <el-badge\n v-if=\"repeatNum > 1\"\n :value=\"repeatNum\"\n :type=\"badgeType\"\n :class=\"ns.e('badge')\"\n />\n <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n <component :is=\"iconComponent\" />\n </el-icon>\n <slot>\n <p v-if=\"!dangerouslyUseHTMLString\" :class=\"ns.e('content')\">\n {{ message }}\n </p>\n <!-- Caution here, message could've been compromised, never use user's input as message -->\n <p v-else :class=\"ns.e('content')\" v-html=\"message\" />\n </slot>\n <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n <Close />\n </el-icon>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { useEventListener, useResizeObserver, useTimeoutFn } from '@vueuse/core'\nimport {\n TypeComponents,\n TypeComponentsMap,\n getEventCode,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport ElBadge from '@element-plus/components/badge'\nimport { useGlobalComponentSettings } from '@element-plus/components/config-provider'\nimport { ElIcon } from '@element-plus/components/icon'\nimport {\n MESSAGE_DEFAULT_PLACEMENT,\n messageEmits,\n messageProps,\n} from './message'\nimport { getLastOffset, getOffsetOrSpace } from './instance'\n\nimport type { BadgeProps } from '@element-plus/components/badge'\nimport type { CSSProperties } from 'vue'\n\nconst { Close } = TypeComponents\n\ndefineOptions({\n name: 'ElMessage',\n})\n\nconst props = defineProps(messageProps)\nconst emit = defineEmits(messageEmits)\n\nconst isStartTransition = ref(false)\n\nconst { ns, zIndex } = useGlobalComponentSettings('message')\nconst { currentZIndex, nextZIndex } = zIndex\n\nconst messageRef = ref<HTMLDivElement>()\nconst visible = ref(false)\nconst height = ref(0)\n\nlet stopTimer: (() => void) | undefined = undefined\n\nconst badgeType = computed<BadgeProps['type']>(() =>\n props.type ? (props.type === 'error' ? 'danger' : props.type) : 'info'\n)\nconst typeClass = computed(() => {\n const type = props.type\n return { [ns.bm('icon', type)]: type && TypeComponentsMap[type] }\n})\nconst iconComponent = computed(\n () => props.icon || TypeComponentsMap[props.type] || ''\n)\n\nconst placement = computed(() => props.placement || MESSAGE_DEFAULT_PLACEMENT)\n\nconst lastOffset = computed(() => getLastOffset(props.id, placement.value))\nconst offset = computed(() => {\n return (\n getOffsetOrSpace(props.id, props.offset, placement.value) + lastOffset.value\n )\n})\nconst bottom = computed(() => height.value + offset.value)\nconst horizontalClass = computed(() => {\n if (placement.value.includes('left')) return ns.is('left')\n if (placement.value.includes('right')) return ns.is('right')\n return ns.is('center')\n})\n\nconst verticalProperty = computed(() =>\n placement.value.startsWith('top') ? 'top' : 'bottom'\n)\n\nconst customStyle = computed<CSSProperties>(() => ({\n [verticalProperty.value]: `${offset.value}px`,\n zIndex: currentZIndex.value,\n}))\n\nfunction startTimer() {\n if (props.duration === 0) return\n ;({ stop: stopTimer } = useTimeoutFn(() => {\n close()\n }, props.duration))\n}\n\nfunction clearTimer() {\n stopTimer?.()\n}\n\nfunction close() {\n visible.value = false\n\n // if the message has never started a transition, we can destroy it immediately\n nextTick(() => {\n if (!isStartTransition.value) {\n props.onClose?.()\n emit('destroy')\n }\n })\n}\n\nfunction keydown(event: KeyboardEvent) {\n const code = getEventCode(event)\n if (code === EVENT_CODE.esc) {\n // press esc to close the message\n close()\n }\n}\n\nonMounted(() => {\n startTimer()\n nextZIndex()\n visible.value = true\n})\n\nwatch(\n () => props.repeatNum,\n () => {\n clearTimer()\n startTimer()\n }\n)\n\nuseEventListener(document, 'keydown', keydown)\n\nuseResizeObserver(messageRef, () => {\n height.value = messageRef.value!.getBoundingClientRect().height\n})\n\ndefineExpose({\n visible,\n bottom,\n close,\n})\n</script>\n"],"names":["_createBlock","_Transition","_unref","onClose","$emit","_withDirectives","_createElementVNode","id","_normalizeClass","type","showClose","plain","customClass","_normalizeStyle","repeatNum","_createCommentVNode","_openBlock","_resolveDynamicComponent","_renderSlot","dangerouslyUseHTMLString","_createElementBlock","message","_Fragment","_withModifiers","_createVNode"],"mappings":"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"}