vxe-table 4.0.30 → 4.1.1

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 (127) hide show
  1. package/README.md +1 -0
  2. package/README.zh-TW.md +1 -0
  3. package/es/button/style.css +2 -2
  4. package/es/checkbox/style.css +1 -1
  5. package/es/edit/src/hook.js +2 -2
  6. package/es/export/src/hook.js +24 -0
  7. package/es/export/src/util.js +20 -8
  8. package/es/export/style.css +1 -1
  9. package/es/filter/src/hook.js +2 -2
  10. package/es/filter/style.css +2 -2
  11. package/es/footer/src/footer.js +4 -4
  12. package/es/form/src/form.js +13 -6
  13. package/es/form/src/render.js +4 -4
  14. package/es/grid/src/grid.js +48 -1
  15. package/es/header/src/header.js +7 -5
  16. package/es/header/style.css +3 -10
  17. package/es/input/style.css +4 -4
  18. package/es/menu/style.css +1 -1
  19. package/es/modal/style.css +1 -1
  20. package/es/pager/style.css +2 -2
  21. package/es/radio/style.css +1 -1
  22. package/es/select/src/select.js +5 -5
  23. package/es/select/style.css +1 -1
  24. package/es/style.css +1 -1
  25. package/es/style.min.css +1 -1
  26. package/es/table/src/body.js +18 -14
  27. package/es/table/src/emits.js +1 -0
  28. package/es/table/src/props.js +4 -1
  29. package/es/table/src/table.js +219 -89
  30. package/es/table/style.css +15 -12
  31. package/es/toolbar/style.css +1 -1
  32. package/es/v-x-e-table/src/conf.js +2 -1
  33. package/es/v-x-e-table/src/renderer.js +4 -4
  34. package/es/validator/src/hook.js +12 -5
  35. package/helper/vetur/attributes.json +16 -204
  36. package/helper/vetur/tags.json +3 -65
  37. package/lib/button/style/style.css +2 -2
  38. package/lib/button/style/style.min.css +1 -1
  39. package/lib/checkbox/style/style.css +1 -1
  40. package/lib/checkbox/style/style.min.css +1 -1
  41. package/lib/edit/src/hook.js +2 -2
  42. package/lib/edit/src/hook.min.js +1 -1
  43. package/lib/export/src/hook.js +28 -0
  44. package/lib/export/src/hook.min.js +1 -1
  45. package/lib/export/src/util.js +21 -7
  46. package/lib/export/src/util.min.js +1 -1
  47. package/lib/export/style/style.css +1 -1
  48. package/lib/export/style/style.min.css +1 -1
  49. package/lib/filter/src/hook.js +8 -2
  50. package/lib/filter/src/hook.min.js +1 -1
  51. package/lib/filter/style/style.css +2 -2
  52. package/lib/filter/style/style.min.css +1 -1
  53. package/lib/footer/src/footer.js +4 -4
  54. package/lib/footer/src/footer.min.js +1 -1
  55. package/lib/form/src/form.js +23 -6
  56. package/lib/form/src/form.min.js +1 -1
  57. package/lib/form/src/render.js +4 -4
  58. package/lib/form/src/render.min.js +1 -1
  59. package/lib/grid/src/grid.js +56 -1
  60. package/lib/grid/src/grid.min.js +1 -1
  61. package/lib/header/src/header.js +7 -5
  62. package/lib/header/src/header.min.js +1 -1
  63. package/lib/header/style/style.css +3 -10
  64. package/lib/header/style/style.min.css +1 -1
  65. package/lib/index.umd.js +561 -186
  66. package/lib/index.umd.min.js +1 -1
  67. package/lib/input/style/style.css +4 -4
  68. package/lib/input/style/style.min.css +1 -1
  69. package/lib/menu/style/style.css +1 -1
  70. package/lib/menu/style/style.min.css +1 -1
  71. package/lib/modal/style/style.css +1 -1
  72. package/lib/modal/style/style.min.css +1 -1
  73. package/lib/pager/style/style.css +2 -2
  74. package/lib/pager/style/style.min.css +1 -1
  75. package/lib/radio/style/style.css +1 -1
  76. package/lib/radio/style/style.min.css +1 -1
  77. package/lib/select/src/select.js +5 -5
  78. package/lib/select/style/style.css +1 -1
  79. package/lib/select/style/style.min.css +1 -1
  80. package/lib/style.css +1 -1
  81. package/lib/style.min.css +1 -1
  82. package/lib/table/src/body.js +18 -14
  83. package/lib/table/src/body.min.js +1 -1
  84. package/lib/table/src/emits.js +1 -1
  85. package/lib/table/src/emits.min.js +1 -1
  86. package/lib/table/src/props.js +4 -1
  87. package/lib/table/src/props.min.js +1 -1
  88. package/lib/table/src/table.js +288 -120
  89. package/lib/table/src/table.min.js +1 -1
  90. package/lib/table/style/style.css +15 -12
  91. package/lib/table/style/style.min.css +1 -1
  92. package/lib/toolbar/style/style.css +1 -1
  93. package/lib/toolbar/style/style.min.css +1 -1
  94. package/lib/v-x-e-table/src/conf.js +2 -1
  95. package/lib/v-x-e-table/src/conf.min.js +1 -1
  96. package/lib/v-x-e-table/src/renderer.js +4 -4
  97. package/lib/v-x-e-table/src/renderer.min.js +1 -1
  98. package/lib/validator/src/hook.js +12 -5
  99. package/lib/validator/src/hook.min.js +1 -1
  100. package/package.json +4 -4
  101. package/packages/edit/src/hook.ts +2 -2
  102. package/packages/export/src/hook.ts +24 -0
  103. package/packages/export/src/util.ts +17 -5
  104. package/packages/filter/src/hook.ts +2 -2
  105. package/packages/footer/src/footer.ts +4 -4
  106. package/packages/form/src/form.ts +10 -6
  107. package/packages/form/src/render.ts +4 -4
  108. package/packages/grid/src/grid.ts +48 -1
  109. package/packages/header/src/header.ts +7 -5
  110. package/packages/select/src/select.ts +5 -5
  111. package/packages/table/src/body.ts +18 -14
  112. package/packages/table/src/emits.ts +1 -0
  113. package/packages/table/src/props.ts +4 -1
  114. package/packages/table/src/table.ts +222 -88
  115. package/packages/v-x-e-table/src/conf.ts +2 -1
  116. package/packages/v-x-e-table/src/renderer.ts +4 -4
  117. package/packages/validator/src/hook.ts +9 -5
  118. package/styles/header.scss +9 -12
  119. package/styles/table.scss +9 -3
  120. package/styles/variable.scss +2 -2
  121. package/types/column.d.ts +5 -1
  122. package/types/form-item.d.ts +5 -1
  123. package/types/form.d.ts +5 -1
  124. package/types/grid.d.ts +4 -0
  125. package/types/modal.d.ts +4 -5
  126. package/types/table.d.ts +53 -11
  127. package/types/validator.d.ts +5 -1
