UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 7.19 kB
{"version":3,"file":"message.mjs","sources":["../../src/message/message.tsx"],"sourcesContent":["import { defineComponent, h, onBeforeMount, onMounted, computed, ref } from 'vue';\n\nimport TLoading from '../loading';\nimport { THEME_LIST } from './const';\nimport props from './props';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { fadeIn, fadeOut } from './animation';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport isFunction from 'lodash/isFunction';\n\nexport default defineComponent({\n name: 'XMessage',\n props: {\n ...props,\n placement: String, // just for animation\n },\n setup(props, { slots, expose }) {\n const COMPONENT_NAME = usePrefixClass('message');\n const classPrefix = usePrefixClass();\n\n const renderTNode = useTNodeJSX();\n const renderContent = useContent();\n\n const msgRef = ref(null);\n const timer = ref(null);\n\n const classes = computed(() => {\n const status = {};\n THEME_LIST.forEach((t) => (status[`${classPrefix.value}-is-${t}`] = props.theme === t));\n return [\n COMPONENT_NAME.value,\n status,\n {\n [`${classPrefix.value}-is-closable`]: props.closeBtn || slots.closeBtn,\n },\n ];\n });\n\n const close = (e?: MouseEvent) => {\n props.onClose?.({ trigger: 'close-click', e });\n props.onCloseBtnClick?.({ e });\n };\n\n const clearTimer = () => {\n props.duration && clearTimeout(timer.value);\n };\n\n const setTimer = () => {\n if (!props.duration) {\n return;\n }\n timer.value = Number(\n setTimeout(() => {\n clearTimer();\n const msgDom = msgRef.value as HTMLElement;\n fadeOut(msgDom, props.placement, () => {\n props.onClose?.({ trigger: 'duration-end' });\n props.onDurationEnd?.();\n });\n }, props.duration),\n );\n };\n\n const renderClose = () => {\n const defaultClose = <icon-ri-close-line />;\n return (\n <span class={`${COMPONENT_NAME.value}__close`} onClick={close}>\n {renderTNode('closeBtn', defaultClose)}\n </span>\n );\n };\n\n const renderIcon = () => {\n if (props.icon === false) return;\n if (isFunction(props.icon)) return props.icon(h);\n if (slots.icon) {\n return slots.icon(null);\n }\n const Icon = {\n info: <icon-ri-information-fill />,\n success: <icon-ri-checkbox-circle-fill />,\n warning: <icon-ri-error-warning-fill />,\n error: <icon-ri-error-warning-fill />,\n question: <icon-ri-question-fill />,\n loading: TLoading,\n }[props.theme];\n return <Icon />;\n };\n\n onBeforeMount(() => {\n props.duration && setTimer();\n });\n\n onMounted(() => {\n const msgDom = msgRef.value;\n fadeIn(msgDom, props.placement);\n });\n\n expose({ close });\n\n return () => (\n <div ref={msgRef} class={classes.value} onMouseenter={clearTimer} onMouseleave={setTimer}>\n {renderIcon()}\n {renderContent('content', 'default')}\n {renderClose()}\n </div>\n );\n },\n});\n"],"names":["name","props","placement","setup","THEME_LIST","trigger","e","timer","clearTimer","fadeOut","_createVNode","_resolveComponent","isFunction","info","success","warning","error","question","loading","onBeforeMount","onMounted","fadeIn","expose","close"],"mappings":"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"}