vxe-table 3.13.5 → 3.13.6

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 (134) 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 +2 -1
  4. package/es/locale/lang/de-DE.js +2 -1
  5. package/es/locale/lang/en-US.js +2 -1
  6. package/es/locale/lang/es-ES.js +2 -1
  7. package/es/locale/lang/fr-FR.js +2 -1
  8. package/es/locale/lang/hu-HU.js +2 -1
  9. package/es/locale/lang/hy-AM.js +2 -1
  10. package/es/locale/lang/id-ID.js +2 -1
  11. package/es/locale/lang/it-IT.js +2 -1
  12. package/es/locale/lang/ja-JP.js +2 -1
  13. package/es/locale/lang/ko-KR.js +2 -1
  14. package/es/locale/lang/nb-NO.js +2 -1
  15. package/es/locale/lang/pt-BR.js +2 -1
  16. package/es/locale/lang/ru-RU.js +2 -1
  17. package/es/locale/lang/th-TH.js +2 -1
  18. package/es/locale/lang/ug-CN.js +2 -1
  19. package/es/locale/lang/uk-UA.js +2 -1
  20. package/es/locale/lang/vi-VN.js +2 -1
  21. package/es/locale/lang/zh-CHT.js +2 -1
  22. package/es/locale/lang/zh-CN.js +2 -1
  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/src/methods.js +247 -215
  28. package/es/table/style.css +1 -1
  29. package/es/table/style.min.css +1 -1
  30. package/es/ui/index.js +1 -1
  31. package/es/ui/src/log.js +1 -1
  32. package/es/vxe-table/style.css +1 -1
  33. package/es/vxe-table/style.min.css +1 -1
  34. package/lib/index.css +1 -1
  35. package/lib/index.min.css +1 -1
  36. package/lib/index.umd.js +296 -271
  37. package/lib/index.umd.min.js +1 -1
  38. package/lib/locale/lang/ar-EG.js +2 -1
  39. package/lib/locale/lang/ar-EG.min.js +1 -1
  40. package/lib/locale/lang/de-DE.js +2 -1
  41. package/lib/locale/lang/de-DE.min.js +1 -1
  42. package/lib/locale/lang/en-US.js +2 -1
  43. package/lib/locale/lang/en-US.min.js +1 -1
  44. package/lib/locale/lang/en-US.umd.js +2 -1
  45. package/lib/locale/lang/es-ES.js +2 -1
  46. package/lib/locale/lang/es-ES.min.js +1 -1
  47. package/lib/locale/lang/es-ES.umd.js +2 -1
  48. package/lib/locale/lang/fr-FR.js +2 -1
  49. package/lib/locale/lang/fr-FR.min.js +1 -1
  50. package/lib/locale/lang/hu-HU.js +2 -1
  51. package/lib/locale/lang/hu-HU.min.js +1 -1
  52. package/lib/locale/lang/hu-HU.umd.js +2 -1
  53. package/lib/locale/lang/hy-AM.js +2 -1
  54. package/lib/locale/lang/hy-AM.min.js +1 -1
  55. package/lib/locale/lang/id-ID.js +2 -1
  56. package/lib/locale/lang/id-ID.min.js +1 -1
  57. package/lib/locale/lang/it-IT.js +2 -1
  58. package/lib/locale/lang/it-IT.min.js +1 -1
  59. package/lib/locale/lang/ja-JP.js +2 -1
  60. package/lib/locale/lang/ja-JP.min.js +1 -1
  61. package/lib/locale/lang/ja-JP.umd.js +2 -1
  62. package/lib/locale/lang/ko-KR.js +2 -1
  63. package/lib/locale/lang/ko-KR.min.js +1 -1
  64. package/lib/locale/lang/ko-KR.umd.js +2 -1
  65. package/lib/locale/lang/nb-NO.js +2 -1
  66. package/lib/locale/lang/nb-NO.min.js +1 -1
  67. package/lib/locale/lang/pt-BR.js +2 -1
  68. package/lib/locale/lang/pt-BR.min.js +1 -1
  69. package/lib/locale/lang/pt-BR.umd.js +2 -1
  70. package/lib/locale/lang/ru-RU.js +2 -1
  71. package/lib/locale/lang/ru-RU.min.js +1 -1
  72. package/lib/locale/lang/ru-RU.umd.js +2 -1
  73. package/lib/locale/lang/th-TH.js +2 -1
  74. package/lib/locale/lang/th-TH.min.js +1 -1
  75. package/lib/locale/lang/ug-CN.js +2 -1
  76. package/lib/locale/lang/ug-CN.min.js +1 -1
  77. package/lib/locale/lang/uk-UA.js +2 -1
  78. package/lib/locale/lang/uk-UA.min.js +1 -1
  79. package/lib/locale/lang/uk-UA.umd.js +2 -1
  80. package/lib/locale/lang/vi-VN.js +2 -1
  81. package/lib/locale/lang/vi-VN.min.js +1 -1
  82. package/lib/locale/lang/zh-CHT.js +2 -1
  83. package/lib/locale/lang/zh-CHT.min.js +1 -1
  84. package/lib/locale/lang/zh-CHT.umd.js +2 -1
  85. package/lib/locale/lang/zh-CN.js +2 -1
  86. package/lib/locale/lang/zh-CN.min.js +1 -1
  87. package/lib/locale/lang/zh-CN.umd.js +2 -1
  88. package/lib/style.css +1 -1
  89. package/lib/style.min.css +1 -1
  90. package/lib/table/module/export/export-panel.js +7 -4
  91. package/lib/table/module/export/export-panel.min.js +1 -1
  92. package/lib/table/module/export/mixin.js +2 -2
  93. package/lib/table/module/export/mixin.min.js +1 -1
  94. package/lib/table/src/methods.js +283 -262
  95. package/lib/table/src/methods.min.js +1 -1
  96. package/lib/table/style/style.css +1 -1
  97. package/lib/table/style/style.min.css +1 -1
  98. package/lib/ui/index.js +1 -1
  99. package/lib/ui/index.min.js +1 -1
  100. package/lib/ui/src/log.js +1 -1
  101. package/lib/ui/src/log.min.js +1 -1
  102. package/lib/vxe-table/style/style.css +1 -1
  103. package/lib/vxe-table/style/style.min.css +1 -1
  104. package/package.json +2 -2
  105. package/packages/locale/lang/ar-EG.ts +2 -1
  106. package/packages/locale/lang/de-DE.ts +2 -1
  107. package/packages/locale/lang/en-US.ts +2 -1
  108. package/packages/locale/lang/es-ES.ts +2 -1
  109. package/packages/locale/lang/fr-FR.ts +2 -1
  110. package/packages/locale/lang/hu-HU.ts +2 -1
  111. package/packages/locale/lang/hy-AM.ts +2 -1
  112. package/packages/locale/lang/id-ID.ts +2 -1
  113. package/packages/locale/lang/it-IT.ts +2 -1
  114. package/packages/locale/lang/ja-JP.ts +2 -1
  115. package/packages/locale/lang/ko-KR.ts +2 -1
  116. package/packages/locale/lang/nb-NO.ts +2 -1
  117. package/packages/locale/lang/pt-BR.ts +2 -1
  118. package/packages/locale/lang/ru-RU.ts +2 -1
  119. package/packages/locale/lang/th-TH.ts +2 -1
  120. package/packages/locale/lang/ug-CN.ts +2 -1
  121. package/packages/locale/lang/uk-UA.ts +2 -1
  122. package/packages/locale/lang/vi-VN.ts +2 -1
  123. package/packages/locale/lang/zh-CHT.ts +2 -1
  124. package/packages/locale/lang/zh-CN.ts +2 -1
  125. package/packages/table/module/export/export-panel.ts +7 -4
  126. package/packages/table/module/export/mixin.ts +2 -2
  127. package/packages/table/src/methods.ts +264 -216
  128. package/styles/components/table.scss +1 -1
  129. /package/es/{iconfont.1740038065641.ttf → iconfont.1740103990490.ttf} +0 -0
  130. /package/es/{iconfont.1740038065641.woff → iconfont.1740103990490.woff} +0 -0
  131. /package/es/{iconfont.1740038065641.woff2 → iconfont.1740103990490.woff2} +0 -0
  132. /package/lib/{iconfont.1740038065641.ttf → iconfont.1740103990490.ttf} +0 -0
  133. /package/lib/{iconfont.1740038065641.woff → iconfont.1740103990490.woff} +0 -0
  134. /package/lib/{iconfont.1740038065641.woff2 → iconfont.1740103990490.woff2} +0 -0
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.13.5";
2223
+ const version = "3.13.6";
2224
2224
  core_.VxeUI.version = version;