package/README.md CHANGED
@@ -24,6 +24,7 @@
24
24
  * [x] v2.0 基于 vue2.6+,支持所有主流的浏览器,同时兼具功能与性能
25
25
  * [x] v3.0 基于 vue2.6+,支持现代浏览器并保留兼容 IE11,提升渲染性能
26
26
  * [x] v4.0 基于 vue3.0+,只支持现代浏览器,不支持 IE
27
+ * [] 下一阶段:sticky 表格、虚拟树、css 变量、虚拟滚动与动态行高、数据可视化
27
28
 
28
29
  ## QQ 交流群
29
30
 
package/README.zh-TW.md CHANGED
@@ -24,6 +24,7 @@
24
24
  * [x] v2.0 基於 vue2.6+,支持所有主流的瀏覽器,同時兼具功能與效能
25
25
  * [x] v3.0 基於 vue2.6+,支持現代瀏覽器並保留相容IE11,提升渲染效能
26
26
  * [x] v4.0 基于 vue3.0+,只支持現代瀏覽器,不支持IE
27
+ * [] 下一阶段:sticky 表格、虚拟树、css 变量、虚拟滚动与动态行高、数据可视化
27
28
 
28
29
  ## QQ 交流群
29
30
 
@@ -61,9 +61,9 @@
61
61
  background-color: rgba(255, 255, 255, 0.35);
62
62
  pointer-events: none; }
