UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 7.29 kB
{"version":3,"file":"notification.mjs","sources":["../../src/notification/notification.tsx"],"sourcesContent":["import { defineComponent, h, onBeforeMount, onMounted, ref } from 'vue';\nimport isFunction from 'lodash/isFunction';\n\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport props from './props';\nimport { useConfig, usePrefixClass } from '../hooks/useConfig';\nimport { fadeIn, fadeOut } from './animate';\n\nexport default defineComponent({\n name: 'XNotification',\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 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 <icon-ri-checkbox-circle-fill class={`${classPrefix.value}-is-${props.theme}`} />\n ) : (\n <icon-ri-information-fill class={`${classPrefix.value}-is-${props.theme}`} />\n );\n iconContent = <div class={`t-notification__icon`}>{iconType}</div>;\n }\n return iconContent;\n };\n\n const renderClose = () => {\n const defaultClose = <icon-ri-close-line />;\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":["name","props","placement","setup","fadeOut","e","isFunction","iconContent","_resolveComponent","_createVNode","timer","clearTimer","onBeforeMount","onMounted","fadeIn","expose","close"],"mappings":"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"}