2225
2225
  core_.VxeUI.tableVersion = version;
2226
2226
  core_.VxeUI.setConfig({
@@ -2843,7 +2843,7 @@ function isNodeElement(elem) {
2843
2843
  const {
2844
2844
  log: log_log
2845
2845
  } = core_.VxeUI;
2846
- const log_version = `table v${"3.13.5"}`;
2846
+ const log_version = `table v${"3.13.6"}`;
2847
2847
  const warnLog = log_log.create('warn', log_version);
2848
2848
  const errLog = log_log.create('error', log_version);
2849
2849
  ;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
@@ -5124,10 +5124,11 @@ const setCustomStorageMap = (id, data) => {
5124
5124
  maps._v = version;
5125
5125
  localStorage.setItem(customStorageKey, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toJSONString(maps));
5126
5126
  };
5127
- const getRecoverRowMaps = (_vm, keyMaps) => {
5127
+ const getRecoverRowMaps = ($xeTable, keyMaps) => {
5128
+ const internalData = $xeTable;
5128
5129
  const {
5129
5130
  fullAllDataRowIdData
5130
- } = _vm;
5131
+ } = internalData;
5131
5132
  const restKeys = {};
5132
5133
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(keyMaps, (row, rowid) => {
5133
5134
  if (fullAllDataRowIdData[rowid]) {
@@ -5136,10 +5137,11 @@ const getRecoverRowMaps = (_vm, keyMaps) => {
5136
5137
  });
5137
5138
  return restKeys;
5138
5139
  };
5139
- function handleReserveRow(_vm, reserveRowMap) {
5140
+ function handleReserveRow($xeTable, reserveRowMap) {
5141
+ const internalData = $xeTable;
5140
5142
  const {
5141
5143
  fullDataRowIdData
5142
- } = _vm;
5144
+ } = internalData;
5143
5145
  const reserveList = [];
5144
5146
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(reserveRowMap, (item, rowid) => {
5145
5147
  if (fullDataRowIdData[rowid] && reserveList.indexOf(fullDataRowIdData[rowid].row) === -1) {
@@ -5929,6 +5931,253 @@ function updateStyle($xeTable) {
5929
5931
  }
5930
5932
  return $xeTable.$nextTick();
5931
5933
  }
5934
+ function handleRadioReserveRow($xeTable, row) {
5935
+ const internalData = $xeTable;
5936
+ const radioOpts = $xeTable.computeRadioOpts;
5937
+ if (radioOpts.reserve) {
5938
+ internalData.radioReserveRow = row;
5939
+ }
5940
+ }
5941
+ function handleCheckboxReserveRow($xeTable, row, checked) {
5942
+ const internalData = $xeTable;
5943
+ const {
5944
+ checkboxReserveRowMap
5945
+ } = internalData;
5946
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
5947
+ if (checkboxOpts.reserve) {
5948
+ const rowid = getRowid($xeTable, row);
5949
+ if (checked) {
5950
+ checkboxReserveRowMap[rowid] = row;
5951
+ } else if (checkboxReserveRowMap[rowid]) {
5952
+ delete checkboxReserveRowMap[rowid];
5953
+ }
5954
+ }
5955
+ }
5956
+ function handleCheckedRadioRow($xeTable, row, isForce) {
5957
+ const reactData = $xeTable;
5958
+ const radioOpts = $xeTable.computeRadioOpts;
5959
+ const {
5960
+ checkMethod
5961
+ } = radioOpts;
5962
+ if (row && (isForce || !checkMethod || checkMethod({
5963
+ row
5964
+ }))) {
5965
+ reactData.selectRadioRow = row;
5966
+ handleRadioReserveRow($xeTable, row);
5967
+ }
5968
+ return $xeTable.$nextTick();
5969
+ }
5970
+ function handleCheckedCheckboxRow($xeTable, rows, value, isForce) {
5971
+ if (rows && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)) {
5972
+ rows = [rows];
5973
+ }
5974
+ $xeTable.handleBatchSelectRows(rows, !!value, isForce);
5975
+ $xeTable.checkSelectionStatus();
5976
+ return $xeTable.$nextTick();
5977
+ }
5978
+ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
5979
+ const props = $xeTable;
5980
+ const reactData = $xeTable;
5981
+ const internalData = $xeTable;
5982
+ const {
5983
+ treeConfig
5984
+ } = props;
5985
+ const {
5986
+ selectCheckboxMaps
5987
+ } = reactData;
5988
+ const {
5989
+ afterFullData,
5990
+ checkboxReserveRowMap
5991
+ } = internalData;
5992
+ const treeOpts = $xeTable.computeTreeOpts;
5993
+ const childrenField = treeOpts.children || treeOpts.childrenField;
5994
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
5995
+ const {
5996
+ checkField,
5997
+ reserve,
5998
+ checkMethod
5999
+ } = checkboxOpts;
6000
+ const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
6001
+ const selectRowMaps = {};
6002
+ /**
6003
+ * 绑定属性方式(高性能,有污染)
6004
+ * 必须在行数据存在对应的属性,否则将不响应
6005
+ */
6006
+ if (checkField) {
6007
+ const checkValFn = row => {
6008
+ if (isForce || !checkMethod || checkMethod({
6009
+ row
6010
+ })) {
6011
+ if (checked) {
6012
+ selectRowMaps[getRowid($xeTable, row)] = row;
6013
+ }
6014
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, checked);
6015
+ }
6016
+ if (treeConfig && indeterminateField) {
6017
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, false);
6018
+ }
6019
+ };
6020
+ // 如果存在选中方法
6021
+ // 如果方法成立,则更新值,否则忽略该数据
6022
+ if (treeConfig) {
6023
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterFullData, checkValFn, {
6024
+ children: childrenField
6025
+ });
6026
+ } else {
6027
+ afterFullData.forEach(checkValFn);
6028
+ }
6029
+ } else {
6030
+ /**
6031
+ * 默认方式(低性能,无污染)
6032
+ * 无需任何属性,直接绑定
6033
+ */
6034
+ if (treeConfig) {
6035
+ if (checked) {
6036
+ /**
6037
+ * 如果是树勾选
6038
+ * 如果方法成立,则添加到临时集合中
6039
+ */
6040
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterFullData, row => {
6041
+ if (isForce || !checkMethod || checkMethod({
6042
+ row
6043
+ })) {
6044
+ selectRowMaps[getRowid($xeTable, row)] = row;
6045
+ }
6046
+ }, {
6047
+ children: childrenField
6048
+ });
6049
+ } else {
6050
+ /**
6051
+ * 如果是树取消
6052
+ * 如果方法成立,则不添加到临时集合中
6053
+ */
6054
+ if (!isForce && checkMethod) {
6055
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterFullData, row => {
6056
+ const rowid = getRowid($xeTable, row);
6057
+ if (checkMethod({
6058
+ row
6059
+ }) ? 0 : selectCheckboxMaps[rowid]) {
6060
+ selectRowMaps[rowid] = row;
6061
+ }
6062
+ }, {
6063
+ children: childrenField
6064
+ });
6065
+ }
6066
+ }
6067
+ } else {
6068
+ if (checked) {
6069
+ /**
6070
+ * 如果是行勾选
6071
+ * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
6072
+ * 如果不存在选中方法,则添加所有数据到临时集合中
6073
+ */
6074
+ if (!isForce && checkMethod) {
6075
+ afterFullData.forEach(row => {
6076
+ const rowid = getRowid($xeTable, row);
6077
+ if (selectCheckboxMaps[rowid] || checkMethod({
6078
+ row
6079
+ })) {
6080
+ selectRowMaps[rowid] = row;
6081
+ }
6082
+ });
6083
+ } else {
6084
+ afterFullData.forEach(row => {
6085
+ selectRowMaps[getRowid($xeTable, row)] = row;
6086
+ });
6087
+ }
6088
+ } else {
6089
+ /**
6090
+ * 如果是行取消
6091
+ * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
6092
+ * 如果不存在选中方法,无需处理,临时集合默认为空
6093
+ */
6094
+ if (!isForce && checkMethod) {
6095
+ afterFullData.forEach(row => {
6096
+ const rowid = getRowid($xeTable, row);
6097
+ if (checkMethod({
6098
+ row
6099
+ }) ? 0 : selectCheckboxMaps[rowid]) {
6100
+ selectRowMaps[rowid] = row;
6101
+ }
6102
+ });
6103
+ }
6104
+ }
6105
+ }
6106
+ }
6107
+ if (reserve) {
6108
+ if (checked) {
6109
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(selectRowMaps, (row, rowid) => {
6110
+ checkboxReserveRowMap[rowid] = row;
6111
+ });
6112
+ } else {
6113
+ afterFullData.forEach(row => handleCheckboxReserveRow($xeTable, row, false));
6114
+ }
6115
+ }
6116
+ reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps;
6117
+ reactData.isAllSelected = checked;
6118
+ reactData.isIndeterminate = false;
6119
+ reactData.treeIndeterminateMaps = {};
6120
+ internalData.treeIndeterminateRowMaps = {};
6121
+ $xeTable.checkSelectionStatus();
6122
+ return $xeTable.$nextTick();
6123
+ }
6124
+ // 还原展开、选中等相关状态
6125
+ function handleReserveStatus($xeTable) {
6126
+ const props = $xeTable;
6127
+ const reactData = $xeTable;
6128
+ const internalData = $xeTable;
6129
+ const {
6130
+ treeConfig
6131
+ } = props;
6132
+ const {
6133
+ expandColumn,
6134
+ currentRow,
6135
+ selectCheckboxMaps,
6136
+ selectRadioRow,
6137
+ rowExpandedMaps,
6138
+ treeExpandedMaps
6139
+ } = reactData;
6140
+ const {
6141
+ fullDataRowIdData,
6142
+ fullAllDataRowIdData,
6143
+ radioReserveRow
6144
+ } = internalData;
6145
+ const expandOpts = $xeTable.computeExpandOpts;
6146
+ const treeOpts = $xeTable.computeTreeOpts;
6147
+ const radioOpts = $xeTable.computeRadioOpts;
6148
+ const checkboxOpts = $xeTable.computeCheckboxOpts;
6149
+ // 单选框
6150
+ if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
6151
+ reactData.selectRadioRow = null; // 刷新单选行状态
6152
+ }
6153
+ // 还原保留选中状态
6154
+ if (radioOpts.reserve && radioReserveRow) {
6155
+ const rowid = getRowid($xeTable, radioReserveRow);
6156
+ if (fullDataRowIdData[rowid]) {
6157
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
6158
+ }
6159
+ }
6160
+ // 复选框
6161
+ reactData.selectCheckboxMaps = getRecoverRowMaps($xeTable, selectCheckboxMaps); // 刷新多选行状态
6162
+ // 还原保留选中状态
6163
+ if (checkboxOpts.reserve) {
6164
+ handleCheckedCheckboxRow($xeTable, handleReserveRow($xeTable, internalData.checkboxReserveRowMap), true, true);
6165
+ }
6166
+ if (currentRow && !fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
6167
+ reactData.currentRow = null; // 刷新当前行状态
6168
+ }
6169
+ // 行展开
6170
+ reactData.rowExpandedMaps = expandColumn ? getRecoverRowMaps($xeTable, rowExpandedMaps) : {}; // 刷新行展开状态
6171
+ // 还原保留状态
6172
+ if (expandColumn && expandOpts.reserve) {
6173
+ $xeTable.setRowExpand(handleReserveRow($xeTable, internalData.rowExpandedReserveRowMap), true);
6174
+ }
6175
+ // 树展开
6176
+ reactData.treeExpandedMaps = treeConfig ? getRecoverRowMaps($xeTable, treeExpandedMaps) : {}; // 刷新树展开状态
6177
+ if (treeConfig && treeOpts.reserve) {
6178
+ $xeTable.setTreeExpand(handleReserveRow($xeTable, internalData.treeExpandedReserveRowMap), true);
6179
+ }
6180
+ }
5932
6181
  function calcVarRowHeightConfig($xeTable, sizeKey, sizeEl) {
5933
6182
  const reactData = $xeTable;
5934
6183
  const {
@@ -7572,7 +7821,7 @@ const Methods = {
7572
7821
  }
7573
7822
  }
7574
7823
  }
