vxe-table 3.15.1 → 3.15.3

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 (61) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/filter/mixin.js +29 -10
  6. package/es/table/module/filter/panel.js +173 -142
  7. package/es/table/src/body.js +5 -3
  8. package/es/table/src/footer.js +4 -2
  9. package/es/table/src/header.js +2 -1
  10. package/es/table/src/methods.js +125 -101
  11. package/es/table/src/table.js +3 -0
  12. package/es/table/style.css +18 -0
  13. package/es/table/style.min.css +1 -1
  14. package/es/ui/index.js +1 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-table/style.css +18 -0
  17. package/es/vxe-table/style.min.css +1 -1
  18. package/lib/index.css +1 -1
  19. package/lib/index.min.css +1 -1
  20. package/lib/index.umd.js +355 -262
  21. package/lib/index.umd.min.js +1 -1
  22. package/lib/style.css +1 -1
  23. package/lib/style.min.css +1 -1
  24. package/lib/table/module/filter/mixin.js +33 -9
  25. package/lib/table/module/filter/mixin.min.js +1 -1
  26. package/lib/table/module/filter/panel.js +153 -122
  27. package/lib/table/module/filter/panel.min.js +1 -1
  28. package/lib/table/src/body.js +5 -2
  29. package/lib/table/src/body.min.js +1 -1
  30. package/lib/table/src/footer.js +4 -2
  31. package/lib/table/src/footer.min.js +1 -1
  32. package/lib/table/src/header.js +2 -1
  33. package/lib/table/src/header.min.js +1 -1
  34. package/lib/table/src/methods.js +151 -122
  35. package/lib/table/src/methods.min.js +1 -1
  36. package/lib/table/src/table.js +3 -0
  37. package/lib/table/src/table.min.js +1 -1
  38. package/lib/table/style/style.css +18 -0
  39. package/lib/table/style/style.min.css +1 -1
  40. package/lib/ui/index.js +1 -1
  41. package/lib/ui/index.min.js +1 -1
  42. package/lib/ui/src/log.js +1 -1
  43. package/lib/ui/src/log.min.js +1 -1
  44. package/lib/vxe-table/style/style.css +18 -0
  45. package/lib/vxe-table/style/style.min.css +1 -1
  46. package/package.json +2 -2
  47. package/packages/table/module/filter/mixin.ts +27 -10
  48. package/packages/table/module/filter/panel.ts +178 -143
  49. package/packages/table/src/body.ts +5 -3
  50. package/packages/table/src/footer.ts +4 -2
  51. package/packages/table/src/header.ts +2 -1
  52. package/packages/table/src/methods.ts +132 -106
  53. package/packages/table/src/table.ts +3 -0
  54. package/styles/components/table-module/filter.scss +16 -0
  55. package/styles/components/table.scss +6 -1
  56. /package/es/{iconfont.1744336394111.ttf → iconfont.1744609828798.ttf} +0 -0
  57. /package/es/{iconfont.1744336394111.woff → iconfont.1744609828798.woff} +0 -0
  58. /package/es/{iconfont.1744336394111.woff2 → iconfont.1744609828798.woff2} +0 -0
  59. /package/lib/{iconfont.1744336394111.ttf → iconfont.1744609828798.ttf} +0 -0
  60. /package/lib/{iconfont.1744336394111.woff → iconfont.1744609828798.woff} +0 -0
  61. /package/lib/{iconfont.1744336394111.woff2 → iconfont.1744609828798.woff2} +0 -0
@@ -1,7 +1,7 @@
1
1
  import XEUtils from 'xe-utils';
2
2
  import { VxeUI } from '../../../ui';
3
3
  import { toFilters, handleFieldOrColumn, getRefElem } from '../../src/util';
4
- import { toCssUnit, triggerEvent } from '../../../ui/src/dom';
4
+ import { toCssUnit, triggerEvent, getDomNode } from '../../../ui/src/dom';
5
5
  import { isEnableConf } from '../../../ui/src/utils';
