UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 9.34 kB
{"version":3,"file":"notice.vue2.cjs","sources":["../../../components/notice/notice.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Icon } from '@/components/icon'\nimport { Renderer } from '@/components/renderer'\nimport { Popup } from '@/components/popup'\n\nimport { computed, reactive, ref } from 'vue'\n\nimport { useIcons, useNameHelper } from '@vexip-ui/config'\nimport { assertiveTypes, effectiveTypes } from './symbol'\n\nimport type { Key, NoticeConfig, NoticePlacement } from './symbol'\n\ndefineOptions({ name: 'Notice' })\n\nconst nh = useNameHelper('notice')\nconst icons = useIcons()\n\nconst predefinedIcons = computed(() => ({\n primary: icons.value.info,\n info: icons.value.info,\n success: icons.value.success,\n warning: icons.value.warning,\n error: icons.value.error,\n}))\n\nconst placement = ref<NoticePlacement>('top-right')\nconst popup = ref<InstanceType<typeof Popup>>()\n\nasync function add(options: Record<string, any>) {\n if (popup.value) {\n await popup.value.add(options)\n }\n}\n\nasync function remove(key: Key) {\n return !!popup.value && (await popup.value.remove(key))\n}\n\nfunction clear() {\n popup.value && popup.value.clear()\n}\n\nfunction config(config: NoticeConfig) {\n placement.value = config.placement || placement.value\n}\n\ndefineExpose(\n reactive({\n popup,\n add,\n remove,\n clear,\n config,\n }),\n)\n</script>\n\n<template>\n <!-- eslint-disable vue/no-v-html -->\n <Popup\n ref=\"popup\"\n :class=\"nh.b()\"\n :transition-name=\"nh.ns(`popup-${placement.split('-')[1]}`)\"\n :placement=\"placement\"\n >\n <template #item=\"{ item }: { item: import('./symbol').NoticeOptions }\">\n <div\n :class=\"[\n {\n [nh.be('item')]: true,\n [nh.bs('vars')]: true,\n [nh.bem('item', 'title-only')]: !item.content && typeof item.renderer !== 'function',\n [nh.bem('item', 'has-icon')]: item.icon,\n [nh.bem('item', 'content-only')]: !item.title,\n [nh.bem('item', item.type!)]: item.type && effectiveTypes.includes(item.type),\n [nh.bem('item', 'background')]: item.background,\n [nh.bem('item', 'color')]: item.background && item.color,\n [nh.bem('item', 'color-only')]: !item.background && item.color,\n [nh.bem('item', 'marker')]: item.marker\n },\n item.className\n ]\"\n role=\"alert\"\n :style=\"[\n {\n color: typeof item.color === 'string' ? item.color : undefined,\n backgroundColor: typeof item.background === 'string' ? item.background : undefined\n },\n item.style || {}\n ]\"\n aria-atomic=\"true\"\n :aria-live=\"item.type && assertiveTypes.includes(item.type) ? 'assertive' : 'polite'\"\n >\n <div\n v-if=\"item.icon || (item.type && effectiveTypes.includes(item.type))\"\n :class=\"nh.be('icon')\"\n :style=\"{ color: item.iconColor }\"\n >\n <Icon\n v-if=\"item.icon\"\n :icon=\"item.icon\"\n :scale=\"!item.content && typeof item.renderer !== 'function' ? 1 : 2\"\n :style=\"[{ color: item.iconColor }, (item.icon as any).style]\"\n ></Icon>\n <Icon\n v-else\n v-bind=\"predefinedIcons[item.type!]\"\n :scale=\"!item.content && typeof item.renderer !== 'function' ? 1 : 2\"\n :style=\"{ color: item.iconColor }\"\n ></Icon>\n </div>\n <div :class=\"nh.be('wrapper')\">\n <Renderer\n v-if=\"typeof item.renderer === 'function'\"\n :renderer=\"item.renderer\"\n :data=\"item\"\n ></Renderer>\n <template v-else>\n <template v-if=\"item.title\">\n <div\n v-if=\"item.parseHtml\"\n :class=\"nh.be('title')\"\n :style=\"{\n color: typeof item.titleColor === 'string' ? item.titleColor : undefined\n }\"\n v-html=\"item.title\"\n ></div>\n <div\n v-else\n :class=\"nh.be('title')\"\n :style=\"{\n color: typeof item.titleColor === 'string' ? item.titleColor : undefined\n }\"\n >\n {{ item.title || '' }}\n </div>\n </template>\n <template v-if=\"item.content\">\n <div v-if=\"item.parseHtml\" :class=\"nh.be('content')\" v-html=\"item.content\"></div>\n <div v-else :class=\"nh.be('content')\">\n {{ item.content || '' }}\n </div>\n </template>\n </template>\n </div>\n <button\n v-if=\"item.closable\"\n type=\"button\"\n :class=\"nh.be('close')\"\n @click=\"remove(item.key!)\"\n >\n <Icon v-bind=\"icons.close\" label=\"close\"></Icon>\n </button>\n </div>\n </template>\n </Popup>\n</template>\n"],"names":["nh","useNameHelper","icons","useIcons","predefinedIcons","computed","placement","ref","popup","add","options","remove","key","clear","config","__expose","reactive","_createBlock","_unref","Popup","_normalizeClass","_withCtx","item","_createElementVNode","effectiveTypes","_normalizeStyle","assertiveTypes","_createElementBlock","Icon","_openBlock","_mergeProps","Renderer","_Fragment","_toDisplayString","$event","_createVNode"],"mappings":"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"}