choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
1,474 lines (1,166 loc) • 107 kB
JavaScript
"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.instance = exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
var _tslib = require("tslib");
var _react = _interopRequireDefault(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill"));
var _raf = _interopRequireDefault(require("raf"));
var _mobxReact = require("mobx-react");
var _moment = _interopRequireDefault(require("moment"));
var _pick = _interopRequireDefault(require("lodash/pick"));
var _omit = _interopRequireDefault(require("lodash/omit"));
var _isString = _interopRequireDefault(require("lodash/isString"));
var _isNil = _interopRequireDefault(require("lodash/isNil"));
var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
var _noop = _interopRequireDefault(require("lodash/noop"));
var _defer = _interopRequireDefault(require("lodash/defer"));
var _attempt = _interopRequireDefault(require("lodash/attempt"));
var _mobx = require("mobx");
var _reactBeautifulDnd = require("react-beautiful-dnd");
var _warning = _interopRequireDefault(require("../../../lib/_util/warning"));
var _UnitConvertor = require("../../../lib/_util/UnitConvertor");
var _measureScrollbar = _interopRequireDefault(require("../../../lib/_util/measureScrollbar"));
var _KeyCode = _interopRequireDefault(require("../../../lib/_util/KeyCode"));
var _resizeObserver = _interopRequireDefault(require("../../../lib/_util/resizeObserver"));
var _Column = _interopRequireDefault(require("./Column"));
var _TableRow = _interopRequireDefault(require("./TableRow"));
var _TableHeaderCell = _interopRequireDefault(require("./TableHeaderCell"));
var _TableStore = _interopRequireWildcard(require("./TableStore"));
var _TableHeader = _interopRequireDefault(require("./TableHeader"));
var _autobind = _interopRequireDefault(require("../_util/autobind"));
var _Pagination = _interopRequireDefault(require("../pagination/Pagination"));
var _spin = _interopRequireDefault(require("../spin"));
var _DataSetComponent2 = _interopRequireDefault(require("../data-set/DataSetComponent"));
var _TableContext = require("./TableContext");
var _TableWrapper = _interopRequireDefault(require("./TableWrapper"));
var _Profiler = _interopRequireDefault(require("./Profiler"));
var _TableTBody = _interopRequireDefault(require("./TableTBody"));
var _ExpandableTableTBody = _interopRequireDefault(require("./ExpandableTableTBody"));
var _TableFooter = _interopRequireDefault(require("./TableFooter"));
var _enum = require("./enum");
var _queryBar = _interopRequireDefault(require("./query-bar"));
var _TableToolBar = _interopRequireDefault(require("./query-bar/TableToolBar"));
var _TableFilterBar = _interopRequireDefault(require("./query-bar/TableFilterBar"));
var _TableAdvancedQueryBar = _interopRequireDefault(require("./query-bar/TableAdvancedQueryBar"));
var _TableProfessionalBar = _interopRequireDefault(require("./query-bar/TableProfessionalBar"));
var _TableComboBar = _interopRequireDefault(require("./query-bar/TableComboBar"));
var _TableDynamicFilterBar = _interopRequireDefault(require("./query-bar/TableDynamicFilterBar"));
var _FilterSelect = _interopRequireDefault(require("./query-bar/FilterSelect"));
var _utils = require("./utils");
var _TableBody = _interopRequireDefault(require("./TableBody"));
var _VirtualWrapper = _interopRequireDefault(require("./VirtualWrapper"));
var _SelectionTips = _interopRequireDefault(require("./SelectionTips"));
var _enum2 = require("../data-set/enum");
var _enum3 = require("../core/enum");
var _StickyShadow = _interopRequireDefault(require("./StickyShadow"));
var _utils2 = require("../data-set/utils");
var _mergeProps = _interopRequireDefault(require("../_util/mergeProps"));
var _ErrorBar = _interopRequireDefault(require("./ErrorBar"));
var _TableSibling = _interopRequireDefault(require("./TableSibling"));
var _message = _interopRequireDefault(require("../message"));
var _ClipboardBar = _interopRequireDefault(require("./ClipboardBar"));
var _localeContext = require("../locale-context");
var _instance; // 构造一个单例table来防止body下不能有table元素的报错
var instance = function instance(wrapperClassName, prefixCls) {
// Using a table as the portal so that we do not get react
// warnings when mounting a tr element
var _tableContain = function _tableContain() {
var table = document.createElement('table');
if (wrapperClassName) {
table.className = wrapperClassName;
}
var thead = document.createElement('thead');
thead.className = "".concat(prefixCls, "-thead");
table.appendChild(thead);
var headtr = document.createElement('tr');
thead.appendChild(headtr);
var tbody = document.createElement('tbody');
tbody.className = "".concat(prefixCls, "-tbody");
table.appendChild(tbody);
if (!document.body) {
throw new Error('document.body required a body to append');
}
document.body.appendChild(table);
return {
tbody: tbody,
headtr: headtr
};
};
if (_instance) {
return _instance;
}
return _instance = _tableContain();
};
exports.instance = instance;
var Table = /*#__PURE__*/function (_DataSetComponent) {
(0, _inherits2["default"])(Table, _DataSetComponent);
var _super = (0, _createSuper2["default"])(Table);
function Table() {
var _this;
(0, _classCallCheck2["default"])(this, Table);
_this = _super.apply(this, arguments);
_this.tableStore = new _TableStore["default"]((0, _assertThisInitialized2["default"])(_this));
_this.wrapperWidth = [];
return _this;
}
(0, _createClass2["default"])(Table, [{
key: "currentRow",
get: function get() {
var prefixCls = this.prefixCls,
element = this.element;
return element ? element.querySelector(".".concat(prefixCls, "-row-current")) : null;
}
}, {
key: "firstRow",
get: function get() {
var prefixCls = this.prefixCls,
element = this.element;
return element ? element.querySelector(".".concat(prefixCls, "-row:first-child")) : null;
}
}, {
key: "lastRow",
get: function get() {
var prefixCls = this.prefixCls,
element = this.element;
return element ? element.querySelector(".".concat(prefixCls, "-row:last-child")) : null;
}
}, {
key: "saveResizeRef",
value: function saveResizeRef(node) {
this.resizeLine = node;
}
}, {
key: "saveContentRef",
value: function saveContentRef(node) {
this.tableContentWrap = node;
}
}, {
key: "saveRangeBorderRef",
value: function saveRangeBorderRef(node) {
this.rangeBorder = node;
}
}, {
key: "useFocusedClassName",
value: function useFocusedClassName() {
return false;
}
}, {
key: "setCode",
value: function setCode(props) {
var customizedCode = props.customizedCode;
if (customizedCode) {
this.code = customizedCode;
} else {
(0, _get2["default"])((0, _getPrototypeOf2["default"])(Table.prototype), "setCode", this).call(this, props);
}
}
}, {
key: "handleResize",
value: function handleResize(width) {
var element = this.element,
tableStore = this.tableStore,
wrapperWidth = this.wrapperWidth;
if (width !== undefined) {
var duplicate = wrapperWidth.includes(width);
wrapperWidth.unshift(width);
window.clearTimeout(this.wrapperWidthTimer);
this.wrapperWidthTimer = window.setTimeout(function () {
wrapperWidth.pop();
}, 500);
if (wrapperWidth.length > 2) {
wrapperWidth.pop();
}
if (duplicate) {
return;
}
}
if (element && !element.offsetParent) {
tableStore.styledHidden = true;
} else if (!tableStore.hidden) {
this.syncSizeInFrame(width);
} else {
tableStore.styledHidden = false;
}
}
}, {
key: "handleWindowResize",
value: function handleWindowResize() {
this.handleResize();
}
}, {
key: "clearClipboard",
value: function clearClipboard() {
var tableStore = this.tableStore;
if (tableStore.startChooseCell && tableStore.endChooseCell && this.rangeBorder) {
this.rangeBorder.style.display = 'none';
(0, _mobx.runInAction)(function () {
tableStore.startChooseCell = null;
tableStore.endChooseCell = null;
});
}
}
}, {
key: "handleDataSetLoad",
value: function handleDataSetLoad() {
var tableStore = this.tableStore;
if (tableStore.performanceEnabled) {
tableStore.performanceOn = true;
}
this.setScrollTop(0);
this.initDefaultExpandedRows();
this.clearClipboard();
}
}, {
key: "handleDataSetCreate",
value: function handleDataSetCreate(_ref) {
var record = _ref.record,
dataSet = _ref.dataSet;
var tableStore = this.tableStore;
if (tableStore.inlineEdit) {
if (tableStore.currentEditRecord) {
tableStore.currentEditRecord.reset();
dataSet.remove(record);
} else {
tableStore.currentEditRecord = record;
}
}
this.clearClipboard();
}
}, {
key: "handleDataSetReset",
value: function handleDataSetReset(_ref2) {
var record = _ref2.record,
dataSet = _ref2.dataSet;
if (record) {
var errors = dataSet.getAllValidationErrors();
this.bubbleValidationReport(errors.dataSet.length > 0 || errors.records.length > 0);
} else {
this.bubbleValidationReport(false);
}
this.clearClipboard();
}
}, {
key: "handleDataSetRemove",
value: function handleDataSetRemove(_ref3) {
var records = _ref3.records,
dataSet = _ref3.dataSet;
if (records) {
var errors = dataSet.getAllValidationErrors();
this.bubbleValidationReport(errors.dataSet.length > 0 || errors.records.length > 0);
}
this.clearClipboard();
}
}, {
key: "handleDataSetValidateSelf",
value: function handleDataSetValidateSelf(props) {
var dataSet = props.dataSet;
var errors = dataSet.getAllValidationErrors();
this.bubbleValidationReport(errors.dataSet.length > 0 || errors.records.length > 0);
}
}, {
key: "handleDataSetValidate",
value: function handleDataSetValidate(props) {
var valid = props.valid,
dataSet = props.dataSet,
validationErrors = props.errors,
noLocate = props.noLocate;
var autoValidationLocate = this.props.autoValidationLocate;
var errors = dataSet.getAllValidationErrors();
this.bubbleValidationReport(errors.dataSet.length > 0 || errors.records.length > 0);
if (autoValidationLocate !== false && !noLocate && !valid) {
var tableStore = this.tableStore;
var _validationErrors = (0, _slicedToArray2["default"])(validationErrors, 1),
firstInvalidRecord = _validationErrors[0];
if (firstInvalidRecord) {
var _errors = firstInvalidRecord.errors,
record = firstInvalidRecord.record;
if (_errors.length) {
if (!tableStore.showCachedSelection) {
if (dataSet.cachedRecords.includes(record)) {
(0, _mobx.runInAction)(function () {
tableStore.showCachedSelection = true;
});
}
}
var _errors2 = (0, _slicedToArray2["default"])(_errors, 1),
name = _errors2[0].field.name;
if (tableStore.virtual && !(0, _utils.findRow)(tableStore, record)) {
var tableBodyWrap = this.tableBodyWrap;
if (tableBodyWrap) {
var rowMetaData = tableStore.rowMetaData;
if (rowMetaData) {
var metaData = rowMetaData.find(function (m) {
return m.record === record;
});
if (metaData) {
tableBodyWrap.scrollTop = metaData.offset;
}
} else {
tableBodyWrap.scrollTop = record.index * tableStore.virtualRowHeight;
}
}
}
(0, _raf["default"])(function () {
var cell = (0, _utils.findCell)(tableStore, name, undefined, record);
if (cell) {
cell.focus();
}
});
}
}
}
}
}, {
key: "handleKeyDown",
value: function handleKeyDown(e) {
var tableStore = this.tableStore,
clipboard = this.props.clipboard;
var keyboard = tableStore.keyboard;
var ctrlKey = e.ctrlKey || e.metaKey;
if (!tableStore.editing) {
try {
var dataSet = this.props.dataSet;
var altKey = e.altKey;
var shiftKey = e.shiftKey;
switch (e.keyCode) {
case _KeyCode["default"].UP:
if (shiftKey && keyboard) {
this.handleKeyDownUpShift(e);
} else {
this.handleKeyDownUp(e);
}
break;
case _KeyCode["default"].DOWN:
if (shiftKey && keyboard) {
this.handleKeyDownDownShift(e);
} else {
this.handleKeyDownDown(e);
}
break;
case _KeyCode["default"].RIGHT:
this.handleKeyDownRight(e);
break;
case _KeyCode["default"].LEFT:
this.handleKeyDownLeft(e);
break;
case _KeyCode["default"].PAGE_UP:
e.preventDefault();
dataSet.prePage();
break;
case _KeyCode["default"].PAGE_DOWN:
e.preventDefault();
dataSet.nextPage();
break;
case _KeyCode["default"].HOME:
this.handleKeyDownHome(e);
break;
case _KeyCode["default"].END:
this.handleKeyDownEnd(e);
break;
case _KeyCode["default"].S:
if (ctrlKey === true && keyboard) this.handleKeyDownCTRLS(e);
break;
case _KeyCode["default"].N:
if (altKey === true && keyboard) this.handleKeyDownCTRLN(e);
break;
case _KeyCode["default"].D:
if (ctrlKey === true && keyboard) this.handleKeyDownCTRLD(e);
break;
case _KeyCode["default"].DELETE:
if (altKey === true && keyboard) this.handleKeyDownCTRLDELETE(e);
break;
default:
}
} catch (error) {
(0, _warning["default"])(false, error.message);
}
}
if (clipboard && clipboard.copy && ctrlKey && e.keyCode === _KeyCode["default"].C) {
this.handleCopyChoose();
}
if (clipboard && clipboard.paste && ctrlKey && e.keyCode === _KeyCode["default"].V) {
this.handlePasteChoose();
}
var _this$props$onKeyDown = this.props.onKeyDown,
onKeyDown = _this$props$onKeyDown === void 0 ? _noop["default"] : _this$props$onKeyDown;
onKeyDown(e);
}
}, {
key: "focusRow",
value: function focusRow(row) {
if (row) {
var index = row.dataset.index;
if (index) {
var dataSet = this.props.dataSet;
var record = dataSet.findRecordById(index);
if (record) {
dataSet.current = record;
return record;
}
}
}
}
}, {
key: "handleKeyDownHome",
value: function () {
var _handleKeyDownHome = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(e) {
var dataSet;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
e.preventDefault();
dataSet = this.props.dataSet;
if (this.tableStore.isTree) {
_context.next = 5;
break;
}
_context.next = 5;
return dataSet.first();
case 5:
this.focusRow(this.firstRow);
case 6:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function handleKeyDownHome(_x) {
return _handleKeyDownHome.apply(this, arguments);
}
return handleKeyDownHome;
}()
}, {
key: "handleKeyDownEnd",
value: function () {
var _handleKeyDownEnd = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(e) {
var dataSet;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
e.preventDefault();
dataSet = this.props.dataSet;
if (this.tableStore.isTree) {
_context2.next = 5;
break;
}
_context2.next = 5;
return dataSet.last();
case 5:
this.focusRow(this.lastRow);
case 6:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function handleKeyDownEnd(_x2) {
return _handleKeyDownEnd.apply(this, arguments);
}
return handleKeyDownEnd;
}()
}, {
key: "handleKeyDownCTRLS",
value: function () {
var _handleKeyDownCTRLS = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(e) {
var dataSet;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
e.preventDefault();
dataSet = this.tableStore.dataSet;
dataSet.submit();
case 3:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function handleKeyDownCTRLS(_x3) {
return _handleKeyDownCTRLS.apply(this, arguments);
}
return handleKeyDownCTRLS;
}()
}, {
key: "handleKeyDownCTRLN",
value: function () {
var _handleKeyDownCTRLN = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(e) {
var _this$tableStore, dataSet, editors;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_this$tableStore = this.tableStore, dataSet = _this$tableStore.dataSet, editors = _this$tableStore.editors;
if (editors.size) {
e.preventDefault();
dataSet.create({}, 0);
}
case 2:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function handleKeyDownCTRLN(_x4) {
return _handleKeyDownCTRLN.apply(this, arguments);
}
return handleKeyDownCTRLN;
}() // TODO: To be optimized
}, {
key: "handleKeyDownCTRLD",
value: function () {
var _handleKeyDownCTRLD = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(e) {
var currentRow, tableStore, dataSet, currentElementSibling, previousElementSibling, index, currentIndex, record, currentRecord, cloneRecodData, dealCloneRecodData, editeColumn, uniqueFieldNames;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
e.preventDefault();
currentRow = this.currentRow, tableStore = this.tableStore;
dataSet = tableStore.dataSet;
currentElementSibling = null; // to justice it can be change or standards compliant
if ((0, _utils.isCanEdictingRow)(currentRow)) {
currentElementSibling = currentRow;
}
if (currentElementSibling && tableStore && dataSet) {
previousElementSibling = (0, _utils.findIndexedSibling)(currentElementSibling, -1);
if (previousElementSibling) {
index = previousElementSibling.dataset.index;
currentIndex = currentElementSibling.dataset.index;
if (index && currentIndex) {
record = dataSet.findRecordById(index);
currentRecord = dataSet.findRecordById(currentIndex); // exculde the primery key and merge has columns which has edictor
if (record && currentRecord && tableStore) {
cloneRecodData = record.clone().toData() || {};
dealCloneRecodData = {};
editeColumn = tableStore.columns.filter(function (column) {
return !!column.editor;
}).reduce(function (accumulator, nowValue) {
return [].concat((0, _toConsumableArray2["default"])(accumulator), [nowValue.name]);
}, []).filter(function (v) {
return !(v === null || v === undefined || v === '');
});
if (editeColumn && editeColumn.length > 0) {
editeColumn.forEach(function (element) {
if (element) {
dealCloneRecodData[element] = cloneRecodData[element];
}
});
} // remove the unique name of fields
uniqueFieldNames = (0, _utils2.getUniqueFieldNames)(dataSet);
if (uniqueFieldNames && uniqueFieldNames.length > 0) {
uniqueFieldNames.forEach(function (element) {
if (element) {
delete dealCloneRecodData[element];
}
});
}
currentRecord.set(dealCloneRecodData);
}
}
}
}
case 6:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
function handleKeyDownCTRLD(_x5) {
return _handleKeyDownCTRLD.apply(this, arguments);
}
return handleKeyDownCTRLD;
}()
}, {
key: "handleKeyDownCTRLDELETE",
value: function () {
var _handleKeyDownCTRLDELETE = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(e) {
var dataSet;
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
e.preventDefault();
dataSet = this.tableStore.dataSet;
dataSet["delete"](dataSet.selected);
case 3:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}));
function handleKeyDownCTRLDELETE(_x6) {
return _handleKeyDownCTRLDELETE.apply(this, arguments);
}
return handleKeyDownCTRLDELETE;
}()
}, {
key: "handleKeyDownUp",
value: function () {
var _handleKeyDownUp = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(e) {
var currentRow, returnRecod, previousElementSibling, dataSet;
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
e.preventDefault();
currentRow = this.currentRow;
if (!currentRow) {
_context7.next = 14;
break;
}
previousElementSibling = (0, _utils.findIndexedSibling)(currentRow, -1);
if (!previousElementSibling) {
_context7.next = 8;
break;
}
returnRecod = this.focusRow(previousElementSibling);
_context7.next = 12;
break;
case 8:
dataSet = this.props.dataSet;
_context7.next = 11;
return dataSet.prePage();
case 11:
returnRecod = this.focusRow(this.lastRow);
case 12:
if (!returnRecod) {
_context7.next = 14;
break;
}
return _context7.abrupt("return", Promise.resolve(returnRecod));
case 14:
return _context7.abrupt("return", Promise.reject());
case 15:
case "end":
return _context7.stop();
}
}
}, _callee7, this);
}));
function handleKeyDownUp(_x7) {
return _handleKeyDownUp.apply(this, arguments);
}
return handleKeyDownUp;
}()
}, {
key: "handleKeyDownDown",
value: function () {
var _handleKeyDownDown = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(e) {
var currentRow, returnRecod, nextElementSibling, dataSet;
return _regenerator["default"].wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
e.preventDefault();
currentRow = this.currentRow;
if (!currentRow) {
_context8.next = 14;
break;
}
nextElementSibling = (0, _utils.findIndexedSibling)(currentRow, 1);
if (!nextElementSibling) {
_context8.next = 8;
break;
}
returnRecod = this.focusRow(nextElementSibling);
_context8.next = 12;
break;
case 8:
dataSet = this.props.dataSet;
_context8.next = 11;
return dataSet.nextPage();
case 11:
returnRecod = this.focusRow(this.firstRow);
case 12:
if (!returnRecod) {
_context8.next = 14;
break;
}
return _context8.abrupt("return", Promise.resolve(returnRecod));
case 14:
return _context8.abrupt("return", Promise.reject());
case 15:
case "end":
return _context8.stop();
}
}
}, _callee8, this);
}));
function handleKeyDownDown(_x8) {
return _handleKeyDownDown.apply(this, arguments);
}
return handleKeyDownDown;
}()
}, {
key: "handleKeyDownDownShift",
value: function () {
var _handleKeyDownDownShift = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(e) {
var dataSet, currentRow, index, record, currentRecord;
return _regenerator["default"].wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
e.preventDefault();
dataSet = this.tableStore.dataSet;
currentRow = this.currentRow;
if (!(currentRow && (0, _utils.isCanEdictingRow)(currentRow))) {
_context9.next = 22;
break;
}
index = currentRow.dataset.index;
if (!index) {
_context9.next = 20;
break;
}
record = dataSet.findRecordById(index);
if (!record) {
_context9.next = 20;
break;
}
if (record.selectable) {
_context9.next = 12;
break;
}
this.handleKeyDownDown(e);
_context9.next = 20;
break;
case 12:
if (record.isSelected) {
_context9.next = 16;
break;
}
dataSet.select(record);
_context9.next = 20;
break;
case 16:
_context9.next = 18;
return this.handleKeyDownDown(e);
case 18:
currentRecord = _context9.sent;
if (currentRecord && dataSet) {
dataSet.select(currentRecord);
}
case 20:
_context9.next = 23;
break;
case 22:
this.handleKeyDownDown(e);
case 23:
case "end":
return _context9.stop();
}
}
}, _callee9, this);
}));
function handleKeyDownDownShift(_x9) {
return _handleKeyDownDownShift.apply(this, arguments);
}
return handleKeyDownDownShift;
}()
}, {
key: "handleKeyDownUpShift",
value: function () {
var _handleKeyDownUpShift = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10(e) {
var dataSet, currentRow, index, record, currentRecord;
return _regenerator["default"].wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
e.preventDefault();
dataSet = this.tableStore.dataSet;
currentRow = this.currentRow;
if (!(currentRow && (0, _utils.isCanEdictingRow)(currentRow))) {
_context10.next = 22;
break;
}
index = currentRow.dataset.index;
if (!index) {
_context10.next = 20;
break;
}
record = dataSet.findRecordById(index);
if (!record) {
_context10.next = 20;
break;
}
if (record.selectable) {
_context10.next = 12;
break;
}
this.handleKeyDownUp(e);
_context10.next = 20;
break;
case 12:
if (record.isSelected) {
_context10.next = 16;
break;
}
dataSet.select(record);
_context10.next = 20;
break;
case 16:
_context10.next = 18;
return this.handleKeyDownUp(e);
case 18:
currentRecord = _context10.sent;
if (currentRecord) {
dataSet.select(currentRecord);
}
case 20:
_context10.next = 23;
break;
case 22:
this.handleKeyDownUp(e);
case 23:
case "end":
return _context10.stop();
}
}
}, _callee10, this);
}));
function handleKeyDownUpShift(_x10) {
return _handleKeyDownUpShift.apply(this, arguments);
}
return handleKeyDownUpShift;
}()
}, {
key: "handleKeyDownRight",
value: function handleKeyDownRight(e) {
var tableStore = this.tableStore,
_this$props = this.props,
expandedRowRenderer = _this$props.expandedRowRenderer,
dataSet = _this$props.dataSet;
if (tableStore.isTree || expandedRowRenderer) {
var current = dataSet.current;
if (current) {
e.preventDefault();
tableStore.setRowExpanded(current, true);
}
}
}
}, {
key: "handleKeyDownLeft",
value: function handleKeyDownLeft(e) {
var tableStore = this.tableStore,
_this$props2 = this.props,
expandedRowRenderer = _this$props2.expandedRowRenderer,
dataSet = _this$props2.dataSet;
if (tableStore.isTree || expandedRowRenderer) {
var current = dataSet.current;
if (current) {
e.preventDefault();
tableStore.setRowExpanded(current, false);
}
}
}
}, {
key: "handleCopyChoose",
value: function handleCopyChoose() {
var _this2 = this;
var _this$tableStore2 = this.tableStore,
columnGroups = _this$tableStore2.columnGroups,
startChooseCell = _this$tableStore2.startChooseCell,
endChooseCell = _this$tableStore2.endChooseCell,
clipboard = _this$tableStore2.clipboard,
isCopyPristine = _this$tableStore2.isCopyPristine;
var columns = columnGroups.leafs;
if (startChooseCell && endChooseCell) {
if (this.dataSet) {
var minRowIndex = Math.min(startChooseCell.rowIndex, endChooseCell.rowIndex);
var maxRowIndex = Math.max(startChooseCell.rowIndex, endChooseCell.rowIndex);
var minColIndex = Math.min(startChooseCell.colIndex, endChooseCell.colIndex);
var maxColIndex = Math.max(startChooseCell.colIndex, endChooseCell.colIndex);
var copyData = [];
var _loop = function _loop(i) {
var record = _this2.dataSet.records[i];
for (var j = minColIndex; j <= maxColIndex; j++) {
var recordData = void 0;
var fieldName = columns[j].column.name || String(columns[j].column.key || '');
if (fieldName === _TableStore.SELECTION_KEY) {
recordData = String(record.isSelected);
} else {
(function () {
var field = _this2.dataSet.getField(fieldName);
if (field) {
var fieldType = field && field.get('type', record);
recordData = record.get(fieldName);
if (clipboard && !isCopyPristine) {
if (field.getLookup(record) || field.get('options', record) || field.get('lovCode', record)) {
// 处理 lookup、lov
recordData = (0, _mobx.isArrayLike)(recordData) ? recordData.map(function (x) {
return field.getText(x, undefined, record);
}).join(',') : field.getText(recordData);
}
if (field && fieldType === _enum2.FieldType["boolean"]) {
var text = field.getText(recordData);
recordData = (0, _isString["default"])(text) ? text : text ? (0, _localeContext.$l)('Table', 'query_option_yes') : (0, _localeContext.$l)('Table', 'query_option_no');
}
if (columns[j] && columns[j].column.renderer) {
var getTBodyElement = startChooseCell.target.parentElement.parentElement;
var td = getTBodyElement === null || getTBodyElement === void 0 ? void 0 : getTBodyElement.querySelectorAll('tr')[i].querySelectorAll('td')[j];
recordData = td ? td.innerText : null;
}
} else if (fieldType === _enum2.FieldType.object) {
recordData = JSON.stringify(recordData);
} // 去掉换行符
if ((0, _isString["default"])(recordData)) {
recordData = recordData.replace(/[\r\n]/g, "");
}
}
})();
}
recordData = (0, _isNil["default"])(recordData) ? '' : recordData;
copyData.push(j === maxColIndex ? "".concat(recordData, " \t\n") : "".concat(recordData, " \t"));
}
};
for (var i = minRowIndex; i < maxRowIndex + 1; i++) {
_loop(i);
}
(0, _utils.copyToClipboard)().writeText(copyData.join('')).then(function () {
_message["default"].success((0, _localeContext.$l)('Table', isCopyPristine ? 'copy_pristine_success' : 'copy_display_success'));
});
}
}
}
}, {
key: "handlePasteChoose",
value: function () {
var _handlePasteChoose = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
var _this3 = this;
var _this$tableStore3, node, columnGroups, currentEditorName, currentEditRecord, editors, inlineEdit, colIndex, columns, keys, _loop2, i, _ret, clipText, _this$dataSet, currentIndex, length, batchRecord, rows, _i, editorRowIndex, cols, _loop3, j, _ret2;
return _regenerator["default"].wrap(function _callee12$(_context13) {
while (1) {
switch (_context13.prev = _context13.next) {
case 0:
_this$tableStore3 = this.tableStore, node = _this$tableStore3.node, columnGroups = _this$tableStore3.columnGroups, currentEditorName = _this$tableStore3.currentEditorName, currentEditRecord = _this$tableStore3.currentEditRecord, editors = _this$tableStore3.editors, inlineEdit = _this$tableStore3.inlineEdit;
if (!(!currentEditorName && !currentEditRecord)) {
_context13.next = 3;
break;
}
return _context13.abrupt("return");
case 3:
columns = columnGroups.leafs;
if (!currentEditorName) {
_context13.next = 8;
break;
}
colIndex = columns.findIndex(function (x) {
return x.column.name === currentEditorName;
});
_context13.next = 19;
break;
case 8:
if (!currentEditRecord) {
_context13.next = 19;
break;
}
keys = Array.from(editors.keys());
_loop2 = function _loop2(i) {
var key = keys[i];
var editorItem = editors.get(key);
if (editors.get(key)) {
var cellIsFocus = editorItem && editorItem.editor && editorItem.editor.isFocus;
if (cellIsFocus) {
colIndex = columns.findIndex(function (x) {
return x.column.name === key;
});
return "break";
}
}
};
i = 0;
case 12:
if (!(i < keys.length)) {
_context13.next = 19;
break;
}
_ret = _loop2(i);
if (!(_ret === "break")) {
_context13.next = 16;
break;
}
return _context13.abrupt("break", 19);
case 16:
i++;
_context13.next = 12;
break;
case 19:
// 先失焦
this.tableStore.blurEditor();
if (this.dataSet) {
this.dataSet.status = _enum2.DataSetStatus.loading;
}
_context13.next = 23;
return (0, _utils.pasteFromClipboard)(node.element);
case 23:
clipText = _context13.sent;
if (!this.dataSet) {
_context13.next = 57;
break;
}
_this$dataSet = this.dataSet, currentIndex = _this$dataSet.currentIndex, length = _this$dataSet.length;
batchRecord = [];
rows = clipText.split('\n').filter(function (line) {
return line.trim() !== '';
});
_context13.prev = 28;
_i = 0;
case 30:
if (!(_i < rows.length)) {
_context13.next = 49;
break;
}
if (!(currentEditRecord && _i > 0)) {
_context13.next = 33;
break;
}
return _context13.abrupt("break", 49);
case 33:
editorRowIndex = !currentEditRecord ? _i + currentIndex : currentEditRecord.index;
if (editorRowIndex >= length) {
this.dataSet.create({}, editorRowIndex + 1);
}
cols = rows[_i].split('\t').filter(function (x) {
return !!x;
});
_loop3 = /*#__PURE__*/_regenerator["default"].mark(function _loop3(j) {
var text, record, column, fieldName, field, fieldType, optionDs, jsonText, textField, promises, results, obj, data, current, optionData, _textField, valueField, option, columnRenderer;
return _regenerator["default"].wrap(function _loop3$(_context12) {
while (1) {
switch (_context12.prev = _context12.next) {
case 0:
text = cols[j];
record = _this3.dataSet.get(editorRowIndex);
column = columns[colIndex + j].column;
fieldName = column.name;
field = _this3.dataSet.getField(fieldName); // 非编辑项则跳过赋值
if (!(!column.editor || !field || field.disabled || field.readOnly || !_this3.dataSet)) {
_context12.next = 7;
break;
}
return _context12.abrupt("return", "break");
case 7:
fieldType = field.type;
optionDs = field.getOptions();
jsonText = (0, _utils.isJsonString)(text);
if (fieldType !== _enum2.FieldType.object || !jsonText) {
text = String(text).trim();
if (text.includes(',')) {
// 默认以英文逗号分割
text = text.split(',');
} else if (text.includes(',')) {
// 兼容中文逗号
text = text.split(',');
}
}
_context12.t0 = fieldType;
_context12.next = _context12.t0 === _enum2.FieldType["boolean"] ? 14 : _context12.t0 === _enum2.FieldType.number ? 16 : _context12.t0 === _enum2.FieldType.date ? 18 : _context12.t0 === _enum2.FieldType.dateTime ? 18 : _context12.t0 === _enum2.FieldType.month ? 18 : _context12.t0 === _enum2.FieldType.year ? 18 : _context12.t0 === _enum2.FieldType.week ? 20 : _context12.t0 === _enum2.FieldType.time ? 22 : _context12.t0 === _enum2.FieldType.object ? 24 : 45;
break;
case 14:
text = String(text).toLowerCase() === 'true' || String(text) === "1" || String(text) === "是";
return _context12.abrupt("break", 47);
case 16:
if ((0, _mobx.isArrayLike)(text)) {
text = text.map(function (item) {
return Number(item);
});
} else {
text = Number(text);
}
return _context12.abrupt("break", 47);
case 18:
if ((0, _mobx.isArrayLike)(text)) {
text = text.map(function (item) {
return (0, _moment["default"])(item);
});
} else {
text = (0, _moment["default"])(text);
}
return _context12.abrupt("break", 47);
case 20:
if ((0, _mobx.isArrayLike)(text)) {
text = text.map(function (item) {
return (0, _moment["default"])((0, _utils.getDateByISOWeek)(item));
});
} else {
text = (0, _moment["default"])((0, _utils.getDateByISOWeek)(text));
}
return _context12.abrupt("break", 47);
case 22:
if ((0, _mobx.isArrayLike)(text)) {
text = text.map(function (item) {
return (0, _moment["default"])("".concat((0, _moment["default"])().format('YYYY-MM-DD'), " ").concat(item));
});
} else {
text = (0, _moment["default"])("".concat((0, _moment["default"])().format('YYYY-MM-DD'), " ").concat(text));
}
return _context12.abrupt("break", 47);
case 24:
if (!jsonText) {
_context12.next = 28;
break;
}
text = (0, _attempt["default"])(JSON.parse, text);
_context12.next = 44;
break;
case 28:
if (!optionDs) {
_context12.next = 44;
break;
}
textField = field.get('textField');
if (!(0, _mobx.isArrayLike)(text)) {
_context12.next = 38;
break;
}
promises = text.map( /*#__PURE__*/function () {
var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11(t) {
var obj, data, current;
return _regenerator["default"].wrap(function _callee11$(_context11) {
while (1) {
switch (_context11.prev = _context11.next) {
case 0:
obj = (0, _defineProperty2["default"])({}, textField, t.trim());
_context11.next = 3;
return optionDs.query(1, obj);
case 3:
data = _context11.sent;
if (_this3.dataSet && data) {
current = data[_this3.dataSet.dataKey][0];
text = current || null;
}
return _context11.abrupt("return", text);
case 6:
case "end":
return _context11.stop();
}
}
}, _callee11);