vxe-table 4.13.0-beta.2 → 4.13.0-beta.4

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 (34) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/module/filter/hook.js +11 -38
  3. package/es/table/src/cell.js +7 -7
  4. package/es/table/src/emits.js +4 -0
  5. package/es/table/src/table.js +29 -8
  6. package/es/ui/index.js +1 -1
  7. package/es/ui/src/log.js +1 -1
  8. package/lib/index.umd.js +20 -48
  9. package/lib/index.umd.min.js +1 -1
  10. package/lib/style.css +1 -1
  11. package/lib/table/module/filter/hook.js +10 -39
  12. package/lib/table/module/filter/hook.min.js +1 -1
  13. package/lib/table/src/cell.js +4 -4
  14. package/lib/table/src/cell.min.js +1 -1
  15. package/lib/table/src/emits.js +1 -1
  16. package/lib/table/src/emits.min.js +1 -1
  17. package/lib/table/src/table.js +39 -14
  18. package/lib/table/src/table.min.js +1 -1
  19. package/lib/ui/index.js +1 -1
  20. package/lib/ui/index.min.js +1 -1
  21. package/lib/ui/src/log.js +1 -1
  22. package/lib/ui/src/log.min.js +1 -1
  23. package/package.json +2 -2
  24. package/packages/grid/src/grid.ts +1 -1
  25. package/packages/table/module/filter/hook.ts +10 -34
  26. package/packages/table/src/cell.ts +7 -7
  27. package/packages/table/src/emits.ts +7 -1
  28. package/packages/table/src/table.ts +27 -8
  29. /package/es/{iconfont.1743992184381.ttf → iconfont.1744095189878.ttf} +0 -0
  30. /package/es/{iconfont.1743992184381.woff → iconfont.1744095189878.woff} +0 -0
  31. /package/es/{iconfont.1743992184381.woff2 → iconfont.1744095189878.woff2} +0 -0
  32. /package/lib/{iconfont.1743992184381.ttf → iconfont.1744095189878.ttf} +0 -0
  33. /package/lib/{iconfont.1743992184381.woff → iconfont.1744095189878.woff} +0 -0
  34. /package/lib/{iconfont.1743992184381.woff2 → iconfont.1744095189878.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 { getDomNode, triggerEvent } from '../../../ui/src/dom';
5
+ import { toCssUnit, triggerEvent } 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'];
@@ -66,11 +66,9 @@ hooks.add('tableFilterModule', {
66
66
  filterStore.visible = false;
67
67
  }
68
68
  else {
69
- const { clientY, pageX } = evnt;
70
69
  const el = refElem.value;
71
70
  const tableRect = el.getBoundingClientRect();
72
- const targetElem = evnt.target;
73
- const { visibleWidth } = getDomNode();
71
+ const btnElem = evnt.currentTarget;
74
72
  const { filters, filterMultiple, filterRender } = column;
75
73
  const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
76
74
  const frMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null);
@@ -104,44 +102,19 @@ hooks.add('tableFilterModule', {
104
102
  if (!filterWrapperElem) {
105
103
  return;
106
104
  }
105
+ const btnRect = btnElem.getBoundingClientRect();
107
106
  const filterWidth = filterWrapperElem.offsetWidth;
108
107
  const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
109
108
  const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
110
109
  const centerWidth = filterWidth / 2;
111
- const minMargin = 10;
112
- const maxLeft = el.clientWidth - filterWidth - minMargin;
113
- let left, right;
114
- const thEl = targetElem.offsetParent;
115
- const trEl = thEl.offsetParent;
116
- const style = {
117
- top: `${targetElem.offsetTop + thEl.offsetTop + targetElem.offsetHeight}px`
118
- };
110
+ const left = btnRect.left - tableRect.left - centerWidth;
111
+ const top = btnRect.top - tableRect.top + btnElem.clientHeight;
119
112
  // 判断面板不能大于表格高度
120
- const maxHeight = Math.max(40, el.clientHeight - (clientY - tableRect.y) - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
121
- if (column.fixed === 'left') {
122
- left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth;
123
- }
124
- else if (column.fixed === 'right') {
125
- right = (thEl.offsetWidth - targetElem.offsetLeft) + (trEl.offsetWidth - trEl.offsetLeft) - column.renderWidth - centerWidth;
126
- }
127
- else {
128
- left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth - headerScrollElem.scrollLeft;
129
- }
130
- if (left) {
131
- const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
132
- if (overflowWidth > 0) {
133
- left -= overflowWidth;
134
- }
135
- style.left = `${Math.min(maxLeft, Math.max(minMargin, left))}px`;
136
- }
137
- else if (right) {
138
- const overflowWidth = (pageX + filterWidth - centerWidth + minMargin) - visibleWidth;
139
- if (overflowWidth > 0) {
140
- right += overflowWidth;
141
- }
142
- style.right = `${Math.max(minMargin, right)}px`;
143
- }
144
- filterStore.style = style;
113
+ const maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
114
+ filterStore.style = {
115
+ top: toCssUnit(top),
116
+ left: toCssUnit(left)
117
+ };
145
118
  filterStore.maxHeight = maxHeight;
146
119
  });
147
120
  }
@@ -251,7 +224,7 @@ hooks.add('tableFilterModule', {
251
224
  return $xeTable.scrollToColumn(column).then(() => {
252
225
  const headerWrapperElem = getRefElem(elemStore[`${fixed || 'main'}-header-wrapper`] || elemStore['main-header-wrapper']);
253
226
  if (headerWrapperElem) {
254
- const filterBtnElem = headerWrapperElem.querySelector(`.vxe-header--column.${column.id} .vxe-filter--btn`);
227
+ const filterBtnElem = headerWrapperElem.querySelector(`.vxe-header--column.${column.id} .vxe-cell--filter`);
255
228
  triggerEvent(filterBtnElem, 'click');
256
229
  }
257
230
  });
@@ -882,16 +882,16 @@ export const Cell = {
882
882
  h('span', {
883
883
  class: ['vxe-cell--filter', {
884
884
  'is--active': filterStore.visible && filterStore.column === column
885
- }]
885
+ }],
886
+ onClick(evnt) {
887
+ if ($table.triggerFilterEvent) {
888
+ $table.triggerFilterEvent(evnt, params.column, params);
889
+ }
890
+ }
886
891
  }, [
887
892
  h('i', {
888
893
  class: ['vxe-filter--btn', hasFilter ? (iconMatch || getIcon().TABLE_FILTER_MATCH) : (iconNone || getIcon().TABLE_FILTER_NONE)],
889
- title: getI18n('vxe.table.filter'),
890
- onClick(evnt) {
891
- if ($table.triggerFilterEvent) {
892
- $table.triggerFilterEvent(evnt, params.column, params);
893
- }
894
- }
894
+ title: getI18n('vxe.table.filter')
895
895
  })
896
896
  ])
897
897
  ];
@@ -7,6 +7,10 @@ export default [
7
7
  'copy',
8
8
  'cut',
9
9
  'current-change',
10
+ 'current-row-change',
11
+ 'current-row-disabled',
12
+ 'current-column-change',
13
+ 'current-column-disabled',
10
14
  'radio-change',
11
15
  'checkbox-change',
12
16
  'checkbox-all',
@@ -8105,7 +8105,7 @@ export default defineComponent({
8105
8105
  isChange = oldValue === newValue;
8106
8106
  if (isChange) {
8107
8107
  newValue = null;
8108
- tableMethods.clearRadioRow();
8108
+ $xeTable.clearRadioRow();
8109
8109
  }
8110
8110
  }
8111
8111
  if (isChange) {
@@ -8113,25 +8113,40 @@ export default defineComponent({
8113
8113
  }
8114
8114
  },
8115
8115
  triggerCurrentColumnEvent(evnt, params) {
8116
+ const { currentColumn: oldValue } = reactData;
8116
8117
  const columnOpts = computeColumnOpts.value;
8117
- const { currentMethod } = columnOpts;
8118
- const { column } = params;
8119
- if (!currentMethod || currentMethod({ column })) {
8120
- tableMethods.setCurrentColumn(column);
8118
+ const currentColumnOpts = computeCurrentColumnOpts.value;
8119
+ const beforeRowMethod = currentColumnOpts.beforeSelectMethod || columnOpts.currentMethod;
8120
+ const { column: newValue } = params;
8121
+ const isChange = oldValue !== newValue;
8122
+ if (!beforeRowMethod || beforeRowMethod({ column: newValue, $table: $xeTable })) {
8123
+ $xeTable.setCurrentColumn(newValue);
8124
+ if (isChange) {
8125
+ dispatchEvent('current-column-change', Object.assign({ oldValue, newValue }, params), evnt);
8126
+ }
8127
+ }
8128
+ else {
8129
+ dispatchEvent('current-column-disabled', params, evnt);
8121
8130
  }
8122
8131
  },
8123
8132
  triggerCurrentRowEvent(evnt, params) {
8124
8133
  const { currentRow: oldValue } = reactData;
8125
8134
  const rowOpts = computeRowOpts.value;
8126
- const { currentMethod } = rowOpts;
8135
+ const currentRowOpts = computeCurrentRowOpts.value;
8136
+ const beforeRowMethod = currentRowOpts.beforeSelectMethod || rowOpts.currentMethod;
8127
8137
  const { row: newValue } = params;
8128
8138
  const isChange = oldValue !== newValue;
8129
- if (!currentMethod || currentMethod({ row: newValue })) {
8130
- tableMethods.setCurrentRow(newValue);
8139
+ if (!beforeRowMethod || beforeRowMethod({ row: newValue, $table: $xeTable })) {
8140
+ $xeTable.setCurrentRow(newValue);
8131
8141
  if (isChange) {
8142
+ dispatchEvent('current-row-change', Object.assign({ oldValue, newValue }, params), evnt);
8143
+ // 已废弃
8132
8144
  dispatchEvent('current-change', Object.assign({ oldValue, newValue }, params), evnt);
8133
8145
  }
8134
8146
  }
8147
+ else {
8148
+ dispatchEvent('current-row-disabled', params, evnt);
8149
+ }
8135
8150
  },
8136
8151
  /**
8137
8152
  * 展开行事件
@@ -10527,6 +10542,12 @@ export default defineComponent({
10527
10542
  if (checkboxOpts.halfField) {
10528
10543
  warnLog('vxe.error.delProp', ['checkbox-config.halfField', 'checkbox-config.indeterminateField']);
10529
10544
  }
10545
+ if (rowOpts.currentMethod) {
10546
+ warnLog('vxe.error.delProp', ['row-config.currentMethod', 'current-row-config.beforeSelectMethod']);
10547
+ }
10548
+ if (columnOpts.currentMethod) {
10549
+ warnLog('vxe.error.delProp', ['row-config.currentMethod', 'current-column-config.beforeSelectMethod']);
10550
+ }
10530
10551
  if ((rowOpts.isCurrent || highlightCurrentRow) && props.keyboardConfig && keyboardOpts.isArrow && !XEUtils.isBoolean(currentRowOpts.isFollowSelected)) {
10531
10552
  warnLog('vxe.error.notConflictProp', ['row-config.isCurrent', 'current-row-config.isFollowSelected']);
10532
10553
  }
package/es/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { getFuncText } from './src/utils';
3
- export const version = "4.13.0-beta.2";
3
+ export const version = "4.13.0-beta.4";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `table v${"4.13.0-beta.2"}`;
3
+ const version = `table v${"4.13.0-beta.4"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);
package/lib/index.umd.js CHANGED
@@ -3138,7 +3138,7 @@ function eqEmptyValue(cellValue) {
3138
3138
  ;// ./packages/ui/index.ts
3139
3139
 
3140
3140
 
3141
- const version = "4.13.0-beta.2";
3141
+ const version = "4.13.0-beta.4";
3142
3142
  core_.VxeUI.version = version;
3143
3143
  core_.VxeUI.tableVersion = version;
3144
3144
  core_.VxeUI.setConfig({
@@ -3587,7 +3587,7 @@ var esnext_iterator_some = __webpack_require__(7550);
3587
3587
  const {
3588
3588
  log: log_log
3589
3589
  } = core_.VxeUI;
3590
- const log_version = `table v${"4.13.0-beta.2"}`;
3590
+ const log_version = `table v${"4.13.0-beta.4"}`;
3591
3591
  const warnLog = log_log.create('warn', log_version);
3592
3592
  const errLog = log_log.create('error', log_version);
3593
3593
  ;// ./packages/table/src/columnInfo.ts
@@ -5806,15 +5806,15 @@ const Cell = {
5806
5806
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
5807
5807
  class: ['vxe-cell--filter', {
5808
5808
  'is--active': filterStore.visible && filterStore.column === column
5809
- }]
5810
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
5811
- class: ['vxe-filter--btn', hasFilter ? iconMatch || cell_getIcon().TABLE_FILTER_MATCH : iconNone || cell_getIcon().TABLE_FILTER_NONE],
5812
- title: cell_getI18n('vxe.table.filter'),
5809
+ }],
5813
5810
  onClick(evnt) {
5814
5811
  if ($table.triggerFilterEvent) {
5815
5812
  $table.triggerFilterEvent(evnt, params.column, params);
5816
5813
  }
5817
5814
  }
5815
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
5816
+ class: ['vxe-filter--btn', hasFilter ? iconMatch || cell_getIcon().TABLE_FILTER_MATCH : iconNone || cell_getIcon().TABLE_FILTER_NONE],
5817
+ title: cell_getI18n('vxe.table.filter')
5818
5818
  })])];
5819
5819
  }
5820
5820
  return [];
@@ -8322,7 +8322,7 @@ const {
8322
8322
  params: Object
8323
8323
  });
8324
8324
  ;// ./packages/table/src/emits.ts
8325
- /* harmony default export */ var emits = (['update:data', 'keydown-start', 'keydown', 'keydown-end', 'paste', 'copy', 'cut', 'current-change', 'radio-change', 'checkbox-change', 'checkbox-all', 'checkbox-range-start', 'checkbox-range-change', 'checkbox-range-end', 'checkbox-range-select', 'cell-click', 'cell-dblclick', 'cell-menu', 'cell-mouseenter', 'cell-mouseleave', 'cell-selected', 'cell-delete-value', 'cell-backspace-value', 'header-cell-click', 'header-cell-dblclick', 'header-cell-menu', 'footer-cell-click', 'footer-cell-dblclick', 'footer-cell-menu', 'clear-merge', 'sort-change', 'clear-sort', 'filter-change', 'filter-visible', 'clear-filter', 'resizable-change', 'column-resizable-change', 'row-resizable-change', 'toggle-row-expand', 'toggle-tree-expand', 'menu-click', 'edit-closed', 'row-dragstart', 'row-dragover', 'row-dragend', 'column-dragstart', 'column-dragover', 'column-dragend', 'enter-append-row', 'edit-actived', 'edit-activated', 'edit-disabled', 'valid-error', 'scroll', 'scroll-boundary', 'custom', 'change-fnr', 'open-fnr', 'show-fnr', 'hide-fnr', 'fnr-change', 'fnr-find', 'fnr-find-all', 'fnr-replace', 'fnr-replace-all', 'cell-area-copy', 'cell-area-cut', 'cell-area-paste', 'cell-area-merge', 'clear-cell-area-selection', 'clear-cell-area-merge', 'header-cell-area-selection', 'cell-area-selection-invalid', 'cell-area-selection-start', 'cell-area-selection-drag', 'cell-area-selection-end', 'cell-area-extension-start', 'cell-area-extension-drag', 'cell-area-extension-end', 'cell-area-selection-all-start', 'cell-area-selection-all-end', 'cell-area-arrows-start', 'cell-area-arrows-end', 'active-cell-change-start', 'active-cell-change-end']);
8325
+ /* harmony default export */ var emits = (['update:data', 'keydown-start', 'keydown', 'keydown-end', 'paste', 'copy', 'cut', 'current-change', 'current-row-change', 'current-row-disabled', 'current-column-change', 'current-column-disabled', 'radio-change', 'checkbox-change', 'checkbox-all', 'checkbox-range-start', 'checkbox-range-change', 'checkbox-range-end', 'checkbox-range-select', 'cell-click', 'cell-dblclick', 'cell-menu', 'cell-mouseenter', 'cell-mouseleave', 'cell-selected', 'cell-delete-value', 'cell-backspace-value', 'header-cell-click', 'header-cell-dblclick', 'header-cell-menu', 'footer-cell-click', 'footer-cell-dblclick', 'footer-cell-menu', 'clear-merge', 'sort-change', 'clear-sort', 'filter-change', 'filter-visible', 'clear-filter', 'resizable-change', 'column-resizable-change', 'row-resizable-change', 'toggle-row-expand', 'toggle-tree-expand', 'menu-click', 'edit-closed', 'row-dragstart', 'row-dragover', 'row-dragend', 'column-dragstart', 'column-dragover', 'column-dragend', 'enter-append-row', 'edit-actived', 'edit-activated', 'edit-disabled', 'valid-error', 'scroll', 'scroll-boundary', 'custom', 'change-fnr', 'open-fnr', 'show-fnr', 'hide-fnr', 'fnr-change', 'fnr-find', 'fnr-find-all', 'fnr-replace', 'fnr-replace-all', 'cell-area-copy', 'cell-area-cut', 'cell-area-paste', 'cell-area-merge', 'clear-cell-area-selection', 'clear-cell-area-merge', 'header-cell-area-selection', 'cell-area-selection-invalid', 'cell-area-selection-start', 'cell-area-selection-drag', 'cell-area-selection-end', 'cell-area-extension-start', 'cell-area-extension-drag', 'cell-area-extension-end', 'cell-area-selection-all-start', 'cell-area-selection-all-end', 'cell-area-arrows-start', 'cell-area-arrows-end', 'active-cell-change-start', 'active-cell-change-end']);
8326
8326
  ;// ./packages/table/module/custom/panel.ts
8327
8327
 
8328
8328
 
@@ -11137,7 +11137,8 @@ if(isEnableConf(editConfig)&&editOpts.trigger==='dblclick'){if(actived.row&&acti
11137
11137
  * 多选,选中所有事件
11138
11138
  */triggerCheckAllEvent(evnt,value){const checkboxOpts=computeCheckboxOpts.value;const{trigger}=checkboxOpts;if(trigger==='manual'){return;}if(evnt){evnt.stopPropagation();}handleCheckAllEvent(evnt,value);},/**
11139
11139
  * 单选,行选中事件
11140
- */triggerRadioRowEvent(evnt,params){const{selectRadioRow:oldValue}=reactData;const{row}=params;const radioOpts=computeRadioOpts.value;const{trigger}=radioOpts;if(trigger==='manual'){return;}evnt.stopPropagation();let newValue=row;let isChange=oldValue!==newValue;if(isChange){handleCheckedRadioRow(newValue);}else if(!radioOpts.strict){isChange=oldValue===newValue;if(isChange){newValue=null;tableMethods.clearRadioRow();}}if(isChange){dispatchEvent('radio-change',{oldValue,newValue,...params},evnt);}},triggerCurrentColumnEvent(evnt,params){const columnOpts=computeColumnOpts.value;const{currentMethod}=columnOpts;const{column}=params;if(!currentMethod||currentMethod({column})){tableMethods.setCurrentColumn(column);}},triggerCurrentRowEvent(evnt,params){const{currentRow:oldValue}=reactData;const rowOpts=computeRowOpts.value;const{currentMethod}=rowOpts;const{row:newValue}=params;const isChange=oldValue!==newValue;if(!currentMethod||currentMethod({row:newValue})){tableMethods.setCurrentRow(newValue);if(isChange){dispatchEvent('current-change',{oldValue,newValue,...params},evnt);}}},/**
11140
+ */triggerRadioRowEvent(evnt,params){const{selectRadioRow:oldValue}=reactData;const{row}=params;const radioOpts=computeRadioOpts.value;const{trigger}=radioOpts;if(trigger==='manual'){return;}evnt.stopPropagation();let newValue=row;let isChange=oldValue!==newValue;if(isChange){handleCheckedRadioRow(newValue);}else if(!radioOpts.strict){isChange=oldValue===newValue;if(isChange){newValue=null;$xeTable.clearRadioRow();}}if(isChange){dispatchEvent('radio-change',{oldValue,newValue,...params},evnt);}},triggerCurrentColumnEvent(evnt,params){const{currentColumn:oldValue}=reactData;const columnOpts=computeColumnOpts.value;const currentColumnOpts=computeCurrentColumnOpts.value;const beforeRowMethod=currentColumnOpts.beforeSelectMethod||columnOpts.currentMethod;const{column:newValue}=params;const isChange=oldValue!==newValue;if(!beforeRowMethod||beforeRowMethod({column:newValue,$table:$xeTable})){$xeTable.setCurrentColumn(newValue);if(isChange){dispatchEvent('current-column-change',{oldValue,newValue,...params},evnt);}}else{dispatchEvent('current-column-disabled',params,evnt);}},triggerCurrentRowEvent(evnt,params){const{currentRow:oldValue}=reactData;const rowOpts=computeRowOpts.value;const currentRowOpts=computeCurrentRowOpts.value;const beforeRowMethod=currentRowOpts.beforeSelectMethod||rowOpts.currentMethod;const{row:newValue}=params;const isChange=oldValue!==newValue;if(!beforeRowMethod||beforeRowMethod({row:newValue,$table:$xeTable})){$xeTable.setCurrentRow(newValue);if(isChange){dispatchEvent('current-row-change',{oldValue,newValue,...params},evnt);// 已废弃
11141
+ dispatchEvent('current-change',{oldValue,newValue,...params},evnt);}}else{dispatchEvent('current-row-disabled',params,evnt);}},/**
11141
11142
  * 展开行事件
11142
11143
  */triggerRowExpandEvent(evnt,params){const{expandColumn:column}=reactData;const{rowExpandLazyLoadedMaps}=internalData;const expandOpts=computeExpandOpts.value;const{row}=params;const{lazy,trigger}=expandOpts;if(trigger==='manual'){return;}evnt.stopPropagation();const rowid=getRowid($xeTable,row);if(!lazy||!rowExpandLazyLoadedMaps[rowid]){const expanded=!$xeTable.isRowExpandByRow(row);const columnIndex=$xeTable.getColumnIndex(column);const $columnIndex=$xeTable.getVMColumnIndex(column);$xeTable.setRowExpand(row,expanded);dispatchEvent('toggle-row-expand',{expanded,column,columnIndex,$columnIndex,row,rowIndex:$xeTable.getRowIndex(row),$rowIndex:$xeTable.getVMRowIndex(row)},evnt);}},/**
11143
11144
  * 展开树节点事件
@@ -11254,7 +11255,7 @@ if((scrollXLoad||scrollYLoad)&&expandColumn&&expandOpts.mode!=='fixed'){warnLog(
11254
11255
  // warnLog('vxe.error.delProp', ['scroll-x', 'virtual-x-config'])
11255
11256
  // }
11256
11257
  // 检查导入导出类型,如果自定义导入导出方法,则不校验类型
11257
- if(importConfig&&importOpts.types&&!importOpts.importMethod&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includeArrays(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps),importOpts.types)){warnLog('vxe.error.errProp',[`export-config.types=${importOpts.types.join(',')}`,importOpts.types.filter(type=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includes(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps),type)).join(',')||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps).join(',')]);}if(exportConfig&&exportOpts.types&&!exportOpts.exportMethod&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includeArrays(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps),exportOpts.types)){warnLog('vxe.error.errProp',[`export-config.types=${exportOpts.types.join(',')}`,exportOpts.types.filter(type=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includes(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps),type)).join(',')||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps).join(',')]);}if(!props.id){if((props.customConfig?isEnableConf(customOpts):customOpts.enabled)&&customOpts.storage){errLog('vxe.error.reqProp',['id']);}}if(props.treeConfig&&checkboxOpts.range){errLog('vxe.error.noTree',['checkbox-config.range']);}if(rowOpts.height&&!props.showOverflow){warnLog('vxe.error.notProp',['table.show-overflow']);}if(!$xeTable.triggerCellAreaMousedownEvent){if(props.areaConfig){warnLog('vxe.error.notProp',['area-config']);}if(props.clipConfig){warnLog('vxe.error.notProp',['clip-config']);}if(props.fnrConfig){warnLog('vxe.error.notProp',['fnr-config']);}if(mouseOpts.area){errLog('vxe.error.notProp',['mouse-config.area']);return;}}if(treeConfig&&rowOpts.drag&&!treeOpts.transform){errLog('vxe.error.notSupportProp',['column-config.drag','tree-config.transform=false','tree-config.transform=true']);}if(props.dragConfig){warnLog('vxe.error.delProp',['drag-config','row-drag-config']);}if(props.treeConfig&&treeOpts.children){warnLog('vxe.error.delProp',['tree-config.children','tree-config.childrenField']);}if(props.treeConfig&&treeOpts.line){warnLog('vxe.error.delProp',['tree-config.line','tree-config.showLine']);}if(mouseOpts.area&&mouseOpts.selected){warnLog('vxe.error.errConflicts',['mouse-config.area','mouse-config.selected']);}if(mouseOpts.area&&props.treeConfig&&!treeOpts.transform){errLog('vxe.error.noTree',['mouse-config.area']);}if(props.editConfig&&editOpts.activeMethod){warnLog('vxe.error.delProp',['edit-config.activeMethod','edit-config.beforeEditMethod']);}if(props.treeConfig&&checkboxOpts.isShiftKey){errLog('vxe.error.errConflicts',['tree-config','checkbox-config.isShiftKey']);}if(checkboxOpts.halfField){warnLog('vxe.error.delProp',['checkbox-config.halfField','checkbox-config.indeterminateField']);}if((rowOpts.isCurrent||highlightCurrentRow)&&props.keyboardConfig&&keyboardOpts.isArrow&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(currentRowOpts.isFollowSelected)){warnLog('vxe.error.notConflictProp',['row-config.isCurrent','current-row-config.isFollowSelected']);}if((columnOpts.isCurrent||highlightCurrentColumn)&&props.keyboardConfig&&keyboardOpts.isArrow&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(currentColumnOpts.isFollowSelected)){warnLog('vxe.error.notConflictProp',['column-config.isCurrent','current-column-config.isFollowSelected']);}// 如果不支持虚拟滚动
11258
+ if(importConfig&&importOpts.types&&!importOpts.importMethod&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includeArrays(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps),importOpts.types)){warnLog('vxe.error.errProp',[`export-config.types=${importOpts.types.join(',')}`,importOpts.types.filter(type=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includes(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps),type)).join(',')||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps).join(',')]);}if(exportConfig&&exportOpts.types&&!exportOpts.exportMethod&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includeArrays(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps),exportOpts.types)){warnLog('vxe.error.errProp',[`export-config.types=${exportOpts.types.join(',')}`,exportOpts.types.filter(type=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includes(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps),type)).join(',')||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps).join(',')]);}if(!props.id){if((props.customConfig?isEnableConf(customOpts):customOpts.enabled)&&customOpts.storage){errLog('vxe.error.reqProp',['id']);}}if(props.treeConfig&&checkboxOpts.range){errLog('vxe.error.noTree',['checkbox-config.range']);}if(rowOpts.height&&!props.showOverflow){warnLog('vxe.error.notProp',['table.show-overflow']);}if(!$xeTable.triggerCellAreaMousedownEvent){if(props.areaConfig){warnLog('vxe.error.notProp',['area-config']);}if(props.clipConfig){warnLog('vxe.error.notProp',['clip-config']);}if(props.fnrConfig){warnLog('vxe.error.notProp',['fnr-config']);}if(mouseOpts.area){errLog('vxe.error.notProp',['mouse-config.area']);return;}}if(treeConfig&&rowOpts.drag&&!treeOpts.transform){errLog('vxe.error.notSupportProp',['column-config.drag','tree-config.transform=false','tree-config.transform=true']);}if(props.dragConfig){warnLog('vxe.error.delProp',['drag-config','row-drag-config']);}if(props.treeConfig&&treeOpts.children){warnLog('vxe.error.delProp',['tree-config.children','tree-config.childrenField']);}if(props.treeConfig&&treeOpts.line){warnLog('vxe.error.delProp',['tree-config.line','tree-config.showLine']);}if(mouseOpts.area&&mouseOpts.selected){warnLog('vxe.error.errConflicts',['mouse-config.area','mouse-config.selected']);}if(mouseOpts.area&&props.treeConfig&&!treeOpts.transform){errLog('vxe.error.noTree',['mouse-config.area']);}if(props.editConfig&&editOpts.activeMethod){warnLog('vxe.error.delProp',['edit-config.activeMethod','edit-config.beforeEditMethod']);}if(props.treeConfig&&checkboxOpts.isShiftKey){errLog('vxe.error.errConflicts',['tree-config','checkbox-config.isShiftKey']);}if(checkboxOpts.halfField){warnLog('vxe.error.delProp',['checkbox-config.halfField','checkbox-config.indeterminateField']);}if(rowOpts.currentMethod){warnLog('vxe.error.delProp',['row-config.currentMethod','current-row-config.beforeSelectMethod']);}if(columnOpts.currentMethod){warnLog('vxe.error.delProp',['row-config.currentMethod','current-column-config.beforeSelectMethod']);}if((rowOpts.isCurrent||highlightCurrentRow)&&props.keyboardConfig&&keyboardOpts.isArrow&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(currentRowOpts.isFollowSelected)){warnLog('vxe.error.notConflictProp',['row-config.isCurrent','current-row-config.isFollowSelected']);}if((columnOpts.isCurrent||highlightCurrentColumn)&&props.keyboardConfig&&keyboardOpts.isArrow&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(currentColumnOpts.isFollowSelected)){warnLog('vxe.error.notConflictProp',['column-config.isCurrent','current-column-config.isFollowSelected']);}// 如果不支持虚拟滚动
11258
11259
  if(props.spanMethod){if(virtualXOpts.enabled){warnLog('vxe.error.notConflictProp',['span-method','virtual-x-config.enabled=false']);}if(virtualYOpts.enabled){warnLog('vxe.error.notConflictProp',['span-method','virtual-y-config.enabled=false']);}}if(props.footerSpanMethod){if(virtualXOpts.enabled){warnLog('vxe.error.notConflictProp',['footer-span-method','virtual-x-config.enabled=false']);}}// 检查是否有安装需要的模块
11259
11260
  if(props.editConfig&&!$xeTable.insert){errLog('vxe.error.reqModule',['Edit']);}if(props.editRules&&!$xeTable.validate){errLog('vxe.error.reqModule',['Validator']);}if((checkboxOpts.range||props.keyboardConfig||props.mouseConfig)&&!$xeTable.handleCellMousedownEvent){errLog('vxe.error.reqModule',['Keyboard']);}if((props.printConfig||props.importConfig||props.exportConfig)&&!$xeTable.exportData){errLog('vxe.error.reqModule',['Export']);}Object.assign(scrollYStore,{startIndex:0,endIndex:0,visibleSize:0});Object.assign(scrollXStore,{startIndex:0,endIndex:0,visibleSize:0});loadTableData(data||[],true).then(()=>{if(data&&data.length){internalData.inited=true;internalData.initStatus=true;handleLoadDefaults();}handleInitDefaults();updateStyle();});if(props.autoResize){const el=refElem.value;const parentEl=tablePrivateMethods.getParentElem();resizeObserver=table_globalResize.create(()=>{if(props.autoResize){tableMethods.recalculate(true);}});if(el){resizeObserver.observe(el);}if(parentEl){resizeObserver.observe(parentEl);}}});const tableViewportEl=refTableViewportElem.value;if(tableViewportEl){tableViewportEl.addEventListener('wheel',$xeTable.triggerBodyWheelEvent,{passive:false});}table_globalEvents.on($xeTable,'paste',handleGlobalPasteEvent);table_globalEvents.on($xeTable,'copy',handleGlobalCopyEvent);table_globalEvents.on($xeTable,'cut',handleGlobalCutEvent);table_globalEvents.on($xeTable,'mousedown',handleGlobalMousedownEvent);table_globalEvents.on($xeTable,'blur',handleGlobalBlurEvent);table_globalEvents.on($xeTable,'mousewheel',handleGlobalMousewheelEvent);table_globalEvents.on($xeTable,'keydown',handleGlobalKeydownEvent);table_globalEvents.on($xeTable,'resize',handleGlobalResizeEvent);table_globalEvents.on($xeTable,'contextmenu',$xeTable.handleGlobalContextmenuEvent);tablePrivateMethods.preventEvent(null,'mounted',{$table:$xeTable});});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(()=>{const tableViewportEl=refTableViewportElem.value;if(tableViewportEl){tableViewportEl.removeEventListener('wheel',$xeTable.triggerBodyWheelEvent);}if(resizeObserver){resizeObserver.disconnect();}tableMethods.closeFilter();if($xeTable.closeMenu){$xeTable.closeMenu();}tablePrivateMethods.preventEvent(null,'beforeUnmount',{$table:$xeTable});});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(()=>{table_globalEvents.off($xeTable,'paste');table_globalEvents.off($xeTable,'copy');table_globalEvents.off($xeTable,'cut');table_globalEvents.off($xeTable,'mousedown');table_globalEvents.off($xeTable,'blur');table_globalEvents.off($xeTable,'mousewheel');table_globalEvents.off($xeTable,'keydown');table_globalEvents.off($xeTable,'resize');table_globalEvents.off($xeTable,'contextmenu');tablePrivateMethods.preventEvent(null,'unmounted',{$table:$xeTable});});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{if(props.loading){if(!VxeUILoadingComponent&&!slots.loading){errLog('vxe.error.reqComp',['vxe-loading']);}}if(props.showOverflow===true||props.showOverflow==='tooltip'||props.showHeaderOverflow===true||props.showHeaderOverflow==='tooltip'||props.showFooterOverflow===true||props.showFooterOverflow==='tooltip'||props.tooltipConfig||props.editRules){if(!VxeUITooltipComponent){errLog('vxe.error.reqComp',['vxe-tooltip']);}}});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeColgroup',null);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeTable',$xeTable);$xeTable.renderVN=renderVN;return $xeTable;},render(){return this.renderVN();}}));
11260
11261
  ;// ./packages/toolbar/src/toolbar.ts
@@ -13664,16 +13665,9 @@ hook_hooks.add('tableFilterModule', {
13664
13665
  if (filterStore.column === column && filterStore.visible) {
13665
13666
  filterStore.visible = false;
13666
13667
  } else {
13667
- const {
13668
- clientY,
13669
- pageX
13670
- } = evnt;
13671
13668
  const el = refElem.value;
13672
13669
  const tableRect = el.getBoundingClientRect();
13673
- const targetElem = evnt.target;
13674
- const {
13675
- visibleWidth
13676
- } = getDomNode();
13670
+ const btnElem = evnt.currentTarget;
13677
13671
  const {
13678
13672
  filters,
13679
13673
  filterMultiple,
@@ -13718,41 +13712,19 @@ hook_hooks.add('tableFilterModule', {
13718
13712
  if (!filterWrapperElem) {
13719
13713
  return;
13720
13714
  }
13715
+ const btnRect = btnElem.getBoundingClientRect();
13721
13716
  const filterWidth = filterWrapperElem.offsetWidth;
13722
13717
  const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
13723
13718
  const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
13724
13719
  const centerWidth = filterWidth / 2;
13725
- const minMargin = 10;
13726
- const maxLeft = el.clientWidth - filterWidth - minMargin;
13727
- let left, right;
13728
- const thEl = targetElem.offsetParent;
13729
- const trEl = thEl.offsetParent;
13730
- const style = {
13731
- top: `${targetElem.offsetTop + thEl.offsetTop + targetElem.offsetHeight}px`
13732
- };
13720
+ const left = btnRect.left - tableRect.left - centerWidth;
13721
+ const top = btnRect.top - tableRect.top + btnElem.clientHeight;
13733
13722
  // 判断面板不能大于表格高度
13734
- const maxHeight = Math.max(40, el.clientHeight - (clientY - tableRect.y) - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
13735
- if (column.fixed === 'left') {
13736
- left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth;
13737
- } else if (column.fixed === 'right') {
13738
- right = thEl.offsetWidth - targetElem.offsetLeft + (trEl.offsetWidth - trEl.offsetLeft) - column.renderWidth - centerWidth;
13739
- } else {
13740
- left = targetElem.offsetLeft + thEl.offsetLeft - centerWidth - headerScrollElem.scrollLeft;
13741
- }
13742
- if (left) {
13743
- const overflowWidth = pageX + filterWidth - centerWidth + minMargin - visibleWidth;
13744
- if (overflowWidth > 0) {
13745
- left -= overflowWidth;
13746
- }
13747
- style.left = `${Math.min(maxLeft, Math.max(minMargin, left))}px`;
13748
- } else if (right) {
13749
- const overflowWidth = pageX + filterWidth - centerWidth + minMargin - visibleWidth;
13750
- if (overflowWidth > 0) {
13751
- right += overflowWidth;
13752
- }
13753
- style.right = `${Math.max(minMargin, right)}px`;
13754
- }
13755
- filterStore.style = style;
13723
+ const maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
13724
+ filterStore.style = {
13725
+ top: toCssUnit(top),
13726
+ left: toCssUnit(left)
13727
+ };
13756
13728
  filterStore.maxHeight = maxHeight;
13757
13729
  });
13758
13730
  }
@@ -13904,7 +13876,7 @@ hook_hooks.add('tableFilterModule', {
13904
13876
  return $xeTable.scrollToColumn(column).then(() => {
13905
13877
  const headerWrapperElem = getRefElem(elemStore[`${fixed || 'main'}-header-wrapper`] || elemStore['main-header-wrapper']);
13906
13878
  if (headerWrapperElem) {
13907
- const filterBtnElem = headerWrapperElem.querySelector(`.vxe-header--column.${column.id} .vxe-filter--btn`);
13879
+ const filterBtnElem = headerWrapperElem.querySelector(`.vxe-header--column.${column.id} .vxe-cell--filter`);
13908
13880
  triggerEvent(filterBtnElem, 'click');
13909
13881
  }
13910
13882
  });