vxe-table 4.19.15 → 4.19.16

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.
package/dist/all.esm.js CHANGED
@@ -44,7 +44,7 @@ function eqEmptyValue(cellValue) {
44
44
  return cellValue === '' || XEUtils.eqNull(cellValue);
45
45
  }
46
46
 
47
- const version$1 = "4.19.15";
47
+ const version$1 = "4.19.16";
48
48
  VxeUI.version = version$1;
49
49
  VxeUI.tableVersion = version$1;
50
50
  VxeUI.setConfig({
@@ -743,7 +743,7 @@ function wheelScrollTopTo(diffNum, cb) {
743
743
  }
744
744
 
745
745
  const { log } = VxeUI;
746
- const version = `table v${"4.19.15"}`;
746
+ const version = `table v${"4.19.16"}`;
747
747
  const warnLog = log.create('warn', version);
748
748
  const errLog = log.create('error', version);
749
749
 
@@ -5061,6 +5061,8 @@ var TableHeaderComponent = defineVxeComponent({
5061
5061
  const cellOpts = computeCellOpts.value;
5062
5062
  const defaultRowHeight = computeDefaultRowHeight.value;
5063
5063
  const headerCellOpts = computeHeaderCellOpts.value;
5064
+ const floatingFilterOpts = computeFloatingFilterOpts.value;
5065
+ const { cellClassName } = floatingFilterOpts;
5064
5066
  const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight;
5065
5067
  return cols.map((column, $columnIndex) => {
5066
5068
  const { type, showHeaderOverflow, headerAlign, align, filters, editRender, cellRender, floatingFilters, filterRender, slots } = column;
@@ -5114,7 +5116,7 @@ var TableHeaderComponent = defineVxeComponent({
5114
5116
  else {
5115
5117
  tcStyle.minHeight = `${currCellHeight}px`;
5116
5118
  }
5117
- return h('th', Object.assign({ class: ['vxe-table--column vxe-header--column', colid, fixedHiddenColumn ? 'fixed--hidden' : 'fixed--visible', {
5119
+ return h('th', Object.assign({ class: ['vxe-table--column vxe-header--column is--floating-filters', colid, fixedHiddenColumn ? 'fixed--hidden' : 'fixed--visible', {
5118
5120
  [`col--${headAlign}`]: headAlign,
5119
5121
  [`col--${type}`]: type,
5120
5122
  'col--last': isLastColumn,
@@ -5127,7 +5129,7 @@ var TableHeaderComponent = defineVxeComponent({
5127
5129
  }
5128
5130
  ], key: colid }, thAttrs), [
5129
5131
  h('div', {
5130
- class: ['vxe-cell', {
5132
+ class: ['vxe-cell', '' + (cellClassName || ''), {
5131
5133
  'c--title': showTitle,
5132
5134
  'c--tooltip': showTooltip,
5133
5135
  'c--ellipsis': showEllipsis
@@ -5167,7 +5169,8 @@ var TableHeaderComponent = defineVxeComponent({
5167
5169
  rowVNs.push(h('tr', {
5168
5170
  key: 'ff',
5169
5171
  class: [
5170
- 'vxe-header--row'
5172
+ 'vxe-header--row is--floating-filters',
5173
+ '' + (floatingFilterOpts.rowClassName || '')
5171
5174
  ]
5172
5175
  }, renderFilterRows(isOptimizeMode, renderColumnList)));
5173
5176
  }
@@ -10867,7 +10870,7 @@ hooks$4.add('tableExportModule', {
10867
10870
  const toHtml = (opts, columns, datas) => {
10868
10871
  const { id, border, treeConfig, headerAlign: allHeaderAlign, align: allAlign, footerAlign: allFooterAlign, showOverflow: allColumnOverflow, showHeaderOverflow: allColumnHeaderOverflow } = props;
10869
10872
  const { isAllSelected, isIndeterminate } = reactData;
10870
- const { mergeBodyCellMaps } = internalData;
10873
+ const { mergeBodyCellMaps, mergeFooterCellMaps } = internalData;
10871
10874
  const treeOpts = computeTreeOpts.value;
10872
10875
  const { print: isPrint, isHeader, isFooter, isColgroup, isMerge, colgroups, original } = opts;
10873
10876
  const allCls = 'check-all';
@@ -11005,15 +11008,34 @@ hooks$4.add('tableExportModule', {
11005
11008
  const footers = getFooterData($xeTable, opts, footerTableData);
11006
11009
  if (footers.length) {
11007
11010
  tables.push('<tfoot>');
11008
- footers.forEach((row) => {
11011
+ footers.forEach((row, rIndex) => {
11009
11012
  tables.push(`<tr>${columns.map((column) => {
11010
11013
  const footAlign = column.footerAlign || column.align || allFooterAlign || allAlign;
11011
11014
  const classNames = hasEllipsis(column, 'showOverflow', allColumnOverflow) ? ['col--ellipsis'] : [];
11012
11015
  const cellValue = getFooterCellValue(opts, row, column);
11016
+ let rowSpan = 1;
11017
+ let colSpan = 1;
11018
+ if (isMerge) {
11019
+ const _rowIndex = rIndex;
11020
+ const _columnIndex = $xeTable.getVTColumnIndex(column);
11021
+ const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`];
11022
+ if (spanRest) {
11023
+ const { rowspan, colspan } = spanRest;
11024
+ if (!rowspan || !colspan) {
11025
+ return '';
11026
+ }
11027
+ if (rowspan > 1) {
11028
+ rowSpan = rowspan;
11029
+ }
11030
+ if (colspan > 1) {
11031
+ colSpan = colspan;
11032
+ }
11033
+ }
11034
+ }
11013
11035
  if (footAlign) {
11014
11036
  classNames.push(`col--${footAlign}`);
11015
11037
  }
11016
- return `<td class="${classNames.join(' ')}" title="${cellValue}"><div ${isPrint ? '' : `style="width: ${column.renderWidth}px"`}>${formatText(cellValue, true)}</div></td>`;
11038
+ return `<td class="${classNames.join(' ')}" rowspan="${rowSpan}" colspan="${colSpan}" title="${cellValue}"><div ${isPrint ? '' : `style="width: ${column.renderWidth}px"`}>${formatText(cellValue, true)}</div></td>`;
11017
11039
  }).join('')}</tr>`);
11018
11040
  });
11019
11041
  tables.push('</tfoot>');
@@ -14911,8 +14933,10 @@ var VxeTableComponent = defineVxeComponent({
14911
14933
  // 使用已安装的组件,如果未安装则不渲染
14912
14934
  const VxeUILoadingComponent = VxeUI.getComponent('VxeLoading');
14913
14935
  const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip');
14936
+ const $xeModal = inject('$xeModal', null);
14914
14937
  const $xeTabs = inject('$xeTabs', null);
14915
14938
  const $xeParentTable = inject('$xeTable', null);
14939
+ const $xeSplitter = inject('$xeSplitter', null);
14916
14940
  const $xeGrid = inject('$xeGrid', null);
14917
14941
  const $xeGantt = inject('$xeGantt', null);
14918
14942
  const $xeGGWrapper = $xeGrid || $xeGantt;
@@ -15531,6 +15555,15 @@ var VxeTableComponent = defineVxeComponent({
15531
15555
  }
15532
15556
  return [];
15533
15557
  });
15558
+ const combineTabsResizeFlag = computed(() => {
15559
+ return $xeTabs ? $xeTabs.reactData.resizeFlag : null;
15560
+ });
15561
+ const combineModalResizeFlag = computed(() => {
15562
+ return $xeModal ? $xeModal.reactData.resizeFlag : null;
15563
+ });
15564
+ const combineSplitterResizeFlag = computed(() => {
15565
+ return $xeSplitter ? $xeSplitter.reactData.resizeFlag : null;
15566
+ });
15534
15567
  const refMaps = {
15535
15568
  refElem,
15536
15569
  refTooltip,
@@ -23922,11 +23955,39 @@ var VxeTableComponent = defineVxeComponent({
23922
23955
  const { tooltipStore } = reactData;
23923
23956
  const { column, row } = params;
23924
23957
  const { showAll, contentMethod } = tipOpts;
23925
- const customContent = contentMethod ? contentMethod(params) : null;
23926
- const useCustom = contentMethod && !XEUtils.eqNull(customContent);
23927
- const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim();
23958
+ const cellText = XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim();
23928
23959
  const isOver = tipOverEl.scrollWidth > tipOverEl.clientWidth;
23929
- if (content && (showAll || useCustom || isOver)) {
23960
+ let isShow = false;
23961
+ let customContent = null;
23962
+ let content = '';
23963
+ if (contentMethod) {
23964
+ customContent = contentMethod(params);
23965
+ }
23966
+ // 是否全部展示
23967
+ if (showAll) {
23968
+ // 如果为 null 默认显示
23969
+ if (XEUtils.eqNull(customContent)) {
23970
+ isShow = true;
23971
+ content = cellText;
23972
+ }
23973
+ else if (customContent !== '' && customContent !== false) {
23974
+ // 如果为 '' | false 则不显示
23975
+ isShow = true;
23976
+ content = '' + customContent;
23977
+ }
23978
+ }
23979
+ else {
23980
+ // 如果为 null 使用默认逻辑
23981
+ if (XEUtils.eqNull(customContent)) {
23982
+ isShow = isOver;
23983
+ }
23984
+ else if (customContent !== '' && customContent !== false) {
23985
+ // 如果为 '' | false 则不显示
23986
+ isShow = true;
23987
+ }
23988
+ content = cellText;
23989
+ }
23990
+ if (isShow && content) {
23930
23991
  const tipContent = formatText(content);
23931
23992
  Object.assign(tooltipStore, {
23932
23993
  row,
@@ -28990,11 +29051,19 @@ var VxeTableComponent = defineVxeComponent({
28990
29051
  loadTableData(internalData.tableSynchData, false, true);
28991
29052
  }
28992
29053
  });
28993
- if ($xeTabs) {
28994
- watch(() => $xeTabs ? $xeTabs.reactData.resizeFlag : null, () => {
28995
- handleGlobalResizeEvent();
28996
- });
28997
- }
29054
+ const layoutReFlag = ref(0);
29055
+ watch(combineTabsResizeFlag, () => {
29056
+ layoutReFlag.value++;
29057
+ });
29058
+ watch(combineModalResizeFlag, () => {
29059
+ layoutReFlag.value++;
29060
+ });
29061
+ watch(combineSplitterResizeFlag, () => {
29062
+ layoutReFlag.value++;
29063
+ });
29064
+ watch(layoutReFlag, () => {
29065
+ handleGlobalResizeEvent();
29066
+ });
28998
29067
  handleKeyField();
28999
29068
  hooks$1.forEach((options) => {
29000
29069
  const { setupTable } = options;