7575
- this.handleReserveStatus();
7824
+ handleReserveStatus($xeTable);
7576
7825
  this.checkSelectionStatus();
7577
7826
  return new Promise(resolve => {
7578
7827
  this.$nextTick().then(() => this.recalculate()).then(() => {
@@ -10846,6 +11095,7 @@ const Methods = {
10846
11095
  * 处理默认勾选
10847
11096
  */
10848
11097
  handleDefaultSelectionChecked() {
11098
+ const $xeTable = this;
10849
11099
  const {
10850
11100
  fullDataRowIdData,
10851
11101
  checkboxOpts
@@ -10855,7 +11105,7 @@ const Methods = {
10855
11105
  checkRowKeys
10856
11106
  } = checkboxOpts;
10857
11107
  if (checkAll) {
10858
- this.handleCheckedAllCheckboxRow(true, true);
11108
+ handleCheckedAllCheckboxRow($xeTable, true, true);
10859
11109
  } else if (checkRowKeys) {
10860
11110
  const defSelection = [];
10861
11111
  checkRowKeys.forEach(rowid => {
@@ -10863,17 +11113,12 @@ const Methods = {
10863
11113
  defSelection.push(fullDataRowIdData[rowid].row);
10864
11114
  }
10865
11115
  });
10866
- this.handleCheckedCheckboxRow(defSelection, true, true);
11116
+ handleCheckedCheckboxRow($xeTable, defSelection, true, true);
10867
11117
  }
10868
11118
  },
10869
11119
  handleCheckedCheckboxRow(rows, value, isForce) {
10870
11120
  const $xeTable = this;
10871
- if (rows && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)) {
10872
- rows = [rows];
10873
- }
10874
- $xeTable.handleBatchSelectRows(rows, !!value, isForce);
10875
- $xeTable.checkSelectionStatus();
10876
- return this.$nextTick();
11121
+ return handleCheckedCheckboxRow($xeTable, rows, value, isForce);
10877
11122
  },
10878
11123
  /**
10879
11124
  * 用于多选行,设置行为选中状态,第二个参数为选中与否
@@ -10885,7 +11130,7 @@ const Methods = {
10885
11130
  if (rows && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)) {
10886
11131
  rows = [rows];
10887
11132
  }
10888
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
11133
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true);
10889
11134
  },
10890
11135
  setCheckboxRowKey(keys, checked) {
10891
11136
  const $xeTable = this;
@@ -10903,7 +11148,7 @@ const Methods = {
10903
11148
  rows.push(rowRest.row);
10904
11149
  }
10905
11150
  });
10906
- return $xeTable.handleCheckedCheckboxRow(rows, checked, true);
11151
+ return handleCheckedCheckboxRow($xeTable, rows, checked, true);
10907
11152
  },
10908
11153
  isCheckedByCheckboxRow(row) {
10909
11154
  const $xeTable = this;
@@ -10999,7 +11244,7 @@ const Methods = {
10999
11244
  if (indeterminateField) {
11000
11245
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, false);
11001
11246
  }
11002
- $xeTable.handleCheckboxReserveRow(row, checked);
11247
+ handleCheckboxReserveRow($xeTable, row, checked);
11003
11248
  }
11004
11249
  }, {
11005
11250
  children: transform ? mapChildrenField : childrenField
@@ -11013,7 +11258,7 @@ const Methods = {
11013
11258
  row
11014
11259
  })) {
11015
11260
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, checked);
11016
- $xeTable.handleCheckboxReserveRow(row, checked);
11261
+ handleCheckboxReserveRow($xeTable, row, checked);
11017
11262
  }
11018
11263
  });
11019
11264
  }
@@ -11035,7 +11280,7 @@ const Methods = {
11035
11280
  delete selectRowMaps[rowid];
11036
11281
  }
11037
11282
  }
11038
- $xeTable.handleCheckboxReserveRow(row, checked);
11283
+ handleCheckboxReserveRow($xeTable, row, checked);
11039
11284
  }
11040
11285
  }, {
11041
11286
  children: transform ? mapChildrenField : childrenField
@@ -11058,7 +11303,7 @@ const Methods = {
11058
11303
  delete selectRowMaps[rowid];
11059
11304
  }
11060
11305
  }
11061
- $xeTable.handleCheckboxReserveRow(row, checked);
11306
+ handleCheckboxReserveRow($xeTable, row, checked);
11062
11307
  }
11063
11308
  });
11064
11309
  reactData.selectCheckboxMaps = selectRowMaps;
@@ -11102,6 +11347,7 @@ const Methods = {
11102
11347
  }
11103
11348
  },
11104
11349
  triggerCheckRowEvent(evnt, params, checked) {
11350
+ const $xeTable = this;
11105
11351
  const {
11106
11352
  checkboxOpts,
11107
11353
  afterFullData
@@ -11126,7 +11372,7 @@ const Methods = {
11126
11372
  if (_rowIndex !== _firstRowIndex) {
11127
11373
  this.setAllCheckboxRow(false);
11128
11374
  const rangeRows = _rowIndex < _firstRowIndex ? afterFullData.slice(_rowIndex, _firstRowIndex + 1) : afterFullData.slice(_firstRowIndex, _rowIndex + 1);
11129
- this.handleCheckedCheckboxRow(rangeRows, true, false);
11375
+ handleCheckedCheckboxRow($xeTable, rangeRows, true, false);
11130
11376
  this.emitEvent('checkbox-range-select', Object.assign({
11131
11377
  rangeRecords: rangeRows
11132
11378
  }, params), evnt);
@@ -11164,168 +11410,13 @@ const Methods = {
11164
11410
  $xeTable.checkSelectionStatus();
11165
11411
  return $xeTable.$nextTick();
11166
11412
  },
11167
- handleCheckedAllCheckboxRow(checked, isForce) {
11168
- const $xeTable = this;
11169
- const reactData = $xeTable;
11170
- const {
11171
- afterFullData,
11172
- treeConfig,
11173
- treeOpts,
11174
- selectCheckboxMaps,
11175
- checkboxReserveRowMap,
11176
- checkboxOpts,
11177
- afterFullRowMaps
11178
- } = this;
11179
- const {
11180
- checkField,
11181
- reserve,
11182
- checkStrictly,
11183
- checkMethod
11184
- } = checkboxOpts;
11185
- const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
11186
- const childrenField = treeOpts.children || treeOpts.childrenField;
11187
- const selectRowMaps = {};
11188
- // 疑惑!
11189
- if (!treeConfig) {
11190
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(selectCheckboxMaps, (row, rowid) => {
11191
- if (!afterFullRowMaps[rowid]) {
11192
- selectRowMaps[rowid] = row;
11193
- }
11194
- });
11195
- }
11196
- // 疑惑!
11197
- if (checkStrictly) {
11198
- this.isAllSelected = checked;
11199
- } else {
11200
- /**
11201
- * 绑定属性方式(高性能,有污染)
11202
- * 必须在行数据存在对应的属性,否则将不响应
11203
- */
11204
- if (checkField) {
11205
- const checkValFn = row => {
11206
- if (isForce || !checkMethod || checkMethod({
11207
- row
11208
- })) {
11209
- if (checked) {
11210
- selectRowMaps[getRowid(this, row)] = row;
11211
- }
11212
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, checkField, checked);
11213
- }
11214
- if (treeConfig && indeterminateField) {
11215
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, indeterminateField, false);
11216
- }
11217
- };
11218
- // 如果存在选中方法
11219
- // 如果方法成立,则更新值,否则忽略该数据
11220
- if (treeConfig) {
11221
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterFullData, checkValFn, {
11222
- children: childrenField
11223
- });
11224
- } else {
11225
- afterFullData.forEach(checkValFn);
11226
- }
11227
- } else {
11228
- /**
11229
- * 默认方式(低性能,无污染)
11230
- * 无需任何属性,直接绑定
11231
- */
11232
- if (treeConfig) {
11233
- if (checked) {
11234
- /**
11235
- * 如果是树勾选
11236
- * 如果方法成立,则添加到临时集合中
11237
- */
11238
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterFullData, row => {
11239
- if (isForce || !checkMethod || checkMethod({
11240
- row
11241
- })) {
11242
- selectRowMaps[getRowid(this, row)] = row;
11243
- }
11244
- }, {
11245
- children: childrenField
11246
- });
11247
- } else {
11248
- /**
11249
- * 如果是树取消
11250
- * 如果方法成立,则不添加到临时集合中
11251
- */
11252
- if (!isForce && checkMethod) {
11253
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterFullData, row => {
11254
- const rowid = getRowid(this, row);
11255
- if (checkMethod({
11256
- row
11257
- }) ? 0 : selectCheckboxMaps[rowid]) {
11258
- selectRowMaps[rowid] = row;
11259
- }
11260
- }, {
11261
- children: childrenField
11262
- });
11263
- }
11264
- }
11265
- } else {
11266
- if (checked) {
11267
- /**
11268
- * 如果是行勾选
11269
- * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
11270
- * 如果不存在选中方法,则添加所有数据到临时集合中
11271
- */
11272
- if (!isForce && checkMethod) {
11273
- afterFullData.forEach(row => {
11274
- const rowid = getRowid(this, row);
11275
- if (selectCheckboxMaps[rowid] || checkMethod({
11276
- row
11277
- })) {
11278
- selectRowMaps[rowid] = row;
11279
- }
11280
- });
11281
- } else {
11282
- afterFullData.forEach(row => {
11283
- selectRowMaps[getRowid(this, row)] = row;
11284
- });
11285
- }
11286
- } else {
11287
- /**
11288
- * 如果是行取消
11289
- * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
11290
- * 如果不存在选中方法,无需处理,临时集合默认为空
11291
- */
11292
- if (!isForce && checkMethod) {
11293
- afterFullData.forEach(row => {
11294
- const rowid = getRowid(this, row);
11295
- if (checkMethod({
11296
- row
11297
- }) ? 0 : selectCheckboxMaps[rowid]) {
11298
- selectRowMaps[rowid] = row;
11299
- }
11300
- });
11301
- }
11302
- }
11303
- }
11304
- }
11305
- if (reserve) {
11306
- if (checked) {
11307
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(selectRowMaps, (row, rowid) => {
11308
- checkboxReserveRowMap[rowid] = row;
11309
- });
11310
- } else {
11311
- afterFullData.forEach(row => this.handleCheckboxReserveRow(row, false));
11312
- }
11313
- }
11314
- this.selectCheckboxMaps = checkField ? {} : selectRowMaps;
11315
- }
11316
- reactData.isAllSelected = checked;
11317
- reactData.isIndeterminate = false;
11318
- this.treeIndeterminateMaps = {};
11319
- this.treeIndeterminateRowMaps = {};
11320
- this.checkSelectionStatus();
11321
- return this.$nextTick();
11322
- },
11323
11413
  /**
11324
11414
  * 用于多选行,设置所有行的选中状态
11325
11415
  * @param {Boolean} value 是否选中
11326
11416
  */
