UNPKG

@antdp/basic-layouts

Version:

入口框架公共界面

71 lines 2.27 kB
import _extends from "@babel/runtime/helpers/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; var _excluded = ["intlLanguage", "children"]; import DocumentTitleDom from '@antdp/document-title'; import { createContext, createElement, useContext, useMemo, useState } from 'react'; import { useLocation } from 'react-router-dom'; // @ts-ignore import { useAppData } from '@umijs/max'; import { LayoutModel } from './interface'; import { HandleMenu } from './utils'; export var LayoutsContext = /*#__PURE__*/createContext({ HandleMenu: new HandleMenu({ routers: [] }), collapsed: false, setCollapsed: () => null, layout: LayoutModel.MIX }); export var useLayouts = () => useContext(LayoutsContext); export var LayoutsProvider = props => { var { intlLanguage, children } = props, rest = _objectWithoutPropertiesLoose(props, _excluded); var [collapsed, setCollapsed] = useState(false); var location = useLocation(); var { clientRoutes } = useAppData(); var layout = props.layout; var routes = useMemo(() => { var routes = clientRoutes.find(item => item.path === '/'); return (routes == null ? void 0 : routes.routes) || []; }, [clientRoutes]); var Menus = useMemo(() => { return new HandleMenu({ routers: routes || [], intlLanguage: intlLanguage, isCheckAuth: !!ANTD_AUTH_CONF, isTOPLEFT: layout === LayoutModel.TOPLEFT }); }, [routes, intlLanguage, layout]); var title = useMemo(() => { var item = Menus.getPathItem(location.pathname); return (item == null ? void 0 : item.name) || ''; }, [location.pathname]); var renderTitle = useMemo(() => { var arr = []; if (title) { arr.push(title); } if (props.projectName) { arr.push(props.projectName); } return arr.filter(Boolean).join('-'); }, [title, props.projectName]); return /*#__PURE__*/createElement(DocumentTitleDom, { title: renderTitle, children: /*#__PURE__*/createElement(LayoutsContext.Provider, { value: _extends({ HandleMenu: Menus, collapsed, setCollapsed, layout: LayoutModel.MIX, defultOpenMenus: false }, rest), children }) }); };