vxe-table 3.13.5 → 3.13.7

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.
Files changed (146) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/ar-EG.js +4 -2
  4. package/es/locale/lang/de-DE.js +4 -2
  5. package/es/locale/lang/en-US.js +4 -2
  6. package/es/locale/lang/es-ES.js +4 -2
  7. package/es/locale/lang/fr-FR.js +4 -2
  8. package/es/locale/lang/hu-HU.js +4 -2
  9. package/es/locale/lang/hy-AM.js +4 -2
  10. package/es/locale/lang/id-ID.js +4 -2
  11. package/es/locale/lang/it-IT.js +4 -2
  12. package/es/locale/lang/ja-JP.js +4 -2
  13. package/es/locale/lang/ko-KR.js +4 -2
  14. package/es/locale/lang/nb-NO.js +4 -2
  15. package/es/locale/lang/pt-BR.js +4 -2
  16. package/es/locale/lang/ru-RU.js +4 -2
  17. package/es/locale/lang/th-TH.js +4 -2
  18. package/es/locale/lang/ug-CN.js +4 -2
  19. package/es/locale/lang/uk-UA.js +4 -2
  20. package/es/locale/lang/vi-VN.js +4 -2
  21. package/es/locale/lang/zh-CHT.js +4 -2
  22. package/es/locale/lang/zh-CN.js +4 -2
  23. package/es/style.css +1 -1
  24. package/es/style.min.css +1 -1
  25. package/es/table/module/export/export-panel.js +7 -4
  26. package/es/table/module/export/mixin.js +2 -2
  27. package/es/table/module/filter/mixin.js +87 -79
  28. package/es/table/module/menu/mixin.js +2 -1
  29. package/es/table/src/methods.js +254 -220
  30. package/es/table/src/table.js +1 -1
  31. package/es/table/style.css +1 -1
  32. package/es/table/style.min.css +1 -1
  33. package/es/ui/index.js +1 -1
  34. package/es/ui/src/log.js +1 -1
  35. package/es/vxe-table/style.css +1 -1
  36. package/es/vxe-table/style.min.css +1 -1
  37. package/lib/index.css +1 -1
  38. package/lib/index.min.css +1 -1
  39. package/lib/index.umd.js +412 -379
  40. package/lib/index.umd.min.js +1 -1
  41. package/lib/locale/lang/ar-EG.js +4 -2
  42. package/lib/locale/lang/ar-EG.min.js +1 -1
  43. package/lib/locale/lang/de-DE.js +4 -2
  44. package/lib/locale/lang/de-DE.min.js +1 -1
  45. package/lib/locale/lang/en-US.js +4 -2
  46. package/lib/locale/lang/en-US.min.js +1 -1
  47. package/lib/locale/lang/en-US.umd.js +4 -2
  48. package/lib/locale/lang/es-ES.js +4 -2
  49. package/lib/locale/lang/es-ES.min.js +1 -1
  50. package/lib/locale/lang/es-ES.umd.js +4 -2
  51. package/lib/locale/lang/fr-FR.js +4 -2
  52. package/lib/locale/lang/fr-FR.min.js +1 -1
  53. package/lib/locale/lang/hu-HU.js +4 -2
  54. package/lib/locale/lang/hu-HU.min.js +1 -1
  55. package/lib/locale/lang/hu-HU.umd.js +4 -2
  56. package/lib/locale/lang/hy-AM.js +4 -2
  57. package/lib/locale/lang/hy-AM.min.js +1 -1
  58. package/lib/locale/lang/id-ID.js +4 -2
  59. package/lib/locale/lang/id-ID.min.js +1 -1
  60. package/lib/locale/lang/it-IT.js +4 -2
  61. package/lib/locale/lang/it-IT.min.js +1 -1
  62. package/lib/locale/lang/ja-JP.js +4 -2
  63. package/lib/locale/lang/ja-JP.min.js +1 -1
  64. package/lib/locale/lang/ja-JP.umd.js +4 -2
  65. package/lib/locale/lang/ko-KR.js +4 -2
  66. package/lib/locale/lang/ko-KR.min.js +1 -1
  67. package/lib/locale/lang/ko-KR.umd.js +4 -2
  68. package/lib/locale/lang/nb-NO.js +4 -2
  69. package/lib/locale/lang/nb-NO.min.js +1 -1
  70. package/lib/locale/lang/pt-BR.js +4 -2
  71. package/lib/locale/lang/pt-BR.min.js +1 -1
  72. package/lib/locale/lang/pt-BR.umd.js +4 -2
  73. package/lib/locale/lang/ru-RU.js +4 -2
  74. package/lib/locale/lang/ru-RU.min.js +1 -1
  75. package/lib/locale/lang/ru-RU.umd.js +4 -2
  76. package/lib/locale/lang/th-TH.js +4 -2
  77. package/lib/locale/lang/th-TH.min.js +1 -1
  78. package/lib/locale/lang/ug-CN.js +4 -2
  79. package/lib/locale/lang/ug-CN.min.js +1 -1
  80. package/lib/locale/lang/uk-UA.js +4 -2
  81. package/lib/locale/lang/uk-UA.min.js +1 -1
  82. package/lib/locale/lang/uk-UA.umd.js +4 -2
  83. package/lib/locale/lang/vi-VN.js +4 -2
  84. package/lib/locale/lang/vi-VN.min.js +1 -1
  85. package/lib/locale/lang/zh-CHT.js +4 -2
  86. package/lib/locale/lang/zh-CHT.min.js +1 -1
  87. package/lib/locale/lang/zh-CHT.umd.js +4 -2
  88. package/lib/locale/lang/zh-CN.js +4 -2
  89. package/lib/locale/lang/zh-CN.min.js +1 -1
  90. package/lib/locale/lang/zh-CN.umd.js +4 -2
  91. package/lib/style.css +1 -1
  92. package/lib/style.min.css +1 -1
  93. package/lib/table/module/export/export-panel.js +7 -4
  94. package/lib/table/module/export/export-panel.min.js +1 -1
  95. package/lib/table/module/export/mixin.js +2 -2
  96. package/lib/table/module/export/mixin.min.js +1 -1
  97. package/lib/table/module/filter/mixin.js +105 -99
  98. package/lib/table/module/filter/mixin.min.js +1 -1
  99. package/lib/table/module/menu/mixin.js +2 -1
  100. package/lib/table/module/menu/mixin.min.js +1 -1
  101. package/lib/table/src/methods.js +289 -268
  102. package/lib/table/src/methods.min.js +1 -1
  103. package/lib/table/src/table.js +1 -1
  104. package/lib/table/src/table.min.js +1 -1
  105. package/lib/table/style/style.css +1 -1
  106. package/lib/table/style/style.min.css +1 -1
  107. package/lib/ui/index.js +1 -1
  108. package/lib/ui/index.min.js +1 -1
  109. package/lib/ui/src/log.js +1 -1
  110. package/lib/ui/src/log.min.js +1 -1
  111. package/lib/vxe-table/style/style.css +1 -1
  112. package/lib/vxe-table/style/style.min.css +1 -1
  113. package/package.json +2 -2
  114. package/packages/locale/lang/ar-EG.ts +4 -2
  115. package/packages/locale/lang/de-DE.ts +4 -2
  116. package/packages/locale/lang/en-US.ts +4 -2
  117. package/packages/locale/lang/es-ES.ts +4 -2
  118. package/packages/locale/lang/fr-FR.ts +4 -2
  119. package/packages/locale/lang/hu-HU.ts +4 -2
  120. package/packages/locale/lang/hy-AM.ts +4 -2
  121. package/packages/locale/lang/id-ID.ts +4 -2
  122. package/packages/locale/lang/it-IT.ts +4 -2
  123. package/packages/locale/lang/ja-JP.ts +4 -2
  124. package/packages/locale/lang/ko-KR.ts +4 -2
  125. package/packages/locale/lang/nb-NO.ts +4 -2
  126. package/packages/locale/lang/pt-BR.ts +4 -2
  127. package/packages/locale/lang/ru-RU.ts +4 -2
  128. package/packages/locale/lang/th-TH.ts +4 -2
  129. package/packages/locale/lang/ug-CN.ts +4 -2
  130. package/packages/locale/lang/uk-UA.ts +4 -2
  131. package/packages/locale/lang/vi-VN.ts +4 -2
  132. package/packages/locale/lang/zh-CHT.ts +4 -2
  133. package/packages/locale/lang/zh-CN.ts +4 -2
  134. package/packages/table/module/export/export-panel.ts +7 -4
  135. package/packages/table/module/export/mixin.ts +2 -2
  136. package/packages/table/module/filter/mixin.ts +85 -77
  137. package/packages/table/module/menu/mixin.ts +2 -1
  138. package/packages/table/src/methods.ts +271 -221
  139. package/packages/table/src/table.ts +1 -1
  140. package/styles/components/table.scss +1 -1
  141. /package/es/{iconfont.1740038065641.ttf → iconfont.1740188839037.ttf} +0 -0
  142. /package/es/{iconfont.1740038065641.woff → iconfont.1740188839037.woff} +0 -0
  143. /package/es/{iconfont.1740038065641.woff2 → iconfont.1740188839037.woff2} +0 -0
  144. /package/lib/{iconfont.1740038065641.ttf → iconfont.1740188839037.ttf} +0 -0
  145. /package/lib/{iconfont.1740038065641.woff → iconfont.1740188839037.woff} +0 -0
  146. /package/lib/{iconfont.1740038065641.woff2 → iconfont.1740188839037.woff2} +0 -0
