vxe-table 3.11.30-beta.0 → 3.11.30

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/lib/index.umd.js CHANGED
@@ -2220,7 +2220,7 @@ function getClass(property, params) {
2220
2220
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
2221
2221
 
2222
2222
 
2223
- const version = "3.11.30-beta.0";
2223
+ const version = "3.11.30";
2224
2224
  core_.VxeUI.version = version;
2225
2225
  core_.VxeUI.tableVersion = version;
2226
2226
  core_.VxeUI.setConfig({
@@ -2790,7 +2790,7 @@ function isNodeElement(elem) {
2790
2790
  const {
2791
2791
  log: log_log
2792
2792
  } = core_.VxeUI;
2793
- const log_version = `table v${"3.11.30-beta.0"}`;
2793
+ const log_version = `table v${"3.11.30"}`;
2794
2794
  const warnLog = log_log.create('warn', log_version);
2795
2795
  const errLog = log_log.create('error', log_version);
2796
2796
  ;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
@@ -9547,11 +9547,12 @@ const Methods = {
9547
9547
  }
9548
9548
  },
9549
9549
  handleCheckedCheckboxRow(rows, value, isForce) {
9550
+ const $xeTable = this;
9550
9551
  if (rows && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)) {
9551
9552
  rows = [rows];
9552
9553
  }
9553
- this.handleBatchSelectRows(rows, !!value, isForce);
9554
- this.checkSelectionStatus();
9554
+ $xeTable.handleBatchSelectRows(rows, !!value, isForce);
9555
+ $xeTable.checkSelectionStatus();
9555
9556
  return this.$nextTick();
9556
9557
  },
9557
9558
  /**
@@ -9584,271 +9585,118 @@ const Methods = {
9584
9585
  return !!treeIndeterminateMaps[getRowid(this, row)] && !this.isCheckedByCheckboxRow(row);
9585
9586
  },
9586
9587
  /**
9587
- * 多行
9588
+ * 切换选中
9588
9589
  * 多选,行选中事件
9589
- * value 选中true 不选false 半选-1
9590
9590
  */
9591
- handleBatchSelectRows(rows, value, isForce) {
9591
+ handleBatchSelectRows(rows, checked, isForce) {
9592
9592
  const $xeTable = this;
9593
+ const props = $xeTable;
9594
+ const reactData = $xeTable;
9593
9595
  const {
9594
9596
  treeConfig
9595
- } = $xeTable;
9597
+ } = props;
9596
9598
  const {
9597
- selectCheckboxMaps,
9598
- checkboxOpts
9599
- } = this;
9599
+ selectCheckboxMaps
9600
+ } = reactData;
9601
+ const selectRowMaps = Object.assign({}, selectCheckboxMaps);
9602
+ const treeOpts = $xeTable.computeTreeOpts;
9603
+ const {
9604
+ transform,
9605
+ mapChildrenField
9606
+ } = treeOpts;
9607
+ const childrenField = treeOpts.children || treeOpts.childrenField;
9608
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
9600
9609
  const {
9601
9610
  checkField,
9602
9611
  checkStrictly,
9603
9612
  checkMethod
9604
9613
  } = checkboxOpts;
9614
+ const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
9605
9615
  if (checkField) {
9616
+ // 树结构
9606
9617
  if (treeConfig && !checkStrictly) {
9607
- rows.forEach(row => {
9608
- this.handleSelectRow({
9609
- row
9610
- }, value, isForce);
9611
- });
9612
- } else {
9613
- rows.forEach(row => {
9618
+ // 更新子节点状态
9619
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(rows, row => {
9614
9620
  if (isForce || !checkMethod || checkMethod({
9615
9621
  row
9616
9622
  })) {
9617
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, value);
9618
- this.handleCheckboxReserveRow(row, value);
9623
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, checked);
9624
+ if (indeterminateField) {
9625
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, false);
9626
+ }
9627
+ $xeTable.handleCheckboxReserveRow(row, checked);
9619
9628
  }
9629
+ }, {
9630
+ children: transform ? mapChildrenField : childrenField
9620
9631
  });
9621
- }
9622
- } else {
9623
- if (treeConfig && !checkStrictly) {
9624
- rows.forEach(row => {
9625
- this.handleSelectRow({
9626
- row
9627
- }, value, isForce);
9628
- });
9632
+ reactData.selectCheckboxMaps = selectRowMaps;
9633
+ return;
9629
9634
  } else {
9630
- const selectRowMaps = Object.assign({}, selectCheckboxMaps);
9635
+ // 列表
9631
9636
  rows.forEach(row => {
9632
- const rowid = getRowid($xeTable, row);
9633
9637
  if (isForce || !checkMethod || checkMethod({
9634
9638
  row
9635
9639
  })) {
9636
- if (value) {
9637
- if (!selectRowMaps[rowid]) {
9638
- selectRowMaps[rowid] = row;
9639
- }
9640
- } else {
9641
- if (selectRowMaps[rowid]) {
9642
- delete selectRowMaps[rowid];
9643
- }
9644
- }
9645
- this.handleCheckboxReserveRow(row, value);
9640
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, checked);
9641
+ $xeTable.handleCheckboxReserveRow(row, checked);
9646
9642
  }
9647
9643
  });
9648
- this.selectCheckboxMaps = selectRowMaps;
9649
9644
  }
9645
+ reactData.selectCheckboxMaps = selectRowMaps;
9646
+ return;
9650
9647
  }
