UNPKG

@fmdevui/fm-dev

Version:

Page level components developed based on Element Plus.

108 lines (103 loc) 4.41 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var vueRouter = require('vue-router'); var pinia = require('pinia'); require('../../../stores/index.js'); var index = require('../../../utils/emit/index.js'); var breadcrumb = require('./breadcrumb.vue.js'); require('./user.vue.js'); require('../../logo/index.vue.js'); require('../../navMenu/horizontal.vue.js'); var user_vue_vue_type_script_setup_true_name_layoutBreadcrumbUser_lang = require('./user.vue2.js'); var index_vue_vue_type_script_setup_true_name_layoutLogo_lang = require('../../logo/index.vue2.js'); var horizontal_vue_vue_type_script_setup_true_name_navMenuHorizontal_lang = require('../../navMenu/horizontal.vue2.js'); var routesList = require('../../../stores/routesList.js'); var themeConfig = require('../../../stores/themeConfig.js'); const _hoisted_1 = { class: "layout-navbars-breadcrumb-index" }; var _sfc_main = /* @__PURE__ */ vue.defineComponent({ __name: "index", setup(__props) { const Breadcrumb = breadcrumb.default; const User = user_vue_vue_type_script_setup_true_name_layoutBreadcrumbUser_lang.default; const Logo = index_vue_vue_type_script_setup_true_name_layoutLogo_lang.default; const Horizontal = horizontal_vue_vue_type_script_setup_true_name_navMenuHorizontal_lang.default; const stores = routesList.useRoutesList(); const storesThemeConfig = themeConfig.useThemeConfig(); const { themeConfig: themeConfig$1 } = pinia.storeToRefs(storesThemeConfig); const { routesList: routesList$1 } = pinia.storeToRefs(stores); const route = vueRouter.useRoute(); const state = vue.reactive({ menuList: [] }); const setIsShowLogo = vue.computed(() => { let { isShowLogo, layout } = themeConfig$1.value; return isShowLogo && layout === "classic" || isShowLogo && layout === "transverse"; }); const isLayoutTransverse = vue.computed(() => { let { layout, isClassicSplitMenu } = themeConfig$1.value; return layout === "transverse" || isClassicSplitMenu && layout === "classic"; }); const setFilterRoutes = () => { let { layout, isClassicSplitMenu } = themeConfig$1.value; if (layout === "classic" && isClassicSplitMenu) { state.menuList = delClassicChildren(filterRoutesFun(routesList$1.value)); const resData = setSendClassicChildren(route.path); index.default.emit("setSendClassicChildren", resData); } else { state.menuList = filterRoutesFun(routesList$1.value); } }; const delClassicChildren = (arr) => { arr.map((v) => { if (v.children) delete v.children; }); return arr; }; const filterRoutesFun = (arr) => { return arr.filter((item) => !item.meta?.isHide).map((item) => { item = Object.assign({}, item); if (item.children) item.children = filterRoutesFun(item.children); return item; }); }; const setSendClassicChildren = (path) => { const currentPathSplit = path.split("/"); const currentData = { children: [], item: void 0 }; const matched = filterRoutesFun(routesList$1.value).find((v, k) => { if (v.path === `/${currentPathSplit[1]}`) { v.k = k; return true; } return false; }); if (matched) { currentData.item = { ...matched }; currentData.children = matched.children ? [...matched.children] : [{ ...matched }]; } return currentData; }; vue.onMounted(() => { setFilterRoutes(); index.default.on("getBreadcrumbIndexSetFilterRoutes", () => { setFilterRoutes(); }); }); vue.onUnmounted(() => { index.default.off("getBreadcrumbIndexSetFilterRoutes", () => { }); }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [ setIsShowLogo.value ? (vue.openBlock(), vue.createBlock(vue.unref(Logo), { key: 0 })) : vue.createCommentVNode("v-if", true), vue.createVNode(vue.unref(Breadcrumb)), isLayoutTransverse.value ? (vue.openBlock(), vue.createBlock(vue.unref(Horizontal), { key: 1, menuList: state.menuList }, null, 8, ["menuList"])) : vue.createCommentVNode("v-if", true), vue.createVNode(vue.unref(User)) ]); }; } }); exports.default = _sfc_main;