UNPKG

yuang-framework-ui-pc

Version:

yuang-framework-ui-pc Library

109 lines (108 loc) 4 kB
import { defineComponent, resolveComponent, openBlock, createElementBlock, Fragment, renderSlot, createBlock, normalizeProps, mergeProps, withCtx, resolveDynamicComponent, normalizeStyle, createCommentVNode, toDisplayString, createElementVNode, withModifiers } from "vue"; import { ElIcon, ElBadge } from "element-plus"; import { isExternalLink } from "../../utils/core"; const _sfc_main = defineComponent({ name: "ItemTitle", components: { ElIcon, 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, 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 = resolveComponent("ElIcon"); const _component_ElBadge = resolveComponent("ElBadge"); const _component_RouterLink = resolveComponent("RouterLink"); return openBlock(), createElementBlock(Fragment, null, [ renderSlot(_ctx.$slots, "icon", { item: _ctx.item, icon: _ctx.item.icon }, () => [ _ctx.item.icon ? (openBlock(), createBlock(_component_ElIcon, normalizeProps(mergeProps({ key: 0 }, _ctx.item.iconProps || {})), { default: withCtx(() => [ (openBlock(), createBlock(resolveDynamicComponent(_ctx.item.icon), { style: normalizeStyle(_ctx.item.iconStyle) }, null, 8, ["style"])) ]), _: 1 }, 16)) : createCommentVNode("", true) ]), _ctx.showTitle ? renderSlot(_ctx.$slots, "title", { key: 0, item: _ctx.item, title: _ctx.item.title }, () => [ _ctx.item.title ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(_ctx.item.title), 1)) : createCommentVNode("", true) ]) : createCommentVNode("", true), _ctx.item.badge != null ? (openBlock(), createBlock(_component_ElBadge, normalizeProps(mergeProps({ key: 1 }, _ctx.item.badge)), null, 16)) : createCommentVNode("", true), 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 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ _ctx.isExternalLink(_ctx.item.path) ? (openBlock(), createElementBlock("a", { key: 0, href: _ctx.item.path, target: "_blank", class: "ele-menu-link", onClick: _cache[0] || (_cache[0] = withModifiers(() => { }, ["stop"])) }, null, 8, _hoisted_2)) : _ctx.item.path ? (openBlock(), createBlock(_component_RouterLink, { key: 1, to: _ctx.item.path, class: "ele-menu-link" }, null, 8, ["to"])) : createCommentVNode("", true) ], 64)) : createCommentVNode("", true) ], 32) ], 64); } const itemTitle = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); export { itemTitle as default };