UNPKG

@vuesax-alpha/nightly

Version:
1 lines 9.43 kB
{"version":3,"file":"notification2.mjs","sources":["../../../../../../packages/components/notification/src/notification.vue"],"sourcesContent":["<template>\n <transition\n name=\"vs-notification\"\n @before-enter=\"onTransitionBeforeEnter\"\n @enter=\"onTransitionEnter\"\n @leave=\"onTransitionLeave\"\n >\n <div\n v-show=\"visible\"\n ref=\"notifyRef\"\n :class=\"notifyKls\"\n :style=\"notifyStyles\"\n @click=\"handleClick\"\n >\n <template v-if=\"!loading\">\n <template v-if=\"icon\">\n <div\n v-if=\"typeof icon === 'string'\"\n :class=\"ns.e('icon')\"\n :style=\"{ fontSize: addUnit(iconSize) }\"\n v-html=\"icon\"\n />\n <div v-else :class=\"ns.e('icon')\">\n <vs-icon :size=\"addUnit(iconSize)\">\n <component :is=\"icon\" />\n </vs-icon>\n </div>\n </template>\n\n <div :class=\"ns.e('content')\">\n <div v-if=\"title\" :class=\"ns.e('title')\">\n <h4>{{ title }}</h4>\n </div>\n\n <div v-if=\"content\" :class=\"ns.e('text')\">\n <slot>\n <p v-if=\"dangerousHtmlString\" v-html=\"content\" />\n <p v-else>\n {{ content }}\n </p>\n </slot>\n </div>\n </div>\n </template>\n <div v-else :class=\"ns.e('loading')\" />\n\n <button v-if=\"showClose\" :class=\"ns.e('close')\" @click=\"handleClickClose\">\n <icon-close hover=\"less\" />\n </button>\n\n <div\n v-if=\"progressAuto\"\n :class=\"ns.e('progress')\"\n :style=\"{ width: `${currentProgress}%` }\"\n />\n </div>\n </transition>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, ref, unref } from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport {\n useColor,\n useGlobalComponentSettings,\n useVuesaxBaseComponent,\n} from '@vuesax-alpha/hooks'\nimport { IconClose, VsIcon } from '@vuesax-alpha/components/icon'\nimport { addUnit, getVsColor } from '@vuesax-alpha/utils'\nimport { notificationProps } from './notification'\n\ndefineOptions({\n name: 'VsNotification',\n})\n\nconst props = defineProps(notificationProps)\n\nconst { ns, zIndex } = useGlobalComponentSettings('notification')\n\nconst { currentZIndex, nextZIndex } = zIndex\n\nconst color = useColor()\n\nconst notifyRef = ref<HTMLElement>()\nconst visible = ref(false)\nlet timer: (() => void) | undefined = undefined\n\nconst vsBaseClasses = useVuesaxBaseComponent(color)\nconst notifyKls = computed(() => [\n ns.b(),\n vsBaseClasses,\n ns.is('flat', props.flat),\n ns.is('sticky', props.sticky),\n ns.is('border', !!props.border),\n ns.is('color', !!color.value),\n ns.is('icon', !!props.icon),\n ns.is('on-click', !!props.onClick),\n ns.is('on-click-close', !!props.onClickClose),\n props.shape && ns.is(props.shape),\n ns.is('loading', props.loading),\n ns.is('not-padding', props.notPadding),\n ns.is('width-full', props.width == 'full'),\n ns.is('width-auto', props.width == 'auto'),\n])\n\nconst notifyStyles = computed(() => [\n {\n zIndex: unref(currentZIndex),\n },\n ns.cssVar({\n color: getVsColor(color),\n border: getVsColor(props.border),\n }),\n])\n\nconst handleClick = () => {\n props.onClick?.()\n}\n\nconst handleClickClose = () => {\n if (!props.onClickClose?.()) {\n return\n }\n visible.value = false\n\n props.onClose?.()\n}\n\nconst onTransitionBeforeEnter = (el: Element) => {\n nextZIndex()\n const _el = el as HTMLElement\n _el.style.maxHeight = `0`\n _el.style.padding = `0 20px`\n}\n\nconst onTransitionEnter = (el: Element, done: () => void) => {\n const h = el.scrollHeight\n const _el = el as HTMLElement\n _el.style.maxHeight = `${h + 40}px`\n if (window.innerWidth < 600) {\n _el.style.padding = `15px`\n } else {\n _el.style.padding = `20px`\n }\n done()\n}\n\nconst onTransitionLeave = (_: Element, done: () => void) => {\n setTimeout(() => {\n notifyRef.value?.remove()\n done()\n props.onClose?.()\n }, 150)\n}\n\nconst startTimer = () => {\n if (props.duration > 0) {\n ;({ stop: timer } = useTimeoutFn(() => {\n if (visible.value) close()\n }, props.duration))\n }\n}\n\nconst clearTimer = () => {\n timer?.()\n}\n\nconst open = () => {\n clearTimer()\n startTimer()\n nextZIndex()\n\n visible.value = true\n}\n\nconst close = () => {\n visible.value = false\n}\n\nlet intervalProgress = 0\nconst currentProgress = ref(0)\n\nconst handleProgress = () => {\n if (props.progressAuto && props.duration > 0) {\n intervalProgress = setInterval(() => {\n currentProgress.value += 1\n }, props.duration / 100)\n }\n}\n\nonMounted(() => {\n open()\n handleProgress()\n})\n\nonBeforeUnmount(() => {\n clearInterval(intervalProgress)\n})\n\ndefineExpose({\n visible,\n /** @description close notification */\n close,\n /** @description open notification */\n open,\n})\n</script>\n"],"names":[],"mappings":"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"}