Files
2026-01-16 01:51:36 +00:00

307 lines
15 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ProPageHeader = exports.ProBreadcrumb = exports.PageContainer = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _proProvider = require("@ant-design/pro-provider");
var _antd = require("antd");
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireWildcard(require("react"));
var _RouteContext = require("../../context/RouteContext");
var _FooterToolbar = require("../FooterToolbar");
var _GridContent = require("../GridContent");
var _PageHeader = require("../PageHeader");
var _PageLoading = require("../PageLoading");
var _WaterMark = require("../WaterMark");
var _style = require("./style");
var _stylish = require("./style/stylish");
var _proUtils = require("@ant-design/pro-utils");
require("antd/lib/breadcrumb/style");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["title", "content", "pageHeaderRender", "header", "prefixedClassName", "extraContent", "childrenContentStyle", "style", "prefixCls", "hashId", "value", "breadcrumbRender"],
_excluded2 = ["children", "loading", "className", "style", "footer", "affixProps", "token", "fixedHeader", "breadcrumbRender", "footerToolBarProps", "childrenContentStyle"];
function genLoading(spinProps) {
if ((0, _typeof2.default)(spinProps) === 'object') {
return spinProps;
}
return {
spinning: spinProps
};
}
/**
* Render Footer tabList In order to be compatible with the old version of the PageHeader basically
* all the functions are implemented.
*/
var renderFooter = function renderFooter(_ref) {
var tabList = _ref.tabList,
tabActiveKey = _ref.tabActiveKey,
onTabChange = _ref.onTabChange,
hashId = _ref.hashId,
tabBarExtraContent = _ref.tabBarExtraContent,
tabProps = _ref.tabProps,
prefixedClassName = _ref.prefixedClassName;
if (Array.isArray(tabList) || tabBarExtraContent) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Tabs, (0, _objectSpread2.default)((0, _objectSpread2.default)({
className: "".concat(prefixedClassName, "-tabs ").concat(hashId).trim(),
activeKey: tabActiveKey,
onChange: function onChange(key) {
if (onTabChange) {
onTabChange(key);
}
},
tabBarExtraContent: tabBarExtraContent,
items: tabList === null || tabList === void 0 ? void 0 : tabList.map(function (item, index) {
var _item$key;
return (0, _objectSpread2.default)((0, _objectSpread2.default)({
label: item.tab
}, item), {}, {
key: ((_item$key = item.key) === null || _item$key === void 0 ? void 0 : _item$key.toString()) || (index === null || index === void 0 ? void 0 : index.toString())
});
})
}, tabProps), {}, {
children: (0, _proUtils.compareVersions)(_antd.version, '4.23.0') < 0 ? tabList === null || tabList === void 0 ? void 0 : tabList.map(function (item, index) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Tabs.TabPane, (0, _objectSpread2.default)({
tab: item.tab
}, item), item.key || index);
}) : null
}));
}
return null;
};
var renderPageHeader = function renderPageHeader(content, extraContent, prefixedClassName, hashId) {
if (!content && !extraContent) {
return null;
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "".concat(prefixedClassName, "-detail ").concat(hashId).trim(),
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "".concat(prefixedClassName, "-main ").concat(hashId).trim(),
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
className: "".concat(prefixedClassName, "-row ").concat(hashId).trim(),
children: [content && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "".concat(prefixedClassName, "-content ").concat(hashId).trim(),
children: content
}), extraContent && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "".concat(prefixedClassName, "-extraContent ").concat(hashId).trim(),
children: extraContent
})]
})
})
});
};
/**
* 配置与面包屑相同,只是增加了自动根据路由计算面包屑的功能。此功能必须要在 ProLayout 中使用。
*
* @param props
* @returns
*/
var ProBreadcrumb = exports.ProBreadcrumb = function ProBreadcrumb(props) {
var value = (0, _react.useContext)(_RouteContext.RouteContext);
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
style: {
height: '100%',
display: 'flex',
alignItems: 'center'
},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Breadcrumb, (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, value === null || value === void 0 ? void 0 : value.breadcrumb), value === null || value === void 0 ? void 0 : value.breadcrumbProps), props))
});
};
var memoRenderPageHeader = function memoRenderPageHeader(props) {
var _breadcrumb$items;
var title = props.title,
content = props.content,
pageHeaderRender = props.pageHeaderRender,
header = props.header,
prefixedClassName = props.prefixedClassName,
extraContent = props.extraContent,
childrenContentStyle = props.childrenContentStyle,
style = props.style,
prefixCls = props.prefixCls,
hashId = props.hashId,
value = props.value,
breadcrumbRender = props.breadcrumbRender,
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
var getBreadcrumbRender = function getBreadcrumbRender() {
if (!breadcrumbRender) {
return undefined;
}
return breadcrumbRender;
};
if (pageHeaderRender === false) {
return null;
}
if (pageHeaderRender) {
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [" ", pageHeaderRender((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), value))]
});
}
var pageHeaderTitle = title;
if (!title && title !== false) {
pageHeaderTitle = value.title;
}
var pageHeaderProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
title: pageHeaderTitle
}, restProps), {}, {
footer: renderFooter((0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
hashId: hashId,
breadcrumbRender: breadcrumbRender,
prefixedClassName: prefixedClassName
}))
}, header);
var _ref2 = pageHeaderProps,
breadcrumb = _ref2.breadcrumb;
var noHasBreadCrumb = (!breadcrumb || !(breadcrumb !== null && breadcrumb !== void 0 && breadcrumb.itemRender) && !(breadcrumb !== null && breadcrumb !== void 0 && (_breadcrumb$items = breadcrumb.items) !== null && _breadcrumb$items !== void 0 && _breadcrumb$items.length)) && !breadcrumbRender;
if (['title', 'subTitle', 'extra', 'tags', 'footer', 'avatar', 'backIcon'].every(function (item) {
return !pageHeaderProps[item];
}) && noHasBreadCrumb && !content && !extraContent) {
return null;
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PageHeader.PageHeader, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, pageHeaderProps), {}, {
className: "".concat(prefixedClassName, "-warp-page-header ").concat(hashId).trim(),
breadcrumb: breadcrumbRender === false ? undefined : (0, _objectSpread2.default)((0, _objectSpread2.default)({}, pageHeaderProps.breadcrumb), value.breadcrumbProps),
breadcrumbRender: getBreadcrumbRender(),
prefixCls: prefixCls,
children: (header === null || header === void 0 ? void 0 : header.children) || renderPageHeader(content, extraContent, prefixedClassName, hashId)
}));
};
var PageContainerBase = function PageContainerBase(props) {
var _restProps$header2, _token$layout;
var children = props.children,
_props$loading = props.loading,
loading = _props$loading === void 0 ? false : _props$loading,
className = props.className,
style = props.style,
footer = props.footer,
affixProps = props.affixProps,
propsToken = props.token,
fixedHeader = props.fixedHeader,
breadcrumbRender = props.breadcrumbRender,
footerToolBarProps = props.footerToolBarProps,
childrenContentStyle = props.childrenContentStyle,
restProps = (0, _objectWithoutProperties2.default)(props, _excluded2);
var value = (0, _react.useContext)(_RouteContext.RouteContext);
/** 告诉 props 是否存在 footerBar */
(0, _react.useEffect)(function () {
var _value$setHasPageCont;
if (!value || !(value !== null && value !== void 0 && value.setHasPageContainer)) {
return function () {};
}
value === null || value === void 0 || (_value$setHasPageCont = value.setHasPageContainer) === null || _value$setHasPageCont === void 0 || _value$setHasPageCont.call(value, function (num) {
return num + 1;
});
return function () {
var _value$setHasPageCont2;
value === null || value === void 0 || (_value$setHasPageCont2 = value.setHasPageContainer) === null || _value$setHasPageCont2 === void 0 || _value$setHasPageCont2.call(value, function (num) {
return num - 1;
});
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
var _useContext = (0, _react.useContext)(_proProvider.ProProvider),
token = _useContext.token;
var _useContext2 = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
getPrefixCls = _useContext2.getPrefixCls;
var prefixCls = props.prefixCls || getPrefixCls('pro');
var basePageContainer = "".concat(prefixCls, "-page-container");
var _useStyle = (0, _style.useStyle)(basePageContainer, propsToken),
wrapSSR = _useStyle.wrapSSR,
hashId = _useStyle.hashId;
var stylish = (0, _stylish.useStylish)("".concat(basePageContainer, ".").concat(basePageContainer, "-stylish"), {
stylish: props.stylish
});
var memoBreadcrumbRender = (0, _react.useMemo)(function () {
var _restProps$header;
if (breadcrumbRender == false) return false;
return breadcrumbRender || (restProps === null || restProps === void 0 || (_restProps$header = restProps.header) === null || _restProps$header === void 0 ? void 0 : _restProps$header.breadcrumbRender);
}, [breadcrumbRender, restProps === null || restProps === void 0 || (_restProps$header2 = restProps.header) === null || _restProps$header2 === void 0 ? void 0 : _restProps$header2.breadcrumbRender]);
var pageHeaderDom = memoRenderPageHeader((0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
breadcrumbRender: memoBreadcrumbRender,
ghost: true,
hashId: hashId,
prefixCls: undefined,
prefixedClassName: basePageContainer,
value: value
}));
var loadingDom = (0, _react.useMemo)(function () {
// 当loading时一个合法的ReactNode时说明用户使用了自定义loading,直接返回改自定义loading
if ( /*#__PURE__*/_react.default.isValidElement(loading)) {
return loading;
}
// 当传递过来的是布尔值并且为false时说明不需要显示loading,返回null
if (typeof loading === 'boolean' && !loading) {
return null;
}
// 如非上述两种情况那么要么用户传了一个true,要么用户传了loading配置使用genLoading生成loading配置后返回PageLoading
var spinProps = genLoading(loading);
// 如果传的是loading配置但spinning传的是false也不需要显示loading
return spinProps.spinning ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_PageLoading.PageLoading, (0, _objectSpread2.default)({}, spinProps)) : null;
}, [loading]);
var content = (0, _react.useMemo)(function () {
return children ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: (0, _classnames.default)(hashId, "".concat(basePageContainer, "-children-container"), (0, _defineProperty2.default)({}, "".concat(basePageContainer, "-children-container-no-header"), !pageHeaderDom)),
style: childrenContentStyle,
children: children
})
}) : null;
}, [children, basePageContainer, childrenContentStyle, hashId]);
var renderContentDom = (0, _react.useMemo)(function () {
// 只要loadingDom非空我们就渲染loadingDom,否则渲染内容
var dom = loadingDom || content;
if (props.waterMarkProps || value.waterMarkProps) {
var waterMarkProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value.waterMarkProps), props.waterMarkProps);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_WaterMark.WaterMark, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, waterMarkProps), {}, {
children: dom
}));
}
return dom;
}, [props.waterMarkProps, value.waterMarkProps, loadingDom, content]);
var containerClassName = (0, _classnames.default)(basePageContainer, hashId, className, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(basePageContainer, "-with-footer"), footer), "".concat(basePageContainer, "-with-affix"), fixedHeader && pageHeaderDom), "".concat(basePageContainer, "-stylish"), !!restProps.stylish));
return wrapSSR(stylish.wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
style: style,
className: containerClassName,
children: [fixedHeader && pageHeaderDom ?
/*#__PURE__*/
// 在 hasHeader 且 fixedHeader 的情况下,才需要设置高度
(0, _jsxRuntime.jsx)(_antd.Affix, (0, _objectSpread2.default)((0, _objectSpread2.default)({
offsetTop: value.hasHeader && value.fixedHeader ? (_token$layout = token.layout) === null || _token$layout === void 0 || (_token$layout = _token$layout.header) === null || _token$layout === void 0 ? void 0 : _token$layout.heightLayoutHeader : 1
}, affixProps), {}, {
className: "".concat(basePageContainer, "-affix ").concat(hashId).trim(),
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "".concat(basePageContainer, "-warp ").concat(hashId).trim(),
children: pageHeaderDom
})
})) : pageHeaderDom, renderContentDom && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridContent.GridContent, {
children: renderContentDom
})]
}), footer && /*#__PURE__*/(0, _jsxRuntime.jsx)(_FooterToolbar.FooterToolbar, (0, _objectSpread2.default)((0, _objectSpread2.default)({
stylish: restProps.footerStylish,
prefixCls: prefixCls
}, footerToolBarProps), {}, {
children: footer
}))]
})));
};
var PageContainer = exports.PageContainer = function PageContainer(props) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_proProvider.ProConfigProvider, {
needDeps: true,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PageContainerBase, (0, _objectSpread2.default)({}, props))
});
};
var ProPageHeader = exports.ProPageHeader = function ProPageHeader(props) {
var value = (0, _react.useContext)(_RouteContext.RouteContext);
return memoRenderPageHeader((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
hashId: '',
value: value
}));
};