UNPKG

tdesign-vue-next

Version:
1 lines 9.05 kB
{"version":3,"file":"notification.mjs","sources":["../../../components/notification/notification.tsx"],"sourcesContent":["import { defineComponent, h, onBeforeMount, onMounted, ref } from 'vue';\nimport {\n InfoCircleFilledIcon as TdInfoCircleFilledIcon,\n CheckCircleFilledIcon as TdCheckCircleFilledIcon,\n CloseIcon as TdCloseIcon,\n} from 'tdesign-icons-vue-next';\nimport { isFunction } from 'lodash-es';\n\nimport { useConfig, useContent, useTNodeJSX, useGlobalIcon, usePrefixClass } from '@tdesign/shared-hooks';\nimport props from './props';\n\nimport { fadeIn, fadeOut } from './utils';\n\nexport default defineComponent({\n name: 'TNotification',\n props: {\n ...props,\n placement: String, // just for animation\n },\n setup(props, { slots, expose }) {\n const COMPONENT_NAME = usePrefixClass('notification');\n const { classPrefix } = useConfig('classPrefix');\n const { InfoCircleFilledIcon, CheckCircleFilledIcon, CloseIcon } = useGlobalIcon({\n InfoCircleFilledIcon: TdInfoCircleFilledIcon,\n CheckCircleFilledIcon: TdCheckCircleFilledIcon,\n CloseIcon: TdCloseIcon,\n });\n const renderTNode = useTNodeJSX();\n const renderContent = useContent();\n const timer = ref(null);\n const notificationRef = ref(null);\n\n const close = (e?: MouseEvent) => {\n const dom = notificationRef.value as HTMLElement;\n fadeOut(dom, props.placement, () => {\n props.onCloseBtnClick?.({ e });\n });\n };\n\n const renderIcon = () => {\n let iconContent;\n if (props.icon === false) return null;\n if (isFunction(props.icon)) {\n iconContent = props.icon(h);\n } else if (slots.icon) {\n iconContent = slots.icon(null);\n } else if (props.theme) {\n const iconType =\n props.theme === 'success' ? (\n <CheckCircleFilledIcon class={`${classPrefix.value}-is-${props.theme}`} />\n ) : (\n <InfoCircleFilledIcon class={`${classPrefix.value}-is-${props.theme}`} />\n );\n iconContent = <div class={`${classPrefix.value}-notification__icon`}>{iconType}</div>;\n }\n return iconContent;\n };\n\n const renderClose = () => {\n const defaultClose = <CloseIcon />;\n return (\n <span class={`${classPrefix.value}-message__close`} onClick={close}>\n {renderTNode('closeBtn', defaultClose)}\n </span>\n );\n };\n\n const renderMainContent = () => {\n return <div class={`${COMPONENT_NAME.value}__content`}>{renderContent('default', 'content')}</div>;\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 dom = notificationRef.value as HTMLElement;\n fadeOut(dom, props.placement, () => {\n props.onDurationEnd?.();\n });\n }, props.duration),\n );\n };\n\n onBeforeMount(() => {\n props.duration && setTimer();\n });\n\n onMounted(() => {\n const dom = notificationRef.value;\n fadeIn(dom, props.placement);\n });\n\n expose({ close });\n return () => (\n <div ref={notificationRef} class={`${COMPONENT_NAME.value}`} onMouseenter={clearTimer} onMouseleave={setTimer}>\n {renderIcon()}\n <div class={`${COMPONENT_NAME.value}__main`}>\n <div class={`${COMPONENT_NAME.value}__title__wrap`}>\n <span class={`${COMPONENT_NAME.value}__title`}>{renderTNode('title')}</span>\n {renderClose()}\n </div>\n {renderMainContent()}\n {renderTNode('footer')}\n </div>\n </div>\n );\n },\n});\n"],"names":["defineComponent","name","props","_objectSpread","placement","String","setup","slots","_ref","expose","COMPONENT_NAME","usePrefixClass","_useConfig","useConfig","classPrefix","_useGlobalIcon","useGlobalIcon","InfoCircleFilledIcon","TdInfoCircleFilledIcon","CheckCircleFilledIcon","TdCheckCircleFilledIcon","CloseIcon","TdCloseIcon","renderTNode","useTNodeJSX","renderContent","useContent","timer","ref","notificationRef","close","e","dom","value","fadeOut","_props2$onCloseBtnCli","onCloseBtnClick","renderIcon","iconContent","icon","isFunction","h","theme","iconType","_createVNode","concat","renderClose","defaultClose","renderMainContent","clearTimer","duration","clearTimeout","setTimer","Number","setTimeout","_props2$onDurationEnd","onDurationEnd","onBeforeMount","onMounted","fadeIn"],"mappings":"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"}