6
6
  const { renderer } = VxeUI;
7
7
  export default {
@@ -71,6 +71,9 @@ export default {
71
71
  }
72
72
  else {
73
73
  const el = $xeTable.$refs.refElem;
74
+ const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode();
75
+ const filterOpts = $xeTable.computeFilterOpts;
76
+ const { transfer } = filterOpts;
74
77
  const tableRect = el.getBoundingClientRect();
75
78
  const btnElem = evnt.currentTarget;
76
79
  const { filters, filterMultiple, filterRender } = column;
@@ -107,24 +110,40 @@ export default {
107
110
  return;
108
111
  }
109
112
  const btnRect = btnElem.getBoundingClientRect();
110
- const filterWidth = filterWrapperElem.offsetWidth;
111
113
  const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
112
114
  const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
115
+ const filterWidth = filterWrapperElem.offsetWidth;
113
116
  const centerWidth = filterWidth / 2;
114
- let left = btnRect.left - tableRect.left - centerWidth;
115
- const top = btnRect.top - tableRect.top + btnElem.clientHeight;
116
- // 判断面板不能大于表格高度
117
- const maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
118
- if (left < 1) {
119
- left = 1;
117
+ let left = 0;
118
+ let top = 0;
119
+ let maxHeight = 0;
120
+ if (transfer) {
121
+ left = btnRect.left - centerWidth + scrollLeft;
122
+ top = btnRect.top + btnElem.clientHeight + scrollTop;
123
+ maxHeight = Math.min(Math.max(tableRect.height, Math.floor(visibleHeight / 2)), Math.max(80, visibleHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 28));
124
+ if (left < 16) {
125
+ left = 16;
126
+ }
127
+ else if (left > (visibleWidth - filterWidth - 16)) {
128
+ left = visibleWidth - filterWidth - 16;
129
+ }
120
130
  }
121
- else if (left > (el.clientWidth - filterWidth - 1)) {
122
- left = el.clientWidth - filterWidth - 1;
131
+ else {
132
+ left = btnRect.left - tableRect.left - centerWidth;
133
+ top = btnRect.top - tableRect.top + btnElem.clientHeight;
134
+ maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
135
+ if (left < 1) {
136
+ left = 1;
137
+ }
138
+ else if (left > (el.clientWidth - filterWidth - 1)) {
139
+ left = el.clientWidth - filterWidth - 1;
140
+ }
123
141
  }
124
142
  filterStore.style = {
125
143
  top: toCssUnit(top),
126
144
  left: toCssUnit(left)
127
145
  };
146
+ // 判断面板不能大于表格高度
128
147
  filterStore.maxHeight = maxHeight;
129
148
  });
130
149
  }
@@ -1,180 +1,211 @@
1
1
  import { VxeUI } from '../../../ui';
2
2
  import { formatText, isEnableConf, getClass } from '../../../ui/src/utils';
3
3
  import { getSlotVNs } from '../../../ui/src/vn';
4
- const { getI18n, getIcon, renderer } = VxeUI;
4
+ const { getI18n, getIcon, renderer, globalMixins } = VxeUI;
5
+ function renderOptions($xeFilterPanel, h, filterRender, compConf) {
6
+ const props = $xeFilterPanel;
7
+ const $xeTable = $xeFilterPanel.$xeTable;
8
+ const tableInternalData = $xeTable;
9
+ const { filterStore } = props;
10
+ const { column, multiple, maxHeight } = filterStore;
11
+ const slots = column ? column.slots : null;
12
+ const filterSlot = slots ? slots.filter : null;
13
+ const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable });
14
+ const rtFilter = compConf ? (compConf.renderTableFilter || compConf.renderFilter) : null;
15
+ if (filterSlot) {
16
+ return [
17
+ h('div', {
18
+ class: 'vxe-table--filter-template',
19
+ style: maxHeight
20
+ ? {
21
+ maxHeight: `${maxHeight}px`
22
+ }
23
+ : {}
24
+ }, $xeTable.callSlot(filterSlot, params, h))
25
+ ];
26
+ }
27
+ else if (rtFilter) {
28
+ return [
29
+ h('div', {
30
+ class: 'vxe-table--filter-template',
31
+ style: maxHeight
32
+ ? {
33
+ maxHeight: `${maxHeight}px`
34
+ }
35
+ : {}
36
+ }, getSlotVNs(rtFilter.call($xeTable, h, filterRender, params)))
37
+ ];
38
+ }
39
+ const isAllChecked = multiple ? filterStore.isAllSelected : !filterStore.options.some((item) => item._checked);
40
+ const isAllIndeterminate = multiple && filterStore.isIndeterminate;
41
+ return [
42
+ h('ul', {
43
+ class: 'vxe-table--filter-header'
44
+ }, [
45
+ h('li', {
46
+ class: ['vxe-table--filter-option', {
47
+ 'is--checked': isAllChecked,
48
+ 'is--indeterminate': isAllIndeterminate
49
+ }],
50
+ attrs: {
51
+ title: getI18n(multiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
52
+ },
53
+ on: {
54
+ click: (evnt) => {
55
+ $xeFilterPanel.changeAllOption(evnt, !filterStore.isAllSelected);
56
+ }
57
+ }
58
+ }, (multiple
59
+ ? [
60
+ h('span', {
61
+ class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
62
+ })
63
+ ]
64
+ : []).concat([
65
+ h('span', {
66
+ class: 'vxe-checkbox--label'
67
+ }, getI18n('vxe.table.allFilter'))
68
+ ]))
69
+ ]),
70
+ h('ul', {
71
+ class: 'vxe-table--filter-body',
72
+ style: maxHeight
73
+ ? {
74
+ maxHeight: `${maxHeight}px`
75
+ }
76
+ : {}
77
+ }, filterStore.options.map((item) => {
78
+ const isChecked = item._checked;
79
+ const isIndeterminate = false;
80
+ return h('li', {
81
+ class: ['vxe-table--filter-option', {
82
+ 'is--checked': isChecked
83
+ }],
84
+ attrs: {
85
+ title: item.label
86
+ },
87
+ on: {
88
+ click: (evnt) => {
89
+ $xeFilterPanel.changeOption(evnt, !item._checked, item);
90
+ }
91
+ }
92
+ }, (multiple
93
+ ? [
94
+ h('span', {
95
+ class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
96
+ })
97
+ ]
98
+ : []).concat([
99
+ h('span', {
100
+ class: 'vxe-checkbox--label'
101
+ }, formatText(item.label, 1))
102
+ ]));
103
+ }))
104
+ ];
105
+ }
106
+ function renderFooter($xeFilterPanel, h) {
107
+ const props = $xeFilterPanel;
108
+ const $xeTable = $xeFilterPanel.$xeTable;
109
+ const { filterStore } = props;
110
+ const { column, multiple } = filterStore;
111
+ const filterOpts = $xeTable.computeFilterOpts;
112
+ const hasCheckOption = $xeFilterPanel.computeHasCheckOption;
113
+ const filterRender = column.filterRender;
114
+ const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
115
+ const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate;
116
+ return multiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true)
117
+ ? [
118
+ h('div', {
119
+ class: 'vxe-table--filter-footer'
120
+ }, [
121
+ h('button', {
122
+ class: {
123
+ 'is--disabled': isDisabled
124
+ },
125
+ attrs: {
126
+ disabled: isDisabled
127
+ },
128
+ on: {
129
+ click: $xeFilterPanel.confirmFilter
130
+ }
131
+ }, filterOpts.confirmButtonText || getI18n('vxe.table.confirmFilter')),
132
+ h('button', {
133
+ on: {
134
+ click: $xeFilterPanel.resetFilter
135
+ }
136
+ }, filterOpts.resetButtonText || getI18n('vxe.table.resetFilter'))
137
+ ])
138
+ ]
139
+ : [];
140
+ }
5
141
  export default {
6
142
  name: 'VxeTableFilterPanel',
143
+ mixins: [
144
+ globalMixins.sizeMixin
145
+ ],
7
146
  props: {
8
147
  filterStore: Object
9
148
  },
149
+ inject: {
150
+ $xeTable: {
151
+ default: null
152
+ }
153
+ },
10
154
  computed: {
11
- hasCheckOption() {
155
+ computeHasCheckOption() {
12
156
  const { filterStore } = this;
13
157
  return filterStore && filterStore.options.some((option) => option.checked);
14
158
  }
15
159
  },
160
+ mounted() {
161
+ const $xeFilterPanel = this;
162
+ const $xeTable = $xeFilterPanel.$xeTable;
163
+ const filterOpts = $xeTable.computeFilterOpts;
164
+ const { transfer } = filterOpts;
165
+ const el = this.$refs.refElem;
166
+ if (transfer && el) {
167
+ document.body.appendChild(el);
168
+ }
169
+ },
170
+ beforeDestroy() {
171
+ const el = this.$refs.refElem;
172
+ if (el && el.parentNode) {
173
+ el.parentNode.removeChild(el);
174
+ }
175
+ },
16
176
  render(h) {
17
- const $panel = this;
18
- const $xeTable = this.$parent;
177
+ const $xeFilterPanel = this;
178
+ const props = $xeFilterPanel;
179
+ const $xeTable = $xeFilterPanel.$xeTable;
19
180
  const tableInternalData = $xeTable;
20
- const { filterStore } = this;
181
+ const { filterStore } = props;
21
182
  const { visible, multiple, column } = filterStore;
22
183
  const filterRender = column ? column.filterRender : null;
23
184
  const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
24
185
  const filterClassName = compConf ? (compConf.tableFilterClassName || compConf.filterClassName) : '';
25
- const params = Object.assign({}, tableInternalData._currFilterParams, { $panel, $table: $xeTable });
186
+ const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable });
187
+ const tableProps = $xeTable;
188
+ const vSize = $xeFilterPanel.computeSize;
26
189
  const filterOpts = $xeTable.computeFilterOpts;
27
190
  const { destroyOnClose } = filterOpts;
28
191
  return h('div', {
192
+ ref: 'refElem',
29
193
  class: [
30
194
  'vxe-table--filter-wrapper',
31
195
  'filter--prevent-default',
32
196
  compConf && compConf.className ? compConf.className : '',
33
197
  getClass(filterClassName, params),
34
198
  {
35
- 'is--animat': $xeTable.animat,
199
+ [`size--${vSize}`]: vSize,
200
+ 'is--animat': tableProps.animat,
36
201
  'is--multiple': multiple,
37
202
  'is--active': visible
38
203
  }
39
204
  ],
40
205
  style: filterStore.style
41
- }, filterStore.visible && (destroyOnClose ? visible : true) && column ? this.renderOptions(h, filterRender, compConf).concat(this.renderFooter(h)) : []);
206
+ }, filterStore.visible && (destroyOnClose ? visible : true) && column ? renderOptions($xeFilterPanel, h, filterRender, compConf).concat(renderFooter($xeFilterPanel, h)) : []);
42
207
  },
