@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.
- package/dist/@kdcloudjs/table.css +1 -1
- package/dist/@kdcloudjs/table.js +350 -151
- package/dist/@kdcloudjs/table.js.map +1 -1
- package/dist/@kdcloudjs/table.min.css +1 -1
- package/dist/@kdcloudjs/table.min.js +7 -7
- package/dist/@kdcloudjs/table.min.js.map +1 -1
- package/es/table/pipeline/features/multiSelect.js +31 -12
- package/es/table/pipeline/features/rangeSelection.d.ts +22 -1
- package/es/table/pipeline/features/rangeSelection.js +274 -100
- package/lib/table/pipeline/features/multiSelect.js +33 -12
- package/lib/table/pipeline/features/rangeSelection.d.ts +22 -1
- package/lib/table/pipeline/features/rangeSelection.js +282 -104
- package/package.json +3 -3
package/dist/@kdcloudjs/table.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
*
|
|
3
|
-
* @kdcloudjs/table v1.1
|
|
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"])(
|
|
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 (
|
|
8124
|
-
var prevChecked =
|
|
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
|
|
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 (!
|
|
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
|
|
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
|
|
8230
|
-
|
|
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 =
|
|
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
|
|
8268
|
-
/* harmony import */ var
|
|
8269
|
-
/* harmony import */ var
|
|
8270
|
-
/* harmony import */ var
|
|
8271
|
-
/* harmony import */ var
|
|
8272
|
-
/* harmony import */ var
|
|
8273
|
-
/* harmony import */ var
|
|
8274
|
-
/* harmony import */ var
|
|
8275
|
-
/* harmony import */ var
|
|
8276
|
-
/* harmony import */ var
|
|
8277
|
-
/* harmony import */ var
|
|
8278
|
-
/* harmony import */ var
|
|
8279
|
-
/* harmony import */ var
|
|
8280
|
-
/* harmony import */ var
|
|
8281
|
-
/* harmony import */ var
|
|
8282
|
-
/* harmony import */ var
|
|
8283
|
-
/* harmony import */ var
|
|
8284
|
-
/* harmony import */ var
|
|
8285
|
-
/* harmony import */ var
|
|
8286
|
-
/* harmony import */ var
|
|
8287
|
-
/* harmony import */ var
|
|
8288
|
-
/* harmony import */ var
|
|
8289
|
-
/* harmony import */ var
|
|
8290
|
-
/* harmony import */ var
|
|
8291
|
-
/* harmony import */ var
|
|
8292
|
-
/* harmony import */ var
|
|
8293
|
-
/* harmony import */ var
|
|
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) {
|
|
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
|
|
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(
|
|
8358
|
-
artTable.classList.remove(
|
|
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(
|
|
8398
|
+
artTable.classList.add(classnames__WEBPACK_IMPORTED_MODULE_18___default()(_base_styles__WEBPACK_IMPORTED_MODULE_17__["Classes"].rangeSelection));
|
|
8361
8399
|
}
|
|
8362
8400
|
|
|
8363
|
-
rangeSelectedChange(
|
|
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
|
-
|
|
8372
|
-
var _lastClickCell = pipeline.getFeatureOptions(lastClickCellKey);
|
|
8409
|
+
var _lastClickCell = pipeline.getFeatureOptions(lastClickCellKey);
|
|
8373
8410
|
|
|
8374
|
-
|
|
8375
|
-
|
|
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
|
|
8388
|
-
|
|
8389
|
-
|
|
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
|
-
|
|
8400
|
-
|
|
8401
|
-
|
|
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
|
-
|
|
8408
|
-
|
|
8409
|
-
|
|
8433
|
+
if (clientX - SCROLL_OFFSET <= left) {
|
|
8434
|
+
pipeline.ref.current.domHelper.virtual.scrollLeft -= SCROLL_OFFSET;
|
|
8435
|
+
}
|
|
8410
8436
|
|
|
8411
|
-
|
|
8412
|
-
|
|
8413
|
-
|
|
8437
|
+
if (clientY + SCROLL_OFFSET >= top + height) {
|
|
8438
|
+
pipeline.ref.current.domHelper.tableBody.scrollTop += SCROLL_OFFSET;
|
|
8439
|
+
}
|
|
8414
8440
|
|
|
8415
|
-
|
|
8416
|
-
|
|
8417
|
-
|
|
8441
|
+
if (clientY + SCROLL_OFFSET <= top) {
|
|
8442
|
+
pipeline.ref.current.domHelper.tableBody.scrollTop -= SCROLL_OFFSET;
|
|
8443
|
+
}
|
|
8444
|
+
};
|
|
8418
8445
|
|
|
8419
|
-
|
|
8420
|
-
|
|
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
|
-
|
|
8491
|
+
draggingCell = getTargetCell(target, columns);
|
|
8427
8492
|
var client = {
|
|
8428
8493
|
clientX: mouseMoveEvent.clientX,
|
|
8429
8494
|
clientY: mouseMoveEvent.clientY
|
|
8430
8495
|
};
|
|
8431
|
-
|
|
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(
|
|
8437
|
-
rangeSelected$.subscribe(
|
|
8438
|
-
|
|
8439
|
-
|
|
8440
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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:
|
|
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(
|
|
8476
|
-
var
|
|
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
|
|
8487
|
-
|
|
8488
|
-
|
|
8489
|
-
|
|
8490
|
-
|
|
8491
|
-
|
|
8492
|
-
|
|
8493
|
-
|
|
8494
|
-
|
|
8495
|
-
|
|
8496
|
-
|
|
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(
|
|
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
|
-
|
|
8591
|
+
isFooterCell: isEleInFooter(target)
|
|
8536
8592
|
}
|
|
8537
8593
|
};
|
|
8538
8594
|
}();
|
|
8539
8595
|
|
|
8540
|
-
if (
|
|
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.
|
|
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(
|
|
8555
|
-
if (target.classList.contains(
|
|
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(
|
|
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.
|
|
8647
|
+
if (!startCell.isFooterCell && !endCell.isFooterCell) {
|
|
8592
8648
|
startRow = _startRow;
|
|
8593
8649
|
endRow = _endRow;
|
|
8594
|
-
} else if (startCell.
|
|
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.
|
|
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(
|
|
8644
|
-
|
|
8645
|
-
|
|
8646
|
-
|
|
8647
|
-
|
|
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
|
|