UNPKG

@ant-design/pro-layout

Version:
221 lines (220 loc) 10.7 kB
"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.SelectKeyProvide = exports.ProHelpPanel = 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 _icons = require("@ant-design/icons"); var _proProvider = require("@ant-design/pro-provider"); var _proUtils = require("@ant-design/pro-utils"); var _antd = require("antd"); var _useMergedState5 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState")); var _react = _interopRequireWildcard(require("react")); var _HelpProvide = require("./HelpProvide"); var _ProHelpContentPanel = require("./ProHelpContentPanel"); var _Search = require("./Search"); var _style = require("./style"); var _jsxRuntime = require("react/jsx-runtime"); var _excluded = ["title", "bordered", "onClose", "footer", "height", "extraRender"]; var SelectKeyProvide = exports.SelectKeyProvide = /*#__PURE__*/_react.default.createContext({ selectedKey: undefined, setSelectedKey: function setSelectedKey() {} }); /** * ProHelpPanel 组件是一个帮助中心面板组件,具有可折叠的左侧菜单和右侧帮助内容区域。 * 左侧菜单显示了帮助文档的目录结构,右侧帮助内容区域显示了用户选中的帮助文档内容。 * 在左侧菜单中,用户可以通过点击目录来选择并显示相应的文档内容。 * @param param0 * @returns */ var ProHelpPanel = exports.ProHelpPanel = function ProHelpPanel(_ref) { var _token$layout, _token$layout2, _token$layout3, _token$layout4, _token$layout5; var _ref$title = _ref.title, title = _ref$title === void 0 ? '帮助中心' : _ref$title, _ref$bordered = _ref.bordered, bordered = _ref$bordered === void 0 ? true : _ref$bordered, onClose = _ref.onClose, footer = _ref.footer, height = _ref.height, extraRender = _ref.extraRender, props = (0, _objectWithoutProperties2.default)(_ref, _excluded); var _useContext = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext), getPrefixCls = _useContext.getPrefixCls; var className = getPrefixCls('pro-help'); var _useStyle = (0, _style.useStyle)(className), wrapSSR = _useStyle.wrapSSR, hashId = _useStyle.hashId; var _useContext2 = (0, _react.useContext)(_HelpProvide.ProHelpProvide), dataSource = _useContext2.dataSource; var _useMergedState = (0, _useMergedState5.default)(undefined, { defaultValue: props.defaultSelectedKey, value: props.selectedKey, onChange: props.onSelectedKeyChange }), _useMergedState2 = (0, _slicedToArray2.default)(_useMergedState, 2), selectedKey = _useMergedState2[0], setSelectedKey = _useMergedState2[1]; var _useState = (0, _react.useState)(''), _useState2 = (0, _slicedToArray2.default)(_useState, 2), openKey = _useState2[0], setOpenKey = _useState2[1]; var _useContext3 = (0, _react.useContext)(_proProvider.ProProvider), token = _useContext3.token; var _useMergedState3 = (0, _useMergedState5.default)(true, { value: props.showLeftPanel, onChange: props.onShowLeftPanelChange }), _useMergedState4 = (0, _slicedToArray2.default)(_useMergedState3, 2), showLeftPanel = _useMergedState4[0], setShowLeftPanel = _useMergedState4[1]; var dataSourceKeyMap = (0, _react.useMemo)(function () { var map = new Map(); dataSource.forEach(function (page) { var _page$children; map.set(page.key, page); (_page$children = page.children) === null || _page$children === void 0 || _page$children.forEach(function (item) { map.set(item.key || item.title, (0, _objectSpread2.default)({ parentKey: page.key }, item)); }); }); return map; }, [dataSource]); var parentKey = (0, _react.useMemo)(function () { var _dataSourceKeyMap$get; return (_dataSourceKeyMap$get = dataSourceKeyMap.get(selectedKey)) === null || _dataSourceKeyMap$get === void 0 ? void 0 : _dataSourceKeyMap$get.parentKey; }, [dataSourceKeyMap, selectedKey]); var defaultExtraActions = { collapsePanelAction: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "".concat(className, "-actions-item ").concat(hashId).trim(), children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.ProfileOutlined, { title: "collapse panel", onClick: function onClick() { setShowLeftPanel(!showLeftPanel); } }) }), helpSelectAction: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Search.ProHelpSelect, { iconClassName: "".concat(className, "-actions-item"), className: "".concat(hashId, " ").concat(className, "-actions-input"), value: selectedKey, onChange: function onChange(value, item) { setSelectedKey(value); setOpenKey(item === null || item === void 0 ? void 0 : item.dataItemKey); } }), closeAction: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "".concat(className, "-actions-item ").concat(hashId).trim(), children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.CloseOutlined, { title: "close panel", onClick: function onClick() { onClose === null || onClose === void 0 || onClose(); } }) }) }; var extraDomList = function extraDomList() { return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "".concat(className, "-actions ").concat(hashId).trim(), children: extraRender ? extraRender(defaultExtraActions.collapsePanelAction, defaultExtraActions.helpSelectAction, defaultExtraActions.closeAction) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [defaultExtraActions.collapsePanelAction, defaultExtraActions.helpSelectAction, onClose ? defaultExtraActions.closeAction : null] }) }); }; return wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsx)(SelectKeyProvide.Provider, { value: { selectedKey: selectedKey, setSelectedKey: setSelectedKey }, children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_antd.Card, { bordered: bordered, title: title, bodyStyle: { display: 'flex', padding: 0, margin: 0, height: '100%', width: '100%' }, size: "small", extra: extraDomList(), children: [showLeftPanel ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "".concat(hashId, " ").concat(className, "-left-panel "), style: { height: height }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.ConfigProvider, { theme: { hashed: (0, _proProvider.isNeedOpenHash)(), token: { lineHeight: 1.2, fontSize: 12, controlHeightLG: 26 }, components: { Menu: (0, _proUtils.coverToNewToken)({ radiusItem: token.borderRadius, colorActiveBarWidth: 0, colorActiveBarBorderSize: 0, colorItemBgSelected: ((_token$layout = token.layout) === null || _token$layout === void 0 || (_token$layout = _token$layout.sider) === null || _token$layout === void 0 ? void 0 : _token$layout.colorBgMenuItemSelected) || 'rgba(0, 0, 0, 0.04)', colorItemBgActive: ((_token$layout2 = token.layout) === null || _token$layout2 === void 0 || (_token$layout2 = _token$layout2.sider) === null || _token$layout2 === void 0 ? void 0 : _token$layout2.colorBgMenuItemHover) || 'rgba(0, 0, 0, 0.04)', colorItemText: ((_token$layout3 = token.layout) === null || _token$layout3 === void 0 || (_token$layout3 = _token$layout3.sider) === null || _token$layout3 === void 0 ? void 0 : _token$layout3.colorTextMenu) || 'rgba(0, 0, 0, 0.65)', colorItemTextHover: ((_token$layout4 = token.layout) === null || _token$layout4 === void 0 || (_token$layout4 = _token$layout4.sider) === null || _token$layout4 === void 0 ? void 0 : _token$layout4.colorTextMenuActive) || 'rgba(0, 0, 0, 0.85)', colorItemTextSelected: ((_token$layout5 = token.layout) === null || _token$layout5 === void 0 || (_token$layout5 = _token$layout5.sider) === null || _token$layout5 === void 0 ? void 0 : _token$layout5.colorTextMenuSelected) || 'rgba(0, 0, 0, 1)', colorItemBg: 'transparent', colorSubItemBg: 'transparent', popupBg: token === null || token === void 0 ? void 0 : token.colorBgElevated, darkPopupBg: token === null || token === void 0 ? void 0 : token.colorBgElevated }) } }, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Menu, { className: "".concat(hashId, " ").concat(className, "-left-panel-menu"), openKeys: [parentKey, openKey], onOpenChange: function onOpenChange(keys) { setOpenKey(keys.at(-1) || ''); }, selectedKeys: selectedKey ? [selectedKey] : [], onSelect: function onSelect(_ref2) { var selectedKeys = _ref2.selectedKeys; setSelectedKey(selectedKeys.at(-1) || ''); }, mode: "inline", items: dataSource.map(function (item) { return { key: item.key, label: item.title, children: item.children.map(function (child) { return { key: child.key, label: child.title }; }) }; }) }) }) }) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "".concat(hashId, " ").concat(className, "-content-panel"), style: { height: height }, children: [selectedKey ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProHelpContentPanel.ProHelpContentPanel, { parentItem: dataSourceKeyMap.get(parentKey), className: "".concat(className, "-content-render"), selectedKey: selectedKey, onScroll: function onScroll(key) { return setSelectedKey(key); } }) : null, footer ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "".concat(hashId, " ").concat(className, "-footer"), children: footer }) : null] })] }) })); };