43
208
  methods: {
44
- renderOptions(h, filterRender, compConf) {
45
- const $panel = this;
46
- const $xeTable = this.$parent;
47
- const tableInternalData = $xeTable;
48
- const { filterStore } = this;
49
- const { column, multiple, maxHeight } = filterStore;
50
- const slots = column ? column.slots : null;
51
- const filterSlot = slots ? slots.filter : null;
52
- const params = Object.assign({}, tableInternalData._currFilterParams, { $panel, $table: $xeTable });
53
- const rtFilter = compConf ? (compConf.renderTableFilter || compConf.renderFilter) : null;
54
- if (filterSlot) {
55
- return [
56
- h('div', {
57
- class: 'vxe-table--filter-template',
58
- style: maxHeight
59
- ? {
60
- maxHeight: `${maxHeight}px`
61
- }
62
- : {}
63
- }, $xeTable.callSlot(filterSlot, params, h))
64
- ];
65
- }
66
- else if (rtFilter) {
67
- return [
68
- h('div', {
69
- class: 'vxe-table--filter-template',
70
- style: maxHeight
71
- ? {
72
- maxHeight: `${maxHeight}px`
73
- }
74
- : {}
75
- }, getSlotVNs(rtFilter.call($xeTable, h, filterRender, params)))
76
- ];
77
- }
78
- const isAllChecked = multiple ? filterStore.isAllSelected : !filterStore.options.some((item) => item._checked);
79
- const isAllIndeterminate = multiple && filterStore.isIndeterminate;
80
- return [
81
- h('ul', {
82
- class: 'vxe-table--filter-header'
83
- }, [
84
- h('li', {
85
- class: ['vxe-table--filter-option', {
86
- 'is--checked': isAllChecked,
87
- 'is--indeterminate': isAllIndeterminate
88
- }],
89
- attrs: {
90
- title: getI18n(multiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
91
- },
92
- on: {
93
- click: (evnt) => {
94
- this.changeAllOption(evnt, !filterStore.isAllSelected);
95
- }
96
- }
97
- }, (multiple
98
- ? [
99
- h('span', {
100
- class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
101
- })
102
- ]
103
- : []).concat([
104
- h('span', {
105
- class: 'vxe-checkbox--label'
106
- }, getI18n('vxe.table.allFilter'))
107
- ]))
108
- ]),
109
- h('ul', {
110
- class: 'vxe-table--filter-body',
111
- style: maxHeight
112
- ? {
113
- maxHeight: `${maxHeight}px`
114
- }
115
- : {}
116
- }, filterStore.options.map((item) => {
117
- const isChecked = item._checked;
118
- const isIndeterminate = false;
119
- return h('li', {
120
- class: ['vxe-table--filter-option', {
121
- 'is--checked': isChecked
122
- }],
123
- attrs: {
124
- title: item.label
125
- },
126
- on: {
127
- click: (evnt) => {
128
- this.changeOption(evnt, !item._checked, item);
129
- }
130
- }
131
- }, (multiple
132
- ? [
133
- h('span', {
134
- class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
135
- })
136
- ]
137
- : []).concat([
138
- h('span', {
139
- class: 'vxe-checkbox--label'
140
- }, formatText(item.label, 1))
141
- ]));
142
- }))
143
- ];
144
- },
145
- renderFooter(h) {
146
- const $xeTable = this.$parent;
147
- const { hasCheckOption, filterStore } = this;
148
- const { column, multiple } = filterStore;
149
- const filterOpts = $xeTable.computeFilterOpts;
150
- const filterRender = column.filterRender;
151
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
152
- const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate;
153
- return multiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true)
154
- ? [
155
- h('div', {
156
- class: 'vxe-table--filter-footer'
157
- }, [
158
- h('button', {
159
- class: {
160
- 'is--disabled': isDisabled
161
- },
162
- attrs: {
163
- disabled: isDisabled
164
- },
165
- on: {
166
- click: this.confirmFilter
167
- }
168
- }, filterOpts.confirmButtonText || getI18n('vxe.table.confirmFilter')),
169
- h('button', {
170
- on: {
171
- click: this.resetFilter
172
- }
173
- }, filterOpts.resetButtonText || getI18n('vxe.table.resetFilter'))
174
- ])
175
- ]
176
- : [];
177
- },
178
209
  // 全部筛选事件
179
210
  filterCheckAllEvent(evnt, value) {
180
211
  const filterStore = this.filterStore;
@@ -62,7 +62,7 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
62
62
  const tableReactData = $xeTable;
63
63
  const tableInternalData = $xeTable;
64
64
  const $xeGrid = $xeTable.$xeGrid;
65
- const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
65
+ const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, treeConfig, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
66
66
  const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, mergeBodyFlag, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, editStore, isAllOverflow, validErrorMaps } = tableReactData;
67
67
  const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore } = tableInternalData;
