@antdp/basic-layouts
Version:
84 lines (83 loc) • 3.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useLayouts = exports.LayoutsProvider = exports.LayoutsContext = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _documentTitle = _interopRequireDefault(require("@antdp/document-title"));
var _react = require("react");
var _reactRouterDom = require("react-router-dom");
var _max = require("@umijs/max");
var _interface = require("./interface");
var _utils = require("./utils");
var _excluded = ["intlLanguage", "children"]; // @ts-ignore
var LayoutsContext = exports.LayoutsContext = /*#__PURE__*/(0, _react.createContext)({
HandleMenu: new _utils.HandleMenu({
routers: []
}),
collapsed: false,
setCollapsed: function setCollapsed() {
return null;
},
layout: _interface.LayoutModel.MIX
});
var useLayouts = exports.useLayouts = function useLayouts() {
return (0, _react.useContext)(LayoutsContext);
};
var LayoutsProvider = exports.LayoutsProvider = function LayoutsProvider(props) {
var intlLanguage = props.intlLanguage,
children = props.children,
rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
collapsed = _useState2[0],
setCollapsed = _useState2[1];
var location = (0, _reactRouterDom.useLocation)();
var _useAppData = (0, _max.useAppData)(),
clientRoutes = _useAppData.clientRoutes;
var layout = props.layout;
var routes = (0, _react.useMemo)(function () {
var routes = clientRoutes.find(function (item) {
return item.path === '/';
});
return (routes === null || routes === void 0 ? void 0 : routes.routes) || [];
}, [clientRoutes]);
var Menus = (0, _react.useMemo)(function () {
return new _utils.HandleMenu({
routers: routes || [],
intlLanguage: intlLanguage,
isCheckAuth: !!ANTD_AUTH_CONF,
isTOPLEFT: layout === _interface.LayoutModel.TOPLEFT
});
}, [routes, intlLanguage, layout]);
var title = (0, _react.useMemo)(function () {
var item = Menus.getPathItem(location.pathname);
return (item === null || item === void 0 ? void 0 : item.name) || '';
}, [location.pathname]);
var renderTitle = (0, _react.useMemo)(function () {
var arr = [];
if (title) {
arr.push(title);
}
if (props.projectName) {
arr.push(props.projectName);
}
return arr.filter(Boolean).join('-');
}, [title, props.projectName]);
return /*#__PURE__*/(0, _react.createElement)(_documentTitle["default"], {
title: renderTitle,
children: /*#__PURE__*/(0, _react.createElement)(LayoutsContext.Provider, {
value: (0, _objectSpread2["default"])({
HandleMenu: Menus,
collapsed: collapsed,
setCollapsed: setCollapsed,
layout: _interface.LayoutModel.MIX,
defultOpenMenus: false
}, rest),
children: children
})
});
};