@fmdevui/fm-dev
Version:
Page level components developed based on Element Plus.
104 lines (101 loc) • 3.95 kB
JavaScript
import { defineComponent, reactive, computed, onMounted, onUnmounted, createElementBlock, openBlock, createBlock, createCommentVNode, createVNode, unref } from 'vue';
import { useRoute } from 'vue-router';
import { storeToRefs } from 'pinia';
import '../../../stores/index.mjs';
import emitter from '../../../utils/emit/index.mjs';
import breadcrumb from './breadcrumb.vue.mjs';
import './user.vue.mjs';
import '../../logo/index.vue.mjs';
import '../../navMenu/horizontal.vue.mjs';
import _sfc_main$1 from './user.vue2.mjs';
import _sfc_main$2 from '../../logo/index.vue2.mjs';
import _sfc_main$3 from '../../navMenu/horizontal.vue2.mjs';
import { useRoutesList } from '../../../stores/routesList.mjs';
import { useThemeConfig } from '../../../stores/themeConfig.mjs';
const _hoisted_1 = { class: "layout-navbars-breadcrumb-index" };
var _sfc_main = /* @__PURE__ */ defineComponent({
__name: "index",
setup(__props) {
const Breadcrumb = breadcrumb;
const User = _sfc_main$1;
const Logo = _sfc_main$2;
const Horizontal = _sfc_main$3;
const stores = useRoutesList();
const storesThemeConfig = useThemeConfig();
const { themeConfig } = storeToRefs(storesThemeConfig);
const { routesList } = storeToRefs(stores);
const route = useRoute();
const state = reactive({
menuList: []
});
const setIsShowLogo = computed(() => {
let { isShowLogo, layout } = themeConfig.value;
return isShowLogo && layout === "classic" || isShowLogo && layout === "transverse";
});
const isLayoutTransverse = computed(() => {
let { layout, isClassicSplitMenu } = themeConfig.value;
return layout === "transverse" || isClassicSplitMenu && layout === "classic";
});
const setFilterRoutes = () => {
let { layout, isClassicSplitMenu } = themeConfig.value;
if (layout === "classic" && isClassicSplitMenu) {
state.menuList = delClassicChildren(filterRoutesFun(routesList.value));
const resData = setSendClassicChildren(route.path);
emitter.emit("setSendClassicChildren", resData);
} else {
state.menuList = filterRoutesFun(routesList.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.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;
};
onMounted(() => {
setFilterRoutes();
emitter.on("getBreadcrumbIndexSetFilterRoutes", () => {
setFilterRoutes();
});
});
onUnmounted(() => {
emitter.off("getBreadcrumbIndexSetFilterRoutes", () => {
});
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", _hoisted_1, [
setIsShowLogo.value ? (openBlock(), createBlock(unref(Logo), { key: 0 })) : createCommentVNode("v-if", true),
createVNode(unref(Breadcrumb)),
isLayoutTransverse.value ? (openBlock(), createBlock(unref(Horizontal), {
key: 1,
menuList: state.menuList
}, null, 8, ["menuList"])) : createCommentVNode("v-if", true),
createVNode(unref(User))
]);
};
}
});
export { _sfc_main as default };