UNPKG

yuang-framework-ui-pc

Version:

yuang-framework-ui-pc Library

108 lines (107 loc) 3.97 kB
"use strict"; const vue = require("vue"); const elementPlus = require("element-plus"); const core = require("../../utils/core"); const _sfc_main = vue.defineComponent({ name: "ItemTitle", components: { ElIcon: elementPlus.ElIcon, ElBadge: elementPlus.ElBadge }, props: { /** 菜单项数据 */ item: { type: Object, required: true }, /** 是否需要标题 */ showTitle: { type: Boolean, default: true }, /** 是否需要链接 */ showLink: Boolean }, emits: { itemClick: (_item, _e) => true, itemMouseenter: (_item, _e) => true, itemMouseleave: (_item, _e) => true }, setup(_props, { emit }) { const handleItemClick = (item, e) => { emit("itemClick", item, e); }; const handleItemMouseenter = (item, e) => { emit("itemMouseenter", item, e); }; const handleItemMouseleave = (item, e) => { emit("itemMouseleave", item, e); }; return { isExternalLink: core.isExternalLink, handleItemClick, handleItemMouseenter, handleItemMouseleave }; } }); const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; const _hoisted_1 = { key: 0, class: "ele-menu-title" }; const _hoisted_2 = ["href"]; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_ElIcon = vue.resolveComponent("ElIcon"); const _component_ElBadge = vue.resolveComponent("ElBadge"); const _component_RouterLink = vue.resolveComponent("RouterLink"); return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [ vue.renderSlot(_ctx.$slots, "icon", { item: _ctx.item, icon: _ctx.item.icon }, () => [ _ctx.item.icon ? (vue.openBlock(), vue.createBlock(_component_ElIcon, vue.normalizeProps(vue.mergeProps({ key: 0 }, _ctx.item.iconProps || {})), { default: vue.withCtx(() => [ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.item.icon), { style: vue.normalizeStyle(_ctx.item.iconStyle) }, null, 8, ["style"])) ]), _: 1 }, 16)) : vue.createCommentVNode("", true) ]), _ctx.showTitle ? vue.renderSlot(_ctx.$slots, "title", { key: 0, item: _ctx.item, title: _ctx.item.title }, () => [ _ctx.item.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1, vue.toDisplayString(_ctx.item.title), 1)) : vue.createCommentVNode("", true) ]) : vue.createCommentVNode("", true), _ctx.item.badge != null ? (vue.openBlock(), vue.createBlock(_component_ElBadge, vue.normalizeProps(vue.mergeProps({ key: 1 }, _ctx.item.badge)), null, 16)) : vue.createCommentVNode("", true), vue.createElementVNode("div", { class: "ele-menu-trigger", onClick: _cache[1] || (_cache[1] = (e) => _ctx.handleItemClick(_ctx.item, e)), onMouseenter: _cache[2] || (_cache[2] = (e) => _ctx.handleItemMouseenter(_ctx.item, e)), onMouseleave: _cache[3] || (_cache[3] = (e) => _ctx.handleItemMouseleave(_ctx.item, e)) }, [ _ctx.showLink ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [ _ctx.isExternalLink(_ctx.item.path) ? (vue.openBlock(), vue.createElementBlock("a", { key: 0, href: _ctx.item.path, target: "_blank", class: "ele-menu-link", onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => { }, ["stop"])) }, null, 8, _hoisted_2)) : _ctx.item.path ? (vue.openBlock(), vue.createBlock(_component_RouterLink, { key: 1, to: _ctx.item.path, class: "ele-menu-link" }, null, 8, ["to"])) : vue.createCommentVNode("", true) ], 64)) : vue.createCommentVNode("", true) ], 32) ], 64); } const itemTitle = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); module.exports = itemTitle;