plus-pro-components
Version:
Page level components developed based on Element Plus.
285 lines (280 loc) • 12.8 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var elementPlus = require('element-plus');
var index = require('../../utils/index.js');
var is = require('../../utils/is.js');
const _hoisted_1 = { class: "plus-sidebar__item-title" };
const _hoisted_2 = { class: "plus-sidebar__item-title" };
var _sfc_main = /* @__PURE__ */ vue.defineComponent({
...{
name: "PlusSidebarItem",
inheritAttrs: false
},
__name: "sidebar-item",
props: {
parent: {},
item: {},
collapse: { type: Boolean, default: false },
renderMenuItem: { type: Function, default: void 0 },
renderSubMenuItem: { type: Function, default: void 0 },
renderTitle: { type: Function, default: void 0 }
},
setup(__props) {
const props = __props;
const onClickMenuItem = vue.useAttrs().onClickMenuItem;
const instance = vue.getCurrentInstance();
const router = instance.appContext.config.globalProperties.$router;
const resolveMenuItem = (item) => {
var _a;
if (!((_a = item.children) == null ? void 0 : _a.length)) return true;
const children = item.children.filter((i) => {
var _a2;
return ((_a2 = i.meta) == null ? void 0 : _a2.hideInMenu) !== true;
});
if (!children.length) {
return true;
}
return false;
};
const replacePath = (path) => path.replace("/http", "http");
const getIndex = (item) => {
return item.redirect || item.path;
};
const handleClickItem = (item) => {
if (is.isFunction(onClickMenuItem)) {
onClickMenuItem(item, props.parent);
return;
}
if (is.isUrl(replacePath(item.path))) {
const url = replacePath(item.path);
window.open(url);
} else {
router && router.push(getIndex(item));
}
};
return (_ctx, _cache) => {
var _a, _b;
const _component_PlusSidebarItem = vue.resolveComponent("PlusSidebarItem");
return ((_a = _ctx.item.meta) == null ? void 0 : _a.hideInMenu) !== true ? (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 0 },
[
vue.createCommentVNode(" \u6CA1\u6709\u5B50\u83DC\u5355\u7684\u60C5\u51B5 "),
resolveMenuItem(_ctx.item) ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElMenuItem), {
key: getIndex(_ctx.item),
class: "plus-sidebar__item",
index: getIndex(_ctx.item),
disabled: (_b = _ctx.item.meta) == null ? void 0 : _b.disabled,
onClick: _cache[0] || (_cache[0] = ($event) => handleClickItem(_ctx.item))
}, {
title: vue.withCtx(() => {
var _a2;
return [
vue.createElementVNode("span", _hoisted_1, [
_ctx.renderTitle && vue.unref(is.isFunction)(_ctx.renderTitle) ? (vue.openBlock(), vue.createBlock(
vue.resolveDynamicComponent(_ctx.renderTitle),
vue.normalizeProps(vue.mergeProps({ key: 0 }, vue.unref(index.removeChildrenField)(_ctx.item))),
null,
16
/* FULL_PROPS */
)) : _ctx.$slots["sidebar-item-title"] ? (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
[
vue.createCommentVNode(" menu-item title \u63D2\u69FD "),
vue.renderSlot(_ctx.$slots, "sidebar-item-title", vue.normalizeProps(vue.guardReactiveProps(_ctx.item)))
],
2112
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
)) : (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 2 },
[
vue.createTextVNode(
vue.toDisplayString(((_a2 = _ctx.item.meta) == null ? void 0 : _a2.title) || _ctx.item.name || _ctx.item.path),
1
/* TEXT */
)
],
64
/* STABLE_FRAGMENT */
))
])
];
}),
default: vue.withCtx(() => [
_ctx.renderMenuItem && vue.unref(is.isFunction)(_ctx.renderMenuItem) ? (vue.openBlock(), vue.createBlock(
vue.resolveDynamicComponent(_ctx.renderMenuItem),
vue.normalizeProps(vue.mergeProps({ key: 0 }, vue.unref(index.removeChildrenField)(_ctx.item))),
null,
16
/* FULL_PROPS */
)) : _ctx.$slots["sidebar-item"] ? (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
[
vue.createCommentVNode(" menu-item \u63D2\u69FD "),
vue.renderSlot(_ctx.$slots, "sidebar-item", vue.normalizeProps(vue.guardReactiveProps(_ctx.item)))
],
2112
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
)) : _ctx.item.meta && _ctx.item.meta.icon ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElIcon), {
key: 2,
class: "plus-sidebar__item-icon"
}, {
default: vue.withCtx(() => [
(vue.openBlock(), vue.createBlock(
vue.resolveDynamicComponent(_ctx.item.meta.icon),
vue.normalizeProps(vue.guardReactiveProps(vue.unref(index.removeChildrenField)(_ctx.item))),
null,
16
/* FULL_PROPS */
))
]),
_: 1
/* STABLE */
})) : vue.createCommentVNode("v-if", true)
]),
_: 3
/* FORWARDED */
}, 8, ["index", "disabled"])) : (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
[
vue.createCommentVNode(" \u6709\u5B50\u83DC\u5355\u7684\u60C5\u51B5 "),
(vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElSubMenu), {
key: getIndex(_ctx.item),
index: getIndex(_ctx.item),
class: "plus-sidebar__item-sub"
}, {
title: vue.withCtx(() => {
var _a2, _b2;
return [
vue.createCommentVNode(" \u81EA\u5B9A\u4E49\u663E\u793A "),
_ctx.renderSubMenuItem && vue.unref(is.isFunction)(_ctx.renderSubMenuItem) ? (vue.openBlock(), vue.createBlock(
vue.resolveDynamicComponent(_ctx.renderSubMenuItem),
vue.normalizeProps(vue.mergeProps({ key: 0 }, vue.unref(index.removeChildrenField)(_ctx.item))),
null,
16
/* FULL_PROPS */
)) : _ctx.$slots["sidebar-sub"] ? (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
[
vue.createCommentVNode(" sub-menu \u63D2\u69FD "),
vue.renderSlot(_ctx.$slots, "sidebar-sub", vue.normalizeProps(vue.guardReactiveProps(_ctx.item)))
],
2112
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
)) : ((_a2 = _ctx.item.meta) == null ? void 0 : _a2.icon) ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElIcon), {
key: 2,
class: "plus-sidebar__item-icon"
}, {
default: vue.withCtx(() => {
var _a3;
return [
(vue.openBlock(), vue.createBlock(
vue.resolveDynamicComponent((_a3 = _ctx.item.meta) == null ? void 0 : _a3.icon),
vue.normalizeProps(vue.guardReactiveProps(vue.unref(index.removeChildrenField)(_ctx.item))),
null,
16
/* FULL_PROPS */
))
];
}),
_: 1
/* STABLE */
})) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("span", _hoisted_2, [
_ctx.renderTitle && vue.unref(is.isFunction)(_ctx.renderTitle) ? (vue.openBlock(), vue.createBlock(
vue.resolveDynamicComponent(_ctx.renderTitle),
vue.normalizeProps(vue.mergeProps({ key: 0 }, vue.unref(index.removeChildrenField)(_ctx.item))),
null,
16
/* FULL_PROPS */
)) : _ctx.$slots["sidebar-item-title"] ? (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 1 },
[
vue.createCommentVNode(" sub-menu title \u63D2\u69FD "),
vue.renderSlot(_ctx.$slots, "sidebar-item-title", vue.normalizeProps(vue.guardReactiveProps(_ctx.item)))
],
2112
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
)) : (vue.openBlock(), vue.createElementBlock(
vue.Fragment,
{ key: 2 },
[
vue.createTextVNode(
vue.toDisplayString(((_b2 = _ctx.item.meta) == null ? void 0 : _b2.title) || _ctx.item.name || _ctx.item.path),
1
/* TEXT */
)
],
64
/* STABLE_FRAGMENT */
))
])
];
}),
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(
vue.Fragment,
null,
vue.renderList(_ctx.item.children, (child) => {
return vue.openBlock(), vue.createBlock(_component_PlusSidebarItem, {
key: child.path,
item: child,
parent: _ctx.item,
collapse: _ctx.collapse,
"render-menu-item": _ctx.renderMenuItem,
"render-sub-menu-item": _ctx.renderSubMenuItem,
"render-title": _ctx.renderTitle,
onClickMenuItem: vue.unref(onClickMenuItem)
}, vue.createSlots({
_: 2
/* DYNAMIC */
}, [
_ctx.$slots["sidebar-item"] ? {
name: "sidebar-item",
fn: vue.withCtx((data) => [
vue.renderSlot(_ctx.$slots, "sidebar-item", vue.normalizeProps(vue.guardReactiveProps(data)))
]),
key: "0"
} : void 0,
_ctx.$slots["sidebar-sub"] ? {
name: "sidebar-sub",
fn: vue.withCtx((data) => [
vue.renderSlot(_ctx.$slots, "sidebar-sub", vue.normalizeProps(vue.guardReactiveProps(data)))
]),
key: "1"
} : void 0,
_ctx.$slots["sidebar-item-title"] ? {
name: "sidebar-item-title",
fn: vue.withCtx((data) => [
vue.renderSlot(_ctx.$slots, "sidebar-item-title", vue.normalizeProps(vue.guardReactiveProps(data)))
]),
key: "2"
} : void 0
]), 1032, ["item", "parent", "collapse", "render-menu-item", "render-sub-menu-item", "render-title", "onClickMenuItem"]);
}),
128
/* KEYED_FRAGMENT */
))
]),
_: 3
/* FORWARDED */
}, 8, ["index"]))
],
2112
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
))
],
64
/* STABLE_FRAGMENT */
)) : vue.createCommentVNode("v-if", true);
};
}
});
exports.default = _sfc_main;