UNPKG

@arco-design/web-vue

Version:

Arco Design Vue 2.0: A Vue.js 3 UI Library

61 lines (60 loc) 1.79 kB
"use strict"; var vue = require("vue"); var globalConfig = require("../_utils/global-config.js"); var message = require("./message.js"); var usePopupManager = require("../_hooks/use-popup-manager.js"); var vueUtils = require("../_utils/vue-utils.js"); function _isSlot(s) { return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s); } var MessageList = vue.defineComponent({ name: "MessageList", props: { messages: { type: Array, default: () => [] }, position: { type: String, default: "top" } }, emits: ["close", "afterClose"], setup(props, context) { const prefixCls = globalConfig.getPrefixCls("message-list"); const { zIndex } = usePopupManager("message", { runOnMounted: true }); return () => { let _slot; return vue.createVNode(vue.TransitionGroup, { "class": [prefixCls, `${prefixCls}-${props.position}`], "name": "fade-message", "tag": "ul", "style": { zIndex: zIndex.value }, "onAfterLeave": () => context.emit("afterClose") }, _isSlot(_slot = props.messages.map((item) => { const slots = { default: vueUtils.getSlotFunction(item.content), icon: vueUtils.getSlotFunction(item.icon) }; return vue.createVNode(message, { "key": item.id, "type": item.type, "duration": item.duration, "closable": item.closable, "resetOnUpdate": item.resetOnUpdate, "resetOnHover": item.resetOnHover, "onClose": () => context.emit("close", item.id) }, slots); })) ? _slot : { default: () => [_slot] }); }; } }); module.exports = MessageList;