UNPKG

@fmdevui/fm-dev

Version:

Page level components developed based on Element Plus.

104 lines (101 loc) 3.95 kB
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 };