@ucloud-fe/react-components 1.13.0 → 1.14.0

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.
@@ -17,6 +17,8 @@ exports.default = exports.TableContext = exports.placeholderKey = exports.deprec
17
17
 
18
18
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
19
 
20
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
21
+
20
22
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
21
23
 
22
24
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
@@ -27,6 +29,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
27
29
 
28
30
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
29
31
 
32
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
33
+
30
34
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
31
35
 
32
36
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -39,6 +43,8 @@ var _extend2 = _interopRequireDefault(require("lodash/extend"));
39
43
 
40
44
  var _findLastIndex2 = _interopRequireDefault(require("lodash/findLastIndex"));
41
45
 
46
+ var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
47
+
42
48
  var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
43
49
 
44
50
  var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
@@ -172,6 +178,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
172
178
 
173
179
  (0, _newArrowCheck2.default)(this, _this3);
174
180
  var rowSelection = nextProps.rowSelection;
181
+ var dataSource = _this2.props.dataSource;
175
182
 
176
183
  if ((0, _isObject2.default)(rowSelection) && 'selectedRowKeys' in rowSelection) {
177
184
  var selectedRowKeyMap = {};
@@ -183,6 +190,10 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
183
190
  _this2.setState({
184
191
  selectedRowKeyMap: selectedRowKeyMap
185
192
  });
193
+ }
194
+
195
+ if (JSON.stringify(dataSource) !== JSON.stringify(nextProps.dataSource)) {
196
+ _this2.initRenderRowSelectionDate(nextProps);
186
197
  } // pick controlled filter value
187
198
 
188
199
 
@@ -199,16 +210,74 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
199
210
  }
200
211
  }.bind(this);
201
212
 
