vxe-table 4.21.2 → 4.21.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 (47) hide show
  1. package/dist/all.esm.js +126 -91
  2. package/dist/style.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/table/module/custom/hook.js +4 -0
  5. package/es/table/module/export/export-panel.js +3 -2
  6. package/es/table/module/export/hook.js +13 -7
  7. package/es/table/module/filter/hook.js +97 -79
  8. package/es/table/src/table.js +5 -0
  9. package/es/table/src/util.js +1 -0
  10. package/es/ui/index.js +1 -1
  11. package/es/ui/src/dom.js +1 -1
  12. package/es/ui/src/log.js +1 -1
  13. package/lib/index.umd.js +140 -99
  14. package/lib/index.umd.min.js +1 -1
  15. package/lib/style.css +1 -1
  16. package/lib/table/module/custom/hook.js +6 -0
  17. package/lib/table/module/custom/hook.min.js +1 -1
  18. package/lib/table/module/export/export-panel.js +3 -2
  19. package/lib/table/module/export/export-panel.min.js +1 -1
  20. package/lib/table/module/export/hook.js +15 -7
  21. package/lib/table/module/export/hook.min.js +1 -1
  22. package/lib/table/module/filter/hook.js +111 -86
  23. package/lib/table/module/filter/hook.min.js +1 -1
  24. package/lib/table/src/table.js +1 -1
  25. package/lib/table/src/table.min.js +1 -1
  26. package/lib/table/src/util.js +1 -0
  27. package/lib/table/src/util.min.js +1 -1
  28. package/lib/ui/index.js +1 -1
  29. package/lib/ui/index.min.js +1 -1
  30. package/lib/ui/src/dom.js +1 -1
  31. package/lib/ui/src/dom.min.js +1 -1
  32. package/lib/ui/src/log.js +1 -1
  33. package/lib/ui/src/log.min.js +1 -1
  34. package/package.json +2 -2
  35. package/packages/table/module/custom/hook.ts +4 -0
  36. package/packages/table/module/export/export-panel.ts +3 -2
  37. package/packages/table/module/export/hook.ts +12 -7
  38. package/packages/table/module/filter/hook.ts +94 -75
  39. package/packages/table/src/table.ts +5 -0
  40. package/packages/table/src/util.ts +1 -0
  41. package/packages/ui/src/dom.ts +1 -1
  42. /package/es/{iconfont.1787677402393.ttf → iconfont.1788176649939.ttf} +0 -0
  43. /package/es/{iconfont.1787677402393.woff → iconfont.1788176649939.woff} +0 -0
  44. /package/es/{iconfont.1787677402393.woff2 → iconfont.1788176649939.woff2} +0 -0
  45. /package/lib/{iconfont.1787677402393.ttf → iconfont.1788176649939.ttf} +0 -0
  46. /package/lib/{iconfont.1787677402393.woff → iconfont.1788176649939.woff} +0 -0
  47. /package/lib/{iconfont.1787677402393.woff2 → iconfont.1788176649939.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -3313,7 +3313,7 @@ function getDefaultConfig(val1, def1) {
3313
3313
  /* unused harmony import specifier */ var VxeUI;
3314
3314
 
3315
3315
 
3316
- const version = "4.21.2";
3316
+ const version = "4.21.3";
3317
3317
  core_.VxeUI.version = version;
3318
3318
  core_.VxeUI.tableVersion = version;
3319
3319
  core_.VxeUI.setConfig({
@@ -3879,7 +3879,7 @@ function getTpImg() {
3879
3879
  return tpImgEl;
3880
3880
  }
3881
3881
  function getPropClass(property, params) {
3882
- return property ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(property) ? property(params) : property : '';
3882
+ return property ? (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(property) ? property(params) : property) || '' : '';
3883
3883
  }
3884
3884
  function getClsRE(cls) {
3885
3885
  if (!reClsMap[cls]) {
@@ -4135,7 +4135,7 @@ function getPopupAppendElement(appendTo) {
4135
4135
  const {
4136
4136
  log: log_log
4137
4137
  } = core_.VxeUI;
4138
- const tableVersion = `table v${"4.21.2"}`;
4138
+ const tableVersion = `table v${"4.21.3"}`;
4139
4139
  function createComponentLog(name) {
4140
4140
  const uiVersion = core_.VxeUI.uiVersion ? `ui v${core_.VxeUI.uiVersion}` : '';
4141
4141
  const ganttVersion = core_.VxeUI.ganttVersion ? `gantt v${core_.VxeUI.ganttVersion}` : '';
@@ -4641,6 +4641,7 @@ function createReactData() {
4641
4641
  customColumnList: [],
4642
4642
  // 当前选中的筛选列
4643
4643
  filterStore: {
4644
+ targetEl: null,
4644
4645
  isAllSelected: false,
4645
4646
  isIndeterminate: false,
4646
4647
  style: null,
@@ -12323,13 +12324,14 @@ const {
12323
12324
  } = storeData;
12324
12325
  const checkedAll = computeCheckedAll.value;
12325
12326
  const supportMerge = computeSupportMerge.value;
12327
+ // 内部导出使用 _columns -> _children 为自定义子集
12326
12328
  const expColumns = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(columns, column => column.checked, {
12327
12329
  children: 'children',
12328
- mapChildren: 'childNodes',
12330
+ mapChildren: '_children',
12329
12331
  original: true
12330
12332
  });
12331
12333
  return Object.assign({}, defaultOptions, {
12332
- columns: expColumns,
12334
+ _columns: expColumns,
12333
12335
  isMerge: hasMerge && supportMerge && checkedAll ? defaultOptions.isMerge : false
12334
12336
  });
12335
12337
  };
@@ -12873,6 +12875,104 @@ hook_hooks.add('tableFilterModule', {
12873
12875
  computeFilterOpts,
12874
12876
  computeMouseOpts
12875
12877
  } = $xeTable.getComputeMaps();
12878
+ const updatePopupStyle = () => {
12879
+ const {
12880
+ filterStore
12881
+ } = reactData;
12882
+ const {
12883
+ elemStore
12884
+ } = internalData;
12885
+ const {
12886
+ column,
12887
+ targetEl
12888
+ } = filterStore;
12889
+ if (!column || !targetEl) {
12890
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
12891
+ }
12892
+ const tableEl = refElem.value;
12893
+ const {
12894
+ scrollTop,
12895
+ scrollLeft,
12896
+ visibleHeight,
12897
+ visibleWidth
12898
+ } = getDomNode();
12899
+ const filterOpts = computeFilterOpts.value;
12900
+ const {
12901
+ maxHeight: customMaxHeight,
12902
+ transfer,
12903
+ zIndex
12904
+ } = filterOpts;
12905
+ const currEl = targetEl;
12906
+ const tableRect = tableEl.getBoundingClientRect();
12907
+ const filterRender = column ? column.filterRender : null;
12908
+ const compConf = filterRender && isEnableConf(filterRender) ? hook_renderer.get(filterRender.name) : null;
12909
+ const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
12910
+ if (!headerScrollElem) {
12911
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
12912
+ }
12913
+ const tableFilter = refTableFilter.value;
12914
+ const filterWrapperElem = tableFilter ? tableFilter.getRefMaps().refElem.value : null;
12915
+ if (!filterWrapperElem) {
12916
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
12917
+ }
12918
+ const btnRect = currEl.getBoundingClientRect();
12919
+ const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
12920
+ const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
12921
+ const filterWidth = filterWrapperElem.offsetWidth;
12922
+ const centerWidth = currEl ? filterWidth / 2 : (filterWidth - column.renderWidth) / 2;
12923
+ let left = 0;
12924
+ let top = 0;
12925
+ let maxHeight = 0;
12926
+ /**
12927
+ * 是否显示筛选按钮图标
12928
+ * 如果不存在图标,则相对单元格居中显示
12929
+ */
12930
+ if (transfer) {
12931
+ left = btnRect.left - centerWidth + scrollLeft;
12932
+ top = btnRect.top + currEl.clientHeight + scrollTop;
12933
+ 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));
12934
+ if (left < 16) {
12935
+ left = 16;
12936
+ } else if (left > visibleWidth - filterWidth - 16) {
12937
+ left = visibleWidth - filterWidth - 16;
12938
+ }
12939
+ } else {
12940
+ left = btnRect.left - tableRect.left - centerWidth;
12941
+ top = btnRect.top - tableRect.top + currEl.clientHeight;
12942
+ maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
12943
+ if (left < 1) {
12944
+ left = 1;
12945
+ } else if (left > tableEl.clientWidth - filterWidth - 1) {
12946
+ left = tableEl.clientWidth - filterWidth - 1;
12947
+ }
12948
+ if ($xeGGWrapper) {
12949
+ const wrapperEl = $xeGGWrapper.getRefMaps().refElem.value;
12950
+ if (wrapperEl) {
12951
+ const wrapperRect = wrapperEl.getBoundingClientRect();
12952
+ top += tableRect.top - wrapperRect.top;
12953
+ }
12954
+ }
12955
+ }
12956
+ const fStys = {
12957
+ top: toCssUnit(top),
12958
+ left: toCssUnit(left)
12959
+ };
12960
+ if (zIndex) {
12961
+ fStys.zIndex = zIndex;
12962
+ }
12963
+ filterStore.style = fStys;
12964
+ // 筛选面板是自适应表格高度
12965
+ if (compConf ? !compConf.tableFilterAutoHeight : false) {
12966
+ maxHeight = 0;
12967
+ } else {
12968
+ if (customMaxHeight) {
12969
+ maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
12970
+ }
12971
+ }
12972
+ // 判断面板不能大于表格高度
12973
+ filterStore.maxHeight = maxHeight;
12974
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
12975
+ };
12876
12976
  const filterPrivateMethods = {
12877
12977
  checkFilterOptions() {
12878
12978
  const {
@@ -12892,102 +12992,20 @@ hook_hooks.add('tableFilterModule', {
12892
12992
  initStore,
12893
12993
  filterStore
12894
12994
  } = reactData;
12895
- const {
12896
- elemStore
12897
- } = internalData;
12898
12995
  if (filterStore.column === column && filterStore.visible) {
12899
12996
  filterStore.visible = false;
12900
12997
  } else {
12901
- const tableEl = refElem.value;
12902
- const {
12903
- scrollTop,
12904
- scrollLeft,
12905
- visibleHeight,
12906
- visibleWidth
12907
- } = getDomNode();
12908
- const filterOpts = computeFilterOpts.value;
12909
- const {
12910
- maxHeight: customMaxHeight,
12911
- transfer,
12912
- zIndex
12913
- } = filterOpts;
12914
12998
  const currEl = btnEl || colEl;
12915
- const tableRect = tableEl.getBoundingClientRect();
12916
- const filterRender = column ? column.filterRender : null;
12917
- const compConf = filterRender && isEnableConf(filterRender) ? hook_renderer.get(filterRender.name) : null;
12918
12999
  $xeTable.handleFilterOptions(column);
12919
13000
  internalData._currFilterParams = params;
13001
+ filterStore.targetEl = currEl;
12920
13002
  filterStore.style = null;
12921
13003
  filterStore.visible = true;
12922
13004
  initStore.filter = true;
12923
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
12924
- const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
12925
- if (!headerScrollElem) {
12926
- return;
12927
- }
12928
- const tableFilter = refTableFilter.value;
12929
- const filterWrapperElem = tableFilter ? tableFilter.getRefMaps().refElem.value : null;
12930
- if (!filterWrapperElem) {
12931
- return;
12932
- }
12933
- const btnRect = currEl.getBoundingClientRect();
12934
- const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
12935
- const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
12936
- const filterWidth = filterWrapperElem.offsetWidth;
12937
- const centerWidth = btnEl ? filterWidth / 2 : (filterWidth - column.renderWidth) / 2;
12938
- let left = 0;
12939
- let top = 0;
12940
- let maxHeight = 0;
12941
- /**
12942
- * 是否显示筛选按钮图标
12943
- * 如果不存在图标,则相对单元格居中显示
12944
- */
12945
- if (transfer) {
12946
- left = btnRect.left - centerWidth + scrollLeft;
12947
- top = btnRect.top + currEl.clientHeight + scrollTop;
12948
- 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));
12949
- if (left < 16) {
12950
- left = 16;
12951
- } else if (left > visibleWidth - filterWidth - 16) {
12952
- left = visibleWidth - filterWidth - 16;
12953
- }
12954
- } else {
12955
- left = btnRect.left - tableRect.left - centerWidth;
12956
- top = btnRect.top - tableRect.top + currEl.clientHeight;
12957
- maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
12958
- if (left < 1) {
12959
- left = 1;
12960
- } else if (left > tableEl.clientWidth - filterWidth - 1) {
12961
- left = tableEl.clientWidth - filterWidth - 1;
12962
- }
12963
- if ($xeGGWrapper) {
12964
- const wrapperEl = $xeGGWrapper.getRefMaps().refElem.value;
12965
- if (wrapperEl) {
12966
- const wrapperRect = wrapperEl.getBoundingClientRect();
12967
- top += tableRect.top - wrapperRect.top;
12968
- }
12969
- }
12970
- }
12971
- const fStys = {
12972
- top: toCssUnit(top),
12973
- left: toCssUnit(left)
12974
- };
12975
- if (zIndex) {
12976
- fStys.zIndex = zIndex;
12977
- }
12978
- filterStore.style = fStys;
12979
- // 筛选面板是自适应表格高度
12980
- if (compConf ? !compConf.tableFilterAutoHeight : false) {
12981
- maxHeight = 0;
12982
- } else {
12983
- if (customMaxHeight) {
12984
- maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
12985
- }
12986
- }
12987
- // 判断面板不能大于表格高度
12988
- filterStore.maxHeight = maxHeight;
12989
- });
12990
13005
  }
13006
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
13007
+ updatePopupStyle();
13008
+ });
12991
13009
  $xeTable.dispatchEvent('filter-visible', {
12992
13010
  column,
12993
13011
  field: column.field,
@@ -13192,6 +13210,15 @@ hook_hooks.add('tableFilterModule', {
13192
13210
  }, evnt);
13193
13211
  }
13194
13212
  }
13213
+ },
13214
+ handleFilterStyle() {
13215
+ const {
13216
+ filterStore
13217
+ } = reactData;
13218
+ if (!filterStore.visible) {
13219
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
13220
+ }
13221
+ return updatePopupStyle();
13195
13222
  }
13196
13223
  };
13197
13224
  const filterMethods = {
@@ -15576,7 +15603,6 @@ export_hook_hooks.add('tableExportModule', {
15576
15603
  computePrintOpts,
15577
15604
  computeExportOpts,
15578
15605
  computeImportOpts,
15579
- computeCustomOpts,
15580
15606
  computeSeqOpts,
15581
15607
  computeRadioOpts,
15582
15608
  computeCheckboxOpts,
@@ -16746,9 +16772,9 @@ export_hook_hooks.add('tableExportModule', {
16746
16772
  mergeFooterList
16747
16773
  } = internalData;
16748
16774
  const exportOpts = computeExportOpts.value;
16775
+ const printOpts = computePrintOpts.value;
16749
16776
  const hasTree = !!treeConfig;
16750
16777
  const hasRowGroup = rowGroupList.length > 0;
16751
- const customOpts = computeCustomOpts.value;
16752
16778
  const selectRecords = $xeTable.getCheckboxRecords();
16753
16779
  const proxyOpts = $xeGGWrapper ? $xeGGWrapper.getComputeMaps().computeProxyOpts.value : {};
16754
16780
  const hasFooter = !!footerTableData.length;
@@ -16769,9 +16795,9 @@ export_hook_hooks.add('tableExportModule', {
16769
16795
  export_hook_warnLog('vxe.error.delProp', ['isAllExpand', 'isTreeAllExpanded']);
16770
16796
  defOpts.isTreeAllExpanded = defOpts.isAllExpand;
16771
16797
  }
16772
- const types = defOpts.types || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps);
16798
+ const types = isPrint ? [] : defOpts.types || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps);
16773
16799
  const modes = defOpts.modes || [];
16774
- const checkMethod = customOpts.checkMethod;
16800
+ const checkMethod = (isPrint ? printOpts : exportOpts).checkMethod;
16775
16801
  const exportColumns = collectColumn.slice(0);
16776
16802
  const {
16777
16803
  columns,
@@ -16886,10 +16912,10 @@ export_hook_hooks.add('tableExportModule', {
16886
16912
  }
16887
16913
  }
16888
16914
  if (!modeList.some(item => item.value === mode)) {
16889
- exportParams.mode = modeList[0].value;
16915
+ exportParams.mode = modeList.length ? modeList[0].value : '';
16890
16916
  }
16891
16917
  if (!typeList.some(item => item.value === type)) {
16892
- exportParams.type = typeList[0].value;
16918
+ exportParams.type = typeList.length ? typeList[0].value : '';
16893
16919
  }
16894
16920
  if (!exportParams.widthMode) {
16895
16921
  exportParams.widthMode = '';
@@ -17002,7 +17028,16 @@ export_hook_hooks.add('tableExportModule', {
17002
17028
  }
17003
17029
  let isCustomCol = false;
17004
17030
  let customCols = [];
17005
- if (columns) {
17031
+ const _columns = opts._columns;
17032
+ if (_columns) {
17033
+ // 内部导出使用 _columns -> _children 为自定义子集
17034
+ isCustomCol = true;
17035
+ customCols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(_columns, () => true, {
17036
+ children: '_children',
17037
+ mapChildren: 'childNodes',
17038
+ original: true
17039
+ });
17040
+ } else if (columns) {
17006
17041
  isCustomCol = true;
17007
17042
  customCols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(columns, () => true, {
17008
17043
  children: 'children',
@@ -19488,6 +19523,12 @@ core_.VxeUI.hooks.add('tableCustomModule', {
19488
19523
  handleUpdateCustomColumn,
19489
19524
  handleCustomStyle() {
19490
19525
  const reactData = $xeTable.reactData;
19526
+ const {
19527
+ customStore
19528
+ } = reactData;
19529
+ if (!customStore.visible) {
19530
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
19531
+ }
19491
19532
  reactData.isCustomDragStatus = false;
19492
19533
  return updatePopupStyle();
19493
19534
  }
@@ -22254,7 +22295,7 @@ if($xeTable.closeMenu){if(ctxMenuStore.visible&&tableMenu&&!getEventTargetNode(e
22254
22295
  if(!isActivated&&editRules&&validOpts.autoClear){reactData.validErrorMaps={};}// 最后激活的表格
22255
22296
  internalData.isActivated=isActivated;}};/**
22256
22297
  * 窗口失焦事件处理
22257
- */const handleGlobalBlurEvent=()=>{$xeTable.closeFilter();if($xeTable.closeMenu){$xeTable.closeMenu();}};const reUpdateCustomStyleEvent=evnt=>{const{customStore}=reactData;const customOpts=computeCustomOpts.value;const{popupOptions}=customOpts;const{transfer}=popupOptions||{};if(transfer&&customStore.visible){const tableCustom=refTableCustom.value;if(tableCustom&&$xeTable.handleCustomStyle&&!checkTargetElement(evnt.target,[tableCustom.getRefMaps().refElem.value],evnt.currentTarget)){$xeTable.handleCustomStyle().then(()=>{$xeTable.handleCustomStyle();});}}};const handleGlobalScrollEvent=evnt=>{reUpdateCustomStyleEvent(evnt);};/**
22298
+ */const handleGlobalBlurEvent=()=>{$xeTable.closeFilter();if($xeTable.closeMenu){$xeTable.closeMenu();}};const reUpdateCustomStyleEvent=evnt=>{const{customStore}=reactData;const customOpts=computeCustomOpts.value;const{popupOptions}=customOpts;const{transfer}=popupOptions||{};if(transfer&&customStore.visible){const tableCustom=refTableCustom.value;if(tableCustom&&$xeTable.handleCustomStyle&&!checkTargetElement(evnt.target,[tableCustom.getRefMaps().refElem.value],evnt.currentTarget)){$xeTable.handleCustomStyle().then(()=>{$xeTable.handleCustomStyle();});}}};const handleGlobalScrollEvent=evnt=>{const{filterStore}=reactData;const filterOpts=computeFilterOpts.value;if(filterStore.visible&&filterOpts.transfer){$xeTable.handleFilterStyle();}reUpdateCustomStyleEvent(evnt);};/**
22258
22299
  * 全局滚动事件
22259
22300
  */const handleGlobalMousewheelEvent=()=>{$xeTable.closeTooltip();if($xeTable.closeMenu){$xeTable.closeMenu();}};/**
22260
22301
  * 表格键盘事件