@fmdevui/fm-dev
Version:
Page level components developed based on Element Plus.
108 lines (103 loc) • 4.41 kB
JavaScript
;
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;