UNPKG

choerodon-ui

Version:

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

975 lines (869 loc) 36.7 kB
import _extends from "@babel/runtime/helpers/extends"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _objectSpread from "@babel/runtime/helpers/objectSpread2"; import _regeneratorRuntime from "@babel/runtime/regenerator"; import React, { useCallback, useContext, useEffect, useState, useMemo, useRef, isValidElement, cloneElement, Children } from 'react'; import { runInAction } from 'mobx'; import { observer } from 'mobx-react-lite'; import classnames from 'classnames'; import isString from 'lodash/isString'; import isObject from 'lodash/isObject'; import isNil from 'lodash/isNil'; import isFunction from 'lodash/isFunction'; import isBoolean from 'lodash/isBoolean'; import sortBy from 'lodash/sortBy'; import ConfigContext from '../../../es/config-provider/ConfigContext'; import warning from '../../../es/_util/warning'; import confirm from '../modal/confirm'; import { ViewField, ViewMode, ViewModeIcon } from './enum'; import DataSet from '../data-set'; import Table from '../table'; import Button from '../button'; import { ButtonColor, FuncType } from '../button/enum'; import Icon from '../icon'; import Dropdown from '../dropdown'; import Form from '../form'; import Select from '../select'; import TextField from '../text-field'; import ModalProvider from '../modal-provider'; import { useModal } from '../modal-provider/ModalProvider'; import { DEFAULTVIEW } from './Board'; import KanbanContent from './KanbanContent'; import BoardContext from './BoardContext'; import { getColumnKey, getEditorByField, getPlaceholderByField } from '../table/utils'; import { $l } from '../locale-context'; import { FieldType, RecordStatus } from '../data-set/enum'; import CardContent from './CardContent'; import { ColumnLock } from '../table/interface'; import isFragment from '../_util/isFragment'; export var GROUPFIELD = '__GROUPFIELD__'; export function normalizeColumns(elements, tableAggregation, customizedColumns) { var parent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; var defaultKey = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [0]; var columnSort = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : { left: 0, center: 0, right: 0 }; var columns = []; var leftColumns = []; var rightColumns = []; var hasAggregationColumn = false; var isHideDisabled = false; var normalizeColumn = function normalizeColumn(element) { if ( /*#__PURE__*/isValidElement(element)) { var props = element.props, key = element.key, type = element.type; if (isFragment(element)) { var children = props.children; if (children) { Children.forEach(children, normalizeColumn); } } else if (type.__PRO_TABLE_COLUMN) { var column = _objectSpread({}, props); if (key) { column.key = key; } else if (isNil(getColumnKey(column))) { column.key = "anonymous-".concat(defaultKey[0]++); } var _children = column.children, aggregation = column.aggregation; if (!hasAggregationColumn && aggregation) { hasAggregationColumn = true; } if (tableAggregation || !aggregation) { if (!isHideDisabled && column.hideable === false) { isHideDisabled = true; } if (parent || !column.lock) { if (column.sort === undefined) { column.sort = columnSort.center; } columnSort.center++; columns.push(column); } else if (column.lock === true || column.lock === ColumnLock.left) { if (column.sort === undefined) { column.sort = columnSort.left; } columnSort.left++; leftColumns.push(column); } else { if (column.sort === undefined) { column.sort = columnSort.right; } columnSort.right++; rightColumns.push(column); } } else { var _normalizeColumns = normalizeColumns(_children, tableAggregation, customizedColumns, parent, defaultKey, parent ? undefined : columnSort), _normalizeColumns2 = _slicedToArray(_normalizeColumns, 4), leftNodes = _normalizeColumns2[0], nodes = _normalizeColumns2[1], rightNodes = _normalizeColumns2[2], _normalizeColumns2$ = _normalizeColumns2[3], childrenHasAggregationColumn = _normalizeColumns2$.hasAggregationColumn, childrenIsHideDisabled = _normalizeColumns2$.isHideDisabled; if (!hasAggregationColumn && childrenHasAggregationColumn) { hasAggregationColumn = childrenHasAggregationColumn; } if (!isHideDisabled && childrenIsHideDisabled) { column.hideable = false; isHideDisabled = true; } if (parent) { parent.children = [].concat(_toConsumableArray(leftNodes), _toConsumableArray(nodes), _toConsumableArray(rightNodes)); } else { leftColumns.push.apply(leftColumns, _toConsumableArray(leftNodes)); columns.push.apply(columns, _toConsumableArray(nodes)); rightColumns.push.apply(rightColumns, _toConsumableArray(rightNodes)); } } } } }; Children.forEach(elements, normalizeColumn); if (parent) { return [[], sortBy(columns, function (_ref) { var sort = _ref.sort; return sort; }), [], { hasAggregationColumn: hasAggregationColumn, isHideDisabled: isHideDisabled }]; } return [sortBy(leftColumns, function (_ref2) { var sort = _ref2.sort; return sort; }), sortBy(columns, function (_ref3) { var sort = _ref3.sort; return sort; }), sortBy(rightColumns, function (_ref4) { var sort = _ref4.sort; return sort; }), { hasAggregationColumn: hasAggregationColumn, isHideDisabled: isHideDisabled }]; } /** * 处理分组字段下拉数据,仅单选快码 * @param dataSet */ function processGroupData(dataSet) { var data = []; dataSet.fields.forEach(function (field) { var type = field.get('type'); var multiple = field.get('multiple'); if (!multiple && (field.get('lookupCode') || isString(field.get('lookupUrl')) || type !== FieldType.object && (field.get('lovCode') || field.getLookup() || field.get('options')))) { data.push({ value: field.get('name'), meaning: field.get('label') }); } }); return data; } var ModalContent = function ModalContent(_ref5) { var modal = _ref5.modal, prefixCls = _ref5.prefixCls, groupDataSet = _ref5.groupDataSet; return /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-board-modal-content") }, /*#__PURE__*/React.createElement("div", null, "\u9009\u62E9\u4E00\u4E2A\u5B57\u6BB5\uFF0C\u6570\u636E\u5C06\u6309\u7167\u6B64\u5B57\u6BB5\u4E2D\u7684\u5B57\u6BB5\u503C\u5206\u7EC4\u663E\u793A\u5728\u770B\u677F\u4E2D\uFF0C\u652F\u6301\u5B57\u6BB5\u7C7B\u578B\uFF1A\u5355\u9009\u3001\u4E0B\u62C9\u5355\u9009"), /*#__PURE__*/React.createElement(Form, { dataSet: groupDataSet }, /*#__PURE__*/React.createElement(TextField, { label: "\u89C6\u56FE\u540D\u79F0", name: ViewField.viewName }), /*#__PURE__*/React.createElement(Select, { name: "groupField", label: "\u9009\u62E9\u5206\u7EC4\u5B57\u6BB5", onChange: function onChange(value) { if (value) { modal.update({ okProps: { disabled: false } }); } } }))); }; var BoardWithContext = function Board(props) { var _useContext = useContext(ConfigContext), getConfig = _useContext.getConfig, getProPrefixCls = _useContext.getProPrefixCls; var _useState = useState(true), _useState2 = _slicedToArray(_useState, 2), hidden = _useState2[0], setHidden = _useState2[1]; var defaultViewProps = props.defaultViewProps, defaultViewMode = props.defaultViewMode, onChange = props.onChange, onConfigChange = props.onConfigChange, renderButtons = props.renderButtons, viewVisible = props.viewVisible, autoQuery = props.autoQuery, kanbanProps = props.kanbanProps, cardProps = props.cardProps, renderCommand = props.renderCommand, commandsLimit = props.commandsLimit, customizedDS = props.customizedDS, queryFields = props.queryFields, dataSet = props.dataSet, tableProps = props.tableProps, customizable = props.customizable, customizedCode = props.customizedCode; var prefixCls = getProPrefixCls('board'); var saveCustomized = useCallback( /*#__PURE__*/function () { var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(newCustomized) { var customizedSave, res; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(customizable && customizedCode)) { _context.next = 6; break; } customizedSave = getConfig('customizedSave'); _context.next = 4; return customizedSave(customizedCode, newCustomized, 'Board'); case 4: res = _context.sent; return _context.abrupt("return", res); case 6: case "end": return _context.stop(); } } }, _callee); })); return function (_x) { return _ref6.apply(this, arguments); }; }(), [customizable, customizedCode]); var customizedLoad = getConfig('customizedLoad'); var viewTypeVisible = useMemo(function () { if (isBoolean(viewVisible)) { return { card: viewVisible, kanban: viewVisible, table: viewVisible }; } if (isObject(viewVisible)) { return { card: isBoolean(viewVisible.card) ? viewVisible.card : true, kanban: isBoolean(viewVisible.kanban) ? viewVisible.kanban : true, table: isBoolean(viewVisible.table) ? viewVisible.table : true }; } return { card: true, kanban: true, table: true }; }, [viewVisible]); var viewHeight = useMemo(function () { return customizedDS && customizedDS.current ? customizedDS.current.get(ViewField.viewHeight) : undefined; }, [customizedDS.current]); var currentDisplayFields = useMemo(function () { return customizedDS && customizedDS.current ? customizedDS.current.get(ViewField.displayFields) : undefined; }, [customizedDS.current]); var _useState3 = useState(''), _useState4 = _slicedToArray(_useState3, 2), searchText = _useState4[0], setSearchText = _useState4[1]; var modal = useModal(); var TableRef = useRef(null); var DropdownRef = useRef(null); var SwitchBtnRef = useRef(null); var optionDS = useMemo(function () { return new DataSet({ data: processGroupData(dataSet), paging: false, primaryKey: 'value' }); }, [dataSet]); var displayFields = useMemo(function () { if (tableProps && tableProps.columns) { return tableProps.columns; } if (tableProps && tableProps.children) { var children = tableProps.children, aggregation = tableProps.aggregation; var generatedColumns = normalizeColumns(children, aggregation); return generatedColumns[0].concat(generatedColumns[1], generatedColumns[2]); } return []; }, [tableProps]); var command = useMemo(function () { if (displayFields && displayFields.length) { var commandCol = displayFields.find(function (col) { return col.command; }); return commandCol ? commandCol.command : undefined; } }, [displayFields]); var groupDataSet = useMemo(function () { return new DataSet({ paging: false, primaryKey: 'groupField', autoCreate: true, fields: [{ name: ViewField.groupField, required: true, type: FieldType.object, options: optionDS }, { name: ViewField.viewName, type: FieldType.string, defaultValue: '看板视图' }] }); }, [dataSet]); /** * 处理面板显隐 */ var handleClickOut = useCallback(function (e) { if (DropdownRef.current && SwitchBtnRef.current // @ts-ignore && !(DropdownRef.current.contains(e.target) // @ts-ignore || SwitchBtnRef.current.element.contains(e.target))) { setHidden(true); } }, [DropdownRef]); useEffect(function () { document.addEventListener('click', handleClickOut); return function () { return document.removeEventListener('click', handleClickOut); }; }, [DropdownRef]); /** * 新建视图 | 加载视图列表数据 */ var loadListData = useCallback( /*#__PURE__*/function () { var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(record) { var _card, _kanban, detailRes, res, mergeRes, viewProps, defaultView; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.prev = 0; if (!(record.get(ViewField.id) || record.get('menuId') || record.get(ViewField.id) === '__DEFAULT__')) { _context2.next = 5; break; } detailRes = record.toData(); _context2.next = 8; break; case 5: _context2.next = 7; return saveCustomized(record.toData()); case 7: detailRes = _context2.sent; case 8: _context2.next = 10; return customizedLoad(customizedCode, 'Board', { type: 'list' }); case 10: res = _context2.sent; mergeRes = res.map(function (r) { if (r.id === detailRes[ViewField.id]) { return detailRes; } return r; }); viewProps = { card: (_card = {}, _defineProperty(_card, ViewField.cardWidth, 6), _defineProperty(_card, ViewField.displayFields, displayFields.map(function (field) { return field.name; }).filter(Boolean).slice(0, 3)), _defineProperty(_card, ViewField.showLabel, 1), _card), table: {}, kanban: (_kanban = {}, _defineProperty(_kanban, ViewField.cardWidth, 6), _defineProperty(_kanban, ViewField.displayFields, displayFields.map(function (field) { return field.name; }).filter(Boolean).slice(0, 3)), _defineProperty(_kanban, ViewField.showLabel, 1), _kanban) }; defaultView = _objectSpread(_objectSpread({ code: customizedCode }, DEFAULTVIEW[defaultViewMode]), {}, _defineProperty({}, ViewField.viewProps, _objectSpread(_objectSpread({}, viewProps[defaultViewMode]), defaultViewProps[defaultViewMode]))); customizedDS.loadData([].concat(_toConsumableArray(mergeRes), [defaultView])); _context2.next = 20; break; case 17: _context2.prev = 17; _context2.t0 = _context2["catch"](0); warning(false, _context2.t0.message); case 20: case "end": return _context2.stop(); } } }, _callee2, null, [[0, 17]]); })); return function (_x2) { return _ref7.apply(this, arguments); }; }(), [customizedCode]); /** * 渲染查询条字段组件 */ var getQueryFields = useCallback(function () { var queryDataSet = dataSet.queryDataSet; var result = []; if (queryDataSet) { var fields = queryDataSet.fields, current = queryDataSet.current, _queryDataSet$props$f = queryDataSet.props.fields, propFields = _queryDataSet$props$f === void 0 ? [] : _queryDataSet$props$f; var cloneFields = fields.toJS(); var tlsKey = getConfig('tlsKey'); var processField = function processField(field, name) { if (!field.get('bind', current) && !name.includes(tlsKey)) { var element = queryFields[name]; var filterBarProps = {}; var inValidElement = getEditorByField(field, current, true); var placeholder = /*#__PURE__*/isValidElement(element) && element.props.placeholder ? element.props.placeholder : getPlaceholderByField(field, current); filterBarProps = { placeholder: placeholder, border: false, clearButton: true }; var elementType = inValidElement.type; if ((! /*#__PURE__*/isValidElement(element) || element.props.suffix === undefined) && ['Currency', 'ObserverNumberField', 'EmailField', 'UrlField', 'ObserverTextField'].indexOf(elementType.name) !== -1) { _extends(filterBarProps, { suffix: /*#__PURE__*/React.createElement(Icon, { type: "search" }) }); } var _props = _objectSpread({ key: name, name: name, dataSet: queryDataSet, isFlat: true }, filterBarProps); result.push( /*#__PURE__*/isValidElement(element) ? /*#__PURE__*/cloneElement(element, _props) : /*#__PURE__*/cloneElement(inValidElement, _objectSpread(_objectSpread({}, _props), isObject(element) ? element : {}))); } }; propFields.forEach(function (_ref8) { var name = _ref8.name; if (name) { var field = cloneFields.get(name); if (field) { cloneFields["delete"](name); processField(field, name); } } }); cloneFields.forEach(function (field, name) { processField(field, name); }); } return result; }, []); /** * 新增看板视图弹窗 */ var addBoardView = useCallback(function () { setHidden(true); var modalProps = { title: '看板视图', autoCenter: true, style: { width: 595 }, children: /*#__PURE__*/React.createElement(ModalContent, { groupDataSet: groupDataSet, prefixCls: prefixCls }), okProps: { disabled: true }, onClose: function onClose() { groupDataSet.reset(); return true; }, onOk: function onOk() { var _ViewField$viewProps, _customizedDS$create; var groupField = groupDataSet.current.get('groupField').value; customizedDS.setState('__OLDID__', customizedDS.current.get(ViewField.id)); customizedDS.create((_customizedDS$create = {}, _defineProperty(_customizedDS$create, ViewField.viewMode, ViewMode.kanban), _defineProperty(_customizedDS$create, ViewField.viewName, groupDataSet.current.get(ViewField.viewName)), _defineProperty(_customizedDS$create, ViewField.viewProps, (_ViewField$viewProps = {}, _defineProperty(_ViewField$viewProps, ViewField.groupField, groupField), _defineProperty(_ViewField$viewProps, ViewField.cardWidth, 6), _defineProperty(_ViewField$viewProps, ViewField.displayFields, displayFields.map(function (field) { return field.name; }).filter(Boolean).slice(0, 3)), _defineProperty(_ViewField$viewProps, ViewField.showLabel, 1), _ViewField$viewProps)), _defineProperty(_customizedDS$create, ViewField.activeKey, 1), _customizedDS$create), 0); loadListData(customizedDS.current); // if (isFunction(onChange)) { // onChange({ record: customizedDS.current, dataSet }); // } return true; } }; modal.open(modalProps); }, [modal, saveCustomized]); /** * 渲染视图切换面板 */ var renderSwitcherBoard = useCallback(function () { return /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-switch-board"), ref: DropdownRef }, /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-switch-board-search") }, /*#__PURE__*/React.createElement(TextField, { style: { width: '100%' }, value: searchText, onClick: function onClick(e) { e.preventDefault(); e.currentTarget.focus(); }, onChange: function onChange(v) { setSearchText(v); }, onInput: function onInput(e) { setSearchText(e.target.value); }, prefix: /*#__PURE__*/React.createElement(Icon, { type: "search" }), placeholder: $l('Table', 'enter_text_filter'), clearButton: true })), customizedDS && customizedDS.length ? customizedDS.map(function (record) { var viewMode = record.get(ViewField.viewMode); if (viewTypeVisible[viewMode] === false && !(record.get(ViewField.id) === '__DEFAULT__' || !record.get(ViewField.id))) { return null; } var itemCls = classnames("".concat(prefixCls, "-view-item"), _defineProperty({}, "".concat(prefixCls, "-view-item-active"), record.isCurrent)); return /*#__PURE__*/React.createElement("div", { key: record.id, hidden: searchText ? !record.get(ViewField.viewName).includes(searchText) : false, className: itemCls, onClick: function () { var _onClick = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { var res; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: if (!(record.get(ViewField.activeKey) === 1)) { _context3.next = 4; break; } setHidden(true); _context3.next = 23; break; case 4: customizedDS.current.set(ViewField.activeKey, 0); customizedDS.setState('__OLDID__', customizedDS.current.get(ViewField.id)); record.set(ViewField.activeKey, 1); customizedDS.current = record; // if (isFunction(onChange)) { // onChange({ record, dataSet }); // } setHidden(true); _context3.prev = 9; if (!(record.get(ViewField.id) === '__DEFAULT__' || !record.get(ViewField.id))) { _context3.next = 14; break; } // 切换的为前端内置视图,frontFlag 标记前端配置,后端将其他视图 defaultFlag 置为 0 saveCustomized(_objectSpread(_objectSpread({}, record.toJSONData()), {}, { id: undefined, frontFlag: 1 })); _context3.next = 18; break; case 14: _context3.next = 16; return customizedLoad(customizedCode, 'Board', _defineProperty({ type: 'detail' }, ViewField.id, record.get(ViewField.id))); case 16: res = _context3.sent; record.commit(res, customizedDS); case 18: _context3.next = 23; break; case 20: _context3.prev = 20; _context3.t0 = _context3["catch"](9); record.status = RecordStatus.sync; case 23: case "end": return _context3.stop(); } } }, _callee3, null, [[9, 20]]); })); function onClick() { return _onClick.apply(this, arguments); } return onClick; }() }, /*#__PURE__*/React.createElement(Icon, { type: ViewModeIcon[record.get(ViewField.viewMode)] }), record.get(ViewField.viewName), record.get(ViewField.id) !== '__DEFAULT__' ? /*#__PURE__*/React.createElement(Icon, { className: "".concat(prefixCls, "-delete"), type: "delete_black-o", onClick: function () { var _onClick2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(e) { return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: e.stopPropagation(); setHidden(true); _context4.next = 4; return confirm('确认删除'); case 4: _context4.t0 = _context4.sent; if (!(_context4.t0 !== 'cancel')) { _context4.next = 7; break; } runInAction(function () { record.status = RecordStatus["delete"]; try { saveCustomized(record.toJSONData()); if (record.isCurrent) { customizedDS.current = customizedDS.find(function (record) { return record.get(ViewField.id) === '__DEFAULT__'; }); } } catch (e) { record.status = RecordStatus.sync; } }); case 7: case "end": return _context4.stop(); } } }, _callee4); })); function onClick(_x3) { return _onClick2.apply(this, arguments); } return onClick; }() }) : null); }) : null, /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-switch-board-footer") }, /*#__PURE__*/React.createElement("div", null, "\u6DFB\u52A0\u89C6\u56FE"), /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-view-add") }, /*#__PURE__*/React.createElement("div", { hidden: !viewTypeVisible.table, onClick: function onClick() { var _customizedDS$create2; customizedDS.setState('__OLDID__', customizedDS.current.get(ViewField.id)); customizedDS.create((_customizedDS$create2 = {}, _defineProperty(_customizedDS$create2, ViewField.viewMode, ViewMode.table), _defineProperty(_customizedDS$create2, ViewField.viewName, '列表视图'), _defineProperty(_customizedDS$create2, ViewField.viewProps, {}), _defineProperty(_customizedDS$create2, ViewField.activeKey, 1), _customizedDS$create2), 0); try { // saveCustomized(customizedDS.current!.toData()); loadListData(customizedDS.current); // if (isFunction(onChange)) { // onChange({ record: customizedDS.current, dataSet }); // } } catch (e) {// record.status = RecordStatus.sync; } setHidden(true); } }, /*#__PURE__*/React.createElement(Icon, { type: "biaoge-o" }), "\u5217\u8868"), /*#__PURE__*/React.createElement("div", { hidden: !viewTypeVisible.card, onClick: function onClick() { var _ViewField$viewProps2, _customizedDS$create3; customizedDS.setState('__OLDID__', customizedDS.current.get(ViewField.id)); customizedDS.create((_customizedDS$create3 = {}, _defineProperty(_customizedDS$create3, ViewField.viewMode, ViewMode.card), _defineProperty(_customizedDS$create3, ViewField.viewName, '卡片视图'), _defineProperty(_customizedDS$create3, ViewField.viewProps, (_ViewField$viewProps2 = {}, _defineProperty(_ViewField$viewProps2, ViewField.cardWidth, 6), _defineProperty(_ViewField$viewProps2, ViewField.displayFields, displayFields.map(function (field) { return field.name; }).filter(Boolean).slice(0, 3)), _defineProperty(_ViewField$viewProps2, ViewField.showLabel, 1), _ViewField$viewProps2)), _defineProperty(_customizedDS$create3, ViewField.activeKey, 1), _customizedDS$create3), 0); try { // saveCustomized(customizedDS.current!.toData()); loadListData(customizedDS.current); // if (isFunction(onChange)) { // onChange({ record: customizedDS.current, dataSet, currentViewDS: }); // } } catch (e) {// record.status = RecordStatus.sync; } setHidden(true); } }, /*#__PURE__*/React.createElement(Icon, { type: "kapian" }), "\u5361\u7247"), /*#__PURE__*/React.createElement("div", { hidden: !viewTypeVisible.kanban, onClick: addBoardView }, /*#__PURE__*/React.createElement(Icon, { type: "kanban" }), "\u770B\u677F")))); }, [customizedDS, searchText, viewTypeVisible]); var renderSwitcherIcon = useCallback(function () { var viewType = customizedDS.current && customizedDS.current.get(ViewField.viewMode); return /*#__PURE__*/React.createElement(Dropdown, { overlay: function overlay() { return renderSwitcherBoard(); }, hidden: hidden }, /*#__PURE__*/React.createElement(Button, { color: ButtonColor.primary, funcType: FuncType.flat, onClick: function () { var _onClick3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() { return _regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: // 初次点击查询视图列表,=1 避免每次点击查询,保存具体配置或刷新重新查询 list 接口 if (hidden && customizedDS.length <= 2) { loadListData(customizedDS.current); customizedDS.setState('__ISCHANGE__', true); customizedDS.setState('__OLDID__', customizedDS.current.get(ViewField.id)); } setHidden(!hidden); case 2: case "end": return _context5.stop(); } } }, _callee5); })); function onClick() { return _onClick3.apply(this, arguments); } return onClick; }(), ref: SwitchBtnRef }, /*#__PURE__*/React.createElement(Icon, { type: ViewModeIcon[viewType] || "biaoge-o" }), /*#__PURE__*/React.createElement(Icon, { type: hidden ? "baseline-arrow_drop_down" : "baseline-arrow_drop_up" }))); }, [hidden, searchText, viewTypeVisible]); var tableDataSet = useMemo(function () { var isDefault = customizedDS.current ? customizedDS.current.get(ViewField.id) === '__DEFAULT__' : true; var defaultSortParams = dataSet.combineSort && customizedDS.current ? customizedDS.current.get(ViewField.combineSort) || [] : []; var orgFields = dataSet.props.fields ? dataSet.props.fields : []; var orderFields = orgFields.map(function (field) { var orderField = defaultSortParams.find(function (of) { return of.sortName === field.name; }); var newField = _objectSpread({}, field); if (orderField) { newField.order = orderField.order; } return newField; }); return isDefault ? dataSet : new DataSet(_objectSpread(_objectSpread({}, dataSet.props), {}, { fields: orderFields, autoQuery: autoQuery })); }, [customizedDS.current && customizedDS.current.get(ViewField.id)]); var tableDataSetName = useMemo(function () { if (customizedDS.current && customizedDS.current.get(ViewField.viewMode) === ViewMode.table) { var changed = customizedDS.getState('__ISCHANGE__'); if (isFunction(onChange) && tableDataSet && changed) { onChange({ record: customizedDS.current, dataSet: dataSet, currentViewDS: tableDataSet }); } } }, [tableDataSet]); var renderContent = useCallback(function () { var viewMode = customizedDS.current ? customizedDS.current.get(ViewField.viewMode) : ViewMode.table; var isDefault = customizedDS.current ? customizedDS.current.get(ViewField.id) === '__DEFAULT__' : true; var noSwitcher = !viewVisible || viewTypeVisible.card === false && viewTypeVisible.kanban === false && viewTypeVisible.table === false; var buttonsLimit = tableProps.buttonsLimit, buttons = tableProps.buttons, queryBarProps = tableProps.queryBarProps, queryFieldsLimit = tableProps.queryFieldsLimit, searchCode = tableProps.searchCode, dynamicFilterBar = tableProps.dynamicFilterBar; var tableQueryBarProps = _objectSpread(_objectSpread({}, getConfig('queryBarProps')), {}, { queryFieldsLimit: queryFieldsLimit, dynamicFilterBar: dynamicFilterBar, searchCode: searchCode }, queryBarProps); var displayedButtonsLimit = buttonsLimit && (noSwitcher ? buttonsLimit : buttonsLimit + 1); var tableBtns = buttons ? _toConsumableArray(buttons) : []; var btnRenderer = tableBtns; if (viewMode === ViewMode.table) { if (isFunction(renderButtons)) { btnRenderer = renderButtons({ viewMode: viewMode, dataSet: isDefault ? dataSet : tableDataSet, buttons: tableBtns }); } var btns = noSwitcher ? btnRenderer : [renderSwitcherIcon()].concat(_toConsumableArray(btnRenderer)); dataSet.setState('__CURRENTVIEWDS__', tableDataSet); // handleChange tableDataSet if (tableDataSet) { dataSet.setState('__tempChange__', tableDataSetName); } return /*#__PURE__*/React.createElement(Table, _extends({}, tableProps, { customizable: isDefault ? false : customizable, customizedCode: customizedCode, boardCustomized: { customizedBtn: true, customizedDS: customizedDS }, dataSet: isDefault ? dataSet : tableDataSet, buttons: btns, buttonsLimit: displayedButtonsLimit, ref: TableRef })); } if (viewMode === ViewMode.card) { return /*#__PURE__*/React.createElement(CardContent, { cardProps: cardProps, key: "cardContent", tableBtns: tableBtns, buttonsLimit: buttonsLimit, queryBarProps: tableQueryBarProps, buttons: noSwitcher ? [] : [renderSwitcherIcon()] }); } return /*#__PURE__*/React.createElement(KanbanContent, { key: "kanbanContent", dataSet: dataSet, queryBarProps: tableQueryBarProps, tableBtns: tableBtns, buttonsLimit: buttonsLimit, buttons: noSwitcher ? [] : [renderSwitcherIcon()], kanbanProps: kanbanProps }); }, [tableProps.buttonsLimit, customizedDS.current, viewHeight, currentDisplayFields, hidden, searchText, tableProps, viewTypeVisible]); var value = { // defaultActiveKey: propDefaultActiveKey, // actuallyDefaultActiveKey, // propActiveKey, prefixCls: prefixCls, getConfig: getConfig, getProPrefixCls: getProPrefixCls, customizedCode: customizedCode, // customizable, // customized, saveCustomized: saveCustomized, // activeKey, // changeActiveKey, autoQuery: autoQuery, command: command, renderCommand: renderCommand, commandsLimit: commandsLimit, renderButtons: renderButtons, customizedDS: customizedDS, displayFields: displayFields, optionDS: optionDS, dataSet: dataSet, queryFields: getQueryFields(), viewTypeVisible: viewTypeVisible, onConfigChange: onConfigChange, onChange: onChange }; return /*#__PURE__*/React.createElement(BoardContext.Provider, { value: value }, customizable ? /*#__PURE__*/React.createElement(ModalProvider, null, renderContent()) : /*#__PURE__*/React.createElement(ModalProvider, null, renderContent())); }; BoardWithContext.displayName = 'BoardWithContext'; export default observer(BoardWithContext); //# sourceMappingURL=BoardWithContext.js.map