UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 5.15 kB
{"version":3,"file":"messageList.mjs","sources":["../../src/message/messageList.tsx"],"sourcesContent":["import { computed, defineComponent, ref } from 'vue';\nimport { PLACEMENT_OFFSET } from './const';\nimport TMessage from './message';\nimport { MessageOptions } from './type';\nimport { usePrefixClass } from '../hooks/useConfig';\n\nexport const DEFAULT_Z_INDEX = 6000;\n\nconst getUniqueId = (() => {\n let id = 0;\n return () => {\n id += 1;\n return id;\n };\n})();\n\nexport const MessageList = defineComponent({\n name: 'XMessageList',\n props: {\n zIndex: {\n type: Number,\n default: 0,\n },\n placement: {\n type: String,\n default: '',\n },\n },\n setup(props, { expose }) {\n const COMPONENT_NAME = usePrefixClass('message__list');\n const list = ref([]);\n const messageList = ref([]);\n\n const styles = computed(() => ({\n ...PLACEMENT_OFFSET[props.placement],\n zIndex: props.zIndex !== DEFAULT_Z_INDEX ? props.zIndex : DEFAULT_Z_INDEX,\n }));\n\n const add = (msg: MessageOptions): number => {\n const mg = { ...msg, key: getUniqueId() };\n list.value.push(mg);\n return mg.key;\n };\n\n const remove = (index: number) => {\n list.value.splice(index, 1);\n };\n\n const removeAll = () => {\n list.value = [];\n };\n\n const getOffset = (val: string | number) => {\n if (!val) return;\n return isNaN(Number(val)) ? val : `${val}px`;\n };\n\n const msgStyles = (item: { offset: Array<string | number> }) => {\n return (\n item.offset && {\n position: 'relative',\n left: getOffset(item.offset[0]),\n top: getOffset(item.offset[1]),\n }\n );\n };\n\n const getProps = (index: number, item: MessageOptions) => {\n return {\n ...item,\n onCloseBtnClick: (e: any) => {\n if (item.onCloseBtnClick) {\n item.onCloseBtnClick(e);\n }\n return remove(index);\n },\n onDurationEnd: () => {\n if (item.onDurationEnd) {\n item.onDurationEnd();\n }\n return remove(index);\n },\n };\n };\n\n const addChild = (el: Element) => {\n if (el) {\n messageList.value.push(el);\n }\n };\n\n expose({ add, removeAll, list, messageList });\n\n return () => {\n if (!list.value.length) return;\n\n return (\n <div class={COMPONENT_NAME.value} style={styles.value}>\n {list.value.map((item, index) => (\n <TMessage key={item.key} style={msgStyles(item)} ref={addChild} {...getProps(index, item)} />\n ))}\n </div>\n );\n };\n },\n});\n\nexport default MessageList;\n"],"names":["id","name","props","zIndex","type","placement","setup","list","position","onCloseBtnClick","item","messageList","expose","add","removeAll","_createVNode","TMessage","_mergeProps"],"mappings":"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"}