11327
11417
  setAllCheckboxRow(value) {
11328
- return this.handleCheckedAllCheckboxRow(value, true);
11418
+ const $xeTable = this;
11419
+ return handleCheckedAllCheckboxRow($xeTable, value, true);
11329
11420
  },
11330
11421
  updateCheckboxStatus() {
11331
11422
  const $xeTable = this;
@@ -11504,57 +11595,6 @@ const Methods = {
11504
11595
  $xeTable.updateCheckboxStatus();
11505
11596
  $xeTable.updateAllCheckboxStatus();
11506
11597
  },
11507
- // 还原展开、选中等相关状态
11508
- handleReserveStatus() {
11509
- const $xeTable = this;
11510
- const {
11511
- expandColumn,
11512
- treeOpts,
11513
- treeConfig,
11514
- fullDataRowIdData,
11515
- fullAllDataRowIdData,
11516
- currentRow,
11517
- selectRadioRow,
11518
- radioReserveRow,
11519
- radioOpts,
11520
- checkboxOpts,
11521
- selectCheckboxMaps,
11522
- rowExpandedMaps,
11523
- treeExpandedMaps,
11524
- expandOpts
11525
- } = this;
11526
- // 单选框
11527
- if (selectRadioRow && !fullAllDataRowIdData[getRowid($xeTable, selectRadioRow)]) {
11528
- this.selectRadioRow = null; // 刷新单选行状态
11529
- }
11530
- // 还原保留选中状态
11531
- if (radioOpts.reserve && radioReserveRow) {
11532
- const rowid = getRowid(this, radioReserveRow);
11533
- if (fullDataRowIdData[rowid]) {
11534
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
11535
- }
11536
- }
11537
- // 复选框
11538
- this.selectCheckboxMaps = getRecoverRowMaps(this, selectCheckboxMaps); // 刷新多选行状态
11539
- // 还原保留选中状态
11540
- if (checkboxOpts.reserve) {
11541
- this.handleCheckedCheckboxRow(handleReserveRow(this, this.checkboxReserveRowMap), true, true);
11542
- }
11543
- if (currentRow && !this.fullAllDataRowIdData[getRowid($xeTable, currentRow)]) {
11544
- this.currentRow = null; // 刷新当前行状态
11545
- }
11546
- // 行展开
11547
- this.rowExpandedMaps = expandColumn ? getRecoverRowMaps(this, rowExpandedMaps) : []; // 刷新行展开状态
11548
- // 还原保留状态
11549
- if (expandColumn && expandOpts.reserve) {
11550
- this.setRowExpand(handleReserveRow(this, this.rowExpandedReserveRowMap), true);
11551
- }
11552
- // 树展开
11553
- this.treeExpandedMaps = treeConfig ? getRecoverRowMaps(this, treeExpandedMaps) : []; // 刷新树展开状态
11554
- if (treeConfig && treeOpts.reserve) {
11555
- this.setTreeExpand(handleReserveRow(this, this.treeExpandedReserveRowMap), true);
11556
- }
11557
- },
11558
11598
  /**
11559
11599
  * 获取单选框保留选中的行
11560
11600
  */
@@ -11596,14 +11636,6 @@ const Methods = {
11596
11636
  this.radioReserveRow = null;
11597
11637
  return this.$nextTick();
11598
11638
  },
11599
- handleRadioReserveRow(row) {
11600
- const {
11601
- radioOpts
11602
- } = this;
11603
- if (radioOpts.reserve) {
11604
- this.radioReserveRow = row;
11605
- }
11606
- },
11607
11639
  /**
11608
11640
  * 获取复选框保留选中的行
11609
11641
  */
@@ -11666,12 +11698,13 @@ const Methods = {
11666
11698
  }
11667
11699
  },
