UNPKG

choerodon-ui

Version:

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

448 lines (378 loc) 16.5 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _mobx = require("mobx"); var _noop = _interopRequireDefault(require("lodash/noop")); var _KeyCode = _interopRequireDefault(require("../../../lib/_util/KeyCode")); var _ConfigContext = _interopRequireDefault(require("../../../lib/config-provider/ConfigContext")); var _Table = _interopRequireDefault(require("../table/Table")); var _TableProfessionalBar = _interopRequireDefault(require("../table/query-bar/TableProfessionalBar")); var _enum = require("../table/enum"); var _enum2 = require("../data-set/enum"); var _autobind = _interopRequireDefault(require("../_util/autobind")); var _utils = require("../table/utils"); var _SelectionList = _interopRequireWildcard(require("./SelectionList")); function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } var LovView = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(LovView, _Component); var _super = _createSuper(LovView); function LovView() { var _this; (0, _classCallCheck2["default"])(this, LovView); _this = _super.apply(this, arguments); _this.resizedColumns = new Map(); return _this; } (0, _createClass2["default"])(LovView, [{ key: "componentWillMount", value: function componentWillMount() { var _this$props = this.props, dataSet = _this$props.dataSet, selection = _this$props.dataSet.selection, multiple = _this$props.multiple, viewMode = _this$props.viewMode; this.selection = selection; dataSet.selection = multiple ? _enum2.DataSetSelection.multiple : _enum2.DataSetSelection.single; if ((viewMode === 'popup' || viewMode === 'drawer' || viewMode === 'modal') && multiple) { dataSet.addEventListener(_enum2.DataSetEvents.batchSelect, this.handleSelect); dataSet.addEventListener(_enum2.DataSetEvents.batchUnSelect, this.handleSelect); } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { var _this$props2 = this.props, dataSet = _this$props2.dataSet, multiple = _this$props2.multiple, viewMode = _this$props2.viewMode; dataSet.selection = this.selection; if ((viewMode === 'popup' || viewMode === 'drawer' || viewMode === 'modal') && multiple) { dataSet.removeEventListener(_enum2.DataSetEvents.batchSelect, this.handleSelect); dataSet.removeEventListener(_enum2.DataSetEvents.batchUnSelect, this.handleSelect); } } }, { key: "shouldComponentUpdate", value: function shouldComponentUpdate(nextProps) { var viewMode = this.props.viewMode; if (viewMode === 'popup' && nextProps.popupHidden) { return false; } return true; } /* istanbul ignore next */ }, { key: "getColumns", value: function getColumns() { var _this2 = this; var _this$props3 = this.props, lovItems = _this$props3.config.lovItems, tableProps = _this$props3.tableProps, viewMode = _this$props3.viewMode; return lovItems ? lovItems.filter(function (_ref) { var gridField = _ref.gridField; return gridField === 'Y'; }).sort(function (_ref2, _ref3) { var seq1 = _ref2.gridFieldSequence; var seq2 = _ref3.gridFieldSequence; return seq1 - seq2; }).map(function (_ref4) { var display = _ref4.display, gridFieldName = _ref4.gridFieldName, gridFieldWidth = _ref4.gridFieldWidth, gridFieldAlign = _ref4.gridFieldAlign; var column = {}; if (tableProps && tableProps.columns) { column = tableProps.columns.find(function (c) { return c.name === gridFieldName; }); } return (0, _objectSpread2["default"])({}, column, { key: gridFieldName, header: display, name: gridFieldName, width: viewMode === 'popup' ? gridFieldName ? _this2.resizedColumns.get(gridFieldName) : undefined : gridFieldWidth, align: gridFieldAlign, editor: false }); }) : undefined; } }, { key: "handleSelect", value: function handleSelect(event) { var selectionMode = this.selectionMode; var _this$props4 = this.props, onSelect = _this$props4.onSelect, _this$props4$onBefore = _this$props4.onBeforeSelect, onBeforeSelect = _this$props4$onBefore === void 0 ? _noop["default"] : _this$props4$onBefore, modal = _this$props4.modal, multiple = _this$props4.multiple, dataSet = _this$props4.dataSet, tableProps = _this$props4.tableProps, viewMode = _this$props4.viewMode, showSelectedInView = _this$props4.showSelectedInView; // 为了drawer模式下右侧勾选项的顺序 if (showSelectedInView && (viewMode === 'drawer' || viewMode === 'modal') && multiple) { if (event && event.records) { event.records.forEach(function (item) { if (item.isSelected) { item.setState(_SelectionList.TIMESTAMP, new Date().getTime()); } else { item.setState(_SelectionList.TIMESTAMP, 0); } }); } } var records = selectionMode === _enum.SelectionMode.treebox ? dataSet.treeSelected : selectionMode === _enum.SelectionMode.rowbox || multiple ? dataSet.selected : dataSet.current ? [dataSet.current] : []; // 满足单选模式下,双击和勾选框选中均支持 if (tableProps && tableProps.alwaysShowRowBox && !event) { records = dataSet.selected; } var record = multiple ? records : records[0]; if (record && onBeforeSelect(record) !== false) { if (modal && (!event || !multiple)) { modal.close(); } if (!event || !multiple || viewMode === 'popup') { onSelect(record); } } return false; } /* istanbul ignore next */ }, { key: "handleKeyDown", value: function handleKeyDown(e) { if (e.keyCode === _KeyCode["default"].ENTER) { this.handleSelect(); } } /** * 单选 onRow 处理 * @param props */ }, { key: "handleRow", value: function handleRow(props) { var tableProps = this.props.tableProps; if (tableProps) { var onRow = tableProps.onRow; if (onRow) { return (0, _objectSpread2["default"])({ onDoubleClick: this.handleSelect }, onRow(props)); } } return { onDoubleClick: this.handleSelect }; } }, { key: "handleSingleRow", value: function handleSingleRow() { return { onClick: this.handleSelect }; } }, { key: "handleColumnResize", value: function handleColumnResize(props) { var width = props.width, column = props.column; this.resizedColumns.set((0, _utils.getColumnKey)(column), width); } }, { key: "renderTable", value: function renderTable() { var _this$props5 = this.props, dataSet = _this$props5.dataSet, _this$props5$config = _this$props5.config, queryBar = _this$props5$config.queryBar, height = _this$props5$config.height, treeFlag = _this$props5$config.treeFlag, queryColumns = _this$props5$config.queryColumns, _this$props5$config$t = _this$props5$config.tableProps, configTableProps = _this$props5$config$t === void 0 ? {} : _this$props5$config$t, multiple = _this$props5.multiple, tableProps = _this$props5.tableProps, viewMode = _this$props5.viewMode, context = _this$props5.context, showSelectedInView = _this$props5.showSelectedInView; var getConfig = context.getConfig; var columns = this.getColumns(); var popup = viewMode === 'popup'; var modal = viewMode === 'modal'; var drawer = viewMode === 'drawer'; var lovTableProps = (0, _objectSpread2["default"])({ autoFocus: true, mode: treeFlag === 'Y' ? _enum.TableMode.tree : _enum.TableMode.list, onKeyDown: this.handleKeyDown, dataSet: dataSet, columns: columns, queryFieldsLimit: queryColumns, queryBar: queryBar || getConfig('lovQueryBar') || getConfig('queryBar'), selectionMode: _enum.SelectionMode.none }, configTableProps, {}, tableProps, { className: (0, _classnames["default"])(configTableProps && configTableProps.className, tableProps && tableProps.className), style: (0, _objectSpread2["default"])({}, configTableProps && configTableProps.style, { height: height }, tableProps && tableProps.style), queryBarProps: (0, _objectSpread2["default"])({}, tableProps && tableProps.queryBarProps, {}, getConfig('lovQueryBarProps')) }); if (multiple) { if (popup || !tableProps || !tableProps.selectionMode) { if (lovTableProps.mode === _enum.TableMode.tree) { lovTableProps.selectionMode = _enum.SelectionMode.treebox; } else { lovTableProps.selectionMode = _enum.SelectionMode.rowbox; } } if (lovTableProps.selectionMode !== _enum.SelectionMode.rowbox && lovTableProps.selectionMode !== _enum.SelectionMode.treebox) { lovTableProps.highLightRow = false; lovTableProps.selectedHighLightRow = true; } } else if (popup) { lovTableProps.onRow = this.handleSingleRow; } else if (lovTableProps.selectionMode !== _enum.SelectionMode.rowbox) { lovTableProps.onRow = this.handleRow; } else { lovTableProps.highLightRow = false; lovTableProps.selectedHighLightRow = true; } if (popup) { if (lovTableProps.showSelectionCachedButton === undefined) { lovTableProps.showSelectionCachedButton = false; lovTableProps.showCachedSelection = true; } lovTableProps.autoWidth = true; lovTableProps.onColumnResize = this.handleColumnResize; } var isProfessionalBar = lovTableProps.queryBar === _enum.TableQueryBarType.professionalBar; if (!popup && !lovTableProps.queryBar && isProfessionalBar) { lovTableProps.queryBar = function (props) { return _react["default"].createElement(_TableProfessionalBar["default"], (0, _extends2["default"])({}, props)); }; } if ((modal || drawer) && showSelectedInView) { lovTableProps.showSelectionTips = false; } this.selectionMode = lovTableProps.selectionMode; return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_Table["default"], (0, _extends2["default"])({}, lovTableProps)), modal && this.renderSelectionList()); } }, { key: "renderSelectionList", value: function renderSelectionList() { var _this$props6 = this.props, dataSet = _this$props6.dataSet, _this$props6$valueFie = _this$props6.valueField, valueField = _this$props6$valueFie === void 0 ? '' : _this$props6$valueFie, _this$props6$textFiel = _this$props6.textField, textField = _this$props6$textFiel === void 0 ? '' : _this$props6$textFiel, _this$props6$config = _this$props6.config, treeFlag = _this$props6$config.treeFlag, _this$props6$config$t = _this$props6$config.tableProps, configTableProps = _this$props6$config$t === void 0 ? {} : _this$props6$config$t, tableProps = _this$props6.tableProps, multiple = _this$props6.multiple, viewMode = _this$props6.viewMode, showSelectedInView = _this$props6.showSelectedInView, selectionProps = _this$props6.selectionProps; if (!showSelectedInView || !multiple) { return null; } if (!this.selectionMode) { var selectionMode = (tableProps === null || tableProps === void 0 ? void 0 : tableProps.selectionMode) || (configTableProps === null || configTableProps === void 0 ? void 0 : configTableProps.selectionMode); if (!selectionMode) { this.selectionMode = treeFlag === 'Y' ? _enum.SelectionMode.treebox : _enum.SelectionMode.rowbox; } else { this.selectionMode = selectionMode; } } var selectionsPosition = viewMode === 'drawer' ? _SelectionList.SelectionsPosition.side : viewMode === 'modal' ? _SelectionList.SelectionsPosition.below : undefined; return _react["default"].createElement(_SelectionList["default"], { dataSet: dataSet, treeFlag: treeFlag, valueField: valueField, textField: textField, selectionsPosition: selectionsPosition, selectionProps: selectionProps }); } }, { key: "render", value: function render() { var _this$props7 = this.props, modal = _this$props7.modal, viewRenderer = _this$props7.viewRenderer, dataSet = _this$props7.dataSet, viewMode = _this$props7.viewMode, lovConfig = _this$props7.config, textField = _this$props7.textField, valueField = _this$props7.valueField, multiple = _this$props7.multiple; if (modal) { modal.handleOk(this.handleSelect); } return _react["default"].createElement(_react["default"].Fragment, null, viewMode === 'drawer' && this.renderSelectionList(), _react["default"].createElement("div", null, viewRenderer ? (0, _mobx.toJS)(viewRenderer({ dataSet: dataSet, lovConfig: lovConfig, textField: textField, valueField: valueField, multiple: multiple, modal: modal })) : this.renderTable())); } }], [{ key: "contextType", get: function get() { return _ConfigContext["default"]; } }]); return LovView; }(_react.Component); exports["default"] = LovView; (0, _tslib.__decorate)([_mobx.action], LovView.prototype, "componentWillMount", null); (0, _tslib.__decorate)([_mobx.action], LovView.prototype, "componentWillUnmount", null); (0, _tslib.__decorate)([_autobind["default"]], LovView.prototype, "handleSelect", null); (0, _tslib.__decorate)([_autobind["default"]], LovView.prototype, "handleKeyDown", null); (0, _tslib.__decorate)([_autobind["default"]], LovView.prototype, "handleRow", null); (0, _tslib.__decorate)([_autobind["default"]], LovView.prototype, "handleSingleRow", null); (0, _tslib.__decorate)([_autobind["default"]], LovView.prototype, "handleColumnResize", null); //# sourceMappingURL=LovView.js.map