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
@@ -47,8 +47,10 @@ const setCustomStorageMap = (id: any, data: any) => {
47
47
  localStorage.setItem(customStorageKey, XEUtils.toJSONString(maps))
48
48
  }
49
49
 
50
- const getRecoverRowMaps = (_vm: any, keyMaps: any) => {
51
- const { fullAllDataRowIdData } = _vm
50
+ const getRecoverRowMaps = ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, keyMaps: any) => {
51
+ const internalData = $xeTable as unknown as TableInternalData
52
+
53
+ const { fullAllDataRowIdData } = internalData
52
54
  const restKeys: any = {}
53
55
  XEUtils.each(keyMaps, (row, rowid) => {
54
56
  if (fullAllDataRowIdData[rowid]) {
@@ -58,8 +60,10 @@ const getRecoverRowMaps = (_vm: any, keyMaps: any) => {
58
60
  return restKeys
59
61
  }
60
62
 
61
- function handleReserveRow (_vm: any, reserveRowMap: any) {
62
- const { fullDataRowIdData } = _vm
63
+ function handleReserveRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, reserveRowMap: any) {
64
+ const internalData = $xeTable as unknown as TableInternalData
65
+
66
+ const { fullDataRowIdData } = internalData
63
67
  const reserveList: any[] = []
64
68
  XEUtils.each(reserveRowMap, (item, rowid) => {
65
69
  if (fullDataRowIdData[rowid] && reserveList.indexOf(fullDataRowIdData[rowid].row) === -1) {
@@ -762,6 +766,219 @@ function updateStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
762
766
  return $xeTable.$nextTick()
763
767
  }
764
768
 
769
+ function handleRadioReserveRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, row: any) {
770
+ const internalData = $xeTable as unknown as TableInternalData
771
+
772
+ const radioOpts = $xeTable.computeRadioOpts
773
+ if (radioOpts.reserve) {
774
+ internalData.radioReserveRow = row
775
+ }
776
+ }
777
+
778
+ function handleCheckboxReserveRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, row: any, checked: boolean) {
779
+ const internalData = $xeTable as unknown as TableInternalData
780
+
781
+ const { checkboxReserveRowMap } = internalData
782
+ const checkboxOpts = $xeTable.computeCheckboxOpts
783
+ if (checkboxOpts.reserve) {
784
+ const rowid = getRowid($xeTable, row)
785
+ if (checked) {
786
+ checkboxReserveRowMap[rowid] = row
787
+ } else if (checkboxReserveRowMap[rowid]) {
788
+ delete checkboxReserveRowMap[rowid]
789
+ }
790
+ }
791
+ }
792
+
793
+ function handleCheckedRadioRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, row: any, isForce?: boolean) {
794
+ const reactData = $xeTable as unknown as TableReactData
795
+
796
+ const radioOpts = $xeTable.computeRadioOpts
797
+ const { checkMethod } = radioOpts
798
+ if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
799
+ reactData.selectRadioRow = row
800
+ handleRadioReserveRow($xeTable, row)
801
+ }
802
+ return $xeTable.$nextTick()
803
+ }
804
+
805
+ function handleCheckedCheckboxRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, rows: any[], value: boolean, isForce?: boolean) {
806
+ if (rows && !XEUtils.isArray(rows)) {
807
+ rows = [rows]
808
+ }
809
+ $xeTable.handleBatchSelectRows(rows, !!value, isForce)
810
+ $xeTable.checkSelectionStatus()
811
+ return $xeTable.$nextTick()
812
+ }
813
+
814
+ function handleCheckedAllCheckboxRow ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, checked: boolean, isForce?: boolean) {
815
+ const props = $xeTable
816
+ const reactData = $xeTable as unknown as TableReactData
817
+ const internalData = $xeTable as unknown as TableInternalData
818
+
819
+ const { treeConfig } = props
820
+ const { selectCheckboxMaps } = reactData
821
+ const { afterFullData, checkboxReserveRowMap } = internalData
822
+ const treeOpts = $xeTable.computeTreeOpts
823
+ const childrenField = treeOpts.children || treeOpts.childrenField
824
+ const checkboxOpts = $xeTable.computeCheckboxOpts
825
+ const { checkField, reserve, checkMethod } = checkboxOpts
826
+ const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField
827
+ const selectRowMaps: Record<string, any> = {}
828
+ /**
829
+ * 绑定属性方式(高性能,有污染)
830
+ * 必须在行数据存在对应的属性,否则将不响应
831
+ */
832
+ if (checkField) {
833
+ const checkValFn = (row: any) => {
834
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
835
+ if (checked) {
836
+ selectRowMaps[getRowid($xeTable, row)] = row
837
+ }
838
+ XEUtils.set(row, checkField, checked)
839
+ }
840
+ if (treeConfig && indeterminateField) {
841
+ XEUtils.set(row, indeterminateField, false)
842
+ }
843
+ }
844
+ // 如果存在选中方法
845
+ // 如果方法成立,则更新值,否则忽略该数据
846
+ if (treeConfig) {
847
+ XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField })
848
+ } else {
849
+ afterFullData.forEach(checkValFn)
850
+ }
851
+ } else {
852
+ /**
853
+ * 默认方式(低性能,无污染)
854
+ * 无需任何属性,直接绑定
855
+ */
856
+ if (treeConfig) {
857
+ if (checked) {
858
+ /**
859
+ * 如果是树勾选
860
+ * 如果方法成立,则添加到临时集合中
861
+ */
862
+ XEUtils.eachTree(afterFullData, (row) => {
863
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
864
+ selectRowMaps[getRowid($xeTable, row)] = row
865
+ }
866
+ }, { children: childrenField })
867
+ } else {
868
+ /**
869
+ * 如果是树取消
870
+ * 如果方法成立,则不添加到临时集合中
871
+ */
872
+ if (!isForce && checkMethod) {
873
+ XEUtils.eachTree(afterFullData, (row) => {
874
+ const rowid = getRowid($xeTable, row)
875
+ if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
876
+ selectRowMaps[rowid] = row
877
+ }
878
+ }, { children: childrenField })
879
+ }
880
+ }
881
+ } else {
882
+ if (checked) {
883
+ /**
884
+ * 如果是行勾选
885
+ * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
886
+ * 如果不存在选中方法,则添加所有数据到临时集合中
887
+ */
888
+ if (!isForce && checkMethod) {
889
+ afterFullData.forEach((row) => {
890
+ const rowid = getRowid($xeTable, row)
891
+ if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
892
+ selectRowMaps[rowid] = row
893
+ }
894
+ })
895
+ } else {
896
+ afterFullData.forEach(row => {
897
+ selectRowMaps[getRowid($xeTable, row)] = row
898
+ })
899
+ }
900
+ } else {
901
+ /**
902
+ * 如果是行取消
903
+ * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
904
+ * 如果不存在选中方法,无需处理,临时集合默认为空
905
+ */
906
+ if (!isForce && checkMethod) {
907
+ afterFullData.forEach((row) => {
908
+ const rowid = getRowid($xeTable, row)
909
+ if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
910
+ selectRowMaps[rowid] = row
911
+ }
912
+ })
913
+ }
914
+ }
915
+ }
916
+ }
917
+ if (reserve) {
918
+ if (checked) {
919
+ XEUtils.each(selectRowMaps, (row, rowid) => {
920
+ checkboxReserveRowMap[rowid] = row
921
+ })
922
+ } else {
923
+ afterFullData.forEach((row) => handleCheckboxReserveRow($xeTable, row, false))
924
+ }
925
+ }
926
+ reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps
927
+
928
+ reactData.isAllSelected = checked
929
+ reactData.isIndeterminate = false
930
+ reactData.treeIndeterminateMaps = {}
931
+ internalData.treeIndeterminateRowMaps = {}
932
+ $xeTable.checkSelectionStatus()
933
+ return $xeTable.$nextTick()
934
+ }
935
+
936
+ // 还原展开、选中等相关状态
937
+ function handleReserveStatus ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
938
+ const props = $xeTable
939
+ const reactData = $xeTable as unknown as TableReactData
940
+ const internalData = $xeTable as unknown as TableInternalData
941
+
942
+ const { treeConfig } = props
943
+ const { expandColumn, currentRow, selectCheckboxMaps, selectRadioRow, rowExpandedMaps, treeExpandedMaps } = reactData
944
+ const { fullDataRowIdData, fullAllDataRowIdData, radioReserveRow } = internalData
945
+ const expandOpts = $xeTable.computeExpandOpts
946
+ const treeOpts = $xeTable.computeTreeOpts
947
+ const radioOpts = $xeTable.computeRadioOpts
948
+ const checkboxOpts = $xeTable.computeCheckboxOpts
949
+ // 单选框
950
+ if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
951
+ reactData.selectRadioRow = null // 刷新单选行状态
952
+ }
953
+ // 还原保留选中状态
954
+ if (radioOpts.reserve && radioReserveRow) {
955
+ const rowid = getRowid($xeTable, radioReserveRow)
956
+ if (fullDataRowIdData[rowid]) {
957
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true)
958
+ }
959
+ }
960
+ // 复选框
961
+ reactData.selectCheckboxMaps = getRecoverRowMaps($xeTable, selectCheckboxMaps) // 刷新多选行状态
962
+ // 还原保留选中状态
963
+ if (checkboxOpts.reserve) {
964
+ handleCheckedCheckboxRow($xeTable, handleReserveRow($xeTable, internalData.checkboxReserveRowMap), true, true)
965
+ }
966
+ if (currentRow && !fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
967
+ reactData.currentRow = null // 刷新当前行状态
968
+ }
969
+ // 行展开
970
+ reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps($xeTable, rowExpandedMaps) : {} // 刷新行展开状态
971
+ // 还原保留状态
972
+ if (expandColumn && expandOpts.reserve) {
973
+ $xeTable.setRowExpand(handleReserveRow($xeTable, internalData.rowExpandedReserveRowMap), true)
974
+ }
975
+ // 树展开
976
+ reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps($xeTable, treeExpandedMaps) : {} // 刷新树展开状态
977
+ if (treeConfig && treeOpts.reserve) {
978
+ $xeTable.setTreeExpand(handleReserveRow($xeTable, internalData.treeExpandedReserveRowMap), true)
979
+ }
980
+ }
981
+
765
982
  function calcVarRowHeightConfig ($xeTable: VxeTableConstructor, sizeKey: 'default' | 'medium' | 'small' | 'mini', sizeEl: Element) {
766
983
  const reactData = $xeTable as unknown as TableReactData
767
984
 
@@ -2262,7 +2479,7 @@ const Methods = {
2262
2479
  }
2263
2480
  }