68
68
  const cellOpts = $xeTable.computeCellOpts;
@@ -70,6 +70,8 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
70
70
  const checkboxOpts = $xeTable.computeCheckboxOpts;
71
71
  const editOpts = $xeTable.computeEditOpts;
72
72
  const tooltipOpts = $xeTable.computeTooltipOpts;
73
+ const virtualXOpts = $xeTable.computeVirtualXOpts;
74
+ const virtualYOpts = $xeTable.computeVirtualYOpts;
73
75
  const { isAllColumnDrag, isAllRowDrag } = $xeTable.resizableOpts;
74
76
  const rowOpts = $xeTable.computeRowOpts;
75
77
  const rowDragOpts = $xeTable.computeRowDragOpts;
@@ -238,10 +240,10 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
238
240
  let isVNPreEmptyStatus = false;
239
241
  if (!isMergeCell) {
240
242
  if (!dragRow || getRowid($xeTable, dragRow) !== rowid) {
241
- if (scrollYLoad && (_rowIndex < scrollYStore.visibleStartIndex - scrollYStore.preloadSize || _rowIndex > scrollYStore.visibleEndIndex + scrollYStore.preloadSize)) {
243
+ if (scrollYLoad && !treeConfig && !virtualYOpts.immediate && (_rowIndex < scrollYStore.visibleStartIndex - scrollYStore.preloadSize || _rowIndex > scrollYStore.visibleEndIndex + scrollYStore.preloadSize)) {
242
244
  isVNPreEmptyStatus = true;
243
245
  }
244
- else if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
246
+ else if (scrollXLoad && !virtualXOpts.immediate && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
245
247
  isVNPreEmptyStatus = true;
246
248
  }
247
249
  }
@@ -16,8 +16,10 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
16
16
  const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps;
17
17
  const { scrollXLoad, scrollYLoad, overflowX, currentColumn } = tableReactData;
18
18
  const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData;
19
+ const virtualXOpts = $xeTable.computeVirtualXOpts;
19
20
  const tooltipOpts = $xeTable.computeTooltipOpts;
20
- const { isAllColumnDrag } = $xeTable.resizableOpts;
21
+ const resizableOpts = $xeTable.resizableOpts;
22
+ const { isAllColumnDrag } = resizableOpts;
21
23
  const columnOpts = $xeTable.computeColumnOpts;
22
24
  const defaultRowHeight = $xeTable.computeDefaultRowHeight;
23
25
  const cellOpts = $xeTable.computeCellOpts;
@@ -125,7 +127,7 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
125
127
  const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
126
128
  let isVNPreEmptyStatus = false;
127
129
  if (!isMergeCell) {
128
- if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
130
+ if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
129
131
  isVNPreEmptyStatus = true;
130
132
  }
131
133
  }
@@ -15,6 +15,7 @@ const renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
15
15
  const { resizable: allResizable, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
16
16
  const { currentColumn, dragCol, scrollXLoad, scrollYLoad, overflowX } = tableReactData;
17
17
  const { fullColumnIdData, scrollXStore } = tableInternalData;
18
+ const virtualXOpts = $xeTable.computeVirtualXOpts;
18
19
  const columnOpts = $xeTable.computeColumnOpts;
19
20
  const columnDragOpts = $xeTable.computeColumnDragOpts;
20
21
  const cellOpts = $xeTable.computeCellOpts;
@@ -84,7 +85,7 @@ const renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
84
85
  let isVNPreEmptyStatus = false;
85
86
  if (!isGroup) {
86
87
  if (!dragCol || dragCol.id !== colid) {
87
- if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
88
+ if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
88
89
  isVNPreEmptyStatus = true;
89
90
  }
90
91
  }