UNPKG

@extclp/vexip-ui

Version:

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

1 lines 8.41 kB
{"version":3,"file":"message.vue2.mjs","sources":["../../../components/message/message.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Icon } from '@/components/icon'\r\nimport { Renderer } from '@/components/renderer'\r\nimport { Popup } from '@/components/popup'\r\n\r\nimport { computed, reactive, ref } from 'vue'\r\n\r\nimport { useIcons, useNameHelper } from '@vexip-ui/config'\r\nimport { assertiveTypes, effectiveTypes } from './symbol'\r\n\r\nimport type { Key, MessageConfig, MessagePlacement } from './symbol'\r\n\r\ndefineOptions({ name: 'Message' })\r\n\r\nconst nh = useNameHelper('message')\r\nconst icons = useIcons()\r\n\r\nconst predefinedIcons = computed(() => ({\r\n primary: icons.value.info,\r\n info: icons.value.info,\r\n success: icons.value.success,\r\n warning: icons.value.warning,\r\n error: icons.value.error,\r\n}))\r\n\r\nconst placement = ref<MessagePlacement>('top')\r\nconst startOffset = ref(30)\r\nconst itemGap = ref(16)\r\nconst popup = ref<InstanceType<typeof Popup>>()\r\n\r\nconst placementCenter = computed(() => `${placement.value}-center` as const)\r\n\r\nasync function add(options: Record<string, any>) {\r\n if (popup.value) {\r\n await popup.value.add(options)\r\n }\r\n}\r\n\r\nasync function remove(key: Key) {\r\n return !!popup.value && (await popup.value.remove(key))\r\n}\r\n\r\nfunction config(config: MessageConfig) {\r\n placement.value = config.placement || placement.value\r\n startOffset.value = config.startOffset || startOffset.value\r\n itemGap.value = config.itemGap || itemGap.value\r\n}\r\n\r\nfunction clear() {\r\n popup.value && popup.value.clear()\r\n}\r\n\r\ndefineExpose(\r\n reactive({\r\n popup,\r\n add,\r\n remove,\r\n clear,\r\n config,\r\n }),\r\n)\r\n</script>\r\n\r\n<template>\r\n <!-- eslint-disable vue/no-v-html -->\r\n <Popup\r\n ref=\"popup\"\r\n :class=\"nh.b()\"\r\n :transition-name=\"nh.ns(`popup-${placement}`)\"\r\n :placement=\"placementCenter\"\r\n :start-offset=\"startOffset\"\r\n :item-gap=\"itemGap\"\r\n >\r\n <template #item=\"{ item }: { item: import('./symbol').MessageOptions }\">\r\n <div\r\n :class=\"[\r\n {\r\n [nh.be('item')]: true,\r\n [nh.bs('vars')]: true,\r\n [nh.bem('item', item.type!)]: item.type && effectiveTypes.includes(item.type),\r\n [nh.bem('item', 'background')]: item.background,\r\n [nh.bem('item', 'color')]: item.background && item.color,\r\n [nh.bem('item', 'color-only')]: !item.background && item.color,\r\n [nh.bem('item', 'has-icon')]: item.icon,\r\n [nh.bem('item', 'closable')]: item.closable\r\n },\r\n item.className\r\n ]\"\r\n role=\"alert\"\r\n :style=\"[\r\n {\r\n color: typeof item.color === 'string' ? item.color : undefined,\r\n backgroundColor: typeof item.background === 'string' ? item.background : undefined\r\n },\r\n item.style || {}\r\n ]\"\r\n aria-atomic=\"true\"\r\n :aria-live=\"item.type && assertiveTypes.includes(item.type) ? 'assertive' : 'polite'\"\r\n >\r\n <div :class=\"nh.be('wrapper')\">\r\n <div\r\n v-if=\"item.icon || (item.type && effectiveTypes.includes(item.type))\"\r\n :class=\"nh.be('icon')\"\r\n :style=\"{ color: item.iconColor }\"\r\n >\r\n <Icon\r\n v-if=\"item.icon\"\r\n :icon=\"item.icon\"\r\n :style=\"[{ color: item.iconColor }, (item.icon as any).style]\"\r\n ></Icon>\r\n <Icon\r\n v-else\r\n v-bind=\"predefinedIcons[item.type!]\"\r\n :style=\"{ color: item.iconColor }\"\r\n ></Icon>\r\n </div>\r\n <Renderer\r\n v-if=\"typeof item.renderer === 'function'\"\r\n :renderer=\"item.renderer\"\r\n :data=\"item\"\r\n ></Renderer>\r\n <template v-else>\r\n <div v-if=\"item.parseHtml\" :class=\"nh.be('content')\" v-html=\"item.content\"></div>\r\n <div v-else :class=\"nh.be('content')\">\r\n {{ item.content || '' }}\r\n </div>\r\n </template>\r\n </div>\r\n <button\r\n v-if=\"item.closable\"\r\n type=\"button\"\r\n :class=\"nh.be('close')\"\r\n @click=\"remove(item.key!)\"\r\n >\r\n <Icon v-bind=\"icons.close\" label=\"close\"></Icon>\r\n </button>\r\n </div>\r\n </template>\r\n </Popup>\r\n</template>\r\n"],"names":["nh","useNameHelper","icons","useIcons","predefinedIcons","computed","placement","ref","startOffset","itemGap","popup","placementCenter","add","options","remove","key","config","clear","__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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"}