vxe-table 3.15.0 → 3.15.2

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 (53) 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 +31 -6
  6. package/es/table/module/filter/panel.js +173 -142
  7. package/es/table/src/methods.js +38 -13
  8. package/es/table/src/table.js +1 -0
  9. package/es/table/src/util.js +2 -1
  10. package/es/table/style.css +18 -0
  11. package/es/table/style.min.css +1 -1
  12. package/es/ui/index.js +1 -1
  13. package/es/ui/src/log.js +1 -1
  14. package/es/vxe-table/style.css +18 -0
  15. package/es/vxe-table/style.min.css +1 -1
  16. package/lib/index.css +1 -1
  17. package/lib/index.min.css +1 -1
  18. package/lib/index.umd.js +237 -145
  19. package/lib/index.umd.min.js +1 -1
  20. package/lib/style.css +1 -1
  21. package/lib/style.min.css +1 -1
  22. package/lib/table/module/filter/mixin.js +34 -5
  23. package/lib/table/module/filter/mixin.min.js +1 -1
  24. package/lib/table/module/filter/panel.js +153 -122
  25. package/lib/table/module/filter/panel.min.js +1 -1
  26. package/lib/table/src/methods.js +43 -13
  27. package/lib/table/src/methods.min.js +1 -1
  28. package/lib/table/src/table.js +1 -0
  29. package/lib/table/src/table.min.js +1 -1
  30. package/lib/table/src/util.js +2 -1
  31. package/lib/table/src/util.min.js +1 -1
  32. package/lib/table/style/style.css +18 -0
  33. package/lib/table/style/style.min.css +1 -1
  34. package/lib/ui/index.js +1 -1
  35. package/lib/ui/index.min.js +1 -1
  36. package/lib/ui/src/log.js +1 -1
  37. package/lib/ui/src/log.min.js +1 -1
  38. package/lib/vxe-table/style/style.css +18 -0
  39. package/lib/vxe-table/style/style.min.css +1 -1
  40. package/package.json +2 -2
  41. package/packages/table/module/filter/mixin.ts +28 -6
  42. package/packages/table/module/filter/panel.ts +178 -143
  43. package/packages/table/src/methods.ts +38 -13
  44. package/packages/table/src/table.ts +1 -0
  45. package/packages/table/src/util.ts +2 -1
  46. package/styles/components/table-module/filter.scss +16 -0
  47. package/styles/components/table.scss +6 -1
  48. /package/es/{iconfont.1744252945243.ttf → iconfont.1744428010256.ttf} +0 -0
  49. /package/es/{iconfont.1744252945243.woff → iconfont.1744428010256.woff} +0 -0
  50. /package/es/{iconfont.1744252945243.woff2 → iconfont.1744428010256.woff2} +0 -0
  51. /package/lib/{iconfont.1744252945243.ttf → iconfont.1744428010256.ttf} +0 -0
  52. /package/lib/{iconfont.1744252945243.woff → iconfont.1744428010256.woff} +0 -0
  53. /package/lib/{iconfont.1744252945243.woff2 → iconfont.1744428010256.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -2220,7 +2220,7 @@ function getClass(property, params) {
2220
2220
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
2221
2221
 
2222
2222
 
2223
- const version = "3.15.0";
2223
+ const version = "3.15.2";
2224
2224
  core_.VxeUI.version = version;
2225
2225
  core_.VxeUI.tableVersion = version;
2226
2226
  core_.VxeUI.setConfig({
@@ -2843,7 +2843,7 @@ function isNodeElement(elem) {
2843
2843
  const {
2844
2844
  log: log_log
2845
2845
  } = core_.VxeUI;
2846
- const log_version = `table v${"3.15.0"}`;
2846
+ const log_version = `table v${"3.15.2"}`;
2847
2847
  const warnLog = log_log.create('warn', log_version);
2848
2848
  const errLog = log_log.create('error', log_version);
2849
2849
  ;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
@@ -3357,7 +3357,8 @@ function getColReMinWidth(params) {
3357
3357
  const lineOffsetSizes = {
3358
3358
  mini: 3,
3359
3359
  small: 2,
3360
- medium: 1
3360
+ medium: 1,
3361
+ large: 0
3361
3362
  };
3362
3363
  function countTreeExpand(prevRow, params) {
3363
3364
  let count = 1;
@@ -8475,7 +8476,11 @@ const Methods = {
8475
8476
  handleReserveStatus($xeTable);
8476
8477
  $xeTable.checkSelectionStatus();
8477
8478
  return new Promise(resolve => {
8478
- this.$nextTick().then(() => $xeTable.recalculate()).then(() => {
8479
+ this.$nextTick().then(() => handleRecalculateLayout($xeTable, false)).then(() => {
8480
+ calcCellHeight($xeTable);
8481
+ updateRowOffsetTop($xeTable);
8482
+ return handleRecalculateLayout($xeTable, false);
8483
+ }).then(() => {
8479
8484
  let targetScrollLeft = lastScrollLeft;
8480
8485
  let targetScrollTop = lastScrollTop;
8481
8486
  const virtualXOpts = $xeTable.computeVirtualXOpts;
@@ -8488,8 +8493,7 @@ const Methods = {
8488
8493
  targetScrollTop = 0;
8489
8494
  }
8490
8495
  reactData.isRowLoading = false;
8491
- calcCellHeight($xeTable);
8492
- updateRowOffsetTop($xeTable);
8496
+ handleRecalculateLayout($xeTable, false);
8493
8497
  // 是否变更虚拟滚动
8494
8498
  if (oldScrollYLoad === sYLoad) {
8495
8499
  restoreScrollLocation($xeTable, targetScrollLeft, targetScrollTop).then(() => {
@@ -12644,6 +12648,12 @@ const Methods = {
12644
12648
  const {
12645
12649
  column: newValue
12646
12650
  } = params;
12651
+ const {
12652
+ trigger
12653
+ } = currentColumnOpts;
12654
+ if (trigger === 'manual') {
12655
+ return;
12656
+ }
12647
12657
  const isChange = oldValue !== newValue;
12648
12658
  if (!beforeRowMethod || beforeRowMethod({
12649
12659
  column: newValue,
@@ -12673,6 +12683,12 @@ const Methods = {
12673
12683
  const {
12674
12684
  row: newValue
12675
12685
  } = params;
12686
+ const {
12687
+ trigger
12688
+ } = currentRowOpts;
12689
+ if (trigger === 'manual') {
12690
+ return;
12691
+ }
12676
12692
  const isChange = oldValue !== newValue;
12677
12693
  if (!beforeRowMethod || beforeRowMethod({
12678
12694
  row: newValue,
@@ -14253,12 +14269,10 @@ const Methods = {
14253
14269
  column,
14254
14270
  visible
14255
14271
  } = filterStore;
14256
- Object.assign(filterStore, {
14257
- isAllSelected: false,
14258
- isIndeterminate: false,
14259
- options: [],
14260
- visible: false
14261
- });
14272
+ filterStore.isAllSelected = false;
14273
+ filterStore.isIndeterminate = false;
14274
+ filterStore.options = [];
14275
+ filterStore.visible = false;
14262
14276
  if (visible) {
14263
14277
  $xeTable.dispatchEvent('filter-visible', {
14264
14278
  column,
@@ -14692,7 +14706,8 @@ const Methods = {
14692
14706
  const $xeTable = this;
14693
14707
  const internalData = $xeTable;
14694
14708
  const {
14695
- treeExpandLazyLoadedMaps
14709
+ treeExpandLazyLoadedMaps,
14710
+ treeEATime
14696
14711
  } = internalData;
14697
14712
  const treeOpts = $xeTable.computeTreeOpts;
14698
14713
  const {
@@ -14701,7 +14716,8 @@ const Methods = {
14701
14716
  } = params;
14702
14717
  const {
14703
14718
  lazy,
14704
- trigger
14719
+ trigger,
14720
+ accordion
14705
14721
  } = treeOpts;
14706
14722
  if (trigger === 'manual') {
14707
14723
  return;
@@ -14712,7 +14728,17 @@ const Methods = {
14712
14728
  const expanded = !$xeTable.isTreeExpandByRow(row);
14713
14729
  const columnIndex = $xeTable.getColumnIndex(column);
14714
14730
  const $columnIndex = $xeTable.getVMColumnIndex(column);
14715
- $xeTable.setTreeExpand(row, expanded);
14731
+ if (treeEATime) {
14732
+ clearTimeout(treeEATime);
14733
+ }
14734
+ $xeTable.setTreeExpand(row, expanded).then(() => {
14735
+ if (accordion) {
14736
+ internalData.treeEATime = setTimeout(() => {
14737
+ internalData.treeEATime = undefined;
14738
+ $xeTable.scrollToRow(row);
14739
+ }, 20);
14740
+ }
14741
+ });
14716
14742
  $xeTable.dispatchEvent('toggle-tree-expand', {
14717
14743
  expanded,
14718
14744
  column,
@@ -15062,6 +15088,9 @@ const Methods = {
15062
15088
  };
15063
15089
  updateRowExpandStyle($xeTable);
15064
15090
  checkLastSyncScroll($xeTable, isRollX, isRollY);
15091
+ if (isRollX) {
15092
+ $xeTable.closeFilter();
15093
+ }
15065
15094
  if (rowOpts.isHover || highlightHoverRow) {
15066
15095
  $xeTable.clearHoverRow();
15067
15096
  }
@@ -15592,7 +15621,8 @@ const Methods = {
15592
15621
  if (isScrollXBig && mouseOpts.area) {
15593
15622
  errLog('vxe.error.notProp', ['mouse-config.area']);
15594
15623
  }
15595
- $xeTable.$nextTick(() => {
15624
+ calcScrollbar($xeTable);
15625
+ return $xeTable.$nextTick(() => {
15596
15626
  updateStyle($xeTable);
15597
15627
  });
15598
15628
  }
@@ -15711,6 +15741,7 @@ const Methods = {
15711
15741
  if (isScrollYBig && mouseOpts.area) {
15712
15742
  errLog('vxe.error.notProp', ['mouse-config.area']);
15713
15743
  }
15744
+ calcScrollbar($xeTable);
15714
15745
  return $xeTable.$nextTick().then(() => {
15715
15746
  updateStyle($xeTable);
15716
15747
  });
@@ -19491,28 +19522,169 @@ const renderPopupPanel = (h, _vm) => {
19491
19522
  const {
19492
19523
  getI18n: filter_panel_getI18n,
19493
19524
  getIcon: filter_panel_getIcon,
19494
- renderer: panel_renderer
19525
+ renderer: panel_renderer,
19526
+ globalMixins
19495
19527
  } = core_.VxeUI;
19528
+ function renderOptions($xeFilterPanel, h, filterRender, compConf) {
19529
+ const props = $xeFilterPanel;
19530
+ const $xeTable = $xeFilterPanel.$xeTable;
19531
+ const tableInternalData = $xeTable;
19532
+ const {
19533
+ filterStore
19534
+ } = props;
19535
+ const {
19536
+ column,
19537
+ multiple,
19538
+ maxHeight
19539
+ } = filterStore;
19540
+ const slots = column ? column.slots : null;
19541
+ const filterSlot = slots ? slots.filter : null;
19542
+ const params = Object.assign({}, tableInternalData._currFilterParams, {
19543
+ $panel: $xeFilterPanel,
19544
+ $table: $xeTable
19545
+ });
19546
+ const rtFilter = compConf ? compConf.renderTableFilter || compConf.renderFilter : null;
19547
+ if (filterSlot) {
19548
+ return [h('div', {
19549
+ class: 'vxe-table--filter-template',
19550
+ style: maxHeight ? {
19551
+ maxHeight: `${maxHeight}px`
19552
+ } : {}
19553
+ }, $xeTable.callSlot(filterSlot, params, h))];
19554
+ } else if (rtFilter) {
19555
+ return [h('div', {
19556
+ class: 'vxe-table--filter-template',
19557
+ style: maxHeight ? {
19558
+ maxHeight: `${maxHeight}px`
19559
+ } : {}
19560
+ }, getSlotVNs(rtFilter.call($xeTable, h, filterRender, params)))];
19561
+ }
19562
+ const isAllChecked = multiple ? filterStore.isAllSelected : !filterStore.options.some(item => item._checked);
19563
+ const isAllIndeterminate = multiple && filterStore.isIndeterminate;
19564
+ return [h('ul', {
19565
+ class: 'vxe-table--filter-header'
19566
+ }, [h('li', {
19567
+ class: ['vxe-table--filter-option', {
19568
+ 'is--checked': isAllChecked,
19569
+ 'is--indeterminate': isAllIndeterminate
19570
+ }],
19571
+ attrs: {
19572
+ title: filter_panel_getI18n(multiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
19573
+ },
19574
+ on: {
19575
+ click: evnt => {
19576
+ $xeFilterPanel.changeAllOption(evnt, !filterStore.isAllSelected);
19577
+ }
19578
+ }
19579
+ }, (multiple ? [h('span', {
19580
+ class: ['vxe-checkbox--icon', isAllIndeterminate ? filter_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? filter_panel_getIcon().TABLE_CHECKBOX_CHECKED : filter_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
19581
+ })] : []).concat([h('span', {
19582
+ class: 'vxe-checkbox--label'
19583
+ }, filter_panel_getI18n('vxe.table.allFilter'))]))]), h('ul', {
19584
+ class: 'vxe-table--filter-body',
19585
+ style: maxHeight ? {
19586
+ maxHeight: `${maxHeight}px`
19587
+ } : {}
19588
+ }, filterStore.options.map(item => {
19589
+ const isChecked = item._checked;
19590
+ const isIndeterminate = false;
19591
+ return h('li', {
19592
+ class: ['vxe-table--filter-option', {
19593
+ 'is--checked': isChecked
19594
+ }],
19595
+ attrs: {
19596
+ title: item.label
19597
+ },
19598
+ on: {
19599
+ click: evnt => {
19600
+ $xeFilterPanel.changeOption(evnt, !item._checked, item);
19601
+ }
19602
+ }
19603
+ }, (multiple ? [h('span', {
19604
+ class: ['vxe-checkbox--icon', isIndeterminate ? filter_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? filter_panel_getIcon().TABLE_CHECKBOX_CHECKED : filter_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
19605
+ })] : []).concat([h('span', {
19606
+ class: 'vxe-checkbox--label'
19607
+ }, formatText(item.label, 1))]));
19608
+ }))];
19609
+ }
19610
+ function renderFooter($xeFilterPanel, h) {
19611
+ const props = $xeFilterPanel;
19612
+ const $xeTable = $xeFilterPanel.$xeTable;
19613
+ const {
19614
+ filterStore
19615
+ } = props;
19616
+ const {
19617
+ column,
19618
+ multiple
19619
+ } = filterStore;
19620
+ const filterOpts = $xeTable.computeFilterOpts;
19621
+ const hasCheckOption = $xeFilterPanel.computeHasCheckOption;
19622
+ const filterRender = column.filterRender;
19623
+ const compConf = isEnableConf(filterRender) ? panel_renderer.get(filterRender.name) : null;
19624
+ const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate;
19625
+ return multiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true) ? [h('div', {
19626
+ class: 'vxe-table--filter-footer'
19627
+ }, [h('button', {
19628
+ class: {
19629
+ 'is--disabled': isDisabled
19630
+ },
19631
+ attrs: {
19632
+ disabled: isDisabled
19633
+ },
19634
+ on: {
19635
+ click: $xeFilterPanel.confirmFilter
19636
+ }
19637
+ }, filterOpts.confirmButtonText || filter_panel_getI18n('vxe.table.confirmFilter')), h('button', {
19638
+ on: {
19639
+ click: $xeFilterPanel.resetFilter
19640
+ }
19641
+ }, filterOpts.resetButtonText || filter_panel_getI18n('vxe.table.resetFilter'))])] : [];
19642
+ }
19496
19643
  /* harmony default export */ var filter_panel = ({
19497
19644
  name: 'VxeTableFilterPanel',
19645
+ mixins: [globalMixins.sizeMixin],
19498
19646
  props: {
19499
19647
  filterStore: Object
19500
19648
  },
19649
+ inject: {
19650
+ $xeTable: {
19651
+ default: null
19652
+ }
19653
+ },
19501
19654
  computed: {
19502
- hasCheckOption() {
19655
+ computeHasCheckOption() {
19503
19656
  const {
19504
19657
  filterStore
19505
19658
  } = this;
19506
19659
  return filterStore && filterStore.options.some(option => option.checked);
19507
19660
  }
19508
19661
  },
19662
+ mounted() {
19663
+ const $xeFilterPanel = this;
19664
+ const $xeTable = $xeFilterPanel.$xeTable;
19665
+ const filterOpts = $xeTable.computeFilterOpts;
19666
+ const {
19667
+ transfer
19668
+ } = filterOpts;
19669
+ const el = this.$refs.refElem;
19670
+ if (transfer && el) {
19671
+ document.body.appendChild(el);
19672
+ }
19673
+ },
19674
+ beforeDestroy() {
19675
+ const el = this.$refs.refElem;
19676
+ if (el && el.parentNode) {
19677
+ el.parentNode.removeChild(el);
19678
+ }
19679
+ },
19509
19680
  render(h) {
19510
- const $panel = this;
19511
- const $xeTable = this.$parent;
19681
+ const $xeFilterPanel = this;
19682
+ const props = $xeFilterPanel;
19683
+ const $xeTable = $xeFilterPanel.$xeTable;
19512
19684
  const tableInternalData = $xeTable;
19513
19685
  const {
19514
19686
  filterStore
19515
- } = this;
19687
+ } = props;
19516
19688
  const {
19517
19689
  visible,
19518
19690
  multiple,
@@ -19522,137 +19694,27 @@ const {
19522
19694
  const compConf = isEnableConf(filterRender) ? panel_renderer.get(filterRender.name) : null;
19523
19695
  const filterClassName = compConf ? compConf.tableFilterClassName || compConf.filterClassName : '';
19524
19696
  const params = Object.assign({}, tableInternalData._currFilterParams, {
19525
- $panel,
19697
+ $panel: $xeFilterPanel,
19526
19698
  $table: $xeTable
19527
19699
  });
19700
+ const tableProps = $xeTable;
19701
+ const vSize = $xeFilterPanel.computeSize;
19528
19702
  const filterOpts = $xeTable.computeFilterOpts;
19529
19703
  const {
19530
19704
  destroyOnClose
19531
19705
  } = filterOpts;
19532
19706
  return h('div', {
19707
+ ref: 'refElem',
19533
19708
  class: ['vxe-table--filter-wrapper', 'filter--prevent-default', compConf && compConf.className ? compConf.className : '', getClass(filterClassName, params), {
19534
- 'is--animat': $xeTable.animat,
19709
+ [`size--${vSize}`]: vSize,
19710
+ 'is--animat': tableProps.animat,
19535
19711
  'is--multiple': multiple,
19536
19712
  'is--active': visible
19537
19713
  }],
19538
19714
  style: filterStore.style
19539
- }, filterStore.visible && (destroyOnClose ? visible : true) && column ? this.renderOptions(h, filterRender, compConf).concat(this.renderFooter(h)) : []);
19715
+ }, filterStore.visible && (destroyOnClose ? visible : true) && column ? renderOptions($xeFilterPanel, h, filterRender, compConf).concat(renderFooter($xeFilterPanel, h)) : []);
19540
19716
  },
19541
19717
  methods: {
19542
- renderOptions(h, filterRender, compConf) {
19543
- const $panel = this;
19544
- const $xeTable = this.$parent;
19545
- const tableInternalData = $xeTable;
19546
- const {
19547
- filterStore
19548
- } = this;
19549
- const {
19550
- column,
19551
- multiple,
19552
- maxHeight
19553
- } = filterStore;
19554
- const slots = column ? column.slots : null;
19555
- const filterSlot = slots ? slots.filter : null;
19556
- const params = Object.assign({}, tableInternalData._currFilterParams, {
19557
- $panel,
19558
- $table: $xeTable
19559
- });
19560
- const rtFilter = compConf ? compConf.renderTableFilter || compConf.renderFilter : null;
19561
- if (filterSlot) {
19562
- return [h('div', {
19563
- class: 'vxe-table--filter-template',
19564
- style: maxHeight ? {
19565
- maxHeight: `${maxHeight}px`
19566
- } : {}
19567
- }, $xeTable.callSlot(filterSlot, params, h))];
19568
- } else if (rtFilter) {
19569
- return [h('div', {
19570
- class: 'vxe-table--filter-template',
19571
- style: maxHeight ? {
19572
- maxHeight: `${maxHeight}px`
19573
- } : {}
19574
- }, getSlotVNs(rtFilter.call($xeTable, h, filterRender, params)))];
19575
- }
19576
- const isAllChecked = multiple ? filterStore.isAllSelected : !filterStore.options.some(item => item._checked);
19577
- const isAllIndeterminate = multiple && filterStore.isIndeterminate;
19578
- return [h('ul', {
19579
- class: 'vxe-table--filter-header'
19580
- }, [h('li', {
19581
- class: ['vxe-table--filter-option', {
19582
- 'is--checked': isAllChecked,
19583
- 'is--indeterminate': isAllIndeterminate
19584
- }],
19585
- attrs: {
19586
- title: filter_panel_getI18n(multiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter')
19587
- },
19588
- on: {
19589
- click: evnt => {
19590
- this.changeAllOption(evnt, !filterStore.isAllSelected);
19591
- }
19592
- }
19593
- }, (multiple ? [h('span', {
19594
- class: ['vxe-checkbox--icon', isAllIndeterminate ? filter_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? filter_panel_getIcon().TABLE_CHECKBOX_CHECKED : filter_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
19595
- })] : []).concat([h('span', {
19596
- class: 'vxe-checkbox--label'
19597
- }, filter_panel_getI18n('vxe.table.allFilter'))]))]), h('ul', {
19598
- class: 'vxe-table--filter-body',
19599
- style: maxHeight ? {
19600
- maxHeight: `${maxHeight}px`
19601
- } : {}
19602
- }, filterStore.options.map(item => {
19603
- const isChecked = item._checked;
19604
- const isIndeterminate = false;
19605
- return h('li', {
19606
- class: ['vxe-table--filter-option', {
19607
- 'is--checked': isChecked
19608
- }],
19609
- attrs: {
19610
- title: item.label
19611
- },
19612
- on: {
19613
- click: evnt => {
19614
- this.changeOption(evnt, !item._checked, item);
19615
- }
19616
- }
19617
- }, (multiple ? [h('span', {
19618
- class: ['vxe-checkbox--icon', isIndeterminate ? filter_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? filter_panel_getIcon().TABLE_CHECKBOX_CHECKED : filter_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
19619
- })] : []).concat([h('span', {
19620
- class: 'vxe-checkbox--label'
19621
- }, formatText(item.label, 1))]));
19622
- }))];
19623
- },
19624
- renderFooter(h) {
19625
- const $xeTable = this.$parent;
19626
- const {
19627
- hasCheckOption,
19628
- filterStore
19629
- } = this;
19630
- const {
19631
- column,
19632
- multiple
19633
- } = filterStore;
19634
- const filterOpts = $xeTable.computeFilterOpts;
19635
- const filterRender = column.filterRender;
19636
- const compConf = isEnableConf(filterRender) ? panel_renderer.get(filterRender.name) : null;
19637
- const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate;
19638
- return multiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true) ? [h('div', {
19639
- class: 'vxe-table--filter-footer'
19640
- }, [h('button', {
19641
- class: {
19642
- 'is--disabled': isDisabled
19643
- },
19644
- attrs: {
19645
- disabled: isDisabled
19646
- },
19647
- on: {
19648
- click: this.confirmFilter
19649
- }
19650
- }, filterOpts.confirmButtonText || filter_panel_getI18n('vxe.table.confirmFilter')), h('button', {
19651
- on: {
19652
- click: this.resetFilter
19653
- }
19654
- }, filterOpts.resetButtonText || filter_panel_getI18n('vxe.table.resetFilter'))])] : [];
19655
- },
19656
19718
  // 全部筛选事件
19657
19719
  filterCheckAllEvent(evnt, value) {
19658
19720
  const filterStore = this.filterStore;
@@ -19723,12 +19785,12 @@ const {
19723
19785
  const {
19724
19786
  getI18n: import_panel_getI18n,
19725
19787
  getIcon: import_panel_getIcon,
19726
- globalMixins,
19788
+ globalMixins: import_panel_globalMixins,
19727
19789
  renderEmptyElement: import_panel_renderEmptyElement
19728
19790
  } = core_.VxeUI;
19729
19791
  /* harmony default export */ var import_panel = ({
19730
19792
  name: 'VxeTableImportPanel',
19731
- mixins: [globalMixins.sizeMixin],
19793
+ mixins: [import_panel_globalMixins.sizeMixin],
19732
19794
  props: {
19733
19795
  defaultOptions: Object,
19734
19796
  storeData: Object
@@ -20666,6 +20728,16 @@ const {
20666
20728
  filterStore.visible = false;
20667
20729
  } else {
20668
20730
  const el = $xeTable.$refs.refElem;
20731
+ const {
20732
+ scrollTop,
20733
+ scrollLeft,
20734
+ visibleHeight,
20735
+ visibleWidth
20736
+ } = getDomNode();
20737
+ const filterOpts = $xeTable.computeFilterOpts;
20738
+ const {
20739
+ transfer
20740
+ } = filterOpts;
20669
20741
  const tableRect = el.getBoundingClientRect();
20670
20742
  const btnElem = evnt.currentTarget;
20671
20743
  const {
@@ -20713,18 +20785,37 @@ const {
20713
20785
  return;
20714
20786
  }
20715
20787
  const btnRect = btnElem.getBoundingClientRect();
20716
- const filterWidth = filterWrapperElem.offsetWidth;
20717
20788
  const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
20718
20789
  const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
20790
+ const filterWidth = filterWrapperElem.offsetWidth;
20719
20791
  const centerWidth = filterWidth / 2;
20720
- const left = btnRect.left - tableRect.left - centerWidth;
20721
- const top = btnRect.top - tableRect.top + btnElem.clientHeight;
20722
- // 判断面板不能大于表格高度
20723
- const maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
20792
+ let left = 0;
20793
+ let top = 0;
20794
+ let maxHeight = 0;
20795
+ if (transfer) {
20796
+ left = btnRect.left - centerWidth + scrollLeft;
20797
+ top = btnRect.top + btnElem.clientHeight + scrollTop;
20798
+ 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));
20799
+ if (left < 16) {
20800
+ left = 16;
20801
+ } else if (left > visibleWidth - filterWidth - 16) {
20802
+ left = visibleWidth - filterWidth - 16;
20803
+ }
20804
+ } else {
20805
+ left = btnRect.left - tableRect.left - centerWidth;
20806
+ top = btnRect.top - tableRect.top + btnElem.clientHeight;
20807
+ maxHeight = Math.max(40, el.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
20808
+ if (left < 1) {
20809
+ left = 1;
20810
+ } else if (left > el.clientWidth - filterWidth - 1) {
20811
+ left = el.clientWidth - filterWidth - 1;
20812
+ }
20813
+ }
20724
20814
  filterStore.style = {
20725
20815
  top: toCssUnit(top),
20726
20816
  left: toCssUnit(left)
20727
20817
  };
20818
+ // 判断面板不能大于表格高度
20728
20819
  filterStore.maxHeight = maxHeight;
20729
20820
  });
20730
20821
  }
@@ -26619,6 +26710,7 @@ function renderBody(h, $xeTable) {
26619
26710
  mergeBodyFlag: 1,
26620
26711
  mergeFootFlag: 1,
26621
26712
  rowHeightStore: {
26713
+ large: 52,
26622
26714
  default: 48,
26623
26715
  medium: 44,
26624
26716
  small: 40,