UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

192 lines (158 loc) 6.13 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _mobxReactLite = require("mobx-react-lite"); var _merge = _interopRequireDefault(require("lodash/merge")); var _DataSet = _interopRequireDefault(require("../../../pro/lib/data-set/DataSet")); var _button = _interopRequireDefault(require("../../../pro/lib/button")); var _localeContext = require("../../../pro/lib/locale-context"); var _enum = require("../../../pro/lib/button/enum"); var _tabGroups = _interopRequireDefault(require("./tab-groups")); var _TabsContext = _interopRequireDefault(require("../TabsContext")); var _utils = require("../utils"); function processPaneToData(pane, key, group) { var tab = pane.tab, title = pane.title, sort = pane.sort, showCount = pane.showCount, disabled = pane.disabled; return { key: key, tab: tab, title: title, sort: sort, showCount: showCount, group: group, disabled: disabled }; } function normalizePanesToData(pair) { var _pair = (0, _slicedToArray2["default"])(pair, 2), totalPanelsMap = _pair[0], groupPanelMap = _pair[1]; var data = []; if (groupPanelMap.size > 0) { groupPanelMap.forEach(function (paneMap, key) { return paneMap.panelsMap.forEach(function (pane, paneKey) { return data.push(processPaneToData(pane, paneKey, key)); }); }); } else { totalPanelsMap.forEach(function (pane, paneKey) { return data.push(processPaneToData(pane, paneKey)); }); } return data; } var CustomizationSettings = function CustomizationSettings(props) { var modal = props.modal; var _useContext = (0, _react.useContext)(_TabsContext["default"]), customized = _useContext.customized, saveCustomized = _useContext.saveCustomized, totalPanelsMap = _useContext.totalPanelsMap, groupedPanelsMap = _useContext.groupedPanelsMap, defaultActiveKey = _useContext.defaultActiveKey, actuallyDefaultActiveKey = _useContext.actuallyDefaultActiveKey, propActiveKey = _useContext.propActiveKey, children = _useContext.children, restoreDefault = _useContext.restoreDefault; var oldCustomized = (0, _react.useMemo)(function () { return customized ? (0, _merge["default"])({}, customized) : { panes: {} }; }, [customized]); var tempCustomized = (0, _react.useRef)(oldCustomized); var _useState = (0, _react.useState)(function () { return [totalPanelsMap, groupedPanelsMap]; }), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), customizedPanes = _useState2[0], setCustomizedPanes = _useState2[1]; var _useState3 = (0, _react.useState)(actuallyDefaultActiveKey), _useState4 = (0, _slicedToArray2["default"])(_useState3, 2), defaultKey = _useState4[0], setDefaultKey = _useState4[1]; var panesDataSet = (0, _react.useMemo)(function () { return new _DataSet["default"]({ data: normalizePanesToData(customizedPanes), paging: false, primaryKey: 'key', fields: [{ name: 'group', group: true }], events: { update: function update(_ref) { var record = _ref.record, name = _ref.name, value = _ref.value; var current = tempCustomized.current; var key = record.key; if (!current.panes[key]) { current.panes[key] = {}; } current.panes[key][name] = value; } } }); }, [customizedPanes, tempCustomized]); var handleRestorePanes = (0, _react.useCallback)(function (e) { e.stopPropagation(); var _normalizePanes = (0, _utils.normalizePanes)(children), _normalizePanes2 = (0, _slicedToArray2["default"])(_normalizePanes, 2), newTotalPanelsMap = _normalizePanes2[0], newGroupedPanelsMap = _normalizePanes2[1]; setCustomizedPanes([newTotalPanelsMap, newGroupedPanelsMap]); setDefaultKey((0, _utils.getDefaultActiveKey)(newTotalPanelsMap, newGroupedPanelsMap, { activeKey: propActiveKey, defaultActiveKey: defaultActiveKey })); tempCustomized.current = { panes: {} }; }, [defaultActiveKey, propActiveKey, tempCustomized, children]); var handleDefaultKeyChange = (0, _react.useCallback)(function (key) { tempCustomized.current.defaultActiveKey = key; setDefaultKey(key); }, [tempCustomized]); var handleOk = (0, _react.useCallback)(function () { saveCustomized(tempCustomized.current); if (modal) { modal.close(); } }, [saveCustomized, tempCustomized, modal]); (0, _react.useEffect)(function () { if (modal) { modal.update({ footer: function footer(okBtn, cancelBtn) { return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/(0, _react.cloneElement)(okBtn, { onClick: handleOk }), cancelBtn, /*#__PURE__*/_react["default"].createElement(_button["default"], { hidden: !restoreDefault, funcType: _enum.FuncType.link, color: _enum.ButtonColor.primary, onClick: handleRestorePanes, style: { "float": 'right' } }, (0, _localeContext.$l)('Tabs', 'restore_default'))); } }); } }, [modal]); return /*#__PURE__*/_react["default"].createElement(_tabGroups["default"], { dataSet: panesDataSet, defaultKey: defaultKey, onDefaultKeyChange: handleDefaultKeyChange }); }; CustomizationSettings.displayName = 'CustomizationSettings'; var _default = (0, _mobxReactLite.observer)(CustomizationSettings); exports["default"] = _default; //# sourceMappingURL=CustomizationSettings.js.map