2264
2481
 
2265
- this.handleReserveStatus()
2482
+ handleReserveStatus($xeTable)
2266
2483
  this.checkSelectionStatus()
2267
2484
  return new Promise<void>(resolve => {
2268
2485
  this.$nextTick()
@@ -4426,12 +4643,14 @@ const Methods = {
4426
4643
  handleGlobalMousedownEvent (evnt: any) {
4427
4644
  const { $el, $refs, $xegrid, $toolbar, mouseConfig, editStore, ctxMenuStore, editRules, editOpts, validOpts, areaOpts, filterStore, customStore, getRowNode } = this
4428
4645
  const { actived } = editStore
4429
- const { refTableMenu, filterWrapper, customWrapper, refValidTooltip } = $refs
4646
+ const { customWrapper, refValidTooltip } = $refs
4647
+ const tableFilter = $refs.refTableFilter
4648
+ const tableMenu = $refs.refTableMenu
4430
4649
  // 筛选
4431
- if (filterWrapper) {
4650
+ if (tableFilter) {
4432
4651
  if (getEventTargetNode(evnt, $el, 'vxe-cell--filter').flag) {
4433
4652
  // 如果点击了筛选按钮
4434
- } else if (getEventTargetNode(evnt, filterWrapper.$el).flag) {
4653
+ } else if (getEventTargetNode(evnt, tableFilter.$el).flag) {
4435
4654
  // 如果点击筛选容器
4436
4655
  } else {
4437
4656
  if (!getEventTargetNode(evnt, document.body, 'vxe-table--ignore-clear').flag) {
@@ -4508,7 +4727,7 @@ const Methods = {
4508
4727
  }
4509
4728
  }
4510
4729
  } else if (mouseConfig) {
4511
- if (!getEventTargetNode(evnt, $el).flag && !($xegrid && getEventTargetNode(evnt, $xegrid.$el).flag) && !(refTableMenu && getEventTargetNode(evnt, refTableMenu.$el).flag) && !($toolbar && getEventTargetNode(evnt, $toolbar.$el).flag)) {
4730
+ if (!getEventTargetNode(evnt, $el).flag && !($xegrid && getEventTargetNode(evnt, $xegrid.$el).flag) && !(tableMenu && getEventTargetNode(evnt, tableMenu.$el).flag) && !($toolbar && getEventTargetNode(evnt, $toolbar.$el).flag)) {
4512
4731
  if (this.clearSelected) {
4513
4732
  this.clearSelected()
4514
4733
  }
@@ -4527,7 +4746,7 @@ const Methods = {
4527
4746
  }
4528
4747
  }
4529
4748
  // 如果配置了快捷菜单且,点击了其他地方则关闭
4530
- if (ctxMenuStore.visible && refTableMenu && !getEventTargetNode(evnt, refTableMenu.$el).flag) {
4749
+ if (ctxMenuStore.visible && tableMenu && !getEventTargetNode(evnt, tableMenu.$el).flag) {
4531
4750
  this.closeMenu()
4532
4751
  }
4533
4752
  const isActivated = getEventTargetNode(evnt, ($xegrid || this).$el).flag
@@ -5084,10 +5303,12 @@ const Methods = {
5084
5303
  * 处理默认勾选
5085
5304
  */
5086
5305
  handleDefaultSelectionChecked () {
5306
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5307
+
5087
5308
  const { fullDataRowIdData, checkboxOpts } = this
5088
5309
  const { checkAll, checkRowKeys } = checkboxOpts
5089
5310
  if (checkAll) {
5090
- this.handleCheckedAllCheckboxRow(true, true)
5311
+ handleCheckedAllCheckboxRow($xeTable, true, true)
5091
5312
  } else if (checkRowKeys) {
5092
5313
  const defSelection: any[] = []
5093
5314
  checkRowKeys.forEach((rowid: any) => {
@@ -5095,18 +5316,13 @@ const Methods = {
5095
5316
  defSelection.push(fullDataRowIdData[rowid].row)
5096
5317
  }
5097
5318
  })
5098
- this.handleCheckedCheckboxRow(defSelection, true, true)
5319
+ handleCheckedCheckboxRow($xeTable, defSelection, true, true)
5099
5320
  }
5100
5321
  },
5101
- handleCheckedCheckboxRow (rows: any, value: any, isForce: any) {
5322
+ handleCheckedCheckboxRow (rows: any[], value: boolean, isForce?: boolean) {
5102
5323
  const $xeTable = this
5103
5324
 
5104
- if (rows && !XEUtils.isArray(rows)) {
5105
- rows = [rows]
5106
- }
5107
- $xeTable.handleBatchSelectRows(rows, !!value, isForce)
5108
- $xeTable.checkSelectionStatus()
5109
- return this.$nextTick()
5325
+ return handleCheckedCheckboxRow($xeTable, rows, value, isForce)
5110
5326
  },
5111
5327
  /**
5112
5328
  * 用于多选行,设置行为选中状态,第二个参数为选中与否
@@ -5119,7 +5335,7 @@ const Methods = {
5119
5335
  if (rows && !XEUtils.isArray(rows)) {
5120
5336
  rows = [rows]
5121
5337
  }
5122
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true)
5338
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true)
5123
5339
  },
5124
5340
  setCheckboxRowKey (keys: any, checked: boolean) {
5125
5341
  const $xeTable = this
@@ -5136,7 +5352,7 @@ const Methods = {
5136
5352
  rows.push(rowRest.row)
5137
5353
  }
5138
5354
  })
5139
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true)
5355
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true)
5140
5356
  },
5141
5357
  isCheckedByCheckboxRow (row: any) {
5142
5358
  const $xeTable = this
@@ -5187,9 +5403,9 @@ const Methods = {
5187
5403
  * 多选,行选中事件
5188
5404
  */
5189
5405
  handleBatchSelectRows (rows: any[], checked: boolean, isForce?: boolean) {
5190
- const $xeTable = this
5406
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5191
5407
  const props = $xeTable
5192
- const reactData = $xeTable
5408
+ const reactData = $xeTable as unknown as TableReactData
5193
5409
 
5194
5410
  const { treeConfig } = props
5195
5411
  const { selectCheckboxMaps } = reactData
@@ -5210,7 +5426,7 @@ const Methods = {
5210
5426
  if (indeterminateField) {
5211
5427
  XEUtils.set(row, indeterminateField, false)
5212
5428
  }
5213
- $xeTable.handleCheckboxReserveRow(row, checked)
5429
+ handleCheckboxReserveRow($xeTable, row, checked)
5214
5430
  }
5215
5431
  }, { children: transform ? mapChildrenField : childrenField })
5216
5432
  reactData.selectCheckboxMaps = selectRowMaps
@@ -5220,7 +5436,7 @@ const Methods = {
5220
5436
  rows.forEach(row => {
5221
5437
  if (isForce || (!checkMethod || checkMethod({ row }))) {
5222
5438
  XEUtils.set(row, checkField, checked)
5223
- $xeTable.handleCheckboxReserveRow(row, checked)
5439
+ handleCheckboxReserveRow($xeTable, row, checked)
5224
5440
  }
5225
5441
  })
5226
5442
  }
@@ -5241,7 +5457,7 @@ const Methods = {
5241
5457
  delete selectRowMaps[rowid]
5242
5458
  }
5243
5459
  }
5244
- $xeTable.handleCheckboxReserveRow(row, checked)
5460
+ handleCheckboxReserveRow($xeTable, row, checked)
5245
5461
  }
5246
5462
  }, { children: transform ? mapChildrenField : childrenField })
5247
5463
  reactData.selectCheckboxMaps = selectRowMaps
@@ -5261,7 +5477,7 @@ const Methods = {
5261
5477
  delete selectRowMaps[rowid]
5262
5478
  }
5263
5479
  }
5264
- $xeTable.handleCheckboxReserveRow(row, checked)
5480
+ handleCheckboxReserveRow($xeTable, row, checked)
5265
5481
  }
5266
5482
  })
5267
5483
  reactData.selectCheckboxMaps = selectRowMaps
@@ -5296,6 +5512,8 @@ const Methods = {
5296
5512
  }
5297
5513
  },
5298
5514
  triggerCheckRowEvent (evnt: any, params: any, checked: any) {
5515
+ const $xeTable = this
5516
+
5299
5517
  const { checkboxOpts, afterFullData } = this
5300
5518
  const { checkMethod, trigger } = checkboxOpts
5301
5519
  const { row } = params
@@ -5312,7 +5530,7 @@ const Methods = {
5312
5530
  if (_rowIndex !== _firstRowIndex) {
5313
5531
  this.setAllCheckboxRow(false)
5314
5532
  const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1)
5315
- this.handleCheckedCheckboxRow(rangeRows, true, false)
5533
+ handleCheckedCheckboxRow($xeTable, rangeRows, true, false)
5316
5534
  this.emitEvent('checkbox-range-select', Object.assign({ rangeRecords: rangeRows }, params), evnt)
5317
5535
  return
5318
5536
  }
@@ -5342,143 +5560,14 @@ const Methods = {
5342
5560
  $xeTable.checkSelectionStatus()
5343
5561
  return $xeTable.$nextTick()
5344
5562
  },
5345
- handleCheckedAllCheckboxRow (checked: any, isForce: any) {
5346
- const $xeTable = this
5347
- const reactData = $xeTable
5348
-
5349
- const { afterFullData, treeConfig, treeOpts, selectCheckboxMaps, checkboxReserveRowMap, checkboxOpts, afterFullRowMaps } = this
5350
- const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts
5351
- const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField
5352
- const childrenField = treeOpts.children || treeOpts.childrenField
5353
- const selectRowMaps: any = {}
5354
-
5355
- // 疑惑!
5356
- if (!treeConfig) {
5357
- XEUtils.each(selectCheckboxMaps, (row, rowid) => {
5358
- if (!afterFullRowMaps[rowid]) {
5359
- selectRowMaps[rowid] = row
5360
- }
5361
- })
5362
- }
5363
- // 疑惑!
5364
-
5365
- if (checkStrictly) {
5366
- this.isAllSelected = checked
5367
- } else {
5368
- /**
5369
- * 绑定属性方式(高性能,有污染)
5370
- * 必须在行数据存在对应的属性,否则将不响应
5371
- */
5372
- if (checkField) {
5373
- const checkValFn = (row: any) => {
5374
- if (isForce || (!checkMethod || checkMethod({ row }))) {
5375
- if (checked) {
5376
- selectRowMaps[getRowid(this, row)] = row
5377
- }
5378
- XEUtils.set(row, checkField, checked)
5379
- }
5380
- if (treeConfig && indeterminateField) {
5381
- XEUtils.set(row, indeterminateField, false)
5382
- }
5383
- }
5384
- // 如果存在选中方法
5385
- // 如果方法成立,则更新值,否则忽略该数据
5386
- if (treeConfig) {
5387
- XEUtils.eachTree(afterFullData, checkValFn, { children: childrenField })
5388
- } else {
5389
- afterFullData.forEach(checkValFn)
5390
- }
5391
- } else {
5392
- /**
5393
- * 默认方式(低性能,无污染)
5394
- * 无需任何属性,直接绑定
5395
- */
5396
- if (treeConfig) {
5397
- if (checked) {
5398
- /**
5399
- * 如果是树勾选
5400
- * 如果方法成立,则添加到临时集合中
5401
- */
5402
- XEUtils.eachTree(afterFullData, (row) => {
5403
- if (isForce || (!checkMethod || checkMethod({ row }))) {
5404
- selectRowMaps[getRowid(this, row)] = row
5405
- }
5406
- }, { children: childrenField })
5407
- } else {
5408
- /**
5409
- * 如果是树取消
5410
- * 如果方法成立,则不添加到临时集合中
5411
- */
5412
- if (!isForce && checkMethod) {
5413
- XEUtils.eachTree(afterFullData, (row) => {
5414
- const rowid = getRowid(this, row)
5415
- if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
5416
- selectRowMaps[rowid] = row
5417
- }
5418
- }, { children: childrenField })
5419
- }
5420
- }
5421
- } else {
5422
- if (checked) {
5423
- /**
5424
- * 如果是行勾选
5425
- * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
5426
- * 如果不存在选中方法,则添加所有数据到临时集合中
5427
- */
5428
- if (!isForce && checkMethod) {
5429
- afterFullData.forEach((row: any) => {
5430
- const rowid = getRowid(this, row)
5431
- if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
5432
- selectRowMaps[rowid] = row
5433
- }
5434
- })
5435
- } else {
5436
- afterFullData.forEach((row: any) => {
5437
- selectRowMaps[getRowid(this, row)] = row
5438
- })
5439
- }
5440
- } else {
5441
- /**
5442
- * 如果是行取消
5443
- * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
5444
- * 如果不存在选中方法,无需处理,临时集合默认为空
5445
- */
5446
- if (!isForce && checkMethod) {
5447
- afterFullData.forEach((row: any) => {
5448
- const rowid = getRowid(this, row)
5449
- if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
5450
- selectRowMaps[rowid] = row
5451
- }
5452
- })
5453
- }
5454
- }
5455
- }
5456
- }
5457
- if (reserve) {
5458
- if (checked) {
5459
- XEUtils.each(selectRowMaps, (row, rowid) => {
5460
- checkboxReserveRowMap[rowid] = row
5461
- })
5462
- } else {
5463
- afterFullData.forEach((row: any) => this.handleCheckboxReserveRow(row, false))
5464
- }
5465
- }
5466
- this.selectCheckboxMaps = checkField ? {} : selectRowMaps
5467
- }
5468
-
5469
- reactData.isAllSelected = checked
5470
- reactData.isIndeterminate = false
5471
- this.treeIndeterminateMaps = {}
5472
- this.treeIndeterminateRowMaps = {}
5473
- this.checkSelectionStatus()
5474
- return this.$nextTick()
5475
- },
5476
5563
  /**
5477
5564
  * 用于多选行,设置所有行的选中状态
5478
5565
  * @param {Boolean} value 是否选中
5479
5566
  */