@@ -38,8 +38,9 @@ const setCustomStorageMap = (id, data) => {
38
38
  maps._v = version;
39
39
  localStorage.setItem(customStorageKey, XEUtils.toJSONString(maps));
40
40
  };
41
- const getRecoverRowMaps = (_vm, keyMaps) => {
42
- const { fullAllDataRowIdData } = _vm;
41
+ const getRecoverRowMaps = ($xeTable, keyMaps) => {
42
+ const internalData = $xeTable;
43
+ const { fullAllDataRowIdData } = internalData;
43
44
  const restKeys = {};
44
45
  XEUtils.each(keyMaps, (row, rowid) => {
45
46
  if (fullAllDataRowIdData[rowid]) {
@@ -48,8 +49,9 @@ const getRecoverRowMaps = (_vm, keyMaps) => {
48
49
  });
49
50
  return restKeys;
50
51
  };
51
- function handleReserveRow(_vm, reserveRowMap) {
52
- const { fullDataRowIdData } = _vm;
52
+ function handleReserveRow($xeTable, reserveRowMap) {
53
+ const internalData = $xeTable;
54
+ const { fullDataRowIdData } = internalData;
53
55
  const reserveList = [];
54
56
  XEUtils.each(reserveRowMap, (item, rowid) => {
55
57
  if (fullDataRowIdData[rowid] && reserveList.indexOf(fullDataRowIdData[rowid].row) === -1) {
@@ -716,6 +718,215 @@ function updateStyle($xeTable) {
716
718
  }
717
719
  return $xeTable.$nextTick();
718
720
  }
721
+ function handleRadioReserveRow($xeTable, row) {
722
+ const internalData = $xeTable;
723
+ const radioOpts = $xeTable.computeRadioOpts;
724
+ if (radioOpts.reserve) {
725
+ internalData.radioReserveRow = row;
726
+ }
727
+ }
728
+ function handleCheckboxReserveRow($xeTable, row, checked) {
729
+ const internalData = $xeTable;
730
+ const { checkboxReserveRowMap } = internalData;
731
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
732
+ if (checkboxOpts.reserve) {
733
+ const rowid = getRowid($xeTable, row);
734
+ if (checked) {
735
+ checkboxReserveRowMap[rowid] = row;
736
+ }
737
+ else if (checkboxReserveRowMap[rowid]) {
738
+ delete checkboxReserveRowMap[rowid];
739
+ }
740
+ }
741
+ }
742
+ function handleCheckedRadioRow($xeTable, row, isForce) {
743
+ const reactData = $xeTable;
744
+ const radioOpts = $xeTable.computeRadioOpts;
745
+ const { checkMethod } = radioOpts;
746
+ if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
747
+ reactData.selectRadioRow = row;
748
+ handleRadioReserveRow($xeTable, row);
749
+ }
750
+ return $xeTable.$nextTick();
751
+ }
752
+ function handleCheckedCheckboxRow($xeTable, rows, value, isForce) {
753
+ if (rows && !XEUtils.isArray(rows)) {
754
+ rows = [rows];
755
+ }
756
+ $xeTable.handleBatchSelectRows(rows, !!value, isForce);
757
+ $xeTable.checkSelectionStatus();
758
+ return $xeTable.$nextTick();
759
+ }
760
+ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
761
+ const props = $xeTable;
762
+ const reactData = $xeTable;
763
+ const internalData = $xeTable;
764
+ const { treeConfig } = props;
765
+ const { selectCheckboxMaps } = reactData;
766
+ const { afterFullData, checkboxReserveRowMap } = internalData;
767
+ const treeOpts = $xeTable.computeTreeOpts;
768
+ const childrenField = treeOpts.children || treeOpts.childrenField;
769
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
770
+ const { checkField, reserve, checkMethod } = checkboxOpts;
771
+ const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
772
+ const selectRowMaps = {};
773
+ /**
774
+ * 绑定属性方式(高性能,有污染)
775
+ * 必须在行数据存在对应的属性,否则将不响应
776
+ */
777
+ if (checkField) {
778
+ const checkValFn = (row) => {
779
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
780
+ if (checked) {
781
+ selectRowMaps[getRowid($xeTable, row)] = row;
782
+ }
783
+ XEUtils.set(row, checkField, checked);
784
+ }
785
+ if (treeConfig && indeterminateField) {
786
+ XEUtils.set(row, indeterminateField, false);
787
+ }
788
+ };
789
+ // 如果存在选中方法
790
+ // 如果方法成立,则更新值,否则忽略该数据
791
+ if (treeConfig) {
792
+ XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField });
793
+ }
794
+ else {
795
+ afterFullData.forEach(checkValFn);
796
+ }
797
+ }
798
+ else {
799
+ /**
800
+ * 默认方式(低性能,无污染)
801
+ * 无需任何属性,直接绑定
802
+ */
803
+ if (treeConfig) {
804
+ if (checked) {
805
+ /**
806
+ * 如果是树勾选
807
+ * 如果方法成立,则添加到临时集合中
808
+ */
809
+ XEUtils.eachTree(afterFullData, (row) => {
810
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
811
+ selectRowMaps[getRowid($xeTable, row)] = row;
812
+ }
813
+ }, { children: childrenField });
814
+ }
815
+ else {
816
+ /**
817
+ * 如果是树取消
818
+ * 如果方法成立,则不添加到临时集合中
819
+ */
820
+ if (!isForce && checkMethod) {
821
+ XEUtils.eachTree(afterFullData, (row) => {
822
+ const rowid = getRowid($xeTable, row);
823
+ if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
824
+ selectRowMaps[rowid] = row;
825
+ }
826
+ }, { children: childrenField });
827
+ }
828
+ }
829
+ }
830
+ else {
831
+ if (checked) {
832
+ /**
833
+ * 如果是行勾选
834
+ * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
835
+ * 如果不存在选中方法,则添加所有数据到临时集合中
836
+ */
837
+ if (!isForce && checkMethod) {
838
+ afterFullData.forEach((row) => {
839
+ const rowid = getRowid($xeTable, row);
840
+ if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
841
+ selectRowMaps[rowid] = row;
842
+ }
843
+ });
844
+ }
845
+ else {
846
+ afterFullData.forEach(row => {
847
+ selectRowMaps[getRowid($xeTable, row)] = row;
848
+ });
849
+ }
850
+ }
851
+ else {
852
+ /**
853
+ * 如果是行取消
854
+ * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
855
+ * 如果不存在选中方法,无需处理,临时集合默认为空
856
+ */
857
+ if (!isForce && checkMethod) {
858
+ afterFullData.forEach((row) => {
859
+ const rowid = getRowid($xeTable, row);
860
+ if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
861
+ selectRowMaps[rowid] = row;
862
+ }
863
+ });
864
+ }
865
+ }
866
+ }
867
+ }
868
+ if (reserve) {
869
+ if (checked) {
870
+ XEUtils.each(selectRowMaps, (row, rowid) => {
871
+ checkboxReserveRowMap[rowid] = row;
872
+ });
873
+ }
874
+ else {
875
+ afterFullData.forEach((row) => handleCheckboxReserveRow($xeTable, row, false));
876
+ }
877
+ }
878
+ reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
879
+ reactData.isAllSelected = checked;
880
+ reactData.isIndeterminate = false;
881
+ reactData.treeIndeterminateMaps = {};
882
+ internalData.treeIndeterminateRowMaps = {};
883
+ $xeTable.checkSelectionStatus();
884
+ return $xeTable.$nextTick();
885
+ }
886
+ // 还原展开、选中等相关状态
887
+ function handleReserveStatus($xeTable) {
888
+ const props = $xeTable;
889
+ const reactData = $xeTable;
890
+ const internalData = $xeTable;
891
+ const { treeConfig } = props;
892
+ const { expandColumn, currentRow, selectCheckboxMaps, selectRadioRow, rowExpandedMaps, treeExpandedMaps } = reactData;
893
+ const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData;
894
+ const expandOpts = $xeTable.computeExpandOpts;
895
+ const treeOpts = $xeTable.computeTreeOpts;
896
+ const radioOpts = $xeTable.computeRadioOpts;
897
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
898
+ // 单选框
899
+ if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
900
+ reactData.selectRadioRow = null; // 刷新单选行状态
901
+ }
902
+ // 还原保留选中状态
903
+ if (radioOpts.reserve && radioReserveRow) {
904
+ const rowid = getRowid($xeTable, radioReserveRow);
905
+ if (fullDataRowIdData[rowid]) {
906
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
907
+ }
908
+ }
909
+ // 复选框
910
+ reactData.selectCheckboxMaps = getRecoverRowMaps($xeTable, selectCheckboxMaps); // 刷新多选行状态
911
+ // 还原保留选中状态
912
+ if (checkboxOpts.reserve) {
913
+ handleCheckedCheckboxRow($xeTable, handleReserveRow($xeTable, internalData.checkboxReserveRowMap), true, true);
914
+ }
915
+ if (currentRow && !fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
916
+ reactData.currentRow = null; // 刷新当前行状态
917
+ }
918
+ // 行展开
919
+ reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps($xeTable, rowExpandedMaps) : {}; // 刷新行展开状态
920
+ // 还原保留状态
921
+ if (expandColumn && expandOpts.reserve) {
922
+ $xeTable.setRowExpand(handleReserveRow($xeTable, internalData.rowExpandedReserveRowMap), true);
923
+ }
924
+ // 树展开
925
+ reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps($xeTable, treeExpandedMaps) : {}; // 刷新树展开状态
926
+ if (treeConfig && treeOpts.reserve) {
927
+ $xeTable.setTreeExpand(handleReserveRow($xeTable, internalData.treeExpandedReserveRowMap), true);
928
+ }
929
+ }
719
930
  function calcVarRowHeightConfig($xeTable, sizeKey, sizeEl) {
720
931
  const reactData = $xeTable;
721
932
  const { rowHeightStore } = reactData;
@@ -2162,7 +2373,7 @@ const Methods = {
2162
2373
  }
2163
2374
  }
