UNPKG

hongluan-business-ui

Version:
1 lines 6.55 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/banner/src/index.vue"],"sourcesContent":["<template>\n <teleport :to=\"to\">\n <transition :name=\"animName\">\n <hl-alert\n v-if=\"visible\"\n :title=\"title\"\n :description=\"description\"\n :type=\"type\"\n :closable=\"closable\"\n :close-text=\"closeText\"\n :show-icon=\"showIcon\"\n :dashed=\"dashed\"\n :effect=\"effect\"\n :class=\"[prefix + '-banner', 'at-' + placement]\"\n :style=\"{\n height,\n position: realPosition,\n zIndex: realZIndex,\n }\"\n v-bind=\"$attrs\"\n @close=\"doClose\"\n >\n <template #default>\n <slot></slot>\n </template>\n <template #title>\n <slot name=\"title\"></slot>\n </template>\n <template #icon>\n <slot name=\"icon\"></slot>\n </template>\n </hl-alert>\n </transition>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, watch } from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport { HlAlert, useZIndex } from 'hongluan-ui'\nimport { usePrefix } from '@hongluan-business-ui/utils/util'\nimport isServer from '@hongluan-business-ui/utils/isServer'\n\nimport type { PropType } from 'vue'\nimport type { AlertEffect } from 'hongluan-ui'\n\nexport default defineComponent({\n name: 'Banner',\n components: {\n HlAlert,\n },\n inheritAttrs: false,\n props: {\n modelValue: {\n type: Boolean,\n required: true,\n },\n title: {\n type: String,\n default: '',\n },\n description: {\n type: String,\n default: '',\n },\n type: {\n type: String,\n default: 'info',\n },\n closable: {\n type: Boolean,\n default: true,\n },\n closeText: {\n type: String,\n default: '',\n },\n showIcon: Boolean,\n dashed: Boolean,\n effect: {\n type: String as PropType<AlertEffect>,\n default: '',\n },\n placement: {\n type: String as PropType<'top' | 'bottom'>,\n default: 'top',\n },\n animationName: {\n type: String,\n default: '',\n },\n to: {\n type: String,\n default: 'body',\n },\n zIndex: Number,\n height: String,\n position: String as PropType<'fixed' | 'absolute'>,\n timeout: Number,\n },\n emits: ['update:modelValue', 'close'],\n setup(props, { emit }) {\n const { prefix } = usePrefix()\n const { nextZIndex } = useZIndex()\n const visible = ref(false)\n const realZIndex = ref(props.zIndex || nextZIndex())\n let autoCloseTimer: (() => void) | undefined = undefined\n\n const realPosition = computed(() => {\n let position = props.position\n if (!position) {\n if (props.to === 'body') {\n position = 'fixed'\n } else {\n position = 'absolute'\n }\n }\n return position\n })\n const animName = computed(() => {\n let name = props.animationName\n if (!name) {\n switch (props.placement) {\n case 'bottom':\n name = 'slideTop'\n break\n case 'top':\n name = 'slideDown'\n break\n }\n }\n return name\n })\n\n const doOpen = () => {\n if (isServer) {\n return\n }\n visible.value = true\n }\n const doClose = () => {\n autoCloseTimer?.()\n\n visible.value = false\n emit('update:modelValue', false)\n emit('close')\n }\n\n watch(() => props.modelValue, val => {\n if (val) {\n doOpen()\n if (props.timeout && !isNaN(+props.timeout)) {\n ({ stop: autoCloseTimer } = useTimeoutFn(() => doClose(), +props.timeout))\n }\n realZIndex.value = props.zIndex ? realZIndex.value++ : nextZIndex()\n } else {\n if (visible.value) {\n doClose()\n }\n }\n }, {\n immediate: true,\n })\n\n return {\n prefix,\n visible,\n animName,\n realZIndex,\n realPosition,\n doClose,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_Teleport","_createVNode","_Transition","_mergeProps","_withCtx","_renderSlot"],"mappings":"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"}