63
63
  .vxe-button.is--disabled {
64
- color: #9e7d7d; }
64
+ color: #BFBFBF; }
65
65
  .vxe-button.is--disabled .vxe-button--icon.vxe-icon--zoomin {
66
- border-color: #9e7d7d; }
66
+ border-color: #BFBFBF; }
67
67
  .vxe-button.is--disabled:not(.is--loading) {
68
68
  cursor: no-drop; }
69
69
  .vxe-button.type--text {
@@ -255,7 +255,7 @@
255
255
  .vxe-checkbox.is--disabled > input + .vxe-checkbox--icon:before {
256
256
  border-color: #c0c4cc; }
257
257
  .vxe-checkbox.is--disabled > input + .vxe-checkbox--icon + .vxe-checkbox--label {
258
- color: #9e7d7d; }
258
+ color: #BFBFBF; }
259
259
  .vxe-checkbox.is--disabled > input:checked + .vxe-checkbox--icon {
260
260
  border-color: #dcdfe6;
261
261
  background-color: #f3f3f3; }
@@ -141,7 +141,7 @@ var editHook = {
141
141
  (_a = editStore.insertList).unshift.apply(_a, newRecords);
142
142
  reactData.scrollYLoad = !treeConfig && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
143
143
  $xetable.updateFooter();
144
- $xetable.updateCache();
144
+ $xetable.cacheRowMap();
145
145
  $xetable.handleTableData();
146
146
  $xetable.updateAfterDataIndex();
147
147
  $xetable.checkSelectionStatus();
@@ -237,7 +237,7 @@ var editHook = {
237
237
  });
238
238
  reactData.scrollYLoad = !treeConfig && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
239
239
  $xetable.updateFooter();
240
- $xetable.updateCache();
240
+ $xetable.cacheRowMap();
241
241
  $xetable.handleTableData();
242
242
  $xetable.updateAfterDataIndex();
243
243
  $xetable.checkSelectionStatus();
@@ -688,6 +688,12 @@ var tableExportHook = {
688
688
  }
689
689
  saveLocalFile({ filename: filename, type: type, content: content }).then(function () {
690
690
  if (opts.message !== false) {
691
+ // 检测弹窗模块
692
+ if (process.env.NODE_ENV === 'development') {
693
+ if (!VXETable.modal) {
694
+ errLog('vxe.error.reqModule', ['Modal']);
695
+ }
696
+ }
691
697
  VXETable.modal.message({ content: GlobalConfig.i18n('vxe.table.expSuccess'), status: 'success' });
692
698
  }
693
699
  });
@@ -754,6 +760,12 @@ var tableExportHook = {
754
760
  loadRest = $xetable.reloadData(data);
755
761
  }
756
762
  if (opts.message !== false) {
763
+ // 检测弹窗模块
764
+ if (process.env.NODE_ENV === 'development') {
765
+ if (!VXETable.modal) {
766
+ errLog('vxe.error.reqModule', ['Modal']);
767
+ }
768
+ }
757
769
  VXETable.modal.message({ content: GlobalConfig.i18n('vxe.table.impSuccess', [rows.length]), status: 'success' });
758
770
  }
759
771
  return loadRest.then(function () {
@@ -764,6 +776,12 @@ var tableExportHook = {
764
776
  });
765
777
  }
766
778
  else if (opts.message !== false) {
779
+ // 检测弹窗模块
780
+ if (process.env.NODE_ENV === 'development') {
781
+ if (!VXETable.modal) {
782
+ errLog('vxe.error.reqModule', ['Modal']);
783
+ }
784
+ }
767
785
  VXETable.modal.message({ content: GlobalConfig.i18n('vxe.error.impFields'), status: 'error' });
768
786
  if (_importReject) {
769
787
  _importReject({ status: false });
@@ -776,6 +794,12 @@ var tableExportHook = {
776
794
  // 检查类型,如果为自定义导出,则不需要校验类型
777
795
  if (!importMethod && !XEUtils.includes(VXETable.config.importTypes, type)) {
778
796
  if (opts.message !== false) {
797
+ // 检测弹窗模块
798
+ if (process.env.NODE_ENV === 'development') {
799
+ if (!VXETable.modal) {
800
+ errLog('vxe.error.reqModule', ['Modal']);
801
+ }
802
+ }
779
803
  VXETable.modal.message({ content: GlobalConfig.i18n('vxe.error.notType', [type]), status: 'error' });
780
804
  }
781
805
  var params = { status: false };
@@ -2,7 +2,7 @@ import XEUtils from 'xe-utils';
2
2
  import GlobalConfig from '../../v-x-e-table/src/conf';
3
3
  import { VXETable } from '../../v-x-e-table';
4
4
  import { browse } from '../../tools/dom';
5
- import { getLog, parseFile } from '../../tools/utils';
5
+ import { getLog, parseFile, errLog } from '../../tools/utils';
6
6
  // 导入
7
7
  var fileForm;
8
8
  var fileInput;
@@ -74,6 +74,12 @@ export var readLocalFile = function (options) {
74
74
  }
75
75
  else {
76
76
  if (opts.message !== false) {
77
+ // 检测弹窗模块
78
+ if (process.env.NODE_ENV === 'development') {
79
+ if (!VXETable.modal) {
80
+ errLog('vxe.error.reqModule', ['Modal']);
81
+ }
82
+ }
77
83
  VXETable.modal.message({ content: GlobalConfig.i18n('vxe.error.notType', [errType]), status: 'error' });
78
84
  }
79
85
  var params = { status: false, files: files, file: file };
@@ -146,13 +152,19 @@ export var saveLocalFile = function (options) {
146
152
  navigator.msSaveBlob(blob, name);
147
153
  }
148
154
  else {
149
- var linkElem = document.createElement('a');
150
- linkElem.target = '_blank';
151
- linkElem.download = name;
152
- linkElem.href = URL.createObjectURL(blob);
153
- document.body.appendChild(linkElem);
154
- linkElem.click();
155
- document.body.removeChild(linkElem);
155
+ var url_1 = URL.createObjectURL(blob);
156
+ var linkElem_1 = document.createElement('a');
157
+ linkElem_1.target = '_blank';
158
+ linkElem_1.download = name;
159
+ linkElem_1.href = url_1;
160
+ document.body.appendChild(linkElem_1);
161
+ linkElem_1.click();
162
+ requestAnimationFrame(function () {
163
+ if (linkElem_1.parentNode) {
164
+ linkElem_1.parentNode.removeChild(linkElem_1);
165
+ }
166
+ URL.revokeObjectURL(url_1);
167
+ });
156
168
  }
157
169
  return Promise.resolve();
158
170
  }
@@ -94,7 +94,7 @@
94
94
 
95
95
  .is--disabled.vxe-export--panel-column-option {
96
96
  cursor: not-allowed;
97
- color: #9e7d7d; }
97
+ color: #BFBFBF; }
98
98
  .is--disabled.vxe-export--panel-column-option .vxe-checkbox--icon:before {
99
99
  border-color: #dcdfe6;
100
100
  background-color: #f3f3f3; }
@@ -91,7 +91,7 @@ var tableFilterHook = {
91
91
  // 判断面板不能大于表格高度
92
92
  var maxHeight = null;
93
93
  if (filterHeight >= bodyElem.clientHeight) {
94
- maxHeight = bodyElem.clientHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0);
94
+ maxHeight = Math.max(40, bodyElem.clientHeight - (filterFootElem ? filterFootElem.offsetHeight : 0) - (filterHeadElem ? filterHeadElem.offsetHeight : 0));
95
95
  }
96
96
  if (column.fixed === 'left') {
97
97
  left = targetElem_1.offsetLeft + targetElem_1.offsetParent.offsetLeft - centerWidth;
@@ -120,6 +120,7 @@ var tableFilterHook = {
120
120
  filterStore.maxHeight = maxHeight;
121
121
  });
122
122
  }
123
+ $xetable.dispatchEvent('filter-visible', { column: column, property: column.property, filterList: $xetable.getCheckedFilters(), visible: filterStore.visible }, evnt);
123
124
  },
124
125
  handleClearFilter: function (column) {
125
126
  if (column) {
@@ -158,7 +159,6 @@ var tableFilterHook = {
158
159
  datas.push(item.data);
159
160
  }
160
161
  });
161
- filterStore.visible = false;
162
162
  var filterList = $xetable.getCheckedFilters();
163
163
  // 如果是服务端筛选,则跳过本地筛选处理
164
164
  if (!filterOpts.remote) {
@@ -95,7 +95,7 @@
95
95
 
96
96
  .is--disabled.vxe-table--filter-option {
97
97
  cursor: not-allowed;
98
- color: #9e7d7d; }
98
+ color: #BFBFBF; }
99
99
  .is--disabled.vxe-table--filter-option .vxe-checkbox--icon:before {
100
100
  border-color: #dcdfe6;
101
101
  background-color: #f3f3f3; }
@@ -183,7 +183,7 @@
183
183
  .vxe-table--filter-wrapper .vxe-table--filter-footer button:hover {
184
184
  color: #409eff; }
185
185
  .vxe-table--filter-wrapper .vxe-table--filter-footer button.is--disabled {
186
- color: #9e7d7d;
186
+ color: #BFBFBF;
187
187
  cursor: not-allowed; }
188
188
 
189
189
  .vxe-table--filter-option .vxe-checkbox--icon {
@@ -92,11 +92,11 @@ export default defineComponent({
92
92
  var fixedType = props.fixedType, fixedColumn = props.fixedColumn, tableColumn = props.tableColumn, footerTableData = props.footerTableData;
93
93
  var footerRowClassName = tableProps.footerRowClassName, footerCellClassName = tableProps.footerCellClassName, footerRowStyle = tableProps.footerRowStyle, footerCellStyle = tableProps.footerCellStyle, allFooterAlign = tableProps.footerAlign, footerSpanMethod = tableProps.footerSpanMethod, allAlign = tableProps.align, columnKey = tableProps.columnKey, allColumnFooterOverflow = tableProps.showFooterOverflow;
94
94
  var visibleColumn = tableInternalData.visibleColumn;
95
- var scrollXLoad = tableReactData.scrollXLoad, overflowX = tableReactData.overflowX, scrollbarWidth = tableReactData.scrollbarWidth, currentColumn = tableReactData.currentColumn, mergeFooterList = tableReactData.mergeFooterList;
95
+ var scrollYLoad = tableReactData.scrollYLoad, overflowX = tableReactData.overflowX, scrollbarWidth = tableReactData.scrollbarWidth, currentColumn = tableReactData.currentColumn, mergeFooterList = tableReactData.mergeFooterList;
96
96
  var tooltipOpts = computeTooltipOpts.value;
97
97
  // 如果是使用优化模式
98
98
  if (fixedType) {
99
- if (scrollXLoad || allColumnFooterOverflow) {
99
+ if (scrollYLoad || allColumnFooterOverflow) {
100
100
  if (!mergeFooterList.length || !footerSpanMethod) {
101
101
  tableColumn = fixedColumn;
102
102
  }
@@ -169,8 +169,8 @@ export default defineComponent({
169
169
  var _columnIndex = $xetable.getVTColumnIndex(column);
170
170
  var itemIndex = _columnIndex;
171
171
  var params = { $table: $xetable, _rowIndex: _rowIndex, $rowIndex: $rowIndex, column: column, columnIndex: columnIndex, $columnIndex: $columnIndex, _columnIndex: _columnIndex, itemIndex: itemIndex, items: list, fixed: fixedType, type: renderType, data: footerTableData };
172
- // 虚拟滚动不支持动态高度
173
- if (scrollXLoad && !hasEllipsis) {
172
+ // 纵向虚拟滚动不支持动态行高
173
+ if (scrollYLoad && !hasEllipsis) {
174
174
  showEllipsis = hasEllipsis = true;
175
175
  }
176
176
  if (showTitle || showTooltip || showAllTip) {
@@ -32,9 +32,16 @@ var Rule = /** @class */ (function () {
32
32
  maxWidth: rule.maxWidth
33
33
  });
34
34
  }
35
+ Object.defineProperty(Rule.prototype, "content", {
36
+ get: function () {
37
+ return getFuncText(this.$options.content || this.$options.message);
38
+ },
39
+ enumerable: false,
40
+ configurable: true
41
+ });
35
42
  Object.defineProperty(Rule.prototype, "message", {
36
43
  get: function () {
37
- return getFuncText(this.$options.message);
44
+ return this.content;
38
45
  },
39
46
  enumerable: false,
40
47
  configurable: true
@@ -76,10 +83,10 @@ export default defineComponent({
76
83
  loading: Boolean,
77
84
  data: Object,
78
85
  size: { type: String, default: function () { return GlobalConfig.form.size || GlobalConfig.size; } },
79
- span: [String, Number],
86
+ span: { type: [String, Number], default: function () { return GlobalConfig.form.span; } },
80
87
  align: { type: String, default: function () { return GlobalConfig.form.align; } },
81
88
  titleAlign: { type: String, default: function () { return GlobalConfig.form.titleAlign; } },
82
- titleWidth: [String, Number],
89
+ titleWidth: { type: [String, Number], default: function () { return GlobalConfig.form.titleWidth; } },
83
90
  titleColon: { type: Boolean, default: function () { return GlobalConfig.form.titleColon; } },
84
91
  titleAsterisk: { type: Boolean, default: function () { return GlobalConfig.form.titleAsterisk; } },
85
92
  titleOverflow: { type: [Boolean, String], default: null },
@@ -311,12 +318,12 @@ export default defineComponent({
311
318
  });
312
319
  if (customValid) {
313
320
  if (XEUtils.isError(customValid)) {
314
- errorRules.push(new Rule({ type: 'custom', trigger: trigger, message: customValid.message, rule: new Rule(rule) }));
321
+ errorRules.push(new Rule({ type: 'custom', trigger: trigger, content: customValid.message, rule: new Rule(rule) }));
315
322
  }
316
323
  else if (customValid.catch) {
317
324
  // 如果为异步校验(注:异步校验是并发无序的)
318
325
  syncVailds.push(customValid.catch(function (e) {
319
- errorRules.push(new Rule({ type: 'custom', trigger: trigger, message: e ? e.message : rule.message, rule: new Rule(rule) }));
326
+ errorRules.push(new Rule({ type: 'custom', trigger: trigger, content: e ? e.message : (rule.content || rule.message), rule: new Rule(rule) }));
320
327
  }));
321
328
  }
322
329
  }
@@ -558,7 +565,7 @@ export default defineComponent({
558
565
  style: errRule.maxWidth ? {
559
566
  width: errRule.maxWidth + "px"
560
567
  } : null
561
- }, errRule.message));
568
+ }, errRule.content));
562
569
  }
563
570
  var ons = showTooltip ? {
564
571
  onMouseenter: function (evnt) {
@@ -29,9 +29,9 @@ export function renderTitle($xeform, item) {
29
29
  var contVNs = [];
30
30
  var titVNs = [];
31
31
  if (titlePrefix) {
32
- titVNs.push(titlePrefix.message
32
+ titVNs.push((titlePrefix.content || titlePrefix.message)
33
33
  ? h(resolveComponent('vxe-tooltip'), {
34
- content: getFuncText(titlePrefix.message),
34
+ content: getFuncText(titlePrefix.content || titlePrefix.message),
35
35
  enterable: titlePrefix.enterable,
36
36
  theme: titlePrefix.theme
37
37
  }, {
@@ -47,9 +47,9 @@ export function renderTitle($xeform, item) {
47
47
  }, titVNs));
48
48
  var fixVNs = [];
49
49
  if (titleSuffix) {
50
- fixVNs.push(titleSuffix.message
50
+ fixVNs.push((titleSuffix.content || titleSuffix.message)
51
51
  ? h(resolveComponent('vxe-tooltip'), {
52
- content: getFuncText(titleSuffix.message),
52
+ content: getFuncText(titleSuffix.content || titleSuffix.message),
53
53
  enterable: titleSuffix.enterable,
54
54
  theme: titleSuffix.theme
55
55
  }, {
@@ -25,7 +25,7 @@ import tableComponentEmits from '../../table/src/emits';
25
25
  import { useSize } from '../../hooks/size';
26
26
  import { GlobalEvent, hasEventKey, EVENT_KEYS } from '../../tools/event';
27
27
  var tableComponentPropKeys = Object.keys(tableComponentProps);
28
- var tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'createData', 'createRow', 'revertData', 'clearData', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getData', 'getCheckboxRecords', 'getRowById', 'getRowid', 'getTableData', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'isCheckedByCheckboxRow', 'isIndeterminateByCheckboxRow', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'setRadioRow', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'sort', 'clearSort', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadExpandContent', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'focus', 'blur', 'connect'];
28
+ var tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'createData', 'createRow', 'revertData', 'clearData', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getData', 'getCheckboxRecords', 'getRowById', 'getRowid', 'getTableData', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'isCheckedByCheckboxRow', 'isIndeterminateByCheckboxRow', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'setRadioRow', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'sort', 'clearSort', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'lazyExpandContent', 'reloadExpandContent', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'lazyTreeChildren', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'focus', 'blur', 'connect'];
29
29
  var gridComponentEmits = __spreadArray(__spreadArray([], tableComponentEmits), [
30
30
  'page-change',
31
31
  'form-submit',
@@ -244,6 +244,12 @@ export default defineComponent({
244
244
  }
245
245
  else {
246
246
  if (isMsg) {
247
+ // 检测弹窗模块
248
+ if (process.env.NODE_ENV === 'development') {
249
+ if (!VXETable.modal) {
250
+ errLog('vxe.error.reqModule', ['Modal']);
251
+ }
252
+ }
247
253
  VXETable.modal.message({ id: code, content: GlobalConfig.i18n('vxe.grid.selectOneRecord'), status: 'warning' });
248
254
  }
249
255
  }
@@ -269,6 +275,12 @@ export default defineComponent({
269
275
  });
270
276
  }
271
277
  else {
278
+ // 检测弹窗模块
279
+ if (process.env.NODE_ENV === 'development') {
280
+ if (!VXETable.modal) {
281
+ errLog('vxe.error.reqModule', ['Modal']);
282
+ }
283
+ }
272
284
  VXETable.modal.message({ id: "msg_" + code, content: GlobalConfig.i18n('vxe.grid.selectOneRecord'), status: 'warning' });
273
285
  }
274
286
  }
@@ -761,6 +773,12 @@ export default defineComponent({
761
773
  reactData.tableLoading = false;
762
774
  reactData.pendingRecords = reactData.pendingRecords.filter(function (row) { return $xetable.findRowIndexOf(removeRecords_1, row) === -1; });
763
775
  if (isMsg) {
776
+ // 检测弹窗模块
777
+ if (process.env.NODE_ENV === 'development') {
778
+ if (!VXETable.modal) {
779
+ errLog('vxe.error.reqModule', ['Modal']);
780
+ }
781
+ }
764
782
  VXETable.modal.message({ content: getRespMsg(rest, 'vxe.grid.delSuccess'), status: 'success' });
765
783
  }
766
784
  if (afterDelete) {
@@ -773,6 +791,11 @@ export default defineComponent({
773
791
  .catch(function (rest) {
774
792
  reactData.tableLoading = false;
775
793
  if (isMsg) {
794
+ if (process.env.NODE_ENV === 'development') {
795
+ if (!VXETable.modal.message) {
796
+ errLog('vxe.error.reqModule', ['Modal']);
797
+ }
798
+ }
776
799
  VXETable.modal.message({ id: code, content: getRespMsg(rest, 'vxe.grid.operError'), status: 'error' });
777
800
  }
778
801
  });
@@ -780,6 +803,12 @@ export default defineComponent({
780
803
  }
781
804
  else {
782
805
  if (isMsg) {
806
+ // 检测弹窗模块
807
+ if (process.env.NODE_ENV === 'development') {
808
+ if (!VXETable.modal) {
809
+ errLog('vxe.error.reqModule', ['Modal']);
810
+ }
811
+ }
783
812
  VXETable.modal.message({ id: code, content: GlobalConfig.i18n('vxe.grid.selectOneRecord'), status: 'warning' });
784
813
  }
785
814
  }
@@ -814,6 +843,12 @@ export default defineComponent({
814
843
  reactData.tableLoading = false;
815
844
  reactData.pendingRecords = [];
816
845
  if (isMsg) {
846
+ // 检测弹窗模块
847
+ if (process.env.NODE_ENV === 'development') {
848
+ if (!VXETable.modal) {
849
+ errLog('vxe.error.reqModule', ['Modal']);
850
+ }
851
+ }
817
852
  VXETable.modal.message({ content: getRespMsg(rest, 'vxe.grid.saveSuccess'), status: 'success' });
818
853
  }
819
854
  if (afterSave) {
@@ -826,12 +861,24 @@ export default defineComponent({
826
861
  .catch(function (rest) {
827
862
  reactData.tableLoading = false;
828
863
  if (isMsg) {
864
+ // 检测弹窗模块
865
+ if (process.env.NODE_ENV === 'development') {
866
+ if (!VXETable.modal) {
867
+ errLog('vxe.error.reqModule', ['Modal']);
868
+ }
869
+ }
829
870
  VXETable.modal.message({ id: code, content: getRespMsg(rest, 'vxe.grid.operError'), status: 'error' });
830
871
  }
831
872
  });
832
873
  }
833
874
  else {
834
875
  if (isMsg) {
876
+ // 检测弹窗模块
877
+ if (process.env.NODE_ENV === 'development') {
878
+ if (!VXETable.modal) {
879
+ errLog('vxe.error.reqModule', ['Modal']);
880
+ }
881
+ }
835
882
  VXETable.modal.message({ id: code, content: GlobalConfig.i18n('vxe.grid.dataUnchanged'), status: 'info' });
836
883
  }
837
884
  }
@@ -28,6 +28,7 @@ export default defineComponent({
28
28
  var $xetable = inject('$xetable', {});
29
29
  var xID = $xetable.xID, tableProps = $xetable.props, tableReactData = $xetable.reactData, tableInternalData = $xetable.internalData;
30
30
  var _a = $xetable.getRefMaps(), tableRefElem = _a.refElem, refTableBody = _a.refTableBody, refLeftContainer = _a.refLeftContainer, refRightContainer = _a.refRightContainer, refCellResizeBar = _a.refCellResizeBar;
31
+ var computeColumnOpts = $xetable.getComputeMaps().computeColumnOpts;
31
32
  var headerColumn = ref([]);
32
33
  var refElem = ref();
33
34
  var refHeaderTable = ref();
@@ -145,12 +146,13 @@ export default defineComponent({
145
146
  var renderVN = function () {
146
147
  var fixedType = props.fixedType, fixedColumn = props.fixedColumn, tableColumn = props.tableColumn;
147
148
  var resizable = tableProps.resizable, border = tableProps.border, columnKey = tableProps.columnKey, headerRowClassName = tableProps.headerRowClassName, headerCellClassName = tableProps.headerCellClassName, headerRowStyle = tableProps.headerRowStyle, headerCellStyle = tableProps.headerCellStyle, allColumnHeaderOverflow = tableProps.showHeaderOverflow, allHeaderAlign = tableProps.headerAlign, allAlign = tableProps.align, mouseConfig = tableProps.mouseConfig;
148
- var isGroup = tableReactData.isGroup, currentColumn = tableReactData.currentColumn, scrollXLoad = tableReactData.scrollXLoad, overflowX = tableReactData.overflowX, scrollbarWidth = tableReactData.scrollbarWidth;
149
+ var isGroup = tableReactData.isGroup, currentColumn = tableReactData.currentColumn, scrollYLoad = tableReactData.scrollYLoad, overflowX = tableReactData.overflowX, scrollbarWidth = tableReactData.scrollbarWidth;
150
+ var columnOpts = computeColumnOpts.value;
149
151
  var headerGroups = headerColumn.value;
150
152
  // 如果是使用优化模式
151
153
  if (!isGroup) {
152
154
  if (fixedType) {
153
- if (scrollXLoad || allColumnHeaderOverflow) {
155
+ if (scrollYLoad || allColumnHeaderOverflow) {
154
156
  tableColumn = fixedColumn;
155
157
  }
156
158
  }
@@ -216,8 +218,8 @@ export default defineComponent({
216
218
  onClick: function (evnt) { return $xetable.triggerHeaderCellClickEvent(evnt, params); },
217
219
  onDblclick: function (evnt) { return $xetable.triggerHeaderCellDblclickEvent(evnt, params); }
218
220
  };
219
- // 虚拟滚动不支持动态高度
220
- if (scrollXLoad && !hasEllipsis) {
221
+ // 纵向虚拟滚动不支持动态行高
222
+ if (scrollYLoad && !hasEllipsis) {
221
223
  showEllipsis = hasEllipsis = true;
222
224
  }
223
225
  // 按下事件处理
@@ -248,7 +250,7 @@ export default defineComponent({
248
250
  /**
249
251
  * 列宽拖动
250
252
  */
251
- !fixedHiddenColumn && !isColGroup && (XEUtils.isBoolean(column.resizable) ? column.resizable : resizable) ? h('div', {
253
+ !fixedHiddenColumn && !isColGroup && (XEUtils.isBoolean(column.resizable) ? column.resizable : (columnOpts.resizable || resizable)) ? h('div', {
252
254
  class: ['vxe-resizable', {
253
255
  'is--line': !border || border === 'none'
254
256
  }],
@@ -36,7 +36,7 @@
36
36
  border-bottom: 1px solid #e8eaec; }
37
37
  .vxe-table .vxe-cell--sort {
38
38
  width: 1.5em;
39
- height: 1.5em;
39
+ height: 1.35em;
40
40
  vertical-align: middle;
41
41
  text-align: center;
42
42
  display: inline-block;
@@ -56,9 +56,9 @@
56
56
  .vxe-table .vxe-sort--desc-btn.sort--active {
57
57
  color: #409eff; }
58
58
  .vxe-table .vxe-sort--asc-btn {
59
- top: -0.04em; }
59
+ top: -0.15em; }
60
60
  .vxe-table .vxe-sort--desc-btn {
61
- bottom: -0.04em; }
61
+ bottom: -0.15em; }
62
62
 
63
63
  .vxe-header--column {
64
64
  position: relative;
@@ -91,11 +91,6 @@
91
91
  position: absolute;
92
92
  left: 0;
93
93
  top: 0.2em; }
94
- .vxe-header--column .vxe-cell--required-icon,
95
- .vxe-header--column .vxe-cell--edit-icon,
96
- .vxe-header--column .vxe-cell-help-icon,
97
- .vxe-header--column .vxe-cell--title {
98
- vertical-align: middle; }
99
94
  .vxe-header--column .vxe-cell--required-icon {
100
95
  margin-right: 0.1em; }
101
96
  .vxe-header--column .vxe-cell--edit-icon,
@@ -103,8 +98,6 @@
103
98
  margin-right: 0.2em; }
104
99
  .vxe-header--column .vxe-cell-help-icon {
105
100
  cursor: help; }
106
- .vxe-header--column .vxe-cell--title {
107
- line-height: 1.5; }
108
101
  .vxe-header--column .vxe-resizable {
109
102
  position: absolute;
110
103
  right: -7px;
@@ -54,7 +54,7 @@
54
54
  appearance: none; }
55
55
  .vxe-input--inner[disabled] {
56
56
  cursor: not-allowed;
57
- color: #9e7d7d;
57
+ color: #BFBFBF;
58
58
  background-color: #f3f3f3; }
59
59
 
60
60
  .vxe-input {
@@ -323,7 +323,7 @@
323
323
  background-color: #fff; }
324
324
 
325
325
  .vxe-input--date-picker-btn.is--disabled {
326
- color: #9e7d7d;
326
+ color: #BFBFBF;
327
327
  cursor: no-drop; }
328
328
 
329
329
  .vxe-input--date-picker-btn:not(.is--disabled) {
@@ -353,11 +353,11 @@
353
353
  .vxe-input--date-picker-body th {
354
354
  box-shadow: inset 0 -1px 0 0 #DADCE0; }
355
355
  .vxe-input--date-picker-body td.is--prev, .vxe-input--date-picker-body td.is--next {
356
- color: #9e7d7d; }
356
+ color: #BFBFBF; }
357
357
  .vxe-input--date-picker-body td.is--prev .vxe-input--date-label,
358
358
  .vxe-input--date-picker-body td.is--prev .vxe-input--date-festival, .vxe-input--date-picker-body td.is--next .vxe-input--date-label,
359
359
  .vxe-input--date-picker-body td.is--next .vxe-input--date-festival {
360
- color: #9e7d7d; }
360
+ color: #BFBFBF; }
361
361
  .vxe-input--date-picker-body td.is--now {
362
362
  box-shadow: inset 0 0 0 1px #DADCE0; }
363
363
  .vxe-input--date-picker-body td.is--now:not(.is--selected).is--current {
package/es/menu/style.css CHANGED
@@ -103,7 +103,7 @@
103
103
  color: #2B2B2B; }
104
104
  .vxe-context-menu--option-wrapper li.link--disabled > .vxe-context-menu--link,
105
105
  .vxe-table--context-menu-clild-wrapper li.link--disabled > .vxe-context-menu--link {
106
- color: #9e7d7d;
106
+ color: #BFBFBF;
107
107
  cursor: no-drop; }
108
108
  .vxe-context-menu--option-wrapper li.link--disabled.link--active,
109
109
  .vxe-table--context-menu-clild-wrapper li.link--disabled.link--active {
@@ -157,7 +157,7 @@
157
157
  .vxe-modal--wrapper.status--error .vxe-modal--status-wrapper {
158
158
  color: #f56c6c; }
159
159
  .vxe-modal--wrapper.status--loading .vxe-modal--status-wrapper {
160
- color: #9e7d7d; }
160
+ color: #BFBFBF; }
161
161
  .vxe-modal--wrapper .vxe-modal--status-wrapper {
162
162
  flex-shrink: 0;
163
163
  display: flex;
@@ -234,13 +234,13 @@
234
234
  .vxe-pager .vxe-pager--jump-next.is--disabled,
235
235
  .vxe-pager .vxe-pager--num-btn.is--disabled {
236
236
  cursor: no-drop;
237
- color: #9e7d7d; }
237
+ color: #BFBFBF; }
238
238
  .vxe-pager .vxe-pager--jump-prev.is--disabled:hover,
239
239
  .vxe-pager .vxe-pager--prev-btn.is--disabled:hover,
240
240
  .vxe-pager .vxe-pager--next-btn.is--disabled:hover,
241
241
  .vxe-pager .vxe-pager--jump-next.is--disabled:hover,
242
242
  .vxe-pager .vxe-pager--num-btn.is--disabled:hover {
243
- color: #9e7d7d; }
243
+ color: #BFBFBF; }
244
244
  .vxe-pager .vxe-pager--num-btn {
245
245
  vertical-align: middle; }
246
246
  .vxe-pager .vxe-pager--num-btn.is--active {
@@ -244,7 +244,7 @@
244
244
  border-color: #c0c4cc;
245
245
  background-color: #c0c4cc; }
246
246
  .vxe-radio.is--disabled > input + .vxe-radio--icon + .vxe-radio--label {
247
- color: #9e7d7d; }
247
+ color: #BFBFBF; }
248
248
  .vxe-radio .vxe-radio--label {
249
249
  padding-left: 0.5em;
250
250
  vertical-align: middle;