tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 6.89 kB
Source Map (JSON)
{"version":3,"file":"notification-list.mjs","sources":["../../../components/notification/notification-list.tsx"],"sourcesContent":["import { defineComponent, ref, computed, Ref, CSSProperties } from 'vue';\nimport Notification from './notification';\nimport { TdNotificationProps, NotificationOptions } from './type';\nimport { DEFAULT_Z_INDEX, PLACEMENT_OFFSET, DISTANCE } from './consts';\nimport { usePrefixClass } from '../hooks/useConfig';\n\nexport default defineComponent({\n props: {\n placement: {\n type: String,\n default: 'top-right',\n validator(v: string): boolean {\n return ['top-left', 'top-right', 'bottom-left', 'bottom-right'].indexOf(v) > -1;\n },\n },\n },\n setup(props, { expose }) {\n const COMPONENT_NAME = usePrefixClass('notification-list');\n\n const { placement } = props as NotificationOptions;\n\n const list: Ref<NotificationOptions[]> = ref([]);\n const notificationList = ref([]);\n\n const styles = computed(() => ({\n zIndex: DEFAULT_Z_INDEX,\n ...PLACEMENT_OFFSET[placement],\n }));\n\n const add = (options: TdNotificationProps): number => {\n list.value.push(options);\n return list.value.length - 1;\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 notificationStyles = (item: { offset: NotificationOptions['offset']; zIndex: number }) => {\n const styles: CSSProperties = {\n marginBottom: DISTANCE,\n };\n if (item.offset) {\n styles.position = 'relative';\n styles.left = getOffset(item.offset[0]);\n styles.top = getOffset(item.offset[1]);\n }\n if (item.zIndex) styles['z-index'] = item.zIndex;\n return styles;\n };\n\n const getProps = (index: number, item: NotificationOptions) => {\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 notificationList.value.push(el);\n }\n };\n expose({ add, remove, removeAll, list, notificationList });\n\n return () => {\n if (!list.value.length) return;\n\n return (\n <div class={`${COMPONENT_NAME.value}__show`} style={styles.value}>\n {list.value.map((item: { offset: NotificationOptions['offset']; zIndex: number; id: number }, index) => (\n <Notification ref={addChild} key={item.id} style={notificationStyles(item)} {...getProps(index, item)} />\n ))}\n </div>\n );\n };\n },\n});\n"],"names":["defineComponent","props","placement","type","String","validator","v","indexOf","setup","_ref","expose","COMPONENT_NAME","usePrefixClass","list","ref","notificationList","styles","computed","_objectSpread","zIndex","DEFAULT_Z_INDEX","PLACEMENT_OFFSET","add","options","value","push","length","remove","index","splice","removeAll","getOffset","val","isNaN","Number","notificationStyles","item","marginBottom","DISTANCE","offset","position","left","top","getProps","onCloseBtnClick","e","onDurationEnd","addChild","el","_createVNode","concat","map","Notification","_mergeProps","id"],"mappings":"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"}