@kdcloudjs/table 1.1.6 → 1.2.0-canary.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * @kdcloudjs/table v1.1.5
3
+ * @kdcloudjs/table v1.2.0-canary.1
4
4
  *
5
5
  * Copyright 2020-present, Kingdee, Inc.
6
6
  * All rights reserved.
@@ -8029,6 +8029,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
8029
8029
 
8030
8030
 
8031
8031
 
8032
+ var fullRowsSetKey = 'fullRowsSetKey';
8033
+ var allEnableKeys = 'allEnableKeys';
8034
+ var selectValueSetKey = 'selectValueSetKey';
8032
8035
  function multiSelect() {
8033
8036
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8034
8037
  return function multiSelectStep(pipeline) {
@@ -8059,10 +8062,9 @@ function multiSelect() {
8059
8062
  action: action
8060
8063
  });
8061
8064
  };
8062
-
8063
- var dataSource = pipeline.getDataSource();
8064
8065
  /** dataSource 中包含的所有 keys */
8065
8066
 
8067
+
8066
8068
  var fullKeySet = new Set();
8067
8069
  /** 所有有效的 keys(disable 状态为 false) */
8068
8070
 
@@ -8071,7 +8073,7 @@ function multiSelect() {
8071
8073
  var isAllChecked = set.size !== 0; // 当前不存在选中则默认为false
8072
8074
 
8073
8075
  var isAnyChecked = false;
8074
- var flatDataSource = Object(_utils__WEBPACK_IMPORTED_MODULE_17__["collectNodes"])(dataSource);
8076
+ var flatDataSource = Object(_utils__WEBPACK_IMPORTED_MODULE_17__["collectNodes"])(pipeline.getDataSource());
8075
8077
  flatDataSource.forEach(function (row, rowIndex) {
8076
8078
  var rowKey = _internals__WEBPACK_IMPORTED_MODULE_15__["internals"].safeGetRowKey(primaryKey, row, rowIndex);
8077
8079
  fullKeySet.add(rowKey); // 在 allKeys 中排除被禁用的 key
@@ -8099,6 +8101,8 @@ function multiSelect() {
8099
8101
  checked: isAllChecked,
8100
8102
  indeterminate: !isAllChecked && isAnyChecked,
8101
8103
  onChange: function onChange(_) {
8104
+ var allKeys = pipeline.getFeatureOptions(allEnableKeys);
8105
+
8102
8106
  if (isAllChecked) {
8103
8107
  _onChange(_utils_others__WEBPACK_IMPORTED_MODULE_16__["arrayUtils"].diff(value, allKeys), '', allKeys, 'uncheck-all');
8104
8108
  } else {
@@ -8119,9 +8123,11 @@ function multiSelect() {
8119
8123
  var rowKey = _internals__WEBPACK_IMPORTED_MODULE_15__["internals"].safeGetRowKey(primaryKey, row, rowIndex);
8120
8124
  var checkboxCellProps = {};
8121
8125
  var preCellProps = (_opts$checkboxColumn = opts.checkboxColumn) === null || _opts$checkboxColumn === void 0 ? void 0 : (_opts$checkboxColumn$ = _opts$checkboxColumn.getCellProps) === null || _opts$checkboxColumn$ === void 0 ? void 0 : _opts$checkboxColumn$.call(_opts$checkboxColumn, value, row, rowIndex);
8126
+ var fullRowsSet = pipeline.getFeatureOptions(fullRowsSetKey) || new Set();
8127
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new Set();
8122
8128
 
8123
- if (fullKeySet.has(rowKey) && clickArea === 'cell') {
8124
- var prevChecked = set.has(rowKey);
8129
+ if (fullRowsSet.has(rowKey) && clickArea === 'cell') {
8130
+ var prevChecked = selectValueSet.has(rowKey);
8125
8131
  var disabled = isDisabled(row, rowIndex);
8126
8132
  checkboxCellProps = {
8127
8133
  style: {
@@ -8145,7 +8151,8 @@ function multiSelect() {
8145
8151
  }
8146
8152
 
8147
8153
  var key = _internals__WEBPACK_IMPORTED_MODULE_15__["internals"].safeGetRowKey(primaryKey, row, rowIndex);
8148
- var checked = set.has(key);
8154
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new Set();
8155
+ var checked = selectValueSet.has(key);
8149
8156
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_14___default.a.createElement(Checkbox, {
8150
8157
  checked: checked,
8151
8158
  disabled: isDisabled(row, rowIndex),
@@ -8183,8 +8190,9 @@ function multiSelect() {
8183
8190
 
8184
8191
  pipeline.appendRowPropsGetter(function (row, rowIndex) {
8185
8192
  var rowKey = _internals__WEBPACK_IMPORTED_MODULE_15__["internals"].safeGetRowKey(primaryKey, row, rowIndex);
8193
+ var fullRowsSet = pipeline.getFeatureOptions(fullRowsSetKey) || new Set();
8186
8194
 
8187
- if (!fullKeySet.has(rowKey)) {
8195
+ if (!fullRowsSet.has(rowKey)) {
8188
8196
  // rowKey 不在 fullKeySet 中说明这一行是在 multiSelect 之后才生成的,multiSelect 不对之后生成的行进行处理
8189
8197
  return;
8190
8198
  }
@@ -8192,7 +8200,8 @@ function multiSelect() {
8192
8200
  var style = {};
8193
8201
  var className;
8194
8202
  var onClick;
8195
- var checked = set.has(rowKey);
8203
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new Set();
8204
+ var checked = selectValueSet.has(rowKey);
8196
8205
 
8197
8206
  if (opts.highlightRowWhenSelected && checked) {
8198
8207
  className = 'highlight';
@@ -8219,22 +8228,32 @@ function multiSelect() {
8219
8228
  style: style,
8220
8229
  onClick: onClick
8221
8230
  };
8222
- });
8231
+ }); // 只保留一份到pipeline, 避免行数据过多时内容被握住
8232
+
8233
+ pipeline.setFeatureOptions(fullRowsSetKey, fullKeySet);
8234
+ pipeline.setFeatureOptions(allEnableKeys, allKeys);
8235
+ pipeline.setFeatureOptions(selectValueSetKey, set);
8236
+ fullKeySet = null;
8237
+ allKeys = null;
8238
+ set = null;
8223
8239
  return pipeline;
8224
8240
 
8225
8241
  function onCheckboxChange(prevChecked, key, batch) {
8226
8242
  var batchKeys = [key];
8227
8243
 
8228
8244
  if (batch && lastKey) {
8229
- var lastIdx = allKeys.indexOf(lastKey);
8230
- var cntIdx = allKeys.indexOf(key);
8245
+ var _allKeys = pipeline.getFeatureOptions(allEnableKeys);
8246
+
8247
+ var lastIdx = _allKeys.indexOf(lastKey);
8248
+
8249
+ var cntIdx = _allKeys.indexOf(key);
8231
8250
 
8232
8251
  var _ref5 = lastIdx < cntIdx ? [lastIdx, cntIdx] : [cntIdx, lastIdx],
8233
8252
  _ref6 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_5___default()(_ref5, 2),
8234
8253
  start = _ref6[0],
8235
8254
  end = _ref6[1];
8236
8255
 
8237
- batchKeys = allKeys.slice(start, end + 1);
8256
+ batchKeys = _allKeys.slice(start, end + 1);
8238
8257
  }
8239
8258
 
8240
8259
  if (prevChecked) {
@@ -8252,7 +8271,7 @@ function multiSelect() {
8252
8271
  /*!***************************************************************!*\
8253
8272
  !*** ./components/table/pipeline/features/rangeSelection.tsx ***!
8254
8273
  \***************************************************************/
8255
- /*! exports provided: rangeSelectionKey, lastClickCellKey, rangeSelection */
8274
+ /*! exports provided: rangeSelectionKey, lastClickCellKey, rangeSelection, getCellRangeId */
8256
8275
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
8257
8276
 
8258
8277
  "use strict";
@@ -8260,38 +8279,40 @@ __webpack_require__.r(__webpack_exports__);
8260
8279
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rangeSelectionKey", function() { return rangeSelectionKey; });
8261
8280
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lastClickCellKey", function() { return lastClickCellKey; });
8262
8281
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rangeSelection", function() { return rangeSelection; });
8282
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCellRangeId", function() { return getCellRangeId; });
8263
8283
  /* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js");
8264
8284
  /* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_0__);
8265
8285
  /* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
8266
8286
  /* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_1__);
8267
- /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
8268
- /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_2__);
8269
- /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
8270
- /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);
8271
- /* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js");
8272
- /* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_4__);
8273
- /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
8274
- /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_5__);
8275
- /* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js");
8276
- /* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_6__);
8277
- /* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js");
8278
- /* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_7__);
8279
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
8280
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8__);
8281
- /* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.find-index.js */ "./node_modules/core-js/modules/es.array.find-index.js");
8282
- /* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_9__);
8283
- /* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js");
8284
- /* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_10__);
8285
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js");
8286
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_11__);
8287
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils */ "./components/table/utils/index.tsx");
8288
- /* harmony import */ var _utils_others__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/others */ "./components/table/utils/others.ts");
8289
- /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js");
8290
- /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js");
8291
- /* harmony import */ var _base_styles__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../base/styles */ "./components/table/base/styles.ts");
8292
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
8293
- /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_17__);
8294
-
8287
+ /* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptor.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js");
8288
+ /* harmony import */ var core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor_js__WEBPACK_IMPORTED_MODULE_2__);
8289
+ /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
8290
+ /* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__);
8291
+ /* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.object.get-own-property-descriptors.js */ "./node_modules/core-js/modules/es.object.get-own-property-descriptors.js");
8292
+ /* harmony import */ var core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_own_property_descriptors_js__WEBPACK_IMPORTED_MODULE_4__);
8293
+ /* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js");
8294
+ /* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_5__);
8295
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
8296
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6__);
8297
+ /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "./node_modules/@babel/runtime/helpers/toConsumableArray.js");
8298
+ /* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_7__);
8299
+ /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
8300
+ /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_8__);
8301
+ /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
8302
+ /* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_9__);
8303
+ /* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.find-index.js */ "./node_modules/core-js/modules/es.array.find-index.js");
8304
+ /* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_10__);
8305
+ /* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js");
8306
+ /* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_11__);
8307
+ /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js");
8308
+ /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_12__);
8309
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils */ "./components/table/utils/index.tsx");
8310
+ /* harmony import */ var _utils_others__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../utils/others */ "./components/table/utils/others.ts");
8311
+ /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js");
8312
+ /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js");
8313
+ /* harmony import */ var _base_styles__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../base/styles */ "./components/table/base/styles.ts");
8314
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
8315
+ /* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_18__);
8295
8316
 
8296
8317
 
8297
8318
 
@@ -8303,7 +8324,9 @@ __webpack_require__.r(__webpack_exports__);
8303
8324
 
8304
8325
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8305
8326
 
8306
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8327
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8328
+
8329
+
8307
8330
 
8308
8331
 
8309
8332
 
@@ -8316,9 +8339,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
8316
8339
 
8317
8340
  var rangeSelectionKey = 'rangeSelection';
8318
8341
  var lastClickCellKey = 'lastClickCell';
8342
+ var startSelectedCellRangesKey = 'startSelectedCellRanges';
8343
+ var SCROLL_OFFSET = 30;
8319
8344
  function rangeSelection(opts) {
8320
8345
  return function step(pipeline) {
8321
- var SCROLL_SIZE = 30;
8322
8346
  var tableBody = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableBody;
8323
8347
  var tableFooter = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.tableFooter;
8324
8348
  var artTable = pipeline.ref.current.domHelper && pipeline.ref.current.domHelper.artTable;
@@ -8330,14 +8354,18 @@ function rangeSelection(opts) {
8330
8354
  var columns = pipeline.getColumns();
8331
8355
  var dataSource = pipeline.getDataSource();
8332
8356
 
8333
- var rangeSelectedChange = function rangeSelectedChange(rangeSelection) {
8357
+ var rangeSelectedChange = function rangeSelectedChange(rangeSelection, isFinished) {
8334
8358
  var _opts$rangeSelectedCh;
8335
8359
 
8360
+ if (isFinished) {
8361
+ pipeline.setFeatureOptions(startSelectedCellRangesKey, rangeSelection);
8362
+ }
8363
+
8336
8364
  pipeline.setStateAtKey(rangeSelectionKey, rangeSelection);
8337
- opts === null || opts === void 0 ? void 0 : (_opts$rangeSelectedCh = opts.rangeSelectedChange) === null || _opts$rangeSelectedCh === void 0 ? void 0 : _opts$rangeSelectedCh.call(opts, rangeSelection);
8365
+ opts === null || opts === void 0 ? void 0 : (_opts$rangeSelectedCh = opts.rangeSelectedChange) === null || _opts$rangeSelectedCh === void 0 ? void 0 : _opts$rangeSelectedCh.call(opts, rangeSelection, isFinished);
8338
8366
  };
8339
8367
 
8340
- var setRangeSelection = function setRangeSelection(startDragCell, draggingCell) {
8368
+ var setRangeSelection = function setRangeSelection(startDragCell, draggingCell, isFinished) {
8341
8369
  if (!startDragCell || !draggingCell) return;
8342
8370
  var rangeColumns = getRangeColumns(startDragCell, draggingCell, columns);
8343
8371
 
@@ -8346,21 +8374,31 @@ function rangeSelection(opts) {
8346
8374
  endRow = _getRangeSelectionRow.endRow,
8347
8375
  footerRowRange = _getRangeSelectionRow.footerRowRange;
8348
8376
 
8349
- var rangeSelection = {
8377
+ var cellRange = {
8350
8378
  startRow: startRow,
8351
8379
  endRow: endRow,
8352
8380
  columns: rangeColumns,
8353
8381
  startColumn: startDragCell.column,
8354
8382
  footerRowRange: footerRowRange
8355
8383
  };
8384
+ var cellRanges = pipeline.getFeatureOptions(startSelectedCellRangesKey) ? _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_7___default()(pipeline.getFeatureOptions(startSelectedCellRangesKey)) : [];
8385
+
8386
+ if (isCellRangeSingleCell([cellRange])) {
8387
+ var singleCellRangeId = getCellRangeId(cellRange);
8388
+ cellRanges = cellRanges.filter(function (item) {
8389
+ return getCellRangeId(item) !== singleCellRangeId;
8390
+ });
8391
+ }
8392
+
8393
+ cellRanges.push(cellRange);
8356
8394
 
8357
- if (isCellRangeSingleCell(rangeSelection)) {
8358
- artTable.classList.remove(classnames__WEBPACK_IMPORTED_MODULE_17___default()(_base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].rangeSelection));
8395
+ if (isCellRangeSingleCell(cellRanges)) {
8396
+ artTable.classList.remove(classnames__WEBPACK_IMPORTED_MODULE_18___default()(_base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].rangeSelection));
8359
8397
  } else {
8360
- artTable.classList.add(classnames__WEBPACK_IMPORTED_MODULE_17___default()(_base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].rangeSelection));
8398
+ artTable.classList.add(classnames__WEBPACK_IMPORTED_MODULE_18___default()(_base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].rangeSelection));
8361
8399
  }
8362
8400
 
8363
- rangeSelectedChange(rangeSelection);
8401
+ rangeSelectedChange(cellRanges, isFinished);
8364
8402
  };
8365
8403
 
8366
8404
  var shiftKeySelect = function shiftKeySelect(event) {
@@ -8368,81 +8406,117 @@ function rangeSelection(opts) {
8368
8406
  var clickCell = getTargetCell(target, columns);
8369
8407
 
8370
8408
  if (clickCell) {
8371
- if (event.shiftKey) {
8372
- var _lastClickCell = pipeline.getFeatureOptions(lastClickCellKey);
8409
+ var _lastClickCell = pipeline.getFeatureOptions(lastClickCellKey);
8373
8410
 
8374
- if (_lastClickCell) {
8375
- setRangeSelection(_lastClickCell, clickCell);
8376
- } else {
8377
- // 第一次进来就按住shift键,这时候要记住点击的单元格
8378
- pipeline.setFeatureOptions(lastClickCellKey, clickCell);
8379
- }
8411
+ if (_lastClickCell) {
8412
+ setRangeSelection(_lastClickCell, clickCell, true);
8380
8413
  } else {
8414
+ // 第一次进来就按住shift键,这时候要记住点击的单元格
8381
8415
  pipeline.setFeatureOptions(lastClickCellKey, clickCell);
8382
- setRangeSelection(clickCell, clickCell);
8383
8416
  }
8384
8417
  }
8385
8418
  };
8386
8419
 
8387
- var onMouseDown = function onMouseDown(mouseDownEvent) {
8388
- if (mouseDownEvent.button !== 0 || !(Object(_utils__WEBPACK_IMPORTED_MODULE_12__["isElementInEventPath"])(tableBody, mouseDownEvent.nativeEvent) || Object(_utils__WEBPACK_IMPORTED_MODULE_12__["isElementInEventPath"])(tableFooter, mouseDownEvent.nativeEvent))) return; // mouseDownEvent.preventDefault()
8389
- // shift + 点击选中
8390
-
8391
- shiftKeySelect(mouseDownEvent);
8392
- if (mouseDownEvent.shiftKey) return;
8393
- var target = mouseDownEvent.target;
8394
- var startDragCell = getTargetCell(target, columns);
8395
- var mousemove$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_14__["fromEvent"])(window, 'mousemove');
8396
- var mouseup$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_14__["fromEvent"])(window, 'mouseup');
8420
+ var updateScrollPosition = function updateScrollPosition(client) {
8421
+ var clientX = client.clientX,
8422
+ clientY = client.clientY;
8397
8423
  var tableBodyClientRect = tableBody.getBoundingClientRect();
8424
+ var left = tableBodyClientRect.left,
8425
+ top = tableBodyClientRect.top,
8426
+ height = tableBodyClientRect.height,
8427
+ width = tableBodyClientRect.width;
8398
8428
 
8399
- var updateScrollPosition = function updateScrollPosition(client) {
8400
- var clientX = client.clientX,
8401
- clientY = client.clientY;
8402
- var left = tableBodyClientRect.left,
8403
- top = tableBodyClientRect.top,
8404
- height = tableBodyClientRect.height,
8405
- width = tableBodyClientRect.width;
8429
+ if (clientX + SCROLL_OFFSET >= left + width) {
8430
+ pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_OFFSET;
8431
+ }
8406
8432
 
8407
- if (clientX + SCROLL_SIZE >= left + width) {
8408
- pipeline.ref.current.domHelper.virtual.scrollLeft += SCROLL_SIZE;
8409
- }
8433
+ if (clientX - SCROLL_OFFSET <= left) {
8434
+ pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_OFFSET;
8435
+ }
8410
8436
 
8411
- if (clientX - SCROLL_SIZE <= left) {
8412
- pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_SIZE;
8413
- }
8437
+ if (clientY + SCROLL_OFFSET >= top + height) {
8438
+ pipeline.ref.current.domHelper.tableBody.scrollTop += SCROLL_OFFSET;
8439
+ }
8414
8440
 
8415
- if (clientY + SCROLL_SIZE >= top + height) {
8416
- pipeline.ref.current.domHelper.tableBody.scrollTop += SCROLL_SIZE;
8417
- }
8441
+ if (clientY + SCROLL_OFFSET <= top) {
8442
+ pipeline.ref.current.domHelper.tableBody.scrollTop -= SCROLL_OFFSET;
8443
+ }
8444
+ };
8418
8445
 
8419
- if (clientY + SCROLL_SIZE <= top) {
8420
- pipeline.ref.current.domHelper.tableBody.scrollTop -= SCROLL_SIZE;
8421
- }
8422
- };
8446
+ var setStartSelectedCellRanges = function setStartSelectedCellRanges(isCtrlKey, isShiftKey) {
8447
+ if (opts !== null && opts !== void 0 && opts.suppressMultiRangeSelection) {
8448
+ pipeline.setFeatureOptions(startSelectedCellRangesKey, []);
8449
+ return;
8450
+ } // ctrl 和shift 同时按时,优先生效shift
8451
+ // 没有点击ctrl 或者shift时,每次点击开始时都清空选中范围
8452
+
8453
+
8454
+ if (!isCtrlKey && !isShiftKey) {
8455
+ pipeline.setFeatureOptions(startSelectedCellRangesKey, []);
8456
+ } // shift 点击框选,要保留之前的选中结果。最新的框选范围覆盖最后一次的框选范围
8457
+
8458
+
8459
+ if (isShiftKey) {
8460
+ var _startDragCellRanges = pipeline.getFeatureOptions(startSelectedCellRangesKey) ? _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_7___default()(pipeline.getFeatureOptions(startSelectedCellRangesKey)) : [];
8461
+
8462
+ _startDragCellRanges.pop();
8463
+
8464
+ pipeline.setFeatureOptions(startSelectedCellRangesKey, _startDragCellRanges);
8465
+ }
8466
+ };
8467
+
8468
+ var onMouseDown = function onMouseDown(mouseDownEvent) {
8469
+ if (mouseDownEvent.button !== 0 || !(Object(_utils__WEBPACK_IMPORTED_MODULE_13__["isElementInEventPath"])(tableBody, mouseDownEvent.nativeEvent) || Object(_utils__WEBPACK_IMPORTED_MODULE_13__["isElementInEventPath"])(tableFooter, mouseDownEvent.nativeEvent))) return; // mouseDownEvent.preventDefault()
8470
+
8471
+ var isCtrlKey = mouseDownEvent.ctrlKey || mouseDownEvent.metaKey;
8472
+ var isShiftKey = mouseDownEvent.shiftKey;
8473
+ var target = mouseDownEvent.target; // 每次点击时先确认初始生效的框选范围
8474
+
8475
+ setStartSelectedCellRanges(isCtrlKey, isShiftKey);
8476
+
8477
+ if (isShiftKey) {
8478
+ shiftKeySelect(mouseDownEvent);
8479
+ return;
8480
+ }
8481
+
8482
+ var startDragCell = getTargetCell(target, columns);
8483
+ pipeline.setFeatureOptions(lastClickCellKey, startDragCell);
8484
+ var draggingCell = startDragCell;
8485
+ var mousemove$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_15__["fromEvent"])(window, 'mousemove');
8486
+ var mouseup$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_15__["fromEvent"])(window, 'mouseup');
8487
+ var rangeSelected$ = mousemove$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_16__["map"])(function (mouseMoveEvent) {
8488
+ var _draggingCell;
8423
8489
 
8424
- var rangeSelected$ = mousemove$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_15__["map"])(function (mouseMoveEvent) {
8425
8490
  var target = mouseMoveEvent.target || mouseMoveEvent.srcElement;
8426
- var draggingCell = getTargetCell(target, columns);
8491
+ draggingCell = getTargetCell(target, columns);
8427
8492
  var client = {
8428
8493
  clientX: mouseMoveEvent.clientX,
8429
8494
  clientY: mouseMoveEvent.clientY
8430
8495
  };
8431
- updateScrollPosition(client);
8496
+
8497
+ if (!((_draggingCell = draggingCell) !== null && _draggingCell !== void 0 && _draggingCell.isFooterCell)) {
8498
+ updateScrollPosition(client);
8499
+ }
8500
+
8432
8501
  return {
8433
8502
  startDragCell: startDragCell,
8434
8503
  draggingCell: draggingCell
8435
8504
  };
8436
- }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_15__["takeUntil"])(mouseup$));
8437
- rangeSelected$.subscribe(function (_ref) {
8438
- var startDragCell = _ref.startDragCell,
8439
- draggingCell = _ref.draggingCell;
8440
- setRangeSelection(startDragCell, draggingCell);
8505
+ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_16__["takeUntil"])(mouseup$));
8506
+ rangeSelected$.subscribe({
8507
+ next: function next(_ref) {
8508
+ var startDragCell = _ref.startDragCell,
8509
+ draggingCell = _ref.draggingCell;
8510
+ setRangeSelection(startDragCell, draggingCell, false);
8511
+ },
8512
+ complete: function complete() {
8513
+ setRangeSelection(startDragCell, draggingCell, true);
8514
+ }
8441
8515
  });
8442
8516
  };
8443
8517
 
8444
8518
  var onKeyDown = function onKeyDown(e) {
8445
- if (!(Object(_utils__WEBPACK_IMPORTED_MODULE_12__["isElementInEventPath"])(tableBody, e.nativeEvent) || Object(_utils__WEBPACK_IMPORTED_MODULE_12__["isElementInEventPath"])(tableFooter, e.nativeEvent))) return;
8519
+ if (!(Object(_utils__WEBPACK_IMPORTED_MODULE_13__["isElementInEventPath"])(tableBody, e.nativeEvent) || Object(_utils__WEBPACK_IMPORTED_MODULE_13__["isElementInEventPath"])(tableFooter, e.nativeEvent))) return;
8446
8520
 
8447
8521
  if ((e.ctrlKey || e.metaKey) && e.key === 'a') {
8448
8522
  var rowLen = pipeline.getDataSource().length;
@@ -8450,17 +8524,17 @@ function rangeSelection(opts) {
8450
8524
 
8451
8525
  if (columns.length && rowLen && !getElementEditable(e.target)) {
8452
8526
  opts.preventkDefaultOfKeyDownEvent !== false && e.preventDefault();
8453
- artTable.classList.add(classnames__WEBPACK_IMPORTED_MODULE_17___default()(_base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].rangeSelection));
8454
- rangeSelectedChange({
8527
+ artTable.classList.add(classnames__WEBPACK_IMPORTED_MODULE_18___default()(_base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].rangeSelection));
8528
+ rangeSelectedChange([{
8455
8529
  startRow: 0,
8456
8530
  endRow: rowLen - 1,
8457
- columns: Object(_utils__WEBPACK_IMPORTED_MODULE_12__["collectNodes"])(columns, 'leaf-only'),
8531
+ columns: Object(_utils__WEBPACK_IMPORTED_MODULE_13__["collectNodes"])(columns, 'leaf-only'),
8458
8532
  startColumn: columns[0],
8459
8533
  footerRowRange: footerDataSource.length > 0 ? {
8460
8534
  startRow: 0,
8461
8535
  endRow: footerDataSource.length - 1
8462
8536
  } : null
8463
- });
8537
+ }], true);
8464
8538
  }
8465
8539
  }
8466
8540
  };
@@ -8469,44 +8543,26 @@ function rangeSelection(opts) {
8469
8543
  onMouseDown: onMouseDown,
8470
8544
  onKeyDown: onKeyDown,
8471
8545
  tabIndex: -1,
8472
- className: classnames__WEBPACK_IMPORTED_MODULE_17___default()([_base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].rangeSelection])
8546
+ className: classnames__WEBPACK_IMPORTED_MODULE_18___default()([_base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].rangeSelection])
8473
8547
  }); // todo: 后面可以把mousedown放到一个流里面
8474
8548
 
8475
- return pipeline.mapColumns(Object(_utils__WEBPACK_IMPORTED_MODULE_12__["makeRecursiveMapper"])(function (col) {
8476
- var rangeSelection = pipeline.getStateAtKey(rangeSelectionKey);
8477
- if (!rangeSelection || rangeSelection.columns.findIndex(function (selectedCol) {
8478
- return selectedCol.code === col.code;
8479
- }) === -1) return col;
8549
+ return pipeline.mapColumns(Object(_utils__WEBPACK_IMPORTED_MODULE_13__["makeRecursiveMapper"])(function (col) {
8550
+ var cellRanges = pipeline.getStateAtKey(rangeSelectionKey) || [];
8480
8551
  var prevGetCellProps = col.getCellProps;
8481
8552
  return _objectSpread(_objectSpread({}, col), {}, {
8482
8553
  getCellProps: function getCellProps(value, record, rowIndex) {
8483
- var _cx;
8484
-
8485
8554
  var prevCellProps = prevGetCellProps === null || prevGetCellProps === void 0 ? void 0 : prevGetCellProps(value, record, rowIndex);
8486
- var isInFooter = record[pipeline.getFeatureOptions('footerRowMetaKey')];
8487
- var startRow = rangeSelection.startRow,
8488
- endRow = rangeSelection.endRow,
8489
- columns = rangeSelection.columns,
8490
- footerRowRange = rangeSelection.footerRowRange;
8491
-
8492
- var _getRowIndex = getRowIndex(startRow, endRow),
8493
- startRowIndex = _getRowIndex.startRowIndex,
8494
- endRowIndex = _getRowIndex.endRowIndex;
8495
-
8496
- var _getFooterRowIndex = getFooterRowIndex(footerRowRange),
8497
- footerStartRowIndex = _getFooterRowIndex.startRowIndex,
8498
- footerEndRowIndex = _getFooterRowIndex.endRowIndex;
8499
-
8500
- var startCol = columns[0];
8501
- var endCol = columns[columns.length - 1];
8502
- var bodyMatch = !isInFooter && rowIndex >= startRowIndex && rowIndex <= endRowIndex;
8503
- var footerMatch = isInFooter && footerRowRange && rowIndex >= footerStartRowIndex && rowIndex <= footerEndRowIndex;
8504
- var match = footerMatch || bodyMatch;
8505
- var matchSingleCell = match && isCellRangeSingleCell(rangeSelection); // 单个范围选中单元格不显示样式
8506
-
8507
- var showCellRangeStyle = match && !matchSingleCell;
8508
- var className = classnames__WEBPACK_IMPORTED_MODULE_17___default()((_cx = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].tableCellRangeSingleCell, matchSingleCell), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].tableCellRangeSelected, showCellRangeStyle), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].tableCellRangeTop, showCellRangeStyle && (isInFooter ? startRowIndex !== -1 ? false : rowIndex === footerStartRowIndex : rowIndex === startRowIndex)), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].tableCellRangeLeft, showCellRangeStyle && col.code === startCol.code), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].tableCellRangeBottom, showCellRangeStyle && (isInFooter ? rowIndex === footerEndRowIndex : footerRowRange ? false : rowIndex === endRowIndex)), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_8___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].tableCellRangeRight, showCellRangeStyle && col.code === endCol.code), _cx));
8509
- return Object(_utils__WEBPACK_IMPORTED_MODULE_12__["mergeCellProps"])(prevCellProps, {
8555
+ var isFooterCell = record[pipeline.getFeatureOptions('footerRowMetaKey')];
8556
+ if (!cellRanges.some(function (cellRange) {
8557
+ return isCellInRange(cellRange, rowIndex, col, isFooterCell);
8558
+ })) return prevCellProps;
8559
+ var className = getCellRangesClassName(cellRanges, {
8560
+ isFooterCell: isFooterCell,
8561
+ rowIndex: rowIndex,
8562
+ col: col,
8563
+ record: record
8564
+ });
8565
+ return Object(_utils__WEBPACK_IMPORTED_MODULE_13__["mergeCellProps"])(prevCellProps, {
8510
8566
  className: className
8511
8567
  });
8512
8568
  }
@@ -8520,7 +8576,7 @@ function getTargetCell(target, columns) {
8520
8576
  if (target.getAttribute('data-role') === 'table-cell') {
8521
8577
  var _ret = function () {
8522
8578
  var columnCode = target.getAttribute('data-code');
8523
- var column = Object(_utils_others__WEBPACK_IMPORTED_MODULE_13__["findByTree"])(columns, function (item, index) {
8579
+ var column = Object(_utils_others__WEBPACK_IMPORTED_MODULE_14__["findByTree"])(columns, function (item, index) {
8524
8580
  return item.code === columnCode;
8525
8581
  });
8526
8582
  if (!column) return {
@@ -8532,12 +8588,12 @@ function getTargetCell(target, columns) {
8532
8588
  rowSpan: parseInt(target.getAttribute('rowspan') || 1),
8533
8589
  code: columnCode,
8534
8590
  column: column,
8535
- isInFooter: isEleInFooter(target)
8591
+ isFooterCell: isEleInFooter(target)
8536
8592
  }
8537
8593
  };
8538
8594
  }();
8539
8595
 
8540
- if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_7___default()(_ret) === "object") return _ret.v;
8596
+ if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_5___default()(_ret) === "object") return _ret.v;
8541
8597
  }
8542
8598
 
8543
8599
  target = target.parentElement;
@@ -8547,12 +8603,12 @@ function getTargetCell(target, columns) {
8547
8603
  }
8548
8604
 
8549
8605
  function isSameCell(cell1, cell2) {
8550
- return cell1.rowIndex === cell2.rowIndex && cell1.code === cell2.code && cell1.isInFooter === cell2.isInFooter;
8606
+ return cell1.rowIndex === cell2.rowIndex && cell1.code === cell2.code && cell1.isFooterCell === cell2.isFooterCell;
8551
8607
  }
8552
8608
 
8553
8609
  function isEleInFooter(target) {
8554
- while (target && !target.classList.contains(_base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].artTable)) {
8555
- if (target.classList.contains(_base_styles__WEBPACK_IMPORTED_MODULE_16__["Classes"].tableFooter)) {
8610
+ while (target && !target.classList.contains(_base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].artTable)) {
8611
+ if (target.classList.contains(_base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].tableFooter)) {
8556
8612
  return true;
8557
8613
  }
8558
8614
 
@@ -8563,7 +8619,7 @@ function isEleInFooter(target) {
8563
8619
  }
8564
8620
 
8565
8621
  function getRangeColumns(startCell, endCell, columns) {
8566
- var flatColumns = Object(_utils__WEBPACK_IMPORTED_MODULE_12__["collectNodes"])(columns, 'leaf-only');
8622
+ var flatColumns = Object(_utils__WEBPACK_IMPORTED_MODULE_13__["collectNodes"])(columns, 'leaf-only');
8567
8623
  var startIndex = flatColumns.findIndex(function (col) {
8568
8624
  return col.code === startCell.code;
8569
8625
  });
@@ -8588,10 +8644,10 @@ function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
8588
8644
  _endRow = _getCellRangeRow.endRow; // 两个单元格都在表体
8589
8645
 
8590
8646
 
8591
- if (!startCell.isInFooter && !endCell.isInFooter) {
8647
+ if (!startCell.isFooterCell && !endCell.isFooterCell) {
8592
8648
  startRow = _startRow;
8593
8649
  endRow = _endRow;
8594
- } else if (startCell.isInFooter && endCell.isInFooter) {
8650
+ } else if (startCell.isFooterCell && endCell.isFooterCell) {
8595
8651
  // 两个单元格都在表底
8596
8652
  footerRowRange = {
8597
8653
  startRow: _startRow,
@@ -8599,7 +8655,7 @@ function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
8599
8655
  };
8600
8656
  } else {
8601
8657
  // 一个单元格在表体,一个在表底
8602
- if (startCell.isInFooter) {
8658
+ if (startCell.isFooterCell) {
8603
8659
  startRow = dataSource.length - 1;
8604
8660
  endRow = endCell.rowIndex;
8605
8661
  footerRowRange = {
@@ -8622,6 +8678,13 @@ function getRangeSelectionRowInfo(startCell, endCell, dataSource) {
8622
8678
  footerRowRange: footerRowRange
8623
8679
  };
8624
8680
  }
8681
+ /**
8682
+ * 获取框选范围的起始结束行
8683
+ * @param startCell 起始单元格
8684
+ * @param endCell 结束单元格
8685
+ * @returns
8686
+ */
8687
+
8625
8688
 
8626
8689
  function getCellRangeRow(startCell, endCell) {
8627
8690
  if (isSameCell(startCell, endCell)) {
@@ -8639,12 +8702,20 @@ function getCellRangeRow(startCell, endCell) {
8639
8702
  endRow: endRow
8640
8703
  };
8641
8704
  }
8705
+ /**
8706
+ * 框选范围是否只包含单个单元格
8707
+ * @param cellRanges
8708
+ * @returns
8709
+ */
8710
+
8642
8711
 
8643
- function isCellRangeSingleCell(rangeSelection) {
8644
- var startRow = rangeSelection.startRow,
8645
- endRow = rangeSelection.endRow,
8646
- columns = rangeSelection.columns,
8647
- footerRowRange = rangeSelection.footerRowRange;
8712
+ function isCellRangeSingleCell(cellRanges) {
8713
+ if (cellRanges.length !== 1) return false;
8714
+ var _cellRanges$ = cellRanges[0],
8715
+ startRow = _cellRanges$.startRow,
8716
+ endRow = _cellRanges$.endRow,
8717
+ columns = _cellRanges$.columns,
8718
+ footerRowRange = _cellRanges$.footerRowRange;
8648
8719
  var isBodySingleCell = !footerRowRange && startRow === endRow && columns.length === 1;
8649
8720
  var isFooterSingleCell = startRow === -1 && footerRowRange.startRow === footerRowRange.endRow && columns.length === 1;
8650
8721
  return isBodySingleCell || isFooterSingleCell;
@@ -8679,6 +8750,134 @@ function getElementEditable(target) {
8679
8750
  return !target.disabled && !target.readOnly;
8680
8751
  }
8681
8752
  }
8753
+ /**
8754
+ * 判断单元格是否在框选范围内
8755
+ * @param cellRange
8756
+ * @param rowIndex
8757
+ * @param col
8758
+ * @param isFooterCell
8759
+ * @returns
8760
+ */
8761
+
8762
+
8763
+ function isCellInRange(cellRange, rowIndex, col, isFooterCell) {
8764
+ var startRow = cellRange.startRow,
8765
+ endRow = cellRange.endRow,
8766
+ columns = cellRange.columns,
8767
+ footerRowRange = cellRange.footerRowRange;
8768
+ var isColInRanges = columns.findIndex(function (item) {
8769
+ return item.code === col.code;
8770
+ }) !== -1;
8771
+ if (!isColInRanges) return false;
8772
+
8773
+ var _getRowIndex = getRowIndex(startRow, endRow),
8774
+ startRowIndex = _getRowIndex.startRowIndex,
8775
+ endRowIndex = _getRowIndex.endRowIndex;
8776
+
8777
+ var _getFooterRowIndex = getFooterRowIndex(footerRowRange),
8778
+ footerStartRowIndex = _getFooterRowIndex.startRowIndex,
8779
+ footerEndRowIndex = _getFooterRowIndex.endRowIndex;
8780
+
8781
+ var bodyMatch = !isFooterCell && rowIndex >= startRowIndex && rowIndex <= endRowIndex;
8782
+ var footerMatch = isFooterCell && footerRowRange && rowIndex >= footerStartRowIndex && rowIndex <= footerEndRowIndex;
8783
+ var isRowInRange = footerMatch || bodyMatch;
8784
+ return isRowInRange;
8785
+ }
8786
+ /**
8787
+ * 获取框选范围唯一标识
8788
+ * @param {*} cellRange
8789
+ * @returns
8790
+ */
8791
+
8792
+
8793
+ function getCellRangeId(cellRange) {
8794
+ var startRow = cellRange.startRow,
8795
+ endRow = cellRange.endRow,
8796
+ footerRowRange = cellRange.footerRowRange,
8797
+ columns = cellRange.columns;
8798
+
8799
+ var _getRowIndex2 = getRowIndex(startRow, endRow),
8800
+ startRowIndex = _getRowIndex2.startRowIndex,
8801
+ endRowIndex = _getRowIndex2.endRowIndex;
8802
+
8803
+ var _getFooterRowIndex2 = getFooterRowIndex(footerRowRange),
8804
+ footerStartRowIndex = _getFooterRowIndex2.startRowIndex,
8805
+ footerEndRowIndex = _getFooterRowIndex2.endRowIndex;
8806
+
8807
+ var firstColId = columns[0].code;
8808
+ var endColId = columns[columns.length - 1].code;
8809
+ return startRowIndex + '_' + endRowIndex + '_' + footerStartRowIndex + '_' + footerEndRowIndex + '_' + firstColId + '_' + endColId;
8810
+ }
8811
+ /**
8812
+ * 获取框选范围中单元格的样式
8813
+ * @param cellRanges
8814
+ * @param param1
8815
+ * @returns
8816
+ */
8817
+
8818
+ function getCellRangesClassName(cellRanges, _ref2) {
8819
+ var _cx;
8820
+
8821
+ var isFooterCell = _ref2.isFooterCell,
8822
+ rowIndex = _ref2.rowIndex,
8823
+ col = _ref2.col,
8824
+ record = _ref2.record;
8825
+
8826
+ var _getMatchBorderStyle = getMatchBorderStyle(cellRanges, {
8827
+ isFooterCell: isFooterCell,
8828
+ rowIndex: rowIndex,
8829
+ col: col,
8830
+ record: record
8831
+ }),
8832
+ matchCellRangeTop = _getMatchBorderStyle.matchCellRangeTop,
8833
+ matchCellRangeLeft = _getMatchBorderStyle.matchCellRangeLeft,
8834
+ matchCellRangeBottom = _getMatchBorderStyle.matchCellRangeBottom,
8835
+ matchCellRangeRight = _getMatchBorderStyle.matchCellRangeRight;
8836
+
8837
+ var isSingleCell = isCellRangeSingleCell(cellRanges);
8838
+ var className = classnames__WEBPACK_IMPORTED_MODULE_18___default()((_cx = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].tableCellRangeSingleCell, isSingleCell), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].tableCellRangeSelected, !isSingleCell), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].tableCellRangeTop, !isSingleCell && matchCellRangeTop), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].tableCellRangeLeft, !isSingleCell && matchCellRangeLeft), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].tableCellRangeBottom, !isSingleCell && matchCellRangeBottom), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_cx, _base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].tableCellRangeRight, !isSingleCell && matchCellRangeRight), _cx));
8839
+ return className;
8840
+ }
8841
+
8842
+ function getMatchBorderStyle(cellRanges, _ref3) {
8843
+ var isFooterCell = _ref3.isFooterCell,
8844
+ rowIndex = _ref3.rowIndex,
8845
+ col = _ref3.col,
8846
+ record = _ref3.record;
8847
+ return cellRanges.reduce(function (obj, cellRange) {
8848
+ if (!isCellInRange(cellRange, rowIndex, col, isFooterCell)) return obj;
8849
+ var startRow = cellRange.startRow,
8850
+ endRow = cellRange.endRow,
8851
+ columns = cellRange.columns,
8852
+ footerRowRange = cellRange.footerRowRange;
8853
+
8854
+ var _getRowIndex3 = getRowIndex(startRow, endRow),
8855
+ startRowIndex = _getRowIndex3.startRowIndex,
8856
+ endRowIndex = _getRowIndex3.endRowIndex;
8857
+
8858
+ var _getFooterRowIndex3 = getFooterRowIndex(footerRowRange),
8859
+ footerStartRowIndex = _getFooterRowIndex3.startRowIndex,
8860
+ footerEndRowIndex = _getFooterRowIndex3.endRowIndex;
8861
+
8862
+ var startCol = columns[0];
8863
+ var endCol = columns[columns.length - 1];
8864
+ var matchCellRangeTop = isFooterCell ? startRowIndex !== -1 ? false : rowIndex === footerStartRowIndex : rowIndex === startRowIndex;
8865
+ var matchCellRangeLeft = col.code === startCol.code;
8866
+ var matchCellRangeBottom = isFooterCell ? rowIndex === footerEndRowIndex : footerRowRange ? false : rowIndex === endRowIndex;
8867
+ var matchCellRangeRight = col.code === endCol.code; // 如果样式已经匹配上了,就不需要再取计算的样式
8868
+
8869
+ obj.matchCellRangeTop = obj.matchCellRangeTop || matchCellRangeTop;
8870
+ obj.matchCellRangeLeft = obj.matchCellRangeLeft || matchCellRangeLeft;
8871
+ obj.matchCellRangeBottom = obj.matchCellRangeBottom || matchCellRangeBottom;
8872
+ obj.matchCellRangeRight = obj.matchCellRangeRight || matchCellRangeRight;
8873
+ return obj;
8874
+ }, {
8875
+ matchCellRangeTop: false,
8876
+ matchCellRangeLeft: false,
8877
+ matchCellRangeBottom: false,
8878
+ matchCellRangeRight: false
8879
+ });
8880
+ }
8682
8881
 
8683
8882
  /***/ }),
8684
8883