UNPKG

plus-pro-components

Version:

Page level components developed based on Element Plus.

285 lines (280 loc) 12.8 kB
'use strict'; 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;