2164
2375
  }
2165
- this.handleReserveStatus();
2376
+ handleReserveStatus($xeTable);
2166
2377
  this.checkSelectionStatus();
2167
2378
  return new Promise(resolve => {
2168
2379
  this.$nextTick()
@@ -4307,13 +4518,15 @@ const Methods = {
4307
4518
  handleGlobalMousedownEvent(evnt) {
4308
4519
  const { $el, $refs, $xegrid, $toolbar, mouseConfig, editStore, ctxMenuStore, editRules, editOpts, validOpts, areaOpts, filterStore, customStore, getRowNode } = this;
4309
4520
  const { actived } = editStore;
4310
- const { refTableMenu, filterWrapper, customWrapper, refValidTooltip } = $refs;
4521
+ const { customWrapper, refValidTooltip } = $refs;
4522
+ const tableFilter = $refs.refTableFilter;
4523
+ const tableMenu = $refs.refTableMenu;
4311
4524
  // 筛选
4312
- if (filterWrapper) {
4525
+ if (tableFilter) {
4313
4526
  if (getEventTargetNode(evnt, $el, 'vxe-cell--filter').flag) {
4314
4527
  // 如果点击了筛选按钮
4315
4528
  }
4316
- else if (getEventTargetNode(evnt, filterWrapper.$el).flag) {
4529
+ else if (getEventTargetNode(evnt, tableFilter.$el).flag) {
4317
4530
  // 如果点击筛选容器
4318
4531
  }
4319
4532
  else {
@@ -4393,7 +4606,7 @@ const Methods = {
4393
4606
  }
4394
4607
  }
4395
4608
  else if (mouseConfig) {
4396
- if (!getEventTargetNode(evnt, $el).flag && !($xegrid && getEventTargetNode(evnt, $xegrid.$el).flag) && !(refTableMenu && getEventTargetNode(evnt, refTableMenu.$el).flag) && !($toolbar && getEventTargetNode(evnt, $toolbar.$el).flag)) {
4609
+ if (!getEventTargetNode(evnt, $el).flag && !($xegrid && getEventTargetNode(evnt, $xegrid.$el).flag) && !(tableMenu && getEventTargetNode(evnt, tableMenu.$el).flag) && !($toolbar && getEventTargetNode(evnt, $toolbar.$el).flag)) {
4397
4610
  if (this.clearSelected) {
4398
4611
  this.clearSelected();
4399
4612
  }
@@ -4412,7 +4625,7 @@ const Methods = {
4412
4625
  }
4413
4626
  }
4414
4627
  // 如果配置了快捷菜单且,点击了其他地方则关闭
4415
- if (ctxMenuStore.visible && refTableMenu && !getEventTargetNode(evnt, refTableMenu.$el).flag) {
4628
+ if (ctxMenuStore.visible && tableMenu && !getEventTargetNode(evnt, tableMenu.$el).flag) {
4416
4629
  this.closeMenu();
4417
4630
  }
4418
4631
  const isActivated = getEventTargetNode(evnt, ($xegrid || this).$el).flag;
@@ -4987,10 +5200,11 @@ const Methods = {
4987
5200
  * 处理默认勾选
4988
5201
  */
4989
5202
  handleDefaultSelectionChecked() {
5203
+ const $xeTable = this;
4990
5204
  const { fullDataRowIdData, checkboxOpts } = this;
4991
5205
  const { checkAll, checkRowKeys } = checkboxOpts;
4992
5206
  if (checkAll) {
4993
- this.handleCheckedAllCheckboxRow(true, true);
5207
+ handleCheckedAllCheckboxRow($xeTable, true, true);
4994
5208
  }
4995
5209
  else if (checkRowKeys) {
4996
5210
  const defSelection = [];
@@ -4999,17 +5213,12 @@ const Methods = {
4999
5213
  defSelection.push(fullDataRowIdData[rowid].row);
5000
5214
  }
5001
5215
  });
5002
- this.handleCheckedCheckboxRow(defSelection, true, true);
5216
+ handleCheckedCheckboxRow($xeTable, defSelection, true, true);
5003
5217
  }
5004
5218
  },
5005
5219
  handleCheckedCheckboxRow(rows, value, isForce) {
5006
5220
  const $xeTable = this;
5007
- if (rows && !XEUtils.isArray(rows)) {
5008
- rows = [rows];
5009
- }
5010
- $xeTable.handleBatchSelectRows(rows, !!value, isForce);
5011
- $xeTable.checkSelectionStatus();
5012
- return this.$nextTick();
5221
+ return handleCheckedCheckboxRow($xeTable, rows, value, isForce);
5013
5222
  },
5014
5223
  /**
5015
5224
  * 用于多选行,设置行为选中状态,第二个参数为选中与否
@@ -5021,7 +5230,7 @@ const Methods = {
5021
5230
  if (rows && !XEUtils.isArray(rows)) {
5022
5231
  rows = [rows];
5023
5232
  }
5024
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
5233
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true);
5025
5234
  },
5026
5235
  setCheckboxRowKey(keys, checked) {
5027
5236
  const $xeTable = this;
@@ -5037,7 +5246,7 @@ const Methods = {
5037
5246
  rows.push(rowRest.row);
5038
5247
  }
5039
5248
  });
5040
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
5249
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true);
5041
5250
  },
5042
5251
  isCheckedByCheckboxRow(row) {
5043
5252
  const $xeTable = this;
@@ -5106,7 +5315,7 @@ const Methods = {
5106
5315
  if (indeterminateField) {
5107
5316
  XEUtils.set(row, indeterminateField, false);
5108
5317
  }
5109
- $xeTable.handleCheckboxReserveRow(row, checked);
5318
+ handleCheckboxReserveRow($xeTable, row, checked);
5110
5319
  }
5111
5320
  }, { children: transform ? mapChildrenField : childrenField });
5112
5321
  reactData.selectCheckboxMaps = selectRowMaps;
@@ -5117,7 +5326,7 @@ const Methods = {
5117
5326
  rows.forEach(row => {
5118
5327
  if (isForce || (!checkMethod || checkMethod({ row }))) {
5119
5328
  XEUtils.set(row, checkField, checked);
5120
- $xeTable.handleCheckboxReserveRow(row, checked);
5329
+ handleCheckboxReserveRow($xeTable, row, checked);
5121
5330
  }
5122
5331
  });
5123
5332
  }
@@ -5138,7 +5347,7 @@ const Methods = {
5138
5347
  delete selectRowMaps[rowid];
5139
5348
  }
5140
5349
  }
5141
- $xeTable.handleCheckboxReserveRow(row, checked);
5350
+ handleCheckboxReserveRow($xeTable, row, checked);
5142
5351
  }
5143
5352
  }, { children: transform ? mapChildrenField : childrenField });
5144
5353
  reactData.selectCheckboxMaps = selectRowMaps;
@@ -5158,7 +5367,7 @@ const Methods = {
5158
5367
  delete selectRowMaps[rowid];
5159
5368
  }
5160
5369
  }
5161
- $xeTable.handleCheckboxReserveRow(row, checked);
5370
+ handleCheckboxReserveRow($xeTable, row, checked);
5162
5371
  }
5163
5372
  });
5164
5373
  reactData.selectCheckboxMaps = selectRowMaps;
@@ -5194,6 +5403,7 @@ const Methods = {
5194
5403
  }
5195
5404
  },
5196
5405
  triggerCheckRowEvent(evnt, params, checked) {
5406
+ const $xeTable = this;
5197
5407
  const { checkboxOpts, afterFullData } = this;
5198
5408
  const { checkMethod, trigger } = checkboxOpts;
5199
5409
  const { row } = params;
@@ -5210,7 +5420,7 @@ const Methods = {
5210
5420
  if (_rowIndex !== _firstRowIndex) {
5211
5421
  this.setAllCheckboxRow(false);
5212
5422
  const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
5213
- this.handleCheckedCheckboxRow(rangeRows, true, false);
5423
+ handleCheckedCheckboxRow($xeTable, rangeRows, true, false);
5214
5424
  this.emitEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt);
5215
5425
  return;
5216
5426
  }
@@ -5239,147 +5449,13 @@ const Methods = {
5239
5449
  $xeTable.checkSelectionStatus();
5240
5450
  return $xeTable.$nextTick();
5241
5451
  },
5242
- handleCheckedAllCheckboxRow(checked, isForce) {
5243
- const $xeTable = this;
5244
- const reactData = $xeTable;
5245
- const { afterFullData, treeConfig, treeOpts, selectCheckboxMaps, checkboxReserveRowMap, checkboxOpts, afterFullRowMaps } = this;
5246
- const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts;
5247
- const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
5248
- const childrenField = treeOpts.children || treeOpts.childrenField;
5249
- const selectRowMaps = {};
5250
- // 疑惑!
5251
- if (!treeConfig) {
5252
- XEUtils.each(selectCheckboxMaps, (row, rowid) => {
5253
- if (!afterFullRowMaps[rowid]) {
5254
- selectRowMaps[rowid] = row;
5255
- }
5256
- });
5257
- }
5258
- // 疑惑!
5259
- if (checkStrictly) {
5260
- this.isAllSelected = checked;
5261
- }
5262
- else {
5263
- /**
5264
- * 绑定属性方式(高性能,有污染)
5265
- * 必须在行数据存在对应的属性,否则将不响应
5266
- */
5267
- if (checkField) {
5268
- const checkValFn = (row) => {
5269
- if (isForce || (!checkMethod || checkMethod({ row }))) {
5270
- if (checked) {
5271
- selectRowMaps[getRowid(this, row)] = row;
5272
- }
5273
- XEUtils.set(row, checkField, checked);
5274
- }
5275
- if (treeConfig && indeterminateField) {
5276
- XEUtils.set(row, indeterminateField, false);
5277
- }
5278
- };
5279
- // 如果存在选中方法
5280
- // 如果方法成立,则更新值,否则忽略该数据
5281
- if (treeConfig) {
5282
- XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField });
5283
- }
5284
- else {
5285
- afterFullData.forEach(checkValFn);
5286
- }
5287
- }
5288
- else {
5289
- /**
5290
- * 默认方式(低性能,无污染)
5291
- * 无需任何属性,直接绑定
5292
- */
5293
- if (treeConfig) {
5294
- if (checked) {
5295
- /**
5296
- * 如果是树勾选
5297
- * 如果方法成立,则添加到临时集合中
5298
- */
5299
- XEUtils.eachTree(afterFullData, (row) => {
5300
- if (isForce || (!checkMethod || checkMethod({ row }))) {
5301
- selectRowMaps[getRowid(this, row)] = row;
5302
- }
5303
- }, { children: childrenField });
5304
- }
5305
- else {
5306
- /**
5307
- * 如果是树取消
5308
- * 如果方法成立,则不添加到临时集合中
5309
- */
5310
- if (!isForce && checkMethod) {
5311
- XEUtils.eachTree(afterFullData, (row) => {
5312
- const rowid = getRowid(this, row);
5313
- if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
5314
- selectRowMaps[rowid] = row;
5315
- }
5316
- }, { children: childrenField });
5317
- }
5318
- }
5319
- }
5320
- else {
5321
- if (checked) {
5322
- /**
5323
- * 如果是行勾选
5324
- * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
5325
- * 如果不存在选中方法,则添加所有数据到临时集合中
5326
- */
5327
- if (!isForce && checkMethod) {
5328
- afterFullData.forEach((row) => {
5329
- const rowid = getRowid(this, row);
5330
- if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
5331
- selectRowMaps[rowid] = row;
5332
- }
5333
- });
5334
- }
5335
- else {
5336
- afterFullData.forEach((row) => {
5337
- selectRowMaps[getRowid(this, row)] = row;
5338
- });
5339
- }
5340
- }
5341
- else {
5342
- /**
5343
- * 如果是行取消
5344
- * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
5345
- * 如果不存在选中方法,无需处理,临时集合默认为空
5346
- */
5347
- if (!isForce && checkMethod) {
5348
- afterFullData.forEach((row) => {
5349
- const rowid = getRowid(this, row);
5350
- if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
5351
- selectRowMaps[rowid] = row;
5352
- }
5353
- });
5354
- }
5355
- }
5356
- }
5357
- }
5358
- if (reserve) {
5359
- if (checked) {
5360
- XEUtils.each(selectRowMaps, (row, rowid) => {
5361
- checkboxReserveRowMap[rowid] = row;
5362
- });
5363
- }
5364
- else {
5365
- afterFullData.forEach((row) => this.handleCheckboxReserveRow(row, false));
5366
- }
5367
- }
5368
- this.selectCheckboxMaps = checkField ? {} : selectRowMaps;
5369
- }
5370
- reactData.isAllSelected = checked;
5371
- reactData.isIndeterminate = false;
5372
- this.treeIndeterminateMaps = {};
5373
- this.treeIndeterminateRowMaps = {};
5374
- this.checkSelectionStatus();
5375
- return this.$nextTick();
5376
- },
5377
5452
  /**
5378
5453
  * 用于多选行,设置所有行的选中状态
5379
5454
  * @param {Boolean} value 是否选中
5380
5455
  */
5381
5456
  setAllCheckboxRow(value) {
5382
- return this.handleCheckedAllCheckboxRow(value, true);
5457
+ const $xeTable = this;
5458
+ return handleCheckedAllCheckboxRow($xeTable, value, true);
5383
5459
  },
5384
5460
  updateCheckboxStatus() {
5385
5461
  const $xeTable = this;
@@ -5541,42 +5617,6 @@ const Methods = {
5541
5617
  $xeTable.updateCheckboxStatus();
5542
5618
  $xeTable.updateAllCheckboxStatus();
5543
5619
  },
5544
- // 还原展开、选中等相关状态
5545
- handleReserveStatus() {
5546
- const $xeTable = this;
5547
- const { expandColumn, treeOpts, treeConfig, fullDataRowIdData, fullAllDataRowIdData, currentRow, selectRadioRow, radioReserveRow, radioOpts, checkboxOpts, selectCheckboxMaps, rowExpandedMaps, treeExpandedMaps, expandOpts } = this;
5548
- // 单选框
5549
- if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
5550
- this.selectRadioRow = null; // 刷新单选行状态
5551
- }
5552
- // 还原保留选中状态
5553
- if (radioOpts.reserve && radioReserveRow) {
5554
- const rowid = getRowid(this, radioReserveRow);
5555
- if (fullDataRowIdData[rowid]) {
5556
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
5557
- }
5558
- }
5559
- // 复选框
5560
- this.selectCheckboxMaps = getRecoverRowMaps(this, selectCheckboxMaps); // 刷新多选行状态
5561
- // 还原保留选中状态
5562
- if (checkboxOpts.reserve) {
5563
- this.handleCheckedCheckboxRow(handleReserveRow(this, this.checkboxReserveRowMap), true, true);
5564
- }
5565
- if (currentRow && !this.fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
5566
- this.currentRow = null; // 刷新当前行状态
5567
- }
5568
- // 行展开
5569
- this.rowExpandedMaps = expandColumn ? getRecoverRowMaps(this, rowExpandedMaps) : []; // 刷新行展开状态
5570
- // 还原保留状态
5571
- if (expandColumn && expandOpts.reserve) {
5572
- this.setRowExpand(handleReserveRow(this, this.rowExpandedReserveRowMap), true);
5573
- }
5574
- // 树展开
5575
- this.treeExpandedMaps = treeConfig ? getRecoverRowMaps(this, treeExpandedMaps) : []; // 刷新树展开状态
5576
- if (treeConfig && treeOpts.reserve) {
5577
- this.setTreeExpand(handleReserveRow(this, this.treeExpandedReserveRowMap), true);
5578
- }
5579
- },
5580
5620
  /**
5581
5621
  * 获取单选框保留选中的行
5582
5622
  */
@@ -5611,12 +5651,6 @@ const Methods = {
5611
5651
  this.radioReserveRow = null;
5612
5652
  return this.$nextTick();
5613
5653
  },
5614
- handleRadioReserveRow(row) {
5615
- const { radioOpts } = this;
5616
- if (radioOpts.reserve) {
5617
- this.radioReserveRow = row;
5618
- }
5619
- },
5620
5654
  /**
5621
5655
  * 获取复选框保留选中的行
5622
5656
  */
@@ -5670,15 +5704,22 @@ const Methods = {
5670
5704
  }
5671
5705
  },
5672
5706
  handleCheckAllEvent(evnt, value) {
5673
- this.handleCheckedAllCheckboxRow(value);
5707
+ const $xeTable = this;
5708
+ handleCheckedAllCheckboxRow($xeTable, value);
5674
5709
  if (evnt) {
5675
- this.emitEvent('checkbox-all', { records: this.getCheckboxRecords(), reserves: this.getCheckboxReserveRecords(), indeterminates: this.getCheckboxIndeterminateRecords(), checked: value }, evnt);
5710
+ $xeTable.dispatchEvent('checkbox-all', {
5711
+ records: $xeTable.getCheckboxRecords(),
5712
+ reserves: $xeTable.getCheckboxReserveRecords(),
5713
+ indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
5714
+ checked: value
5715
+ }, evnt);
5676
5716
  }
5677
5717
  },
5678
5718
  /**
5679
5719
  * 多选,选中所有事件
5680
5720
  */
5681
5721
  triggerCheckAllEvent(evnt, value) {
5722
+ const $xeTable = this;
5682
5723
  const { checkboxOpts } = this;
5683
5724
  const { trigger } = checkboxOpts;
5684
5725
  if (trigger === 'manual') {
@@ -5687,7 +5728,7 @@ const Methods = {
5687
5728
  if (evnt) {
5688
5729
  evnt.stopPropagation();
5689
5730
  }
5690
- this.handleCheckAllEvent(evnt, value);
5731
+ $xeTable.handleCheckAllEvent(evnt, value);
5691
5732
  },
5692
5733
  /**
5693
5734
  * 多选,切换所有行的选中状态
@@ -5732,11 +5773,12 @@ const Methods = {
5732
5773
  * 处理单选框默认勾选
5733
5774
  */
5734
5775
  handleDefaultRadioChecked() {
5776
+ const $xeTable = this;
5735
5777
  const { radioOpts, fullDataRowIdData } = this;
5736
5778
  const { checkRowKey: rowid, reserve } = radioOpts;
5737
5779
  if (rowid) {
5738
5780
  if (fullDataRowIdData[rowid]) {
5739
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
5781
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
5740
5782
  }
5741
5783
  if (reserve) {
5742
5784
  const rowkey = getRowkey(this);
@@ -5748,6 +5790,7 @@ const Methods = {
5748
5790
  * 单选,行选中事件
5749
5791
  */
5750
5792
  triggerRadioRowEvent(evnt, params) {
5793
+ const $xeTable = this;
5751
5794
  const { selectRadioRow: oldValue, radioOpts } = this;
5752
5795
  const { row } = params;
5753
5796
  const { trigger } = radioOpts;
@@ -5758,7 +5801,7 @@ const Methods = {
5758
5801
  let newValue = row;
5759
5802
  let isChange = oldValue !== newValue;
5760
5803
  if (isChange) {
5761
- this.handleCheckedRadioRow(newValue);
5804
+ handleCheckedRadioRow($xeTable, newValue);
5762
5805
  }
5763
5806
  else if (!radioOpts.strict) {
5764
5807
  isChange = oldValue === newValue;
@@ -5829,22 +5872,13 @@ const Methods = {
5829
5872
  }
5830
5873
  return false;
5831
5874
  },
5832
- handleCheckedRadioRow(row, isForce) {
5833
- const { radioOpts } = this;
5834
- const { checkMethod } = radioOpts;
5835
- if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
5836
- this.selectRadioRow = row;
5837
- this.handleRadioReserveRow(row);
5838
- }
5839
- return this.$nextTick();
5840
- },
5841
5875
  /**
5842
5876
  * 用于单选行,设置某一行为选中状态
5843
5877
  * @param {Row} row 行对象
5844
5878
  */
5845
5879
  setRadioRow(row) {
5846
5880
  const $xeTable = this;
5847
- return $xeTable.handleCheckedRadioRow(row, true);
5881
+ return handleCheckedRadioRow($xeTable, row, true);
5848
5882
  },
5849
5883
  /**
5850
5884
  * 用于单选行,设置某一行为选中状态
@@ -5856,7 +5890,7 @@ const Methods = {
5856
5890
  const { fullAllDataRowIdData } = internalData;
5857
5891
  const rowRest = fullAllDataRowIdData[rowid];
5858
5892
  if (rowRest) {
5859
- return $xeTable.handleCheckedRadioRow(rowRest.row, true);
5893
+ return handleCheckedRadioRow($xeTable, rowRest.row, true);
5860
5894
  }
5861
5895
  return $xeTable.$nextTick();
5862
5896
  },
@@ -7598,7 +7632,7 @@ const Methods = {
7598
7632
  }
7599
7633
  // 如果当前节点已选中,则展开后子节点也被选中
7600
7634
  if (!checkStrictly && this.isCheckedByCheckboxRow(row)) {
7601
- this.handleCheckedCheckboxRow(childRows, true);
7635
+ handleCheckedCheckboxRow($xeTable, childRows, true);
7602
7636
  }
7603
7637
  return this.$nextTick().then(() => {
7604
7638
  if (transform) {