element-plus
Version:
A Component Library for Vue 3
1 lines • 9.19 kB
Source Map (JSON)
{"version":3,"file":"notification2.mjs","sources":["../../../../../../packages/components/notification/src/notification.vue"],"sourcesContent":["<template>\n <transition\n :name=\"ns.b('fade')\"\n @before-leave=\"onClose\"\n @after-leave=\"$emit('destroy')\"\n >\n <div\n v-show=\"visible\"\n :id=\"id\"\n :class=\"[ns.b(), customClass, horizontalClass]\"\n :style=\"positionStyle\"\n role=\"alert\"\n @mouseenter=\"clearTimer\"\n @mouseleave=\"startTimer\"\n @click=\"onClick\"\n >\n <el-icon v-if=\"iconComponent\" :class=\"[ns.e('icon'), typeClass]\">\n <component :is=\"iconComponent\" />\n </el-icon>\n <div :class=\"ns.e('group')\">\n <h2 :class=\"ns.e('title')\" v-text=\"title\" />\n <div\n v-show=\"message\"\n :class=\"ns.e('content')\"\n :style=\"!!title ? undefined : { margin: 0 }\"\n >\n <slot>\n <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n <!-- Caution here, message could've been compromized, nerver use user's input as message -->\n <!-- eslint-disable-next-line -->\n <p v-else v-html=\"message\"></p>\n </slot>\n </div>\n <el-icon v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n <close />\n </el-icon>\n </div>\n </div>\n </transition>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, onMounted, ref } from 'vue'\nimport { useEventListener, useTimeoutFn } from '@vueuse/core'\nimport { TypeComponents, TypeComponentsMap } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { useNamespace } from '@element-plus/hooks'\nimport { notificationEmits, notificationProps } from './notification'\n\nimport type { CSSProperties } from 'vue'\n\nexport default defineComponent({\n name: 'ElNotification',\n\n components: {\n ElIcon,\n ...TypeComponents,\n },\n\n props: notificationProps,\n emits: notificationEmits,\n\n setup(props) {\n const ns = useNamespace('notification')\n const visible = ref(false)\n let timer: (() => void) | undefined = undefined\n\n const typeClass = computed(() => {\n const type = props.type\n return type && TypeComponentsMap[props.type] ? ns.m(type) : ''\n })\n\n const iconComponent = computed(() => {\n return TypeComponentsMap[props.type] || props.icon || ''\n })\n\n const horizontalClass = computed(() =>\n props.position.endsWith('right') ? 'right' : 'left'\n )\n\n const verticalProperty = computed(() =>\n props.position.startsWith('top') ? 'top' : 'bottom'\n )\n\n const positionStyle = computed<CSSProperties>(() => {\n return {\n [verticalProperty.value]: `${props.offset}px`,\n zIndex: props.zIndex,\n }\n })\n\n function startTimer() {\n if (props.duration > 0) {\n ;({ stop: timer } = useTimeoutFn(() => {\n if (visible.value) close()\n }, props.duration))\n }\n }\n\n function clearTimer() {\n timer?.()\n }\n\n function close() {\n visible.value = false\n }\n\n function onKeydown({ code }: KeyboardEvent) {\n if (code === EVENT_CODE.delete || code === EVENT_CODE.backspace) {\n clearTimer() // press delete/backspace clear timer\n } else if (code === EVENT_CODE.esc) {\n // press esc to close the notification\n if (visible.value) {\n close()\n }\n } else {\n startTimer() // resume timer\n }\n }\n\n // lifecycle\n onMounted(() => {\n startTimer()\n visible.value = true\n })\n\n useEventListener(document, 'keydown', onKeydown)\n\n return {\n ns,\n horizontalClass,\n typeClass,\n iconComponent,\n positionStyle,\n visible,\n\n close,\n clearTimer,\n startTimer,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_Transition","_withDirectives","_createElementVNode","_normalizeClass","_normalizeStyle","_openBlock","_resolveDynamicComponent","_toDisplayString","_renderSlot","_createElementBlock","_Fragment","_createCommentVNode","_vShow","_withModifiers","_createVNode"],"mappings":"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"}