5480
- setAllCheckboxRow (value: any) {
5481
- return this.handleCheckedAllCheckboxRow(value, true)
5567
+ setAllCheckboxRow (value: boolean) {
5568
+ const $xeTable = this
5569
+
5570
+ return handleCheckedAllCheckboxRow($xeTable, value, true)
5482
5571
  },
5483
5572
  updateCheckboxStatus () {
5484
5573
  const $xeTable = this
@@ -5639,43 +5728,6 @@ const Methods = {
5639
5728
  $xeTable.updateCheckboxStatus()
5640
5729
  $xeTable.updateAllCheckboxStatus()
5641
5730
  },
5642
- // 还原展开、选中等相关状态
5643
- handleReserveStatus () {
5644
- const $xeTable = this
5645
-
5646
- const { expandColumn, treeOpts, treeConfig, fullDataRowIdData, fullAllDataRowIdData, currentRow, selectRadioRow, radioReserveRow, radioOpts, checkboxOpts, selectCheckboxMaps, rowExpandedMaps, treeExpandedMaps, expandOpts } = this
5647
- // 单选框
5648
- if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
5649
- this.selectRadioRow = null // 刷新单选行状态
5650
- }
5651
- // 还原保留选中状态
5652
- if (radioOpts.reserve && radioReserveRow) {
5653
- const rowid = getRowid(this, radioReserveRow)
5654
- if (fullDataRowIdData[rowid]) {
5655
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true)
5656
- }
5657
- }
5658
- // 复选框
5659
- this.selectCheckboxMaps = getRecoverRowMaps(this, selectCheckboxMaps) // 刷新多选行状态
5660
- // 还原保留选中状态
5661
- if (checkboxOpts.reserve) {
5662
- this.handleCheckedCheckboxRow(handleReserveRow(this, this.checkboxReserveRowMap), true, true)
5663
- }
5664
- if (currentRow && !this.fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
5665
- this.currentRow = null // 刷新当前行状态
5666
- }
5667
- // 行展开
5668
- this.rowExpandedMaps = expandColumn ? getRecoverRowMaps(this, rowExpandedMaps) : [] // 刷新行展开状态
5669
- // 还原保留状态
5670
- if (expandColumn && expandOpts.reserve) {
5671
- this.setRowExpand(handleReserveRow(this, this.rowExpandedReserveRowMap), true)
5672
- }
5673
- // 树展开
5674
- this.treeExpandedMaps = treeConfig ? getRecoverRowMaps(this, treeExpandedMaps) : [] // 刷新树展开状态
5675
- if (treeConfig && treeOpts.reserve) {
5676
- this.setTreeExpand(handleReserveRow(this, this.treeExpandedReserveRowMap), true)
5677
- }
5678
- },
5679
5731
  /**
5680
5732
  * 获取单选框保留选中的行
5681
5733
  */
