vxe-table 4.13.1 → 4.13.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/hook.js +30 -11
  6. package/es/table/module/filter/panel.js +47 -20
  7. package/es/table/module/menu/hook.js +1 -1
  8. package/es/table/src/body.js +6 -4
  9. package/es/table/src/footer.js +3 -2
  10. package/es/table/src/header.js +3 -2
  11. package/es/table/src/table.js +42 -17
  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 +101 -40
  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/hook.js +34 -10
  25. package/lib/table/module/filter/hook.min.js +1 -1
  26. package/lib/table/module/filter/panel.js +37 -8
  27. package/lib/table/module/filter/panel.min.js +1 -1
  28. package/lib/table/module/menu/hook.js +1 -1
  29. package/lib/table/module/menu/hook.min.js +1 -1
  30. package/lib/table/src/body.js +8 -3
  31. package/lib/table/src/body.min.js +1 -1
  32. package/lib/table/src/footer.js +4 -2
  33. package/lib/table/src/footer.min.js +1 -1
  34. package/lib/table/src/header.js +4 -2
  35. package/lib/table/src/header.min.js +1 -1
  36. package/lib/table/src/table.js +863 -12307
  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/hook.ts +28 -11
  48. package/packages/table/module/filter/panel.ts +52 -20
  49. package/packages/table/module/menu/hook.ts +1 -1
  50. package/packages/table/src/body.ts +6 -4
  51. package/packages/table/src/footer.ts +3 -2
  52. package/packages/table/src/header.ts +3 -2
  53. package/packages/table/src/table.ts +43 -18
  54. package/styles/components/table-module/filter.scss +16 -0
  55. package/styles/components/table.scss +6 -1
  56. /package/es/{iconfont.1744337102291.ttf → iconfont.1744609856022.ttf} +0 -0
  57. /package/es/{iconfont.1744337102291.woff → iconfont.1744609856022.woff} +0 -0
  58. /package/es/{iconfont.1744337102291.woff2 → iconfont.1744609856022.woff2} +0 -0
  59. /package/lib/{iconfont.1744337102291.ttf → iconfont.1744609856022.ttf} +0 -0
  60. /package/lib/{iconfont.1744337102291.woff → iconfont.1744609856022.woff} +0 -0
  61. /package/lib/{iconfont.1744337102291.woff2 → iconfont.1744609856022.woff2} +0 -0
@@ -2,7 +2,7 @@ import { nextTick } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
3
  import { VxeUI } from '../../../ui';
4
4
  import { toFilters, handleFieldOrColumn, getRefElem } from '../../src/util';
5
- import { toCssUnit, triggerEvent } from '../../../ui/src/dom';
5
+ import { toCssUnit, triggerEvent, getDomNode } from '../../../ui/src/dom';
6
6
  import { isEnableConf } from '../../../ui/src/utils';
7
7
  const { renderer, hooks } = VxeUI;
8
8
  const tableFilterMethodKeys = ['openFilter', 'setFilter', 'clearFilter', 'saveFilterPanel', 'resetFilterPanel', 'getCheckedFilters', 'updateFilterOptionStatus'];
