qt-public-ui
Version:
新设计规范下业务组件库
76 lines (75 loc) • 2.82 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import React, { useEffect, useState, useContext } from 'react';
import { Layout } from 'antd';
import classnames from 'classnames';
import { loadScript } from '../utils';
import { Frame } from '..';
import globalContext from '../UmProvider/globalContext';
import './style';
export var scrollDomId = 'umui-layout-scroll';
var scrollToTop = function scrollToTop() {
setTimeout(function () {
window.scrollTo(0, 0);
}, 0);
};
var getDefaultHeader = function getDefaultHeader(headerProps) {
var _window$UmHeader;
if (headerProps.customHeader) {
return headerProps.customHeader;
} else return (_window$UmHeader = window.UmHeader) === null || _window$UmHeader === void 0 ? void 0 : _window$UmHeader.Header;
};
export default (function (props) {
var _Frame$useFrame = Frame.useFrame(),
inFrame = _Frame$useFrame.inFrame;
var children = props.children,
nav = props.nav,
headerProps = props.headerProps,
style = props.style,
className = props.className;
var _useState = useState(function () {
return getDefaultHeader(headerProps);
}),
Header = _useState[0],
setHeader = _useState[1];
var gContext = useContext(globalContext);
useEffect(function () {
// 处理刷新后不在页面顶部问题
window.addEventListener('load', scrollToTop);
if (headerProps.customHeader) return;
// 以下加载umHeader
if (window.UmHeader) return;
loadScript('//workbench.umeng.com/public/workbench/um-header.js', function () {
setHeader(function () {
var _window$UmHeader2;
return (_window$UmHeader2 = window.UmHeader) === null || _window$UmHeader2 === void 0 ? void 0 : _window$UmHeader2.Header;
});
// 移除 loading skeleton
setTimeout(function () {
if (window.umSkeleton) window.umSkeleton.destory();
}, 200);
});
return function () {
window.removeEventListener('load', scrollToTop);
};
}, []);
return /*#__PURE__*/React.createElement(Layout, {
className: classnames('umui-layout', className),
style: style,
id: "umui-layout"
}, Header ? /*#__PURE__*/React.createElement(Header, _extends({}, headerProps, {
menu: nav
})) : /*#__PURE__*/React.createElement(Layout.Header, {
className: "umui-layout-header"
}), /*#__PURE__*/React.createElement("div", {
className: classnames('umui-layout-fixed', {
'umui-layout-frame': inFrame
})
}, /*#__PURE__*/React.createElement("div", {
className: "umui-layout-scroll",
id: scrollDomId
}, /*#__PURE__*/React.createElement(Layout, {
className: classnames('umui-layout-body', {
'umui-operational': gContext.theme === 'operational'
})
}, /*#__PURE__*/React.createElement(Frame.Container, null, children)))));
});