9651
- },
9652
- /**
9653
- * 多选,行选中事件
9654
- * value 选中true 不选false 半选-1
9655
- */
9656
- handleSelectRow({
9657
- row
9658
- }, value, isForce) {
9659
- const {
9660
- selectCheckboxMaps,
9661
- afterFullData,
9662
- treeConfig,
9663
- treeOpts,
9664
- treeIndeterminateMaps,
9665
- checkboxOpts
9666
- } = this;
9667
- const {
9668
- checkField,
9669
- checkStrictly,
9670
- checkMethod
9671
- } = checkboxOpts;
9672
- const selectRowMaps = {
9673
- ...selectCheckboxMaps
9674
- };
9675
- const childrenField = treeOpts.children || treeOpts.childrenField;
9676
- const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
9677
- const rowid = getRowid(this, row);
9678
- if (checkField) {
9679
- if (treeConfig && !checkStrictly) {
9680
- if (value === -1) {
9681
- if (!treeIndeterminateMaps[rowid]) {
9682
- if (indeterminateField) {
9683
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, true);
9684
- }
9685
- treeIndeterminateMaps[rowid] = row;
9686
- }
9687
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, false);
9688
- } else {
9689
- // 更新子节点状态
9690
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([row], item => {
9691
- if (this.eqRow(item, row) || isForce || !checkMethod || checkMethod({
9692
- row: item
9693
- })) {
9694
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(item, checkField, value);
9695
- if (indeterminateField) {
9696
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, false);
9697
- }
9698
- delete treeIndeterminateMaps[getRowid(this, item)];
9699
- this.handleCheckboxReserveRow(row, value);
9700
- }
9701
- }, {
9702
- children: childrenField
9703
- });
9704
- }
9705
- // 如果存在父节点,更新父节点状态
9706
- const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(afterFullData, item => this.eqRow(item, row), {
9707
- children: childrenField
9708
- });
9709
- if (matchObj && matchObj.parent) {
9710
- let parentStatus;
9711
- const vItems = [];
9712
- const vItemMaps = {};
9713
- if (!isForce && checkMethod) {
9714
- matchObj.items.forEach(item => {
9715
- if (checkMethod({
9716
- row: item
9717
- })) {
9718
- const itemRid = getRowid(this, item);
9719
- vItemMaps[itemRid] = item;
9720
- vItems.push(item);
9721
- }
9722
- });
9723
- } else {
9724
- matchObj.items.forEach(item => {
9725
- const itemRid = getRowid(this, item);
9726
- vItemMaps[itemRid] = item;
9727
- vItems.push(item);
9728
- });
9729
- }
9730
- const indeterminatesItem = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().find(matchObj.items, item => !!treeIndeterminateMaps[getRowid(this, item)]);
9731
- if (indeterminatesItem) {
9732
- parentStatus = -1;
9733
- } else {
9734
- const selectItems = [];
9735
- matchObj.items.forEach(item => {
9736
- if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(item, checkField)) {
9737
- selectItems.push(item);
9738
- }
9739
- });
9740
- parentStatus = selectItems.filter(item => vItemMaps[getRowid(this, item)]).length === vItems.length ? true : selectItems.length || value === -1 ? -1 : false;
9741
- }
9742
- this.selectCheckboxMaps = selectRowMaps;
9743
- return this.handleSelectRow({
9744
- row: matchObj.parent
9745
- }, parentStatus, isForce);
9746
- }
9747
- } else {
9748
- if (isForce || !checkMethod || checkMethod({
9749
- row
9750
- })) {
9751
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, value);
9752
- this.handleCheckboxReserveRow(row, value);
9753
- }
9754
- }
9755
- } else {
9756
- if (treeConfig && !checkStrictly) {
9757
- if (value === -1) {
9758
- if (!treeIndeterminateMaps[rowid]) {
9759
- if (indeterminateField) {
9760
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, true);
9761
- }
9762
- treeIndeterminateMaps[rowid] = row;
9763
- }
9764
- if (selectRowMaps[rowid]) {
9765
- delete selectRowMaps[rowid];
9766
- }
9767
- } else {
9768
- // 更新子节点状态
9769
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([row], item => {
9770
- const itemRid = getRowid(this, item);
9771
- if (this.eqRow(item, row) || isForce || !checkMethod || checkMethod({
9772
- row: item
9773
- })) {
9774
- if (value) {
9775
- selectRowMaps[itemRid] = item;
9776
- } else {
9777
- if (selectRowMaps[itemRid]) {
9778
- delete selectRowMaps[itemRid];
9779
- }
9780
- }
9781
- if (indeterminateField) {
9782
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, false);
9783
- }
9784
- delete treeIndeterminateMaps[getRowid(this, item)];
9785
- this.handleCheckboxReserveRow(row, value);
9786
- }
9787
- }, {
9788
- children: childrenField
9789
- });
9790
- }
9791
- // 如果存在父节点,更新父节点状态
9792
- const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(afterFullData, item => this.eqRow(item, row), {
9793
- children: childrenField
9794
- });
9795
- if (matchObj && matchObj.parent) {
9796
- let parentStatus;
9797
- const vItems = [];
9798
- const vItemMaps = {};
9799
- if (!isForce && checkMethod) {
9800
- matchObj.items.forEach(item => {
9801
- if (checkMethod({
9802
- row: item
9803
- })) {
9804
- const itemRid = getRowid(this, item);
9805
- vItemMaps[itemRid] = item;
9806
- vItems.push(item);
9807
- }
9808
- });
9809
- } else {
9810
- matchObj.items.forEach(item => {
9811
- const itemRid = getRowid(this, item);
9812
- vItemMaps[itemRid] = item;
9813
- vItems.push(item);
9814
- });
9815
- }
9816
- const indeterminatesItem = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().find(matchObj.items, item => !!treeIndeterminateMaps[getRowid(this, item)]);
9817
- if (indeterminatesItem) {
9818
- parentStatus = -1;
9819
- } else {
9820
- const selectItems = [];
9821
- matchObj.items.forEach(item => {
9822
- const itemRid = getRowid(this, item);
9823
- if (selectRowMaps[itemRid]) {
9824
- selectItems.push(item);
9825
- }
9826
- });
9827
- parentStatus = selectItems.filter(item => vItemMaps[getRowid(this, item)]).length === vItems.length ? true : selectItems.length || value === -1 ? -1 : false;
9828
- }
9829
- this.selectCheckboxMaps = selectRowMaps;
9830
- return this.handleSelectRow({
9831
- row: matchObj.parent
9832
- }, parentStatus, isForce);
9833
- }
9834
- } else {
9648
+ // 树结构
9649
+ if (treeConfig && !checkStrictly) {
9650
+ // 更新子节点状态
9651
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(rows, row => {
9652
+ const rowid = getRowid($xeTable, row);
9835
9653
  if (isForce || !checkMethod || checkMethod({
9836
9654
  row
9837
9655
  })) {
9838
- if (value) {
9839
- if (!selectRowMaps[rowid]) {
9840
- selectRowMaps[rowid] = row;
9841
- }
9656
+ if (checked) {
9657
+ selectRowMaps[rowid] = row;
9842
9658
  } else {
9843
9659
  if (selectRowMaps[rowid]) {
9844
9660
  delete selectRowMaps[rowid];
9845
9661
  }
9846
9662
  }
9847
- this.handleCheckboxReserveRow(row, value);
9663
+ $xeTable.handleCheckboxReserveRow(row, checked);
9848
9664
  }
9849
- }
9665
+ }, {
9666
+ children: transform ? mapChildrenField : childrenField
9667
+ });
9668
+ reactData.selectCheckboxMaps = selectRowMaps;
9669
+ return;
9850
9670
  }
9851
- this.selectCheckboxMaps = selectRowMaps;
9671
+ // 列表
9672
+ rows.forEach(row => {
9673
+ const rowid = getRowid($xeTable, row);
9674
+ if (isForce || !checkMethod || checkMethod({
9675
+ row
9676
+ })) {
9677
+ if (checked) {
9678
+ if (!selectRowMaps[rowid]) {
9679
+ selectRowMaps[rowid] = row;
9680
+ }
9681
+ } else {
9682
+ if (selectRowMaps[rowid]) {
9683
+ delete selectRowMaps[rowid];
9684
+ }
9685
+ }
9686
+ $xeTable.handleCheckboxReserveRow(row, checked);
9687
+ }
9688
+ });
9689
+ reactData.selectCheckboxMaps = selectRowMaps;
9690
+ },
9691
+ /**
9692
+ * 即将移除
9693
+ * @deprecated
9694
+ */
9695
+ handleSelectRow({
9696
+ row
9697
+ }, checked, isForce) {
9698
+ const $xeTable = this;
9699
+ $xeTable.handleBatchSelectRows([row], checked, isForce);
9852
9700
  },
