UNPKG

@lvxiaowu/antd4

Version:

antd4-components

85 lines (83 loc) 3.31 kB
import React from "react"; import { createElement, useEffect } from 'react'; import { MenuFoldOutlined, MenuUnfoldOutlined, UnorderedListOutlined } from '@ant-design/icons'; import { Layout, Affix } from 'antd'; import { observer } from 'mobx-react-lite'; import store from './store'; import cls from 'classnames'; import './style.less'; var Sider = Layout.Sider, Header = Layout.Header, Content = Layout.Content, Footer = Layout.Footer; /** * 此组件是和业务强耦合的,包括顶部菜单栏,侧边菜单栏的切换和激活形式 * 只适合与cf-web项目一样的布局和菜单栏的工程使用即: * 顶部有一级菜单,侧边有二级子菜单,且切换顶部一级菜单不会改变路由,只切换不同的侧边二级菜单栏,只有点击侧边菜单栏才去切换路由 * 不封装成通用的组件是因为业务不同,差别很大,无法通用,干脆针对不同业务封装不同布局和导航 */ function AppLayout(_ref) { var sidebar = _ref.sidebar, sideWidth = _ref.sideWidth, topbar = _ref.topbar, children = _ref.children, sideStyle = _ref.sideStyle, onCollapse = _ref.onCollapse, footer = _ref.footer, extra = _ref.extra, logo = _ref.logo; var collapsed = store.collapsed, sideFixed = store.sideFixed, fixedSideVisible = store.fixedSideVisible; useEffect(function () { return function () { store.reset(); }; }, []); var sidebarEl = /*#__PURE__*/React.createElement("div", { className: "side-nav" }, sidebar); return /*#__PURE__*/React.createElement(Layout, { className: "sd-layout", style: { minHeight: '100%' } }, /*#__PURE__*/React.createElement(Sider, { style: sideStyle, breakpoint: "lg", width: sideWidth, onBreakpoint: store.onBreakpoint, className: cls('sd-sidebar', { 'sd-sidebar-fixed': sideFixed, 'sd-sidebar-fixed-show': fixedSideVisible }), trigger: null, collapsible: true, collapsed: collapsed }, sideFixed && /*#__PURE__*/React.createElement("span", { className: "collapse-icon-fixed", onClick: store.trigger }, /*#__PURE__*/React.createElement(UnorderedListOutlined, null)), /*#__PURE__*/React.createElement("div", { className: "logo" }, logo), sideFixed ? sidebarEl : /*#__PURE__*/React.createElement(Affix, null, sidebarEl)), fixedSideVisible && /*#__PURE__*/React.createElement("div", { className: "sd-sidebar-mask", onClick: store.trigger }), /*#__PURE__*/React.createElement(Layout, { className: "sd-center" }, /*#__PURE__*/React.createElement(Header, { className: "sd-header" }, !sideFixed && /*#__PURE__*/createElement(collapsed ? MenuUnfoldOutlined : MenuFoldOutlined, { className: 'collapse-icon', onClick: function onClick() { store.trigger(); onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(!collapsed); } }), /*#__PURE__*/React.createElement("div", { className: "top-nav" }, topbar), /*#__PURE__*/React.createElement("div", { className: "extra" }, extra)), /*#__PURE__*/React.createElement(Content, { className: "sd-content" }, children), footer && /*#__PURE__*/React.createElement(Footer, null, footer))); } export default observer(AppLayout);