@@ -5708,12 +5760,6 @@ const Methods = {
5708
5760
  this.radioReserveRow = null
5709
5761
  return this.$nextTick()
5710
5762
  },
5711
- handleRadioReserveRow (row: any) {
5712
- const { radioOpts } = this
5713
- if (radioOpts.reserve) {
5714
- this.radioReserveRow = row
5715
- }
5716
- },
5717
5763
  /**
5718
5764
  * 获取复选框保留选中的行
5719
5765
  */
@@ -5764,15 +5810,24 @@ const Methods = {
5764
5810
  }
5765
5811
  },
5766
5812
  handleCheckAllEvent (evnt: any, value: any) {
5767
- this.handleCheckedAllCheckboxRow(value)
5813
+ const $xeTable = this
5814
+
5815
+ handleCheckedAllCheckboxRow($xeTable, value)
5768
5816
  if (evnt) {
5769
- this.emitEvent('checkbox-all', { records: this.getCheckboxRecords(), reserves: this.getCheckboxReserveRecords(), indeterminates: this.getCheckboxIndeterminateRecords(), checked: value }, evnt)
5817
+ $xeTable.dispatchEvent('checkbox-all', {
5818
+ records: $xeTable.getCheckboxRecords(),
5819
+ reserves: $xeTable.getCheckboxReserveRecords(),
5820
+ indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
5821
+ checked: value
5822
+ }, evnt)
5770
5823
  }
5771
5824
  },
