UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

1 lines 12.3 kB
{"version":3,"file":"index2.mjs","sources":["../../../../../src/components/ivue-message/index.vue"],"sourcesContent":["<template>\r\n <transition\r\n :name=\"`${prefixCls}-message-fade`\"\r\n @before-leave=\"onClose\"\r\n @after-leave=\"$emit('destroy')\"\r\n >\r\n <div\r\n :class=\"classes\"\r\n :style=\"wrapperStyles\"\r\n @mouseenter=\"handleMouseenter\"\r\n @mouseleave=\"handleMouseleave\"\r\n v-show=\"data.visible\"\r\n >\r\n <div :class=\"`${baseClasses}-content`\" ref=\"content\">\r\n <template v-if=\"type === 'loading'\">\r\n <div class=\"ivue-progress-circular-indeterminate\">\r\n <i :class=\"`ivue-icon ${loadingIcon}`\" v-if=\"loadingIcon\"></i>\r\n\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n :viewBox=\"`${viewBoxSize} ${viewBoxSize} ${2 * viewBoxSize} ${\r\n 2 * viewBoxSize\r\n }`\"\r\n :class=\"`${prefixCls}-loading ivue-load-loop`\"\r\n v-else\r\n >\r\n <circle\r\n fill=\"transparent\"\r\n :cx=\"`${2 * viewBoxSize}`\"\r\n :cy=\"`${2 * viewBoxSize}`\"\r\n r=\"20\"\r\n :stroke-width=\"`${strokeWidth}`\"\r\n :stroke-dasharray=\"`${strokeDasharray}`\"\r\n :stroke-dashoffset=\"`${strokeDashoffset}`\"\r\n class=\"ivue-progress-circular-overlay\"\r\n />\r\n </svg>\r\n </div>\r\n <span v-html=\"content\"></span>\r\n </template>\r\n <template v-else>\r\n <!-- icon -->\r\n <i :class=\"`ivue-icon ${prefixCls}-icon ${prefixCls}-icon-${type}`\">{{\r\n data.iconTypes[type]\r\n }}</i>\r\n <!-- render 渲染 -->\r\n <div :class=\"`${baseClasses}-content-text`\" v-if=\"renderFunc\">\r\n <render-cell :render=\"renderFunc\"></render-cell>\r\n </div>\r\n <!-- 内容 -->\r\n <div\r\n :class=\"`${baseClasses}-content-text`\"\r\n v-html=\"content\"\r\n v-else\r\n ></div>\r\n <!-- 关闭按钮 -->\r\n <div\r\n :class=\"`${baseClasses}-close`\"\r\n @click=\"handleClose\"\r\n v-show=\"closable\"\r\n >\r\n <i class=\"ivue-icon\">close</i>\r\n </div>\r\n </template>\r\n </div>\r\n </div>\r\n </transition>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, reactive, onMounted, PropType } from 'vue';\r\n\r\nimport RenderCell from '../../utils/render';\r\n\r\n// type\r\nimport type { Props, Data, Type } from './types/message';\r\n\r\nconst prefixCls = 'ivue-message';\r\n\r\nexport default defineComponent({\r\n emits: ['destroy'],\r\n name: prefixCls,\r\n props: {\r\n /**\r\n * 内容\r\n *\r\n * @type {String}\r\n */\r\n content: {\r\n type: String,\r\n default: '',\r\n },\r\n /**\r\n * 类型名称\r\n *\r\n * @type {String}\r\n */\r\n type: {\r\n type: String as PropType<Type>,\r\n default: 'normal',\r\n },\r\n /**\r\n * 样式名称\r\n *\r\n * @type {String}\r\n */\r\n className: {\r\n type: String,\r\n },\r\n /**\r\n * 是否有关闭按钮\r\n *\r\n * @type {Boolean}\r\n */\r\n closable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 背景颜色\r\n *\r\n * @type {Boolean}\r\n */\r\n background: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * render 渲染函数\r\n *\r\n * @type {Function}\r\n */\r\n render: {\r\n type: Function,\r\n },\r\n /**\r\n * 关闭方法\r\n *\r\n * @type {Function}\r\n */\r\n onClose: {\r\n type: Function,\r\n },\r\n /**\r\n * 组件名称\r\n *\r\n * @type {String}\r\n */\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n /**\r\n * 延迟关闭时间\r\n *\r\n * @type {Function}\r\n */\r\n duration: {\r\n type: Number,\r\n default: 1500,\r\n },\r\n /**\r\n * 偏移位置\r\n *\r\n * @type {Number}\r\n */\r\n top: {\r\n type: Number,\r\n default: 0,\r\n },\r\n /**\r\n * 当前index\r\n *\r\n * @type {Number}\r\n */\r\n zIndex: {\r\n type: Number,\r\n default: 0,\r\n },\r\n /**\r\n * loading icon\r\n *\r\n * @type {String}\r\n */\r\n loadingIcon: {\r\n type: String,\r\n },\r\n },\r\n setup(props: Props) {\r\n const radius = 20;\r\n const size = 20;\r\n const percent = 20;\r\n const viewBoxSize = radius / (1 - 4 / +size);\r\n const circumference = 2 * Math.PI * radius;\r\n const strokeDashoffset = ((100 - percent) / 100) * circumference + 'px';\r\n const strokeDasharray = Math.round(circumference * 1000) / 1000;\r\n const strokeWidth = (2 / +size) * viewBoxSize * 2;\r\n\r\n // data\r\n const data = reactive<Data>({\r\n /**\r\n * 关闭时间\r\n *\r\n * @type {Function}\r\n */\r\n closeTimer: null,\r\n /**\r\n * 显示\r\n *\r\n * @type {Boolean}\r\n */\r\n visible: false,\r\n /**\r\n * 图标类型\r\n *\r\n * @type {Object}\r\n */\r\n iconTypes: {\r\n success: 'check_circle',\r\n info: 'info',\r\n warning: 'warning',\r\n error: 'error',\r\n },\r\n });\r\n\r\n // computed\r\n\r\n // 原始class\r\n const baseClasses = computed(() => {\r\n return `${prefixCls}-notice`;\r\n });\r\n\r\n // 外层样式\r\n const classes = computed(() => {\r\n const _baseClass = baseClasses.value;\r\n\r\n return [\r\n 'ivue-message',\r\n baseClasses.value,\r\n {\r\n [`${props.className}`]: !!props.className,\r\n [`${_baseClass}-closable`]: props.closable,\r\n [`${_baseClass}-have-background`]: props.background,\r\n [`${_baseClass}-have-background-${props.type}`]: props.background,\r\n },\r\n ];\r\n });\r\n\r\n // 外层样式\r\n const wrapperStyles = computed(() => {\r\n return {\r\n top: `${props.top}px`,\r\n 'z-index': props.zIndex,\r\n };\r\n });\r\n\r\n // 内容样式\r\n const contentClasses = computed(() => {\r\n const _baseClass = baseClasses.value;\r\n\r\n return {\r\n [`${_baseClass}-content`]: true,\r\n [`${_baseClass}-content-render`]: props.render,\r\n };\r\n });\r\n\r\n // 是否有图标\r\n const contentHaveIcon = computed(() => {\r\n return {\r\n [`${prefixCls}-content-have-icon`]: props.type !== 'normal',\r\n };\r\n });\r\n\r\n // render 函数\r\n const renderFunc = computed(() => {\r\n return props.render;\r\n });\r\n\r\n // methods\r\n\r\n // 关闭\r\n const handleClose = () => {\r\n data.visible = false;\r\n };\r\n\r\n // 清除关闭时间\r\n const clearCloseTimer = () => {\r\n if (data.closeTimer) {\r\n clearTimeout(data.closeTimer);\r\n data.closeTimer = null;\r\n }\r\n };\r\n\r\n // 开始时间\r\n const startTime = () => {\r\n // 重新设置延迟关闭\r\n if (props.duration > 0) {\r\n data.closeTimer = setTimeout(() => {\r\n handleClose();\r\n }, props.duration);\r\n }\r\n };\r\n\r\n // 鼠标进入\r\n const handleMouseenter = () => {\r\n clearTimeout(data.closeTimer);\r\n data.closeTimer = null;\r\n };\r\n\r\n // 鼠标移开\r\n const handleMouseleave = () => {\r\n startTime();\r\n };\r\n\r\n // onMounted\r\n onMounted(() => {\r\n startTime();\r\n\r\n data.visible = true;\r\n });\r\n\r\n return {\r\n prefixCls,\r\n\r\n // data\r\n data,\r\n viewBoxSize,\r\n strokeWidth,\r\n strokeDasharray,\r\n strokeDashoffset,\r\n\r\n // computed\r\n classes,\r\n baseClasses,\r\n contentClasses,\r\n contentHaveIcon,\r\n renderFunc,\r\n wrapperStyles,\r\n\r\n // methods\r\n handleClose,\r\n clearCloseTimer,\r\n handleMouseenter,\r\n handleMouseleave,\r\n };\r\n },\r\n components: {\r\n RenderCell,\r\n },\r\n});\r\n</script>\r\n"],"names":["_resolveComponent","_openBlock","_createBlock","_Transition","_withCtx","_withDirectives","_createElementVNode","_normalizeClass","_normalizeStyle","_createElementBlock","_Fragment","_createCommentVNode","_toDisplayString"],"mappings":"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"}