@@ -67,6 +67,9 @@ hooks.add('tableFilterModule', {
67
67
  }
68
68
  else {
69
69
  const el = refElem.value;
70
+ const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode();
71
+ const filterOpts = computeFilterOpts.value;
72
+ const { transfer } = filterOpts;
70
73
  const tableRect = el.getBoundingClientRect();
71
74
  const btnElem = evnt.currentTarget;
72
75
  const { filters, filterMultiple, filterRender } = column;
@@ -98,29 +101,45 @@ hooks.add('tableFilterModule', {
98
101
  return;
99
102
  }
100
103
  const tableFilter = refTableFilter.value;
101
- const filterWrapperElem = tableFilter ? tableFilter.$el : null;
104
+ const filterWrapperElem = tableFilter ? tableFilter.getRefMaps().refElem.value : null;
102
105
  if (!filterWrapperElem) {
103
106
  return;
104
107
  }
105
108
  const btnRect = btnElem.getBoundingClientRect();
106
- const filterWidth = filterWrapperElem.offsetWidth;
107
109
  const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
108
110
  const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
111
+ const filterWidth = filterWrapperElem.offsetWidth;
109
112
  const centerWidth = filterWidth / 2;
110
- let left = btnRect.left - tableRect.left - centerWidth;
111
- const top = btnRect.top - tableRect.top + btnElem.clientHeight;
112
- // 判断面板不能大于表格高度
113
- const maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
114
- if (left < 1) {
115
- left = 1;
113
+ let left = 0;
114
+ let top = 0;
115
+ let maxHeight = 0;
116
+ if (transfer) {
117
+ left = btnRect.left - centerWidth + scrollLeft;
118
+ top = btnRect.top + btnElem.clientHeight + scrollTop;
119
+ 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));
120
+ if (left < 16) {
121
+ left = 16;
122
+ }
123
+ else if (left > (visibleWidth - filterWidth - 16)) {
124
+ left = visibleWidth - filterWidth - 16;
125
+ }
116
126
  }
117
- else if (left > (el.clientWidth - filterWidth - 1)) {
118
- left = el.clientWidth - filterWidth - 1;
127
+ else {
128
+ left = btnRect.left - tableRect.left - centerWidth;
129
+ top = btnRect.top - tableRect.top + btnElem.clientHeight;
130
+ maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
131
+ if (left < 1) {
132
+ left = 1;
133
+ }
134
+ else if (left > (el.clientWidth - filterWidth - 1)) {
135
+ left = el.clientWidth - filterWidth - 1;
136
+ }
119
137
  }
120
138
  filterStore.style = {
121
139
  top: toCssUnit(top),
122
140
  left: toCssUnit(left)
123
141
  };
142
+ // 判断面板不能大于表格高度
124
143
  filterStore.maxHeight = maxHeight;
125
144
  });
126
145
  }
@@ -1,18 +1,30 @@
1
- import { defineComponent, h, computed, inject } from 'vue';
1
+ import { defineComponent, h, ref, computed, inject, Teleport } from 'vue';
2
2
  import { VxeUI } from '../../../ui';
3
3
  import { formatText, isEnableConf } from '../../../ui/src/utils';
4
4
  import { getPropClass } from '../../../ui/src/dom';
5
5
  import { getSlotVNs } from '../../../ui/src/vn';
6
+ import XEUtils from 'xe-utils';
6
7
  const { getI18n, getIcon, renderer } = VxeUI;