5772
5825
  /**
5773
5826
  * 多选,选中所有事件
5774
5827
  */
5775
5828
  triggerCheckAllEvent (evnt: any, value: any) {
5829
+ const $xeTable = this
5830
+
5776
5831
  const { checkboxOpts } = this
5777
5832
  const { trigger } = checkboxOpts
5778
5833
  if (trigger === 'manual') {
@@ -5781,7 +5836,7 @@ const Methods = {
5781
5836
  if (evnt) {
5782
5837
  evnt.stopPropagation()
5783
5838
  }
5784
- this.handleCheckAllEvent(evnt, value)
5839
+ $xeTable.handleCheckAllEvent(evnt, value)
5785
5840
  },
5786
5841
  /**
5787
5842
  * 多选,切换所有行的选中状态
@@ -5825,11 +5880,13 @@ const Methods = {
5825
5880
  * 处理单选框默认勾选
5826
5881
  */
5827
5882
  handleDefaultRadioChecked () {
5883
+ const $xeTable = this
5884
+
5828
5885
  const { radioOpts, fullDataRowIdData } = this
5829
5886
  const { checkRowKey: rowid, reserve } = radioOpts
5830
5887
  if (rowid) {
5831
5888
  if (fullDataRowIdData[rowid]) {
5832
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true)
5889
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true)
5833
5890
  }
5834
5891
  if (reserve) {
5835
5892
  const rowkey = getRowkey(this)
@@ -5843,6 +5900,8 @@ const Methods = {
5843
5900
  triggerRadioRowEvent (evnt: Event, params: {
5844
5901
  row: any
5845
5902
  }) {
5903
+ const $xeTable = this
5904
+
5846
5905
  const { selectRadioRow: oldValue, radioOpts } = this
5847
5906
  const { row } = params
5848
5907
  const { trigger } = radioOpts
@@ -5853,7 +5912,7 @@ const Methods = {
5853
5912
  let newValue = row
5854
5913
  let isChange = oldValue !== newValue
5855
5914
  if (isChange) {
5856
- this.handleCheckedRadioRow(newValue)
5915
+ handleCheckedRadioRow($xeTable, newValue)
5857
5916
  } else if (!radioOpts.strict) {
5858
5917
  isChange = oldValue === newValue
5859
5918
  if (isChange) {
@@ -5929,15 +5988,6 @@ const Methods = {
5929
5988
  }
5930
5989
  return false
5931
5990
  },
5932
- handleCheckedRadioRow (row: any, isForce?: boolean) {
5933
- const { radioOpts } = this
5934
- const { checkMethod } = radioOpts
5935
- if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
5936
- this.selectRadioRow = row
5937
- this.handleRadioReserveRow(row)
5938
- }
5939
- return this.$nextTick()
5940
- },
5941
5991
  /**
5942
5992
  * 用于单选行,设置某一行为选中状态
5943
5993
  * @param {Row} row 行对象
@@ -5945,7 +5995,7 @@ const Methods = {
5945
5995
  setRadioRow (row: any) {
5946
5996
  const $xeTable = this
5947
5997
 
5948
- return $xeTable.handleCheckedRadioRow(row, true)
5998
+ return handleCheckedRadioRow($xeTable, row, true)
5949
5999
  },
5950
6000
  /**
5951
6001
  * 用于单选行,设置某一行为选中状态
@@ -5958,7 +6008,7 @@ const Methods = {
5958
6008
  const { fullAllDataRowIdData } = internalData
5959
6009
  const rowRest = fullAllDataRowIdData[rowid]
5960
6010
  if (rowRest) {
5961
- return $xeTable.handleCheckedRadioRow(rowRest.row, true)
6011
+ return handleCheckedRadioRow($xeTable, rowRest.row, true)
5962
6012
  }
5963
6013
  return $xeTable.$nextTick()
5964
6014
  },
@@ -7744,7 +7794,7 @@ const Methods = {
7744
7794
  }
7745
7795
  // 如果当前节点已选中,则展开后子节点也被选中
7746
7796
  if (!checkStrictly && this.isCheckedByCheckboxRow(row)) {
7747
- this.handleCheckedCheckboxRow(childRows, true)
7797
+ handleCheckedCheckboxRow($xeTable, childRows, true)
7748
7798
  }
7749
7799
  return this.$nextTick().then(() => {
7750
7800
  if (transform) {