9853
9701
  handleToggleCheckRowEvent(evnt, params) {
9854
9702
  const {
@@ -9865,20 +9713,20 @@ const Methods = {
9865
9713
  if (trigger === 'manual') {
9866
9714
  return;
9867
9715
  }
9868
- let value = false;
9716
+ let checked = false;
9869
9717
  if (checkField) {
9870
- value = !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField);
9718
+ checked = !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField);
9871
9719
  } else {
9872
- value = !selectCheckboxMaps[getRowid(this, row)];
9720
+ checked = !selectCheckboxMaps[getRowid(this, row)];
9873
9721
  }
9874
9722
  if (evnt) {
9875
- this.triggerCheckRowEvent(evnt, params, value);
9723
+ this.triggerCheckRowEvent(evnt, params, checked);
9876
9724
  } else {
9877
- this.handleSelectRow(params, value);
9725
+ this.handleSelectRow(params, checked);
9878
9726
  this.checkSelectionStatus();
9879
9727
  }
9880
9728
  },
9881
- triggerCheckRowEvent(evnt, params, value) {
9729
+ triggerCheckRowEvent(evnt, params, checked) {
9882
9730
  const {
9883
9731
  checkboxOpts,
9884
9732
  afterFullData
@@ -9914,13 +9762,13 @@ const Methods = {
9914
9762
  if (!checkMethod || checkMethod({
9915
9763
  row
9916
9764
  })) {
9917
- this.handleSelectRow(params, value);
9765
+ this.handleSelectRow(params, checked);
9918
9766
  this.checkSelectionStatus();
9919
9767
  this.emitEvent('checkbox-change', Object.assign({
9920
9768
  records: this.getCheckboxRecords(),
9921
9769
  reserves: this.getCheckboxReserveRecords(),
9922
9770
  indeterminates: this.getCheckboxIndeterminateRecords(),
9923
- checked: value
9771
+ checked
9924
9772
  }, params), evnt);
9925
9773
  }
9926
9774
  },
@@ -9928,6 +9776,7 @@ const Methods = {
9928
9776
  * 多选,切换某一行的选中状态
9929
9777
  */
9930
9778
  toggleCheckboxRow(row) {
9779
+ const $xeTable = this;
9931
9780
  const {
9932
9781
  selectCheckboxMaps,
9933
9782
  checkboxOpts
@@ -9935,14 +9784,14 @@ const Methods = {
9935
9784
  const {
9936
9785
  checkField
9937
9786
  } = checkboxOpts;
9938
- const value = checkField ? !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField) : !selectCheckboxMaps[getRowid(this, row)];
9939
- this.handleSelectRow({
9940
- row
9941
- }, value, true);
9942
- this.checkSelectionStatus();
9943
- return this.$nextTick();
9787
+ const checked = checkField ? !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)];
9788
+ $xeTable.handleBatchSelectRows([row], checked, true);
9789
+ $xeTable.checkSelectionStatus();
9790
+ return $xeTable.$nextTick();
9944
9791
  },
9945
- handleCheckedAllCheckboxRow(value, isForce) {
9792
+ handleCheckedAllCheckboxRow(checked, isForce) {
9793
+ const $xeTable = this;
9794
+ const reactData = $xeTable;
9946
9795
  const {
9947
9796
  afterFullData,
9948
9797
  treeConfig,
@@ -9971,7 +9820,7 @@ const Methods = {
9971
9820
  }
9972
9821
  // 疑惑!
9973
9822
  if (checkStrictly) {
9974
- this.isAllSelected = value;
9823
+ this.isAllSelected = checked;
9975
9824
  } else {
9976
9825
  /**
9977
9826
  * 绑定属性方式(高性能,有污染)
@@ -9982,10 +9831,10 @@ const Methods = {
9982
9831
  if (isForce || !checkMethod || checkMethod({
9983
9832
  row
9984
9833
  })) {
9985
- if (value) {
9834
+ if (checked) {
9986
9835
  selectRowMaps[getRowid(this, row)] = row;
9987
9836
  }
9988
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, value);
9837
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, checked);
9989
9838
  }
9990
9839
  if (treeConfig && indeterminateField) {
9991
9840
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, false);
@@ -10006,7 +9855,7 @@ const Methods = {
10006
9855
  * 无需任何属性,直接绑定
10007
9856
  */
10008
9857
  if (treeConfig) {
10009
- if (value) {
9858
+ if (checked) {
10010
9859
  /**
10011
9860
  * 如果是树勾选
10012
9861
  * 如果方法成立,则添加到临时集合中
@@ -10039,7 +9888,7 @@ const Methods = {
10039
9888
  }
10040
9889
  }
10041
9890
  } else {
10042
- if (value) {
9891
+ if (checked) {
10043
9892
  /**
10044
9893
  * 如果是行勾选
10045
9894
  * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
@@ -10079,7 +9928,7 @@ const Methods = {
10079
9928
  }
10080
9929
  }
10081
9930
  if (reserve) {
10082
- if (value) {
9931
+ if (checked) {
10083
9932
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(selectRowMaps, (row, rowid) => {
10084
9933
  checkboxReserveRowMap[rowid] = row;
10085
9934
  });
@@ -10089,6 +9938,8 @@ const Methods = {
10089
9938
  }
10090
9939
  this.selectCheckboxMaps = checkField ? {} : selectRowMaps;
10091
9940
  }
9941
+ reactData.isAllSelected = checked;
9942
+ reactData.isIndeterminate = false;
10092
9943
  this.treeIndeterminateMaps = {};
10093
9944
  this.treeIndeterminateRowMaps = {};
10094
9945
  this.checkSelectionStatus();
@@ -10101,81 +9952,182 @@ const Methods = {
10101
9952
  setAllCheckboxRow(value) {
10102
9953
  return this.handleCheckedAllCheckboxRow(value, true);
10103
9954
  },
10104
- checkSelectionStatus() {
9955
+ updateCheckboxStatus() {
9956
+ const $xeTable = this;
9957
+ const props = $xeTable;
9958
+ const reactData = $xeTable;
9959
+ const internalData = $xeTable;
10105
9960
  const {
10106
- afterFullData,
10107
- selectCheckboxMaps,
10108
- treeIndeterminateMaps,
10109
- checkboxOpts,
10110
9961
  treeConfig
10111
- } = this;
9962
+ } = props;
9963
+ const {
9964
+ selectCheckboxMaps,
9965
+ treeIndeterminateMaps
9966
+ } = reactData;
9967
+ const selectRowMaps = Object.assign({}, selectCheckboxMaps);
9968
+ const halfRowMaps = Object.assign({}, treeIndeterminateMaps);
9969
+ const treeOpts = $xeTable.computeTreeOpts;
9970
+ const {
9971
+ transform,
9972
+ mapChildrenField
9973
+ } = treeOpts;
9974
+ const childrenField = treeOpts.children || treeOpts.childrenField;
9975
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
10112
9976
  const {
10113
9977
  checkField,
10114
9978
  checkStrictly,
10115
9979
  checkMethod
10116
9980
  } = checkboxOpts;
10117
- const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
10118
- if (!checkStrictly) {
10119
- const disableRows = [];
10120
- const checkRows = [];
10121
- let isAllResolve = false;
10122
- let isAllSelected = false;
10123
- let isIndeterminate = false;
10124
- if (checkField) {
10125
- isAllResolve = afterFullData.every(checkMethod ? row => {
10126
- if (!checkMethod({
10127
- row
9981
+ const {
9982
+ afterTreeFullData
9983
+ } = internalData;
9984
+ if (checkStrictly) {
9985
+ return;
9986
+ }
9987
+ // 树结构
9988
+ if (treeConfig) {
9989
+ const childRowMaps = {};
9990
+ const childRowList = [];
9991
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData, row => {
9992
+ const rowid = getRowid($xeTable, row);
9993
+ const childList = row[transform ? mapChildrenField : childrenField];
9994
+ if (childList && childList.length && !childRowMaps[rowid]) {
9995
+ childRowMaps[rowid] = 1;
9996
+ childRowList.unshift([row, rowid, childList]);
9997
+ }
9998
+ }, {
9999
+ children: transform ? mapChildrenField : childrenField
10000
+ });
10001
+ childRowList.forEach(vals => {
10002
+ const row = vals[0];
10003
+ const rowid = vals[1];
10004
+ const childList = vals[2];
10005
+ let sLen = 0; // 已选
10006
+ let hLen = 0; // 半选
10007
+ let vLen = 0; // 有效行
10008
+ childList.forEach(checkMethod ? item => {
10009
+ const childRowid = getRowid($xeTable, item);
10010
+ const isSelect = checkField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(item, checkField) : selectRowMaps[childRowid];
10011
+ if (checkMethod({
10012
+ row: item
10128
10013
  })) {
10129
- disableRows.push(row);
10130
- return true;
10014
+ if (isSelect) {
10015
+ sLen++;
10016
+ } else if (halfRowMaps[childRowid]) {
10017
+ hLen++;
10018
+ }
10019
+ vLen++;
10020
+ } else {
10021
+ if (isSelect) {
10022
+ sLen++;
10023
+ } else if (halfRowMaps[childRowid]) {
10024
+ hLen++;
10025
+ }
10131
10026
  }
10132
- if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField)) {
10133
- checkRows.push(row);
10134
- return true;
10027
+ } : item => {
10028
+ const childRowid = getRowid($xeTable, item);
10029
+ const isSelect = checkField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(item, checkField) : selectRowMaps[childRowid];
10030
+ if (isSelect) {
10031
+ sLen++;
10032
+ } else if (halfRowMaps[childRowid]) {
10033
+ hLen++;
10135
10034
  }
10136
- return false;
10137
- } : row => external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField));
10138
- isAllSelected = isAllResolve && afterFullData.length !== disableRows.length;
10139
- if (treeConfig) {
10140
- if (indeterminateField) {
10141
- isIndeterminate = !isAllSelected && afterFullData.some(row => external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, indeterminateField) || !!treeIndeterminateMaps[getRowid(this, row)]);
10142
- } else {
10143
- isIndeterminate = !isAllSelected && afterFullData.some(row => external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField) || !!treeIndeterminateMaps[getRowid(this, row)]);
10035
+ vLen++;
10036
+ });
10037
+ const isSelected = sLen >= vLen;
10038
+ const halfSelect = !isSelected && (sLen >= 1 || hLen >= 1);
10039
+ if (checkField) {
10040
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField, isSelected);
10041
+ }
10042
+ if (isSelected) {
10043
+ if (!checkField) {
10044
+ selectRowMaps[rowid] = row;
10045
+ }
10046
+ if (halfRowMaps[rowid]) {
10047
+ delete halfRowMaps[rowid];
10144
10048
  }
10145
10049
  } else {
10146
- if (indeterminateField) {
10147
- isIndeterminate = !isAllSelected && afterFullData.some(row => external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, indeterminateField));
10050
+ if (!checkField) {
10051
+ if (selectRowMaps[rowid]) {
10052
+ delete selectRowMaps[rowid];
10053
+ }
10054
+ }
10055
+ if (halfSelect) {
10056
+ halfRowMaps[rowid] = row;
10148
10057
  } else {
10149
- isIndeterminate = !isAllSelected && afterFullData.some(row => external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField));
10058
+ if (halfRowMaps[rowid]) {
10059
+ delete halfRowMaps[rowid];
10060
+ }
10150
10061
  }
10151
10062
  }
10063
+ });
10064
+ }
10065
+ reactData.selectCheckboxMaps = selectRowMaps;
10066
+ reactData.treeIndeterminateMaps = halfRowMaps;
10067
+ },
10068
+ updateAllCheckboxStatus() {
10069
+ const $xeTable = this;
10070
+ const props = $xeTable;
10071
+ const reactData = $xeTable;
10072
+ const internalData = $xeTable;
10073
+ const {
10074
+ treeConfig
10075
+ } = props;
10076
+ const {
10077
+ selectCheckboxMaps,
10078
+ treeIndeterminateMaps
10079
+ } = reactData;
10080
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
10081
+ const {
10082
+ checkField,
10083
+ checkMethod
10084
+ } = checkboxOpts;
10085
+ const {
10086
+ afterFullData,
10087
+ afterTreeFullData
10088
+ } = internalData;
10089
+ let sLen = 0; // 已选
10090
+ let hLen = 0; // 半选
10091
+ let vLen = 0; // 有效行
10092
+ const rootList = treeConfig ? afterTreeFullData : afterFullData;
10093
+ rootList.forEach(checkMethod ? row => {
10094
+ const childRowid = getRowid($xeTable, row);
10095
+ const selected = checkField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField) : selectCheckboxMaps[childRowid];
10096
+ if (checkMethod({
10097
+ row
10098
+ })) {
10099
+ if (selected) {
10100
+ sLen++;
10101
+ } else if (treeIndeterminateMaps[childRowid]) {
10102
+ hLen++;
10103
+ }
10104
+ vLen++;
10152
10105
  } else {
10153
- isAllResolve = afterFullData.every(checkMethod ? row => {
10154
- if (!checkMethod({
10155
- row
10156
- })) {
10157
- disableRows.push(row);
10158
- return true;
10159
- }
10160
- if (selectCheckboxMaps[getRowid(this, row)]) {
10161
- checkRows.push(row);
10162
- return true;
10163
- }
10164
- return false;
10165
- } : row => selectCheckboxMaps[getRowid(this, row)]);
10166
- isAllSelected = isAllResolve && afterFullData.length !== disableRows.length;
10167
- if (treeConfig) {
10168
- isIndeterminate = !isAllSelected && afterFullData.some(row => {
10169
- const itemRid = getRowid(this, row);
10170
- return treeIndeterminateMaps[itemRid] || selectCheckboxMaps[itemRid];
10171
- });
10172
- } else {
10173
- isIndeterminate = !isAllSelected && afterFullData.some(row => selectCheckboxMaps[getRowid(this, row)]);
10106
+ if (selected) {
10107
+ sLen++;
10108
+ } else if (treeIndeterminateMaps[childRowid]) {
10109
+ hLen++;
10174
10110
  }
10175
10111
  }
10176
- this.isAllSelected = isAllSelected;
10177
- this.isIndeterminate = isIndeterminate;
10178
- }
10112
+ } : row => {
10113
+ const childRowid = getRowid($xeTable, row);
10114
+ const selected = checkField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField) : selectCheckboxMaps[childRowid];
10115
+ if (selected) {
10116
+ sLen++;
10117
+ } else if (treeIndeterminateMaps[childRowid]) {
10118
+ hLen++;
10119
+ }
10120
+ vLen++;
10121
+ });
10122
+ const isSelected = sLen >= vLen;
10123
+ const halfSelect = !isSelected && (sLen >= 1 || hLen >= 1);
10124
+ reactData.isAllSelected = isSelected;
10125
+ reactData.isIndeterminate = halfSelect;
10126
+ },
10127
+ checkSelectionStatus() {
10128
+ const $xeTable = this;
10129
+ $xeTable.updateCheckboxStatus();
10130
+ $xeTable.updateAllCheckboxStatus();
10179
10131
  },
10180
10132
  // 还原展开、选中等相关状态
10181
10133
  handleReserveStatus() {
@@ -21769,6 +21721,7 @@ function getCheckboxRangeRows($xeTable, evnt, params, targetTrElem, trRect, offs
21769
21721
  }
21770
21722
  },
21771
21723
  handleCheckboxRangeEvent(evnt, params) {
21724
+ const $xeTable = this;
21772
21725
  const {
21773
21726
  column,
21774
21727
  cell
@@ -21848,9 +21801,7 @@ function getCheckboxRangeRows($xeTable, evnt, params, targetTrElem, trRect, offs
21848
21801
  lastRangeRows = rangeRows;
21849
21802
  if (evnt.ctrlKey) {
21850
21803
  rangeRows.forEach(row => {
21851
- this.handleSelectRow({
21852
- row
21853
- }, selectRecords.indexOf(row) === -1);
21804
+ $xeTable.handleBatchSelectRows([row], selectRecords.indexOf(row) === -1);
21854
21805
  });
21855
21806
  } else {
21856
21807
  this.setAllCheckboxRow(false);