11668
11700
  handleCheckAllEvent(evnt, value) {
11669
- this.handleCheckedAllCheckboxRow(value);
11701
+ const $xeTable = this;
11702
+ handleCheckedAllCheckboxRow($xeTable, value);
11670
11703
  if (evnt) {
11671
- this.emitEvent('checkbox-all', {
11672
- records: this.getCheckboxRecords(),
11673
- reserves: this.getCheckboxReserveRecords(),
11674
- indeterminates: this.getCheckboxIndeterminateRecords(),
11704
+ $xeTable.dispatchEvent('checkbox-all', {
11705
+ records: $xeTable.getCheckboxRecords(),
11706
+ reserves: $xeTable.getCheckboxReserveRecords(),
11707
+ indeterminates: $xeTable.getCheckboxIndeterminateRecords(),
11675
11708
  checked: value
11676
11709
  }, evnt);
11677
11710
  }
@@ -11680,6 +11713,7 @@ const Methods = {
11680
11713
  * 多选,选中所有事件
11681
11714
  */
11682
11715
  triggerCheckAllEvent(evnt, value) {
11716
+ const $xeTable = this;
11683
11717
  const {
11684
11718
  checkboxOpts
11685
11719
  } = this;
@@ -11692,7 +11726,7 @@ const Methods = {
11692
11726
  if (evnt) {
11693
11727
  evnt.stopPropagation();
11694
11728
  }
11695
- this.handleCheckAllEvent(evnt, value);
11729
+ $xeTable.handleCheckAllEvent(evnt, value);
11696
11730
  },
11697
11731
  /**
11698
11732
  * 多选,切换所有行的选中状态
@@ -11746,6 +11780,7 @@ const Methods = {
11746
11780
  * 处理单选框默认勾选
11747
11781
  */
11748
11782
  handleDefaultRadioChecked() {
11783
+ const $xeTable = this;
11749
11784
  const {
11750
11785
  radioOpts,
11751
11786
  fullDataRowIdData
@@ -11756,7 +11791,7 @@ const Methods = {
11756
11791
  } = radioOpts;
11757
11792
  if (rowid) {
11758
11793
  if (fullDataRowIdData[rowid]) {
11759
- this.handleCheckedRadioRow(fullDataRowIdData[rowid].row, true);
11794
+ handleCheckedRadioRow($xeTable, fullDataRowIdData[rowid].row, true);
11760
11795
  }
11761
11796
  if (reserve) {
11762
11797
  const rowkey = getRowkey(this);
@@ -11770,6 +11805,7 @@ const Methods = {
11770
11805
  * 单选,行选中事件
11771
11806
  */
11772
11807
  triggerRadioRowEvent(evnt, params) {
11808
+ const $xeTable = this;
11773
11809
  const {
11774
11810
  selectRadioRow: oldValue,
11775
11811
  radioOpts
@@ -11787,7 +11823,7 @@ const Methods = {
11787
11823
  let newValue = row;
11788
11824
  let isChange = oldValue !== newValue;
11789
11825
  if (isChange) {
11790
- this.handleCheckedRadioRow(newValue);
11826
+ handleCheckedRadioRow($xeTable, newValue);
11791
11827
  } else if (!radioOpts.strict) {
11792
11828
  isChange = oldValue === newValue;
11793
11829
  if (isChange) {
@@ -11886,28 +11922,13 @@ const Methods = {
11886
11922
  }
11887
11923
  return false;
11888
11924
  },
11889
- handleCheckedRadioRow(row, isForce) {
11890
- const {
11891
- radioOpts
11892
- } = this;
11893
- const {
11894
- checkMethod
11895
- } = radioOpts;
11896
- if (row && (isForce || !checkMethod || checkMethod({
11897
- row
11898
- }))) {
11899
- this.selectRadioRow = row;
11900
- this.handleRadioReserveRow(row);
11901
- }
11902
- return this.$nextTick();
11903
- },
11904
11925
  /**
11905
11926
  * 用于单选行,设置某一行为选中状态
11906
11927
  * @param {Row} row 行对象
11907
11928
  */
11908
11929
  setRadioRow(row) {
11909
11930
  const $xeTable = this;
11910
- return $xeTable.handleCheckedRadioRow(row, true);
11931
+ return handleCheckedRadioRow($xeTable, row, true);
11911
11932
  },
11912
11933
  /**
11913
11934
  * 用于单选行,设置某一行为选中状态
@@ -11921,7 +11942,7 @@ const Methods = {
11921
11942
  } = internalData;
11922
11943
  const rowRest = fullAllDataRowIdData[rowid];
11923
11944
  if (rowRest) {
11924
- return $xeTable.handleCheckedRadioRow(rowRest.row, true);
11945
+ return handleCheckedRadioRow($xeTable, rowRest.row, true);
11925
11946
  }
11926
11947
  return $xeTable.$nextTick();
11927
11948
  },
@@ -14019,7 +14040,7 @@ const Methods = {
14019
14040
  }
14020
14041
  // 如果当前节点已选中,则展开后子节点也被选中
14021
14042
  if (!checkStrictly && this.isCheckedByCheckboxRow(row)) {
14022
- this.handleCheckedCheckboxRow(childRows, true);
14043
+ handleCheckedCheckboxRow($xeTable, childRows, true);
14023
14044
  }
14024
14045
  return this.$nextTick().then(() => {
14025
14046
  if (transform) {
@@ -19357,6 +19378,7 @@ const {
19357
19378
  columns,
19358
19379
  params: defaultOptions.params
19359
19380
  };
19381
+ const hasEmptyData = defaultOptions.mode === 'empty';
19360
19382
  return h('div', {
19361
19383
  class: 'vxe-table-export--panel'
19362
19384
  }, [topSlot ? h('div', {
@@ -19443,7 +19465,8 @@ const {
19443
19465
  class: 'vxe-table-export--panel-option-row'
19444
19466
  }, [h('vxe-checkbox', {
19445
19467
  props: {
19446
- value: isHeader,
19468
+ value: hasEmptyData || isHeader,
19469
+ disabled: hasEmptyData,
19447
19470
  title: export_panel_getI18n('vxe.export.expHeaderTitle'),
19448
19471
  content: export_panel_getI18n('vxe.export.expOptHeader')
19449
19472
  },
@@ -19466,7 +19489,8 @@ const {
19466
19489
  }
19467
19490
  }), h('vxe-checkbox', {
19468
19491
  props: {
19469
- value: defaultOptions.original,
19492
+ value: hasEmptyData ? false : defaultOptions.original,
19493
+ disabled: hasEmptyData,
19470
19494
  title: export_panel_getI18n('vxe.export.expOriginalTitle'),
19471
19495
  content: export_panel_getI18n('vxe.export.expOptOriginal')
19472
19496
  },
@@ -19494,7 +19518,7 @@ const {
19494
19518
  }), h('vxe-checkbox', {
19495
19519
  props: {
19496
19520
  value: hasMerge && supportMerge && checkedAll ? defaultOptions.isMerge : false,
19497
- disabled: !hasMerge || !supportMerge || !checkedAll,
19521
+ disabled: hasEmptyData || !hasMerge || !supportMerge || !checkedAll,
19498
19522
  title: export_panel_getI18n('vxe.export.expMergeTitle'),
19499
19523
  content: export_panel_getI18n('vxe.export.expOptMerge')
19500
19524
  },
@@ -19518,7 +19542,7 @@ const {
19518
19542
  }), h('vxe-checkbox', {
19519
19543
  props: {
19520
19544
  value: hasTree ? defaultOptions.isAllExpand : false,
19521
- disabled: !hasTree,
19545
+ disabled: hasEmptyData || !hasTree,
19522
19546
  title: export_panel_getI18n('vxe.export.expAllExpandTitle'),
19523
19547
  content: export_panel_getI18n('vxe.export.expOptAllExpand')
19524
19548
  },
@@ -22997,7 +23021,7 @@ function handleExportAndPrint($xeTable, options, isPrint) {
22997
23021
  isMerge: hasMerge,
22998
23022
  useStyle: true,
22999
23023
  current: 'current',
23000
- modes: ['current', 'selected'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : [])
23024
+ modes: ['current', 'selected', 'empty'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : [])
23001
23025
  }, options);
23002
23026
  const types = defOpts.types || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps);
23003
23027
  const modes = defOpts.modes || [];
@@ -23189,7 +23213,7 @@ const convertToRows = originColumns => {
23189
23213
  isMerge: hasMerge,
23190
23214
  useStyle: true,
23191
23215
  current: 'current',
23192
- modes: ['current', 'selected'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []),
23216
+ modes: ['current', 'selected', 'empty'].concat(proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []),
23193
23217
  download: true,
23194
23218
  type: 'csv'
23195
23219
  // filename: '',
@@ -30742,7 +30766,7 @@ const Toolbar = VxeToolbar;
30742
30766
  treeNotImp: '树表格不支持导入',
30743
30767
  treeCrossDrag: '只能拖拽第一层级',
30744
30768
  treeDragChild: '父级不能拖拽到自己的子级中',
30745
- reqPlugin: '可选扩展插件 "{1}" https://vxeui.com/other{0}/#/{1}/install'
30769
+ reqPlugin: '扩展插件未安装 "{1}" https://vxeui.com/other{0}/#/{1}/install'
30746
30770
  },
30747
30771
  table: {
30748
30772
  emptyText: '暂无数据',
@@ -30862,6 +30886,7 @@ const Toolbar = VxeToolbar;
30862
30886
  pdf: 'PDF (*.pdf)'
30863
30887
  },
30864
30888
  modes: {
30889
+ empty: '空数据',
30865
30890
  current: '当前数据(当前页的数据)',
30866
30891
  selected: '选中数据(当前页选中的数据)',
30867
30892
  all: '全量数据(包括所有分页的数据)'