202
- _this2.getOrder = function (order, columns) {
213
+ _this2.initRenderRowSelectionDate = function (props) {
203
214
  var _this6 = this;
204
215
 
216
+ (0, _newArrowCheck2.default)(this, _this3);
217
+ var rowSelection = props.rowSelection,
218
+ nextDateSource = props.dataSource;
219
+ var dataSource = _this2.props.dataSource;
220
+ var data = nextDateSource || dataSource;
221
+ var _this2$state = _this2.state,
222
+ indeterminateSelectedRowKeyMap = _this2$state.indeterminateSelectedRowKeyMap,
223
+ selectedRowKeyMap = _this2$state.selectedRowKeyMap;
224
+
225
+ if (!data || !data.length || !(0, _isObject2.default)(rowSelection)) {
226
+ return;
227
+ }
228
+
229
+ var flatDataSourceKeys = _this2.flatDataSourceKeysForMap({
230
+ dataSource: data
231
+ });
232
+
233
+ _this2.setState({
234
+ flatDataSourceKeys: flatDataSourceKeys
235
+ }, function () {
236
+ var _this7 = this;
237
+
238
+ (0, _newArrowCheck2.default)(this, _this6);
239
+
240
+ if (rowSelection.multiple !== false && rowSelection.linkage && flatDataSourceKeys.length) {
241
+ var _Object$keys$reduce = Object.keys(selectedRowKeyMap).reduce(function (p, key) {
242
+ (0, _newArrowCheck2.default)(this, _this7);
243
+
244
+ var _this2$initLinkageRow = _this2.initLinkageRowSelectionMap(selectedRowKeyMap, true, key, flatDataSourceKeys, indeterminateSelectedRowKeyMap),
245
+ mergeMap = _this2$initLinkageRow.mergeMap,
246
+ indeterminate = _this2$initLinkageRow.indeterminate;
247
+
248
+ return {
249
+ finalMergeMap: _objectSpread(_objectSpread({}, p.finalMergeMap), mergeMap),
250
+ finalIndeterminate: _objectSpread(_objectSpread({}, p.finalIndeterminate), indeterminate)
251
+ };
252
+ }.bind(this), {
253
+ finalMergeMap: {},
254
+ finalIndeterminate: {}
255
+ }),
256
+ finalMergeMap = _Object$keys$reduce.finalMergeMap,
257
+ finalIndeterminate = _Object$keys$reduce.finalIndeterminate;
258
+
259
+ Object.keys(finalMergeMap).forEach(function (key) {
260
+ (0, _newArrowCheck2.default)(this, _this7);
261
+ selectedRowKeyMap[key] = finalMergeMap[key];
262
+ }.bind(this));
263
+
264
+ _this2.setState({
265
+ indeterminateSelectedRowKeyMap: _objectSpread({}, finalIndeterminate)
266
+ });
267
+ }
268
+ }.bind(this));
269
+ }.bind(this);
270
+
271
+ _this2.getOrder = function (order, columns) {
272
+ var _this8 = this;
273
+
205
274
  (0, _newArrowCheck2.default)(this, _this3);
206
275
  if (!order || !columns) return null;
207
276
  var key = order.key,
208
277
  state = order.state;
209
278
  if (!key || !state) return null;
210
279
  var column = (0, _find2.default)(columns, function (column) {
211
- (0, _newArrowCheck2.default)(this, _this6);
280
+ (0, _newArrowCheck2.default)(this, _this8);
212
281
  return column.key === key;
213
282
  }.bind(this));
214
283
  if (!column) return null;
@@ -225,7 +294,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
225
294
  }.bind(this);
226
295
 
227
296
  _this2.calFiltersFromProps = function (_ref2) {
228
- var _this7 = this;
297
+ var _this9 = this;
229
298
 
230
299
  (0, _newArrowCheck2.default)(this, _this3);
231
300
  var _ref2$columns = _ref2.columns,
@@ -233,7 +302,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
233
302
  var filters = {}; // pick filter controlled value
234
303
 
235
304
  columns.forEach(function (column, i) {
236
- (0, _newArrowCheck2.default)(this, _this7);
305
+ (0, _newArrowCheck2.default)(this, _this9);
237
306
  var filter = column.filter;
238
307
 
239
308
  var columnKey = _this2.getColumnKey(column, i);
@@ -252,7 +321,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
252
321
  }.bind(this);
253
322
 
254
323
  _this2.calDefaultFilters = function (_ref3) {
255
- var _this8 = this;
324
+ var _this10 = this;
256
325
 
257
326
  (0, _newArrowCheck2.default)(this, _this3);
258
327
  var _ref3$columns = _ref3.columns,
@@ -260,7 +329,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
260
329
  var filters = {}; // pick filter controlled value
261
330
 
262
331
  columns.forEach(function (column, i) {
263
- (0, _newArrowCheck2.default)(this, _this8);
332
+ (0, _newArrowCheck2.default)(this, _this10);
264
333
  var filter = column.filter;
265
334
  if (!filter) return;
266
335
 
@@ -279,18 +348,18 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
279
348
  }.bind(this);
280
349
 
281
350
  _this2.mergeFilters = function (stateFilters, propsFilters, columns) {
282
- var _this9 = this;
351
+ var _this11 = this;
283
352
 
284
353
  (0, _newArrowCheck2.default)(this, _this3);
285
354
 
286
355
  var filters = _objectSpread(_objectSpread({}, stateFilters), propsFilters);
287
356
 
288
357
  (0, _each2.default)(filters, function (filter, key) {
289
- var _this10 = this;
358
+ var _this12 = this;
290
359
 
291
- (0, _newArrowCheck2.default)(this, _this9);
360
+ (0, _newArrowCheck2.default)(this, _this11);
292
361
  var column = (0, _find2.default)(columns, function (column, i) {
293
- (0, _newArrowCheck2.default)(this, _this10);
362
+ (0, _newArrowCheck2.default)(this, _this12);
294
363
  return _this2.getColumnKey(column, i) === key;
295
364
  }.bind(this));
296
365
 
@@ -304,15 +373,16 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
304
373
  }.bind(this);
305
374
 
306
375
  _this2.getExpandedRowKeys = function (dataSource, changedUnExpandedRowKeys) {
307
- var _this11 = this;
376
+ var _this13 = this;
308
377
 
309
378
  (0, _newArrowCheck2.default)(this, _this3);
310
379
 
380
+ // 拍平数据
311
381
  var flatDataSource = _this2.flatDataSource(dataSource);
312
382
 
313
383
  var expandedRowKeys = [];
314
384
  (0, _each2.default)(flatDataSource, function (item) {
315
- (0, _newArrowCheck2.default)(this, _this11);
385
+ (0, _newArrowCheck2.default)(this, _this13);
316
386
  var key = item.key;
317
387
 
318
388
  if (!changedUnExpandedRowKeys[key]) {
@@ -333,14 +403,15 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
333
403
  }.bind(this);
334
404
 
335
405
  _this2.onSelectedRowKeysChange = function (selectedRowKeyMap) {
336
- var _this12 = this;
406
+ var _this14 = this;
337
407
 
338
408
  (0, _newArrowCheck2.default)(this, _this3);
339
409
  var rowSelection = _this2.props.rowSelection;
410
+ var parentSelectedRowKeys = _this2.state.parentSelectedRowKeys;
340
411
  if (!rowSelection) return;
341
412
  var selectedRowKeys = [];
342
413
  (0, _each2.default)(selectedRowKeyMap, function (selected, key) {
343
- (0, _newArrowCheck2.default)(this, _this12);
414
+ (0, _newArrowCheck2.default)(this, _this14);
344
415
  selected && selectedRowKeys.push(key);
345
416
  }.bind(this));
346
417
 
@@ -391,7 +462,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
391
462
  }.bind(this);
392
463
 
393
464
  _this2.handleConditionChange = function (stateCondition) {
394
- var _this13 = this;
465
+ var _this15 = this;
395
466
 
396
467
  var callbackCondition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
397
468
  stateCondition = _objectSpread(_objectSpread({}, (0, _pick2.default)(_this2.state, ['order', 'filters', 'searchValue'])), stateCondition);
@@ -418,7 +489,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
418
489
  onConditionChange && onConditionChange({
419
490
  order: order ? (0, _pick2.default)(order, ['key', 'state']) : null,
420
491
  filters: (0, _map2.default)(filters, function (filter, key) {
421
- (0, _newArrowCheck2.default)(this, _this13);
492
+ (0, _newArrowCheck2.default)(this, _this15);
422
493
  return {
423
494
  key: key,
424
495
  value: filter.value
@@ -429,7 +500,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
429
500
  };
430
501
 
431
502
  _this2.renderFilter = function (column) {
432
- var _this14 = this;
503
+ var _this16 = this;
433
504
 
434
505
  var filterInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
435
506
  var index = arguments.length > 2 ? arguments[2] : undefined;
@@ -445,11 +516,11 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
445
516
  multiple = filter.multiple,
446
517
  _filter$onChange = filter.onChange,
447
518
  onChange = _filter$onChange === void 0 ? function () {
448
- (0, _newArrowCheck2.default)(this, _this14);
519
+ (0, _newArrowCheck2.default)(this, _this16);
449
520
  }.bind(this) : _filter$onChange,
450
521
  rest = (0, _objectWithoutProperties2.default)(filter, _excluded);
451
522
  var newOptions = (0, _map2.default)(options, function (option) {
452
- (0, _newArrowCheck2.default)(this, _this14);
523
+ (0, _newArrowCheck2.default)(this, _this16);
453
524
  return (0, _isObject2.default)(option) ? option : {
454
525
  value: option
455
526
  };
@@ -460,7 +531,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
460
531
  options: newOptions,
461
532
  value: finalValue,
462
533
  onChange: function (value) {
463
- (0, _newArrowCheck2.default)(this, _this14);
534
+ (0, _newArrowCheck2.default)(this, _this16);
464
535
 
465
536
  _this2.handleFilter(columnKey, value == null || multiple && !value.length ? null : value);
466
537
 
@@ -468,7 +539,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
468
539
  }.bind(this),
469
540
  className: "".concat(_style.prefixCls, "-filter"),
470
541
  renderSelector: function (content, active) {
471
- (0, _newArrowCheck2.default)(this, _this14);
542
+ (0, _newArrowCheck2.default)(this, _this16);
472
543
  return /*#__PURE__*/_react.default.createElement(_style.FilterIcon, {
473
544
  key: "icon",
474
545
  type: "filter",
@@ -510,7 +581,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
510
581
  }.bind(this);
511
582
 
512
583
  _this2.renderOrder = function (order, key, dataIndex) {
513
- var _this15 = this;
584
+ var _this17 = this;
514
585
 
515
586
  var state = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'none';
516
587
 
@@ -526,7 +597,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
526
597
  asc: 'line-arrow-up'
527
598
  }[state],
528
599
  onClick: function () {
529
- (0, _newArrowCheck2.default)(this, _this15);
600
+ (0, _newArrowCheck2.default)(this, _this17);
530
601
 
531
602
  _this2.handleOrder(key, {
532
603
  dataIndex: dataIndex,
@@ -564,14 +635,14 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
564
635
  }.bind(this);
565
636
 
566
637
  _this2.flatDataSource = function () {
567
- var _this16 = this;
638
+ var _this18 = this;
568
639
 
569
640
  var dataSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
570
641
  var childrenName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'children';
571
642
  var result = [];
572
643
 
573
644
  var push = function push(record) {
574
- (0, _newArrowCheck2.default)(this, _this16);
645
+ (0, _newArrowCheck2.default)(this, _this18);
575
646
  var index = result.length;
576
647
  result.push({
577
648
  record: record,
@@ -581,11 +652,11 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
581
652
  }.bind(this);
582
653
 
583
654
  var _loop = function loop(array) {
584
- var _this17 = this;
655
+ var _this19 = this;
585
656
 
586
- (0, _newArrowCheck2.default)(this, _this16);
657
+ (0, _newArrowCheck2.default)(this, _this18);
587
658
  array.forEach(function (record) {
588
- (0, _newArrowCheck2.default)(this, _this17);
659
+ (0, _newArrowCheck2.default)(this, _this19);
589
660
 
590
661
  if (record && record[childrenName]) {
591
662
  var newRecord = _objectSpread({}, record);
@@ -608,22 +679,22 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
608
679
  };
609
680
 
610
681
  _this2.getDataSource = function (filters) {
611
- var _this18 = this;
682
+ var _this20 = this;
612
683
 
613
684
  (0, _newArrowCheck2.default)(this, _this3);
614
685
  var _this2$props = _this2.props,
615
686
  dataSource = _this2$props.dataSource,
616
687
  handleSearch = _this2$props.handleSearch,
617
688
  doNotHandleCondition = _this2$props.doNotHandleCondition;
618
- var _this2$state = _this2.state,
619
- order = _this2$state.order,
620
- searchValue = _this2$state.searchValue;
689
+ var _this2$state2 = _this2.state,
690
+ order = _this2$state2.order,
691
+ searchValue = _this2$state2.searchValue;
621
692
  var data = (0, _clone2.default)(dataSource);
622
693
 
623
694
  var doFilter = function doFilter(dataSource, filter) {
624
- var _this19 = this;
695
+ var _this21 = this;
625
696
 
626
- (0, _newArrowCheck2.default)(this, _this18);
697
+ (0, _newArrowCheck2.default)(this, _this20);
627
698
  var value = filter.value,
628
699
  columnInfo = filter.column;
629
700
  var dataIndex = columnInfo.dataIndex,
@@ -631,7 +702,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
631
702
  multiple = _columnInfo$filter.multiple,
632
703
  _columnInfo$filter$ha = _columnInfo$filter.handleFilter,
633
704
  handleFilter = _columnInfo$filter$ha === void 0 ? function (value, record, filterValue, multiple) {
634
- (0, _newArrowCheck2.default)(this, _this19);
705
+ (0, _newArrowCheck2.default)(this, _this21);
635
706
 
636
707
  if (value == null) {
637
708
  return false;
@@ -656,24 +727,24 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
656
727
  }
657
728
  }.bind(this) : _columnInfo$filter$ha;
658
729
  return (0, _filter2.default)(dataSource, function (record) {
659
- (0, _newArrowCheck2.default)(this, _this19);
730
+ (0, _newArrowCheck2.default)(this, _this21);
660
731
  return handleFilter(record && record[dataIndex], record, value, multiple);
661
732
  }.bind(this));
662
733
  }.bind(this);
663
734
 
664
735
  if (!doNotHandleCondition && !(0, _isEmpty2.default)(filters)) {
665
736
  (0, _forEach2.default)(filters, function (filter, key) {
666
- (0, _newArrowCheck2.default)(this, _this18);
737
+ (0, _newArrowCheck2.default)(this, _this20);
667
738
  return data = doFilter(data, filter, key);
668
739
  }.bind(this));
669
740
  }
670
741
 
671
742
  var doSearch = function doSearch(dataSource, searchValue) {
672
- var _this20 = this;
743
+ var _this22 = this;
673
744
 
674
- (0, _newArrowCheck2.default)(this, _this18);
745
+ (0, _newArrowCheck2.default)(this, _this20);
675
746
  return dataSource.filter(function (record) {
676
- (0, _newArrowCheck2.default)(this, _this20);
747
+ (0, _newArrowCheck2.default)(this, _this22);
677
748
  return handleSearch(record, searchValue);
678
749
  }.bind(this));
679
750
  }.bind(this);
@@ -683,9 +754,9 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
683
754
  }
684
755
 
685
756
  var doOrder = function doOrder(dataSource, order) {
686
- var _this21 = this;
757
+ var _this23 = this;
687
758
 
688
- (0, _newArrowCheck2.default)(this, _this18);
759
+ (0, _newArrowCheck2.default)(this, _this20);
689
760
  var dataIndex = order.dataIndex,
690
761
  handleOrder = order.handleOrder,
691
762
  state = order.state;
@@ -697,11 +768,11 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
697
768
  return handleOrder.apply(void 0, [state].concat(args));
698
769
  } : {
699
770
  desc: function desc(a, b) {
700
- (0, _newArrowCheck2.default)(this, _this21);
771
+ (0, _newArrowCheck2.default)(this, _this23);
701
772
  return a[dataIndex] > b[dataIndex] ? -1 : a[dataIndex] < b[dataIndex] ? 1 : 0;
702
773
  }.bind(this),
703
774
  asc: function asc(a, b) {
704
- (0, _newArrowCheck2.default)(this, _this21);
775
+ (0, _newArrowCheck2.default)(this, _this23);
705
776
  return a[dataIndex] < b[dataIndex] ? -1 : a[dataIndex] > b[dataIndex] ? 1 : 0;
706
777
  }.bind(this)
707
778
  }[state]);
@@ -730,28 +801,92 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
730
801
  }.bind(this);
731
802
 
732
803
  _this2.handleToggleCurrentPage = function (enableKeysOfCurrentPage, checked) {
733
- var _this22 = this;
804
+ var _this24 = this;
734
805
 
735
806
  (0, _newArrowCheck2.default)(this, _this3);
807
+ var flatDataSourceKeys = _this2.state.flatDataSourceKeys;
808
+ var parentSelectedRowKeys = [];
809
+
810
+ if (checked) {
811
+ flatDataSourceKeys.forEach(function (item) {
812
+ (0, _newArrowCheck2.default)(this, _this24);
813
+
814
+ if (!item.parent) {
815
+ parentSelectedRowKeys.push(item.key);
816
+ }
817
+ }.bind(this));
818
+ }
819
+
736
820
  var selectedRowKeyMap = _this2.state.selectedRowKeyMap;
737
821
  var extendSelectedRowKeyMap = {};
738
822
  (0, _each2.default)(enableKeysOfCurrentPage, function (key) {
739
- (0, _newArrowCheck2.default)(this, _this22);
823
+ (0, _newArrowCheck2.default)(this, _this24);
740
824
  extendSelectedRowKeyMap[key] = checked;
741
825
  }.bind(this));
742
826
 
743
- _this2.onSelectedRowKeysChange(_objectSpread(_objectSpread({}, selectedRowKeyMap), extendSelectedRowKeyMap));
827
+ _this2.setState({
828
+ indeterminateSelectedRowKeyMap: {},
829
+ parentSelectedRowKeys: parentSelectedRowKeys
830
+ }, function () {
831
+ (0, _newArrowCheck2.default)(this, _this24);
832
+
833
+ _this2.onSelectedRowKeysChange(_objectSpread(_objectSpread({}, selectedRowKeyMap), extendSelectedRowKeyMap));
834
+ }.bind(this));
744
835
  }.bind(this);
745
836
 
746
- _this2.handleSelectRecord = function (key, checked) {
837
+ _this2.handleSelectRecord = function (_ref5) {
838
+ var _this25 = this;
839
+
747
840
  (0, _newArrowCheck2.default)(this, _this3);
841
+ var key = _ref5.key,
842
+ checked = _ref5.checked,
843
+ flatDataSourceKeys = _ref5.flatDataSourceKeys,
844
+ indeterminateSelectedRowKeyMap = _ref5.indeterminateSelectedRowKeyMap;
748
845
  var rowSelection = _this2.props.rowSelection;
749
846
  var selectedRowKeyMap = _this2.state.selectedRowKeyMap;
750
847
 
751
848
  if (rowSelection.multiple === false) {
752
849
  _this2.onSelectedRowKeysChange((0, _defineProperty2.default)({}, key, true));
753
850
  } else {
754
- _this2.onSelectedRowKeysChange(_objectSpread(_objectSpread({}, selectedRowKeyMap), {}, (0, _defineProperty2.default)({}, key, checked)));
851
+ var nowSelectedRowKeyMap = _objectSpread(_objectSpread({}, selectedRowKeyMap), {}, (0, _defineProperty2.default)({}, key, checked));
852
+
853
+ if (!rowSelection.linkage) {
854
+ _this2.onSelectedRowKeysChange(_objectSpread({}, nowSelectedRowKeyMap));
855
+
856
+ return;
857
+ }
858
+
859
+ var _this2$initLinkageRow2 = _this2.initLinkageRowSelectionMap(nowSelectedRowKeyMap, checked, key, flatDataSourceKeys, indeterminateSelectedRowKeyMap),
860
+ mergeMap = _this2$initLinkageRow2.mergeMap,
861
+ indeterminate = _this2$initLinkageRow2.indeterminate;
862
+
863
+ var truthyKeys = Object.keys(mergeMap).filter(function (key) {
864
+ (0, _newArrowCheck2.default)(this, _this25);
865
+ return Boolean(mergeMap[key]);
866
+ }.bind(this));
867
+ var parentSelectedRowKeys = truthyKeys.reduce(function (p, key) {
868
+ var _this26 = this;
869
+
870
+ (0, _newArrowCheck2.default)(this, _this25);
871
+ var record = flatDataSourceKeys.find(function (record) {
872
+ (0, _newArrowCheck2.default)(this, _this26);
873
+ return String(record.key) == String(key);
874
+ }.bind(this));
875
+ var parentKeys = p.filter(function (x) {
876
+ (0, _newArrowCheck2.default)(this, _this26);
877
+ return !record.childrenKeys.includes(x);
878
+ }.bind(this));
879
+ return parentKeys;
880
+ }.bind(this), (0, _toConsumableArray2.default)(truthyKeys));
881
+
882
+ _this2.setState({
883
+ indeterminateSelectedRowKeyMap: indeterminate,
884
+ parentSelectedRowKeys: parentSelectedRowKeys
885
+ }, function () {
886
+ (0, _newArrowCheck2.default)(this, _this25);
887
+
888
+ _this2.onSelectedRowKeysChange(_objectSpread({}, mergeMap));
889
+ }.bind(this));
755
890
  }
756
891
  }.bind(this);
757
892
 
@@ -769,18 +904,111 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
769
904
  return (key === undefined ? index : key) + '';
770
905
  };
771
906
 
907
+ _this2.flatDataSourceKeysForMap = function (_ref6) {
908
+ var _this28 = this;
909
+
910
+ var dataSource = _ref6.dataSource;
911
+ var childrenName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'children';
912
+ var result = [];
913
+
914
+ var _self = (0, _assertThisInitialized2.default)(_this2);
915
+
916
+ function getKey(children) {
917
+ var _this27 = this;
918
+
919
+ return children.reduce(function (p, item) {
920
+ (0, _newArrowCheck2.default)(this, _this27);
921
+
922
+ var curIndex = _self.getRowKey(item, item.tableKey);
923
+
924
+ p = [].concat((0, _toConsumableArray2.default)(p), [curIndex]);
925
+ var childrenKeys = [];
926
+
927
+ if (item[childrenName]) {
928
+ childrenKeys = getKey(item[childrenName]);
929
+ }
930
+
931
+ return [].concat((0, _toConsumableArray2.default)(p), (0, _toConsumableArray2.default)(childrenKeys));
932
+ }.bind(this), []);
933
+ }
934
+
935
+ var push = function push(record, parent) {
936
+ (0, _newArrowCheck2.default)(this, _this28);
937
+ var index = result.length;
938
+ var children = record[childrenName] || [];
939
+ delete record[childrenName];
940
+ var data = {
941
+ record: record,
942
+ parent: parent,
943
+ index: index,
944
+ key: _this2.getRowKey(record, index),
945
+ childrenKeys: getKey(children)
946
+ };
947
+ result.push(data);
948
+ return data;
949
+ }.bind(this);
950
+
951
+ var _loop2 = function loop(array, parent) {
952
+ var _this29 = this;
953
+
954
+ (0, _newArrowCheck2.default)(this, _this28);
955
+ array.forEach(function (record) {
956
+ (0, _newArrowCheck2.default)(this, _this29);
957
+
958
+ if (record && record[childrenName]) {
959
+ var newRecord = _objectSpread({}, record);
960
+
961
+ var parentData = push(newRecord, parent);
962
+
963
+ if (record[childrenName].length > 0) {
964
+ _loop2(record[childrenName], parentData);
965
+ }
966
+ } else {
967
+ push(record, parent);
968
+ }
969
+ }.bind(this));
970
+ }.bind(this); // 递归函数,用于深度优先遍历并设置 key
971
+
972
+
973
+ function setTableKeys(data) {
974
+ var _this30 = this;
975
+
976
+ var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
977
+ data.forEach(function (item) {
978
+ (0, _newArrowCheck2.default)(this, _this30);
979
+ item.tableKey = index++;
980
+
981
+ if (item[childrenName] && item[childrenName].length > 0) {
982
+ index = setTableKeys(item[childrenName], index);
983
+ }
984
+ }.bind(this));
985
+ return index;
986
+ }
987
+
988
+ var cloneDataSource = (0, _cloneDeep2.default)((0, _toConsumableArray2.default)(dataSource)).filter(function (item) {
989
+ (0, _newArrowCheck2.default)(this, _this28);
990
+ return !!item;
991
+ }.bind(this)); // 调用递归函数
992
+
993
+ setTableKeys(cloneDataSource);
994
+
995
+ _loop2(cloneDataSource, null);
996
+
997
+ return result;
998
+ };
999
+
772
1000
  _this2.getDragSorting = function () {
773
- var _this23 = this;
1001
+ var _this31 = this;
774
1002
 
775
1003
  (0, _newArrowCheck2.default)(this, _this3);
776
1004
  var _this2$props2 = _this2.props,
777
1005
  dragSorting = _this2$props2.dragSorting,
778
1006
  expandedRowRender = _this2$props2.expandedRowRender,
779
1007
  columns = _this2$props2.columns;
780
- if (!dragSorting) return false;
1008
+ if (!dragSorting) return false; // 排序暂不支持有展开行配置的table
781
1009
 
782
1010
  if (expandedRowRender || columns && columns.findIndex(function (column) {
783
- (0, _newArrowCheck2.default)(this, _this23);
1011
+ (0, _newArrowCheck2.default)(this, _this31);
784
1012
  return !!column.children;
785
1013
  }.bind(this)) >= 0) {
786
1014
  dragSortingWarning();
@@ -790,8 +1018,8 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
790
1018
  return dragSorting;
791
1019
  }.bind(this);
792
1020
 
793
- _this2.getColumns = function (dataSourceOfCurrentPage, filters) {
794
- var _this24 = this;
1021
+ _this2.getColumns = function (dataSourceOfCurrentPage, filters, indeterminateSelectedRowKeyMap) {
1022
+ var _this32 = this;
795
1023
 
796
1024
  (0, _newArrowCheck2.default)(this, _this3);
797
1025
  var _this2$props3 = _this2.props,
@@ -801,25 +1029,30 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
801
1029
  locale = _this2$props3.locale,
802
1030
  dataSource = _this2$props3.dataSource,
803
1031
  columnResizable = _this2$props3.columnResizable;
804
- var _this2$state2 = _this2.state,
805
- _this2$state2$order = _this2$state2.order,
806
- currentOrder = _this2$state2$order === void 0 ? {} : _this2$state2$order,
807
- selectedRowKeyMap = _this2$state2.selectedRowKeyMap,
808
- columnConfig = _this2$state2.columnConfig;
1032
+ var _this2$state3 = _this2.state,
1033
+ _this2$state3$order = _this2$state3.order,
1034
+ currentOrder = _this2$state3$order === void 0 ? {} : _this2$state3$order,
1035
+ selectedRowKeyMap = _this2$state3.selectedRowKeyMap,
1036
+ columnConfig = _this2$state3.columnConfig;
1037
+
1038
+ var flatDataSourceKeys = _this2.flatDataSourceKeysForMap({
1039
+ dataSource: dataSourceOfCurrentPage
1040
+ });
1041
+
809
1042
  var cloneColumns = columns.map(function (column, index) {
810
- (0, _newArrowCheck2.default)(this, _this24);
1043
+ (0, _newArrowCheck2.default)(this, _this32);
811
1044
  return _objectSpread(_objectSpread({}, column), {}, {
812
1045
  index: index
813
1046
  });
814
1047
  }.bind(this));
815
1048
  var newColumns = cloneColumns.filter(function (column) {
816
- (0, _newArrowCheck2.default)(this, _this24);
1049
+ (0, _newArrowCheck2.default)(this, _this32);
817
1050
  var key = column.key;
818
1051
  return !columnConfig[key] || !columnConfig[key].hidden;
819
1052
  }.bind(this));
820
1053
 
821
1054
  var _generateColumnTitle = function generateColumnTitle(column) {
822
- (0, _newArrowCheck2.default)(this, _this24);
1055
+ (0, _newArrowCheck2.default)(this, _this32);
823
1056
  var dataIndex = column.dataIndex,
824
1057
  title = column.title,
825
1058
  renderTitle = column.renderTitle,
@@ -844,7 +1077,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
844
1077
 
845
1078
  if (columnResizable) {
846
1079
  newColumns.forEach(function (column) {
847
- (0, _newArrowCheck2.default)(this, _this24);
1080
+ (0, _newArrowCheck2.default)(this, _this32);
848
1081
  column.resizable = true;
849
1082
  }.bind(this));
850
1083
  }
@@ -859,44 +1092,48 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
859
1092
  var enableDataSource = flatDataSource;
860
1093
  var selectionDisabled = rowSelection.disabled;
861
1094
 
1095
+ var disableItems = rowSelection.getDisabledOfRow && _this2.initDisabledOfRow(flatDataSourceKeys);
1096
+
1097
+ var linkageFlag = rowSelection.multiple !== false && rowSelection.linkage ? true : false;
1098
+
862
1099
  if (rowSelection.getDisabledOfRow) {
863
1100
  enableDataSourceOfCurrentPage = (0, _filter2.default)(flatDataSourceOfCurrentPage, function (item) {
864
- (0, _newArrowCheck2.default)(this, _this24);
865
- return !rowSelection.getDisabledOfRow(item.record);
1101
+ (0, _newArrowCheck2.default)(this, _this32);
1102
+ return linkageFlag ? !disableItems.includes(item.key) : !rowSelection.getDisabledOfRow(item.record);
866
1103
  }.bind(this));
867
1104
  enableDataSource = (0, _filter2.default)(flatDataSource, function (item) {
868
- (0, _newArrowCheck2.default)(this, _this24);
869
- return !rowSelection.getDisabledOfRow(item.record);
1105
+ (0, _newArrowCheck2.default)(this, _this32);
1106
+ return linkageFlag ? !disableItems.includes(item.key) : !rowSelection.getDisabledOfRow(item.record);
870
1107
  }.bind(this));
871
1108
  }
872
1109
 
873
1110
  var selectedEnableDataSourceOfCurrentPage = (0, _filter2.default)(enableDataSourceOfCurrentPage, function (item) {
874
- (0, _newArrowCheck2.default)(this, _this24);
1111
+ (0, _newArrowCheck2.default)(this, _this32);
875
1112
  return selectedRowKeyMap[item.key];
876
1113
  }.bind(this));
877
1114
  var selectedEnableDataSource = (0, _filter2.default)(enableDataSource, function (item) {
878
- (0, _newArrowCheck2.default)(this, _this24);
1115
+ (0, _newArrowCheck2.default)(this, _this32);
879
1116
  return selectedRowKeyMap[item.key];
880
1117
  }.bind(this));
881
1118
  var selectedEnableDataSourceOfCurrentPageCount = selectedEnableDataSourceOfCurrentPage.length;
882
1119
  var isAllSelected = selectedEnableDataSourceOfCurrentPageCount === enableDataSourceOfCurrentPage.length && selectedEnableDataSourceOfCurrentPageCount > 0;
883
1120
  var selectedCount = (0, _filter2.default)(selectedRowKeyMap, function (v) {
884
- (0, _newArrowCheck2.default)(this, _this24);
1121
+ (0, _newArrowCheck2.default)(this, _this32);
885
1122
  return v;
886
1123
  }.bind(this)).length;
887
1124
 
888
1125
  var renderSelectedAllCheckbox = function renderSelectedAllCheckbox() {
889
- var _this25 = this;
1126
+ var _this33 = this;
890
1127
 
891
- (0, _newArrowCheck2.default)(this, _this24);
1128
+ (0, _newArrowCheck2.default)(this, _this32);
892
1129
  return /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
893
1130
  disabled: selectionDisabled,
894
1131
  onChange: function () {
895
- var _this26 = this;
1132
+ var _this34 = this;
896
1133
 
897
- (0, _newArrowCheck2.default)(this, _this25);
1134
+ (0, _newArrowCheck2.default)(this, _this33);
898
1135
  var enableKeysOfCurrentPage = enableDataSourceOfCurrentPage.map(function (item) {
899
- (0, _newArrowCheck2.default)(this, _this26);
1136
+ (0, _newArrowCheck2.default)(this, _this34);
900
1137
  return item.key;
901
1138
  }.bind(this));
902
1139
 
@@ -913,11 +1150,11 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
913
1150
  getPopupContainer: _this2.getPopupContainer,
914
1151
  popup: /*#__PURE__*/_react.default.createElement("span", null, locale.selected, " ", selectedCount, ' ', /*#__PURE__*/_react.default.createElement(_style.CancelSelect, {
915
1152
  onClick: function () {
916
- var _this27 = this;
1153
+ var _this35 = this;
917
1154
 
918
- (0, _newArrowCheck2.default)(this, _this24);
1155
+ (0, _newArrowCheck2.default)(this, _this32);
919
1156
  var enableKeys = selectedEnableDataSource.map(function (item) {
920
- (0, _newArrowCheck2.default)(this, _this27);
1157
+ (0, _newArrowCheck2.default)(this, _this35);
921
1158
  return item.key;
922
1159
  }.bind(this));
923
1160
 
@@ -933,21 +1170,21 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
933
1170
  width: 32,
934
1171
  fixed: rowSelection.fixed,
935
1172
  onHeaderCell: function onHeaderCell() {
936
- (0, _newArrowCheck2.default)(this, _this24);
1173
+ (0, _newArrowCheck2.default)(this, _this32);
937
1174
  return {
938
1175
  className: _style.selectIconHeaderCls
939
1176
  };
940
1177
  }.bind(this),
941
1178
  onCell: function onCell() {
942
- (0, _newArrowCheck2.default)(this, _this24);
1179
+ (0, _newArrowCheck2.default)(this, _this32);
943
1180
  return {
944
1181
  className: _style.selectIconCellCls
945
1182
  };
946
1183
  }.bind(this),
947
1184
  render: function render(value, record, index) {
948
- var _this28 = this;
1185
+ var _this36 = this;
949
1186
 
950
- (0, _newArrowCheck2.default)(this, _this24);
1187
+ (0, _newArrowCheck2.default)(this, _this32);
951
1188
 
952
1189
  var rowKey = _this2.getRowKey(record, index);
953
1190
 
@@ -956,23 +1193,31 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
956
1193
  if (selectionDisabled) {
957
1194
  disabled = true;
958
1195
  } else if (rowSelection.getDisabledOfRow) {
959
- disabled = rowSelection.getDisabledOfRow(record);
1196
+ disabled = linkageFlag ? disableItems.includes(record.key) : rowSelection.getDisabledOfRow(record);
960
1197
  }
961
1198
 
962
1199
  return rowSelection.multiple === false ? /*#__PURE__*/_react.default.createElement(_Radio.default, {
963
1200
  disabled: disabled,
964
1201
  onChange: function () {
965
- (0, _newArrowCheck2.default)(this, _this28);
966
- return _this2.handleSelectRecord(rowKey);
1202
+ (0, _newArrowCheck2.default)(this, _this36);
1203
+ return _this2.handleSelectRecord({
1204
+ key: rowKey
1205
+ });
967
1206
  }.bind(this),
968
1207
  checked: !!selectedRowKeyMap[rowKey]
969
1208
  }) : /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
970
1209
  disabled: disabled,
971
1210
  onChange: function () {
972
- (0, _newArrowCheck2.default)(this, _this28);
973
- return _this2.handleSelectRecord(rowKey, !selectedRowKeyMap[rowKey]);
1211
+ (0, _newArrowCheck2.default)(this, _this36);
1212
+ return _this2.handleSelectRecord({
1213
+ key: rowKey,
1214
+ checked: !selectedRowKeyMap[rowKey],
1215
+ flatDataSourceKeys: flatDataSourceKeys,
1216
+ indeterminateSelectedRowKeyMap: indeterminateSelectedRowKeyMap
1217
+ });
974
1218
  }.bind(this),
975
- checked: !!selectedRowKeyMap[rowKey]
1219
+ checked: !!selectedRowKeyMap[rowKey],
1220
+ indeterminate: !!indeterminateSelectedRowKeyMap[String(rowKey)]
976
1221
  });
977
1222
  }.bind(this)
978
1223
  });
@@ -987,19 +1232,19 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
987
1232
  width: 40,
988
1233
  fixed: dragSorting === null || dragSorting === void 0 ? void 0 : dragSorting.fixed,
989
1234
  onHeaderCell: function onHeaderCell() {
990
- (0, _newArrowCheck2.default)(this, _this24);
1235
+ (0, _newArrowCheck2.default)(this, _this32);
991
1236
  return {
992
1237
  className: _style.draggerHeaderCls
993
1238
  };
994
1239
  }.bind(this),
995
1240
  onCell: function onCell() {
996
- (0, _newArrowCheck2.default)(this, _this24);
1241
+ (0, _newArrowCheck2.default)(this, _this32);
997
1242
  return {
998
1243
  className: _style.draggerCellCls
999
1244
  };
1000
1245
  }.bind(this),
1001
1246
  render: function render(value, record, index) {
1002
- (0, _newArrowCheck2.default)(this, _this24);
1247
+ (0, _newArrowCheck2.default)(this, _this32);
1003
1248
 
1004
1249
  var rowKey = _this2.getRowKey(record, index);
1005
1250
 
@@ -1019,26 +1264,26 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1019
1264
 
1020
1265
  if (columnPlaceholder) {
1021
1266
  var lastUnFixedIndex = (0, _findLastIndex2.default)(newColumns, function (columnConfig) {
1022
- (0, _newArrowCheck2.default)(this, _this24);
1267
+ (0, _newArrowCheck2.default)(this, _this32);
1023
1268
  return !columnConfig.fixed;
1024
1269
  }.bind(this));
1025
1270
  newColumns.splice(lastUnFixedIndex + 1, 0, {
1026
1271
  title: '',
1027
1272
  key: placeholderKey,
1028
1273
  onHeaderCell: function onHeaderCell() {
1029
- (0, _newArrowCheck2.default)(this, _this24);
1274
+ (0, _newArrowCheck2.default)(this, _this32);
1030
1275
  return {
1031
1276
  className: _style.placeholderHeaderCls
1032
1277
  };
1033
1278
  }.bind(this),
1034
1279
  onCell: function onCell() {
1035
- (0, _newArrowCheck2.default)(this, _this24);
1280
+ (0, _newArrowCheck2.default)(this, _this32);
1036
1281
  return {
1037
1282
  className: _style.placeholderCellCls
1038
1283
  };
1039
1284
  }.bind(this),
1040
1285
  render: function render() {
1041
- (0, _newArrowCheck2.default)(this, _this24);
1286
+ (0, _newArrowCheck2.default)(this, _this32);
1042
1287
  return null;
1043
1288
  }.bind(this)
1044
1289
  });
@@ -1140,12 +1385,12 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1140
1385
  }.bind(this);
1141
1386
 
1142
1387
  _this2.onDragEnd = function (source) {
1143
- var _this29 = this;
1388
+ var _this37 = this;
1144
1389
 
1145
1390
  (0, _newArrowCheck2.default)(this, _this3);
1146
1391
 
1147
1392
  _this2.getTableDom().querySelectorAll('.uc-fe-table-row').forEach(function (row) {
1148
- (0, _newArrowCheck2.default)(this, _this29);
1393
+ (0, _newArrowCheck2.default)(this, _this37);
1149
1394
  row.classList.remove(_style.dragOverDownCls);
1150
1395
  row.classList.remove(_style.dragOverUpCls);
1151
1396
  }.bind(this));
@@ -1201,7 +1446,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1201
1446
  }.bind(this);
1202
1447
 
1203
1448
  _this2.renderSearchInfo = function (option) {
1204
- var _this30 = this;
1449
+ var _this38 = this;
1205
1450
 
1206
1451
  (0, _newArrowCheck2.default)(this, _this3);
1207
1452
  var filters = option.filters,
@@ -1210,16 +1455,16 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1210
1455
  locale = option.locale;
1211
1456
  var first = true;
1212
1457
 
1213
- var renderLabel = function renderLabel(_ref5) {
1214
- var _this31 = this;
1458
+ var renderLabel = function renderLabel(_ref7) {
1459
+ var _this39 = this;
1215
1460
 
1216
- (0, _newArrowCheck2.default)(this, _this30);
1217
- var value = _ref5.value,
1218
- _ref5$column$filter = _ref5.column.filter,
1219
- multiple = _ref5$column$filter.multiple,
1220
- options = _ref5$column$filter.options;
1461
+ (0, _newArrowCheck2.default)(this, _this38);
1462
+ var value = _ref7.value,
1463
+ _ref7$column$filter = _ref7.column.filter,
1464
+ multiple = _ref7$column$filter.multiple,
1465
+ options = _ref7$column$filter.options;
1221
1466
  options = options.map(function (option) {
1222
- (0, _newArrowCheck2.default)(this, _this31);
1467
+ (0, _newArrowCheck2.default)(this, _this39);
1223
1468
  return !(0, _isObject2.default)(option) ? {
1224
1469
  value: option,
1225
1470
  label: option
@@ -1228,23 +1473,23 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1228
1473
 
1229
1474
  if (multiple) {
1230
1475
  var label = (0, _map2.default)(value, function (v) {
1231
- var _this32 = this;
1476
+ var _this40 = this;
1232
1477
 
1233
- (0, _newArrowCheck2.default)(this, _this31);
1478
+ (0, _newArrowCheck2.default)(this, _this39);
1234
1479
  var option = (0, _find2.default)(options, function (option) {
1235
- (0, _newArrowCheck2.default)(this, _this32);
1480
+ (0, _newArrowCheck2.default)(this, _this40);
1236
1481
  return v === option.value;
1237
1482
  }.bind(this));
1238
1483
  return option && option.label;
1239
1484
  }.bind(this));
1240
1485
  var _first = true;
1241
1486
  return (0, _map2.default)(label, function (_label) {
1242
- (0, _newArrowCheck2.default)(this, _this31);
1487
+ (0, _newArrowCheck2.default)(this, _this39);
1243
1488
  return _first ? [_first = false, _label] : [' | ', _label];
1244
1489
  }.bind(this));
1245
1490
  } else {
1246
1491
  var _option = (0, _find2.default)(options, function (option) {
1247
- (0, _newArrowCheck2.default)(this, _this31);
1492
+ (0, _newArrowCheck2.default)(this, _this39);
1248
1493
  return value === option.value;
1249
1494
  }.bind(this));
1250
1495
 
@@ -1260,7 +1505,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1260
1505
  closable: false,
1261
1506
  className: "".concat(_style.prefixCls, "-filter-notice")
1262
1507
  }, searchValue && /*#__PURE__*/_react.default.createElement("span", null, locale.search, locale.colon, searchValue, locale.semicolon), !(0, _isEmpty2.default)(filters) && /*#__PURE__*/_react.default.createElement("span", null, locale.filter, locale.colon, (0, _map2.default)(filters, function (filterInfo) {
1263
- (0, _newArrowCheck2.default)(this, _this30);
1508
+ (0, _newArrowCheck2.default)(this, _this38);
1264
1509
  return first ? [first = false, renderLabel(filterInfo)] : [', ', renderLabel(filterInfo)];
1265
1510
  }.bind(this)), locale.semicolon), /*#__PURE__*/_react.default.createElement("span", null, locale.searchResult, locale.colon, total, locale.items, locale.semicolon), /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement("a", {
1266
1511
  className: "".concat(_style.prefixCls, "-reset-link"),
@@ -1357,6 +1602,9 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1357
1602
  filtersFromProps: _this2.calFiltersFromProps(_props),
1358
1603
  order: null,
1359
1604
  selectedRowKeyMap: {},
1605
+ flatDataSourceKeys: [],
1606
+ indeterminateSelectedRowKeyMap: {},
1607
+ parentSelectedRowKeys: [],
1360
1608
  columnConfig: _props.defaultColumnConfig,
1361
1609
  searchValue: ''
1362
1610
  };
@@ -1377,7 +1625,8 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1377
1625
  } // init selectedRowKeyMap from rowSelection
1378
1626
 
1379
1627
 
1380
- var _rowSelection = _props.rowSelection;
1628
+ var _rowSelection = _props.rowSelection,
1629
+ _dataSource = _props.dataSource;
1381
1630
  var _selectedRowKeyMap = _this2.state.selectedRowKeyMap;
1382
1631
 
1383
1632
  if ((0, _isObject2.default)(_rowSelection)) {
@@ -1392,6 +1641,10 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1392
1641
  return _selectedRowKeyMap[key] = true;
1393
1642
  }.bind(this));
1394
1643
  }
1644
+
1645
+ _this2.initRenderRowSelectionDate({
1646
+ rowSelection: _rowSelection
1647
+ });
1395
1648
  } // init order
1396
1649
 
1397
1650
 
@@ -1411,9 +1664,146 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1411
1664
  }
1412
1665
 
1413
1666
  (0, _createClass2.default)(Table, [{
1667
+ key: "initLinkageRowSelectionMap",
1668
+ value: function initLinkageRowSelectionMap(nowSelectedRowKeyMap, checked, key, flatDataSourceKeys, indeterminateSelectedRowKeyMap) {
1669
+ var _this41 = this;
1670
+
1671
+ if (!flatDataSourceKeys.length) {
1672
+ return {
1673
+ mergeMap: {},
1674
+ indeterminate: {}
1675
+ };
1676
+ } // 半选状态
1677
+
1678
+
1679
+ var indeterminate = _objectSpread({}, indeterminateSelectedRowKeyMap); // 子勾选状态变更 ,通过兄弟节点状态推断父勾选状态,存储修改父状态的map
1680
+
1681
+
1682
+ var childrenKeysAllChecked = {}; // 父勾选变更,子状态同步变更,存储子的map
1683
+
1684
+ var parentKeyCheckedMap = {}; // 选中的key
1685
+
1686
+ var record = flatDataSourceKeys.find(function (record) {
1687
+ (0, _newArrowCheck2.default)(this, _this41);
1688
+ return String(record.key) == String(key);
1689
+ }.bind(this)); // 禁用需要剔除的key
1690
+
1691
+ var disabledItems = this.initDisabledOfRow(flatDataSourceKeys);
1692
+ indeterminate[String(record.key)] = false; // 子被动全选
1693
+
1694
+ if (record && record.childrenKeys && record.childrenKeys.length > 0) {
1695
+ record.childrenKeys.forEach(function (childKey) {
1696
+ (0, _newArrowCheck2.default)(this, _this41);
1697
+ parentKeyCheckedMap[childKey] = checked;
1698
+ indeterminate[String(childKey)] = false;
1699
+ }.bind(this));
1700
+ } // 父被动状态
1701
+
1702
+
1703
+ function changeParentChecked(record, checked, disabledItems) {
1704
+ var _this42 = this;
1705
+
1706
+ var mergeMap = _objectSpread(_objectSpread(_objectSpread({}, nowSelectedRowKeyMap), parentKeyCheckedMap), childrenKeysAllChecked);
1707
+
1708
+ var truthyKeys = Object.keys(mergeMap).filter(function (key) {
1709
+ (0, _newArrowCheck2.default)(this, _this42);
1710
+ return Boolean(mergeMap[key]);
1711
+ }.bind(this));
1712
+ var filterChildrenKeys = record.childrenKeys.filter(function (x) {
1713
+ (0, _newArrowCheck2.default)(this, _this42);
1714
+ return !disabledItems.includes(x);
1715
+ }.bind(this));
1716
+
1717
+ if (record && checked) {
1718
+ if (filterChildrenKeys.every(function (x) {
1719
+ (0, _newArrowCheck2.default)(this, _this42);
1720
+ return truthyKeys.includes(x);
1721
+ }.bind(this))) {
1722
+ childrenKeysAllChecked[record.key] = true;
1723
+ indeterminate[String(record.key)] = false;
1724
+ } else {
1725
+ childrenKeysAllChecked[record.key] = false;
1726
+ indeterminate[String(record.key)] = true;
1727
+ }
1728
+ }
1729
+
1730
+ if (record && !checked) {
1731
+ if (filterChildrenKeys.every(function (x) {
1732
+ (0, _newArrowCheck2.default)(this, _this42);
1733
+ return !truthyKeys.includes(x);
1734
+ }.bind(this))) {
1735
+ childrenKeysAllChecked[record.key] = false;
1736
+ indeterminate[String(record.key)] = false;
1737
+ } else {
1738
+ childrenKeysAllChecked[record.key] = false;
1739
+ indeterminate[String(record.key)] = true;
1740
+ }
1741
+ }
1742
+
1743
+ if (record.parent) {
1744
+ changeParentChecked(record.parent, checked, disabledItems);
1745
+ }
1746
+ }
1747
+
1748
+ if (record.parent) {
1749
+ changeParentChecked(record.parent, checked, disabledItems);
1750
+ }
1751
+
1752
+ disabledItems.forEach(function (key) {
1753
+ (0, _newArrowCheck2.default)(this, _this41);
1754
+ indeterminate[String(key)] = false;
1755
+ }.bind(this));
1756
+
1757
+ var mergeMap = _objectSpread(_objectSpread(_objectSpread({}, nowSelectedRowKeyMap), parentKeyCheckedMap), childrenKeysAllChecked);
1758
+
1759
+ Object.keys(mergeMap).forEach(function (key) {
1760
+ (0, _newArrowCheck2.default)(this, _this41);
1761
+
1762
+ if (disabledItems.includes(key)) {
1763
+ mergeMap[String(key)] = false;
1764
+ }
1765
+ }.bind(this));
1766
+ return {
1767
+ mergeMap: mergeMap,
1768
+ indeterminate: indeterminate
1769
+ };
1770
+ }
1771
+ }, {
1772
+ key: "initDisabledOfRow",
1773
+ value: function initDisabledOfRow(flatDataSourceKeys) {
1774
+ var _this43 = this;
1775
+
1776
+ var rowSelection = this.props.rowSelection;
1777
+
1778
+ if (!rowSelection.getDisabledOfRow) {
1779
+ return [];
1780
+ }
1781
+
1782
+ var needFilterData = (0, _toConsumableArray2.default)(flatDataSourceKeys);
1783
+ needFilterData = (0, _filter2.default)(needFilterData, function (item) {
1784
+ (0, _newArrowCheck2.default)(this, _this43);
1785
+ return rowSelection.getDisabledOfRow(item.record);
1786
+ }.bind(this)); // 父禁用逻辑
1787
+ // function getDisabledOfRow(record, result = []) {
1788
+ // result.push(record.key);
1789
+ // if (record.parent) {
1790
+ // getDisabledOfRow(record.parent, result);
1791
+ // }
1792
+ // return result;
1793
+ // }
1794
+
1795
+ var allDisableItems = needFilterData.reduce(function (p, item) {
1796
+ (0, _newArrowCheck2.default)(this, _this43);
1797
+ // const keys = getDisabledOfRow(item, []);
1798
+ // return [...keys, ...item.childrenKeys];
1799
+ return [].concat((0, _toConsumableArray2.default)(p), [item.key], (0, _toConsumableArray2.default)(item.childrenKeys));
1800
+ }.bind(this), []);
1801
+ return allDisableItems;
1802
+ }
1803
+ }, {
1414
1804
  key: "render",
1415
1805
  value: function render() {
1416
- var _this33 = this;
1806
+ var _this44 = this;
1417
1807
 
1418
1808
  /* eslint-disable no-unused-vars */
1419
1809
  var _this$props = this.props,
@@ -1463,7 +1853,8 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1463
1853
  filters = _this$state.filters,
1464
1854
  filtersFromProps = _this$state.filtersFromProps,
1465
1855
  searchValue = _this$state.searchValue,
1466
- columnConfig = _this$state.columnConfig;
1856
+ columnConfig = _this$state.columnConfig,
1857
+ indeterminateSelectedRowKeyMap = _this$state.indeterminateSelectedRowKeyMap;
1467
1858
  var finalFilters = this.mergeFilters(filters, filtersFromProps, _c);
1468
1859
 
1469
1860
  var _this$getDataSource = this.getDataSource(finalFilters),
@@ -1474,9 +1865,10 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1474
1865
  total = pagination.total;
1475
1866
  }
1476
1867
 
1477
- var columns = this.getColumns(dataSource, finalFilters);
1868
+ var columns = this.getColumns(dataSource, finalFilters, indeterminateSelectedRowKeyMap); // 默认展开所有行
1869
+
1478
1870
  var defaultExpandAllRowsProps = !defaultExpandAllRows ? null : function () {
1479
- (0, _newArrowCheck2.default)(this, _this33);
1871
+ (0, _newArrowCheck2.default)(this, _this44);
1480
1872
  var _this$state$changedUn = this.state.changedUnExpandedRowKeys,
1481
1873
  changedUnExpandedRowKeys = _this$state$changedUn === void 0 ? {} : _this$state$changedUn;
1482
1874
  var expandedRowKeys = this.getExpandedRowKeys(dataSource, changedUnExpandedRowKeys);
@@ -1538,7 +1930,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1538
1930
  expandedRowRender: expandedRowRender,
1539
1931
  expandIconColumnIndex: expandIconColumnIndex === undefined ? columns[0] && columns[0].key === 'table_row_selection' ? 1 : 0 : expandIconColumnIndex,
1540
1932
  title: function () {
1541
- (0, _newArrowCheck2.default)(this, _this33);
1933
+ (0, _newArrowCheck2.default)(this, _this44);
1542
1934
  return this.renderTitle({
1543
1935
  filters: finalFilters,
1544
1936
  searchValue: searchValue,
@@ -1547,7 +1939,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1547
1939
  });
1548
1940
  }.bind(this),
1549
1941
  footer: function () {
1550
- (0, _newArrowCheck2.default)(this, _this33);
1942
+ (0, _newArrowCheck2.default)(this, _this44);
1551
1943
  return this.renderFooter({
1552
1944
  dataSource: _d,
1553
1945
  emptyContent: emptyContent,
@@ -1563,7 +1955,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1563
1955
  }, pagination, {
1564
1956
  className: "".concat(_style.prefixCls, "-pagination"),
1565
1957
  onChange: function (current, pageSize) {
1566
- (0, _newArrowCheck2.default)(this, _this33);
1958
+ (0, _newArrowCheck2.default)(this, _this44);
1567
1959
  this.setState({
1568
1960
  pagination: {
1569
1961
  current: current,
@@ -1573,7 +1965,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1573
1965
  pagination.onChange && pagination.onChange(current, pageSize);
1574
1966
  }.bind(this),
1575
1967
  onPageSizeChange: function (current, pageSize) {
1576
- (0, _newArrowCheck2.default)(this, _this33);
1968
+ (0, _newArrowCheck2.default)(this, _this44);
1577
1969
  this.setState({
1578
1970
  pagination: {
1579
1971
  current: current,
@@ -1583,7 +1975,7 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1583
1975
  pagination.onPageSizeChange && pagination.onPageSizeChange(current, pageSize);
1584
1976
  }.bind(this),
1585
1977
  onAdvise: function (current, pageSize) {
1586
- (0, _newArrowCheck2.default)(this, _this33);
1978
+ (0, _newArrowCheck2.default)(this, _this44);
1587
1979
  this.setState({
1588
1980
  pagination: {
1589
1981
  current: current,
@@ -1691,7 +2083,13 @@ var Table = (_dec = (0, _localeConsumerDecorator.default)({
1691
2083
  selectedTip: _propTypes.default.oneOf([true, false, 'bottom']),
1692
2084
 
1693
2085
  /** 是否禁用 */
1694
- disabled: _propTypes.default.bool
2086
+ disabled: _propTypes.default.bool,
2087
+
2088
+ /**
2089
+ * 需配合 columns.children 使用,控制是否开启父子联动,默认关闭
2090
+ * @default false
2091
+ */
2092
+ linkage: _propTypes.default.bool
1695
2093
  }), _propTypes.default.oneOf([true])]),
1696
2094
 
1697
2095
  /** 拖拽排序 */