UNPKG

@vrx-arco/pro-layout

Version:

<p align="center"> <img src="https://vrx-arco.github.io/arco-design-pro/favicon.svg" width="200" height="250"> </p>

135 lines (134 loc) 4.21 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); const webVue = require("@arco-design/web-vue"); const use = require("@vrx-arco/use"); const vueRouter = require("vue-router"); const core = require("@vueuse/core"); const _var = require("../style/var.js"); const index = require("./components/NavBar/index.js"); const Menu = require("./components/Menu/Menu.js"); const ProLayout = /* @__PURE__ */ vue.defineComponent({ name: "vrx-arco-pro-layout", props: { /** * 基于路由信息生成的菜单 */ menus: { type: Array, default: () => [] }, /** * 标题 */ title: String, /** * logo */ logo: String, /** * 布局的全局加载状态 */ loading: { type: Boolean, default: false } }, slots: Object, setup: (props, { slots }) => { const { bemClass } = _var.style("pro-layout"); const breakpoints = use.useShareBreakpoints(); const isSmallerLg = breakpoints.smaller("lg"); const [menuModelVisible, setMenuModelVisible] = core.useToggle(false); return () => { const { title, logo, menus, loading } = props; return vue.createVNode(webVue.Spin, { "loading": loading, "class": bemClass("__spin"), "size": 30 }, { default: () => [vue.createVNode(webVue.Layout, { "class": bemClass() }, { default: () => [vue.createVNode(webVue.LayoutHeader, { "class": bemClass("__header") }, { default: () => [vue.createVNode(index.NavBar, { "title": title, "logo": logo, "onMenuClick": () => { setMenuModelVisible(true); } }, { default: () => { var _a; return [(_a = slots.headerToolbox) == null ? void 0 : _a.call(slots)]; }, logo: slots.logo, title: slots.title, logoContainer: slots.logoContainer, content: slots.navContent })] }), vue.createVNode(webVue.LayoutContent, { "class": bemClass("__wrap-container") }, { default: () => [vue.createVNode(webVue.Layout, { "class": bemClass("__wrap") }, { default: () => [isSmallerLg.value ? vue.createVNode(webVue.Drawer, { "class": bemClass("__smaller-menu-drawer"), "placement": "left", "visible": menuModelVisible.value, "onUpdate:visible": ($event) => menuModelVisible.value = $event, "footer": false, "header": false, "maskClosable": true, "closable": false }, { default: () => [vue.createVNode(webVue.Scrollbar, { "outerClass": bemClass("__menu-scrollbar") }, { default: () => [vue.createVNode(Menu.ProMenu, { "menu": menus }, { icon: slots.menuIcon })] })] }) : vue.createVNode(webVue.LayoutSider, { "breakpoint": "xl", "collapsible": true }, { default: () => [vue.createVNode(webVue.Scrollbar, { "outerClass": bemClass("__menu-scrollbar") }, { default: () => [vue.createVNode(Menu.ProMenu, { "menu": menus }, { icon: slots.menuIcon })] })] }), vue.createVNode(webVue.LayoutContent, { "class": bemClass("__content") }, { default: () => { var _a; return [((_a = slots.default) == null ? void 0 : _a.call(slots)) || vue.createVNode(vueRouter.RouterView, null, null)]; } })] })] })] })] }); }; } }); exports.ProLayout = ProLayout;