7
8
  export default defineComponent({
8
9
  name: 'VxeTableFilterPanel',
9
10
  props: {
10
11
  filterStore: Object
11
12
  },
12
- setup(props) {
13
+ setup(props, context) {
14
+ const xID = XEUtils.uniqueId();
13
15
  const $xeTable = inject('$xeTable', {});
14
16
  const { reactData: tableReactData, internalData: tableInternalData, getComputeMaps } = $xeTable;
15
17
  const { computeFilterOpts } = getComputeMaps();
18
+ const refElem = ref();
19
+ const refMaps = {
20
+ refElem
21
+ };
22
+ const $xeFilterPanel = {
23
+ xID,
24
+ props,
25
+ context,
26
+ getRefMaps: () => refMaps
27
+ };
16
28
  const computeHasCheckOption = computed(() => {
17
29
  const { filterStore } = props;
18
30
  return filterStore && filterStore.options.some((option) => option.checked);
@@ -66,7 +78,7 @@ export default defineComponent({
66
78
  /*************************
67
79
  * Publish methods
68
80
  *************************/
69
- const $panel = {
81
+ const filterPanelMethods = {
70
82
  changeRadioOption,
71
83
  changeMultipleOption,
72
84
  changeAllOption,
@@ -74,12 +86,13 @@ export default defineComponent({
74
86
  confirmFilter,
75
87
  resetFilter
76
88
  };
89
+ Object.assign($xeFilterPanel, filterPanelMethods);
77
90
  const renderOptions = (filterRender, compConf) => {
78
91
  const { filterStore } = props;
79
92
  const { column, multiple, maxHeight } = filterStore;
80
93
  const slots = column ? column.slots : null;
81
94
  const filterSlot = slots ? slots.filter : null;
82
- const params = Object.assign({}, tableInternalData._currFilterParams, { $panel, $table: $xeTable });
95
+ const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable });
83
96
  const rtFilter = compConf ? (compConf.renderTableFilter || compConf.renderFilter) : null;
84
97
  if (filterSlot) {
85
98
  return [
@@ -198,23 +211,37 @@ export default defineComponent({
198
211
  const filterRender = column ? column.filterRender : null;
199
212
  const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
200
213
  const filterClassName = compConf ? (compConf.tableFilterClassName || compConf.filterClassName) : '';
201
- const params = Object.assign({}, tableInternalData._currFilterParams, { $panel, $table: $xeTable });
214
+ const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable });
215
+ const tableProps = $xeTable.props;
216
+ const { computeSize } = $xeTable.getComputeMaps();
217
+ const vSize = computeSize.value;
202
218
  const filterOpts = computeFilterOpts.value;
203
- const { destroyOnClose } = filterOpts;
204
- return h('div', {
205
- class: [
206
- 'vxe-table--filter-wrapper',
207
- 'filter--prevent-default',
208
- getPropClass(filterClassName, params),
209
- {
210
- 'is--animat': $xeTable.props.animat,
211
- 'is--multiple': multiple,
212
- 'is--active': visible
213
- }
214
- ],
215
- style: filterStore.style
216
- }, initStore.filter && (destroyOnClose ? visible : true) && column ? renderOptions(filterRender, compConf).concat(renderFooters()) : []);
219
+ const { transfer, destroyOnClose } = filterOpts;
220
+ return h(Teleport, {
221
+ to: 'body',
222
+ disabled: !transfer
223
+ }, [
224
+ h('div', {
225
+ ref: refElem,
226
+ class: [
227
+ 'vxe-table--filter-wrapper',
228
+ 'filter--prevent-default',
229
+ getPropClass(filterClassName, params),
230
+ {
231
+ [`size--${vSize}`]: vSize,
232
+ 'is--animat': tableProps.animat,
233
+ 'is--multiple': multiple,
234
+ 'is--active': visible
235
+ }
236
+ ],
237
+ style: filterStore.style
238
+ }, initStore.filter && (destroyOnClose ? visible : true) && column ? renderOptions(filterRender, compConf).concat(renderFooters()) : [])
239
+ ]);
217
240
  };
218
- return renderVN;
241
+ $xeFilterPanel.renderVN = renderVN;
242
+ return $xeFilterPanel;
243
+ },
244
+ render() {
245
+ return this.renderVN();
219
246
  }
220
247
  });
@@ -225,7 +225,7 @@ hooks.add('tableMenuModule', {
225
225
  }
226
226
  }
227
227
  }
228
- if (tableFilter && !getEventTargetNode(evnt, tableFilter.$el).flag) {
228
+ if (tableFilter && !getEventTargetNode(evnt, tableFilter.getRefMaps().refElem.value).flag) {
229
229
  $xeTable.closeFilter();
230
230
  }
231
231
  menuMethods.closeMenu();
@@ -21,7 +21,7 @@ export default defineComponent({
21
21
  setup(props) {
22
22
  const $xeTable = inject('$xeTable', {});
23
23
  const { xID, props: tableProps, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
24
- const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts, computeResizableOpts } = $xeTable.getComputeMaps();
24
+ const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts, computeResizableOpts, computeVirtualXOpts, computeVirtualYOpts } = $xeTable.getComputeMaps();
25
25
  const refElem = ref();
26
26
  const refBodyScroll = ref();
27
27
  const refBodyTable = ref();
@@ -77,7 +77,7 @@ export default defineComponent({
77
77
  */
78
78
  const renderTdColumn = (seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) => {
79
79
  const $xeGrid = $xeTable.xeGrid;
80
- const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
80
+ const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, treeConfig, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
81
81
  const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, mergeBodyFlag, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, editStore, isAllOverflow, validErrorMaps } = tableReactData;
82
82
  const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore } = tableInternalData;
83
83
  const cellOpts = computeCellOpts.value;
@@ -86,6 +86,8 @@ export default defineComponent({
86
86
  const editOpts = computeEditOpts.value;
87
87
  const tooltipOpts = computeTooltipOpts.value;
88
88
  const resizableOpts = computeResizableOpts.value;
89
+ const virtualXOpts = computeVirtualXOpts.value;
90
+ const virtualYOpts = computeVirtualYOpts.value;
89
91
  const { isAllColumnDrag, isAllRowDrag } = resizableOpts;
90
92
  const rowOpts = computeRowOpts.value;
91
93
  const rowDragOpts = computeRowDragOpts.value;
@@ -254,10 +256,10 @@ export default defineComponent({
254
256
  let isVNPreEmptyStatus = false;
255
257
  if (!isMergeCell) {
256
258
  if (!dragRow || getRowid($xeTable, dragRow) !== rowid) {
257
- if (scrollYLoad && (_rowIndex < scrollYStore.visibleStartIndex - scrollYStore.preloadSize || _rowIndex > scrollYStore.visibleEndIndex + scrollYStore.preloadSize)) {
259
+ if (scrollYLoad && !treeConfig && !virtualYOpts.immediate && (_rowIndex < scrollYStore.visibleStartIndex - scrollYStore.preloadSize || _rowIndex > scrollYStore.visibleEndIndex + scrollYStore.preloadSize)) {
258
260
  isVNPreEmptyStatus = true;
259
261
  }
260
- else if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
262
+ else if (scrollXLoad && !virtualXOpts.immediate && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
261
263
  isVNPreEmptyStatus = true;
262
264
  }
263
265
  }
@@ -28,7 +28,7 @@ export default defineComponent({
28
28
  setup(props) {
29
29
  const $xeTable = inject('$xeTable', {});
30
30
  const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
31
- const { computeTooltipOpts, computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts } = $xeTable.getComputeMaps();
31
+ const { computeTooltipOpts, computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts } = $xeTable.getComputeMaps();
32
32
  const refElem = ref();
33
33
  const refFooterScroll = ref();
34
34
  const refFooterTable = ref();
@@ -41,6 +41,7 @@ export default defineComponent({
41
41
  const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps;
42
42
  const { scrollXLoad, scrollYLoad, overflowX, currentColumn } = tableReactData;
43
43
  const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData;
44
+ const virtualXOpts = computeVirtualXOpts.value;
44
45
  const tooltipOpts = computeTooltipOpts.value;
45
46
  const resizableOpts = computeResizableOpts.value;
46
47
  const { isAllColumnDrag } = resizableOpts;
@@ -151,7 +152,7 @@ export default defineComponent({
151
152
  const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
152
153
  let isVNPreEmptyStatus = false;
153
154
  if (!isMergeCell) {
154
- if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
155
+ if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
155
156
  isVNPreEmptyStatus = true;
156
157
  }
157
158
  }
@@ -19,7 +19,7 @@ export default defineComponent({
19
19
  setup(props) {
20
20
  const $xeTable = inject('$xeTable', {});
21
21
  const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
22
- const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight } = $xeTable.getComputeMaps();
22
+ const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight, computeVirtualXOpts } = $xeTable.getComputeMaps();
23
23
  const headerColumn = ref([]);
24
24
  const refElem = ref();
25
25
  const refHeaderScroll = ref();
@@ -38,6 +38,7 @@ export default defineComponent({
38
38
  const { resizable: allResizable, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
39
39
  const { currentColumn, dragCol, scrollXLoad, scrollYLoad, overflowX } = tableReactData;
40
40
  const { fullColumnIdData, scrollXStore } = tableInternalData;
41
+ const virtualXOpts = computeVirtualXOpts.value;
41
42
  const columnOpts = computeColumnOpts.value;
42
43
  const columnDragOpts = computeColumnDragOpts.value;
43
44
  const cellOpts = computeCellOpts.value;
@@ -106,7 +107,7 @@ export default defineComponent({
106
107
  let isVNPreEmptyStatus = false;
107
108
  if (!isGroup) {
108
109
  if (!dragCol || dragCol.id !== colid) {
109
- if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
110
+ if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
110
111
  isVNPreEmptyStatus = true;
111
112
  }
112
113
  }
@@ -2833,7 +2833,12 @@ export default defineComponent({
2833
2833
  $xeTable.checkSelectionStatus();
2834
2834
  return new Promise(resolve => {
2835
2835
  nextTick()
2836
- .then(() => $xeTable.recalculate())
2836
+ .then(() => handleRecalculateLayout(false))
2837
+ .then(() => {
2838
+ calcCellHeight();
2839
+ updateRowOffsetTop();
2840
+ return handleRecalculateLayout(false);
2841
+ })
2837
2842
  .then(() => {
2838
2843
  let targetScrollLeft = lastScrollLeft;
2839
2844
  let targetScrollTop = lastScrollTop;
@@ -2847,8 +2852,7 @@ export default defineComponent({
2847
2852
  targetScrollTop = 0;
2848
2853
  }
2849
2854
  reactData.isRowLoading = false;
2850
- calcCellHeight();
2851
- updateRowOffsetTop();
2855
+ handleRecalculateLayout(false);
2852
2856
  // 是否变更虚拟滚动
2853
2857
  if (oldScrollYLoad === sYLoad) {
2854
2858
  restoreScrollLocation($xeTable, targetScrollLeft, targetScrollTop)
@@ -3141,8 +3145,8 @@ export default defineComponent({
3141
3145
  const childrenField = treeOpts.children || treeOpts.childrenField;
3142
3146
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
3143
3147
  const result = [];
3144
- const columnIndex = tableMethods.getColumnIndex(treeNodeColumn);
3145
- const $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn);
3148
+ const columnIndex = $xeTable.getColumnIndex(treeNodeColumn);
3149
+ const $columnIndex = $xeTable.getVMColumnIndex(treeNodeColumn);
3146
3150
  const { handleGetRowId } = createHandleGetRowId($xeTable);
3147
3151
  let validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: treeNodeColumn, columnIndex, $columnIndex, row })) : rows;
3148
3152
  if (accordion) {
@@ -3191,7 +3195,7 @@ export default defineComponent({
3191
3195
  }
3192
3196
  reactData.treeExpandedFlag++;
3193
3197
  return Promise.all(result).then(() => {
3194
- return tableMethods.recalculate();
3198
+ return $xeTable.recalculate();
3195
3199
  });
3196
3200
  };
3197
3201
  /**
@@ -3203,14 +3207,14 @@ export default defineComponent({
3203
3207
  const handleVirtualTreeExpand = (rows, expanded) => {
3204
3208
  return handleBaseTreeExpand(rows, expanded).then(() => {
3205
3209
  handleVirtualTreeToList();
3206
- tablePrivateMethods.handleTableData();
3210
+ $xeTable.handleTableData();
3207
3211
  updateAfterDataIndex();
3208
3212
  return nextTick();
3209
3213
  }).then(() => {
3210
- return tableMethods.recalculate(true);
3214
+ return $xeTable.recalculate(true);
3211
3215
  }).then(() => {
3212
3216
  setTimeout(() => {
3213
- tableMethods.updateCellAreas();
3217
+ $xeTable.updateCellAreas();
3214
3218
  }, 30);
3215
3219
  });
3216
3220
  };
@@ -5401,7 +5405,7 @@ export default defineComponent({
5401
5405
  internalData.rowExpandedMaps = rowExpandedMaps;
5402
5406
  rows = rows.slice(rows.length - 1, rows.length);
5403
5407
  }
5404
- const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: tableMethods.getRowIndex(row), $rowIndex: tableMethods.getVMRowIndex(row) })) : rows;
5408
+ const validRows = toggleMethod ? rows.filter((row) => toggleMethod({ $table: $xeTable, expanded, column: expandColumn, columnIndex, $columnIndex, row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row) })) : rows;
5405
5409
  if (expanded) {
5406
5410
  validRows.forEach((row) => {
5407
5411
  const rowid = handleGetRowId(row);
@@ -6036,7 +6040,7 @@ export default defineComponent({
6036
6040
  if (getEventTargetNode(evnt, el, 'vxe-cell--filter').flag) {
6037
6041
  // 如果点击了筛选按钮
6038
6042
  }
6039
- else if (getEventTargetNode(evnt, tableFilter.$el).flag) {
6043
+ else if (getEventTargetNode(evnt, tableFilter.getRefMaps().refElem.value).flag) {
6040
6044
  // 如果点击筛选容器
6041
6045
  }
6042
6046
  else {
@@ -8131,6 +8135,10 @@ export default defineComponent({
8131
8135
  const currentColumnOpts = computeCurrentColumnOpts.value;
8132
8136
  const beforeRowMethod = currentColumnOpts.beforeSelectMethod || columnOpts.currentMethod;
8133
8137
  const { column: newValue } = params;
8138
+ const { trigger } = currentColumnOpts;
8139
+ if (trigger === 'manual') {
8140
+ return;
8141
+ }
8134
8142
  const isChange = oldValue !== newValue;
8135
8143
  if (!beforeRowMethod || beforeRowMethod({ column: newValue, $table: $xeTable })) {
8136
8144
  $xeTable.setCurrentColumn(newValue);
@@ -8148,6 +8156,10 @@ export default defineComponent({
8148
8156
  const currentRowOpts = computeCurrentRowOpts.value;
8149
8157
  const beforeRowMethod = currentRowOpts.beforeSelectMethod || rowOpts.currentMethod;
8150
8158
  const { row: newValue } = params;
8159
+ const { trigger } = currentRowOpts;
8160
+ if (trigger === 'manual') {
8161
+ return;
8162
+ }
8151
8163
  const isChange = oldValue !== newValue;
8152
8164
  if (!beforeRowMethod || beforeRowMethod({ row: newValue, $table: $xeTable })) {
8153
8165
  $xeTable.setCurrentRow(newValue);
@@ -8195,10 +8207,10 @@ export default defineComponent({
8195
8207
  * 展开树节点事件
8196
8208
  */
8197
8209
  triggerTreeExpandEvent(evnt, params) {
8198
- const { treeExpandLazyLoadedMaps } = internalData;
8210
+ const { treeExpandLazyLoadedMaps, treeEATime } = internalData;
8199
8211
  const treeOpts = computeTreeOpts.value;
8200
8212
  const { row, column } = params;
8201
- const { lazy, trigger } = treeOpts;
8213
+ const { lazy, trigger, accordion } = treeOpts;
8202
8214
  if (trigger === 'manual') {
8203
8215
  return;
8204
8216
  }
@@ -8208,7 +8220,17 @@ export default defineComponent({
8208
8220
  const expanded = !$xeTable.isTreeExpandByRow(row);
8209
8221
  const columnIndex = $xeTable.getColumnIndex(column);
8210
8222
  const $columnIndex = $xeTable.getVMColumnIndex(column);
8211
- $xeTable.setTreeExpand(row, expanded);
8223
+ if (treeEATime) {
8224
+ clearTimeout(treeEATime);
8225
+ }
8226
+ $xeTable.setTreeExpand(row, expanded).then(() => {
8227
+ if (accordion) {
8228
+ internalData.treeEATime = setTimeout(() => {
8229
+ internalData.treeEATime = undefined;
8230
+ $xeTable.scrollToRow(row);
8231
+ }, 30);
8232
+ }
8233
+ });
8212
8234
  dispatchEvent('toggle-tree-expand', { expanded, column, columnIndex, $columnIndex, row }, evnt);
8213
8235
  }
8214
8236
  },
@@ -9458,7 +9480,8 @@ export default defineComponent({
9458
9480
  if (isScrollXBig && mouseOpts.area) {
9459
9481
  errLog('vxe.error.notProp', ['mouse-config.area']);
9460
9482
  }
9461
- nextTick(() => {
9483
+ calcScrollbar();
9484
+ return nextTick().then(() => {
9462
9485
  updateStyle();
9463
9486
  });
9464
9487
  }
@@ -9555,6 +9578,7 @@ export default defineComponent({
9555
9578
  if (isScrollYBig && mouseOpts.area) {
9556
9579
  errLog('vxe.error.notProp', ['mouse-config.area']);
9557
9580
  }
9581
+ calcScrollbar();
9558
9582
  return nextTick().then(() => {
9559
9583
  updateStyle();
9560
9584
  });
@@ -10434,8 +10458,6 @@ export default defineComponent({
10434
10458
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
10435
10459
  initTpImg();
10436
10460
  }
10437
- ;
10438
- window.aa = $xeTable;
10439
10461
  nextTick(() => {
10440
10462
  const { data, exportConfig, importConfig, treeConfig, showOverflow, highlightCurrentRow, highlightCurrentColumn } = props;
10441
10463
  const { scrollXStore, scrollYStore } = internalData;
@@ -10493,6 +10515,9 @@ export default defineComponent({
10493
10515
  if (props.highlightHoverColumn) {
10494
10516
  warnLog('vxe.error.delProp', ['highlight-hover-column', 'column-config.isHover']);
10495
10517
  }
10518
+ if (props.resizable) {
10519
+ warnLog('vxe.error.delProp', ['resizable', 'column-config.resizable']);
10520
+ }
10496
10521
  // if (props.scrollY) {
10497
10522
  // warnLog('vxe.error.delProp', ['scroll-y', 'virtual-y-config'])
10498
10523
  // }
@@ -1467,9 +1467,11 @@
1467
1467
  position: absolute;
1468
1468
  top: 0;
1469
1469
  min-width: 100px;
1470
+ font-size: var(--vxe-ui-font-size-default);
1470
1471
  border-radius: var(--vxe-ui-border-radius);
1471
1472
  background-color: var(--vxe-ui-layout-background-color);
1472
1473
  border: 1px solid var(--vxe-ui-base-popup-border-color);
1474
+ color: var(--vxe-ui-font-color);
1473
1475
  box-shadow: var(--vxe-ui-base-popup-box-shadow);
1474
1476
  z-index: 10;
1475
1477
  }
@@ -1579,6 +1581,16 @@
1579
1581
  vertical-align: middle;
1580
1582
  }
1581
1583
 
1584
+ .vxe-table--filter-wrapper.size--medium {
1585
+ font-size: var(--vxe-ui-font-size-medium);
1586
+ }
1587
+ .vxe-table--filter-wrapper.size--small {
1588
+ font-size: var(--vxe-ui-font-size-small);
1589
+ }
1590
+ .vxe-table--filter-wrapper.size--mini {
1591
+ font-size: var(--vxe-ui-font-size-mini);
1592
+ }
1593
+
1582
1594
  .vxe-table--context-menu-wrapper {
1583
1595
  display: none;
1584
1596
  }
@@ -2997,6 +3009,9 @@
2997
3009
  user-select: none;
2998
3010
  cursor: pointer;
2999
3011
  }
3012
+ .vxe-table--render-default .vxe-tree--btn-wrapper > i {
3013
+ background-color: var(--vxe-ui-layout-background-color);
3014
+ }
3000
3015
  .vxe-table--render-default .vxe-tree--node-btn {
3001
3016
  display: block;
3002
3017
  color: var(--vxe-ui-font-lighten-color);
@@ -3017,6 +3032,9 @@
3017
3032
  .vxe-table--render-default .vxe-body--column.col--cs-height, .vxe-table--render-default .vxe-body--column.col--rs-height, .vxe-table--render-default .vxe-body--column.col--auto-height {
3018
3033
  overflow: hidden;
3019
3034
  }
3035
+ .vxe-table--render-default .vxe-body--column.col--cs-height.col--tree-node, .vxe-table--render-default .vxe-body--column.col--rs-height.col--tree-node, .vxe-table--render-default .vxe-body--column.col--auto-height.col--tree-node {
3036
+ overflow: unset;
3037
+ }
3020
3038
  .vxe-table--render-default .vxe-body--column.col--cs-height > .vxe-cell, .vxe-table--render-default .vxe-body--column.col--rs-height > .vxe-cell, .vxe-table--render-default .vxe-body--column.col--auto-height > .vxe-cell {
3021
3039
  overflow: hidden;
3022
3040
  }