vxe-table 4.9.34 → 4.9.35

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 (37) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/render/index.js +44 -11
  3. package/es/table/src/body.js +17 -29
  4. package/es/table/src/footer.js +20 -21
  5. package/es/table/src/header.js +15 -8
  6. package/es/table/src/table.js +26 -24
  7. package/es/ui/index.js +1 -1
  8. package/es/ui/src/log.js +1 -1
  9. package/lib/index.umd.js +125 -95
  10. package/lib/index.umd.min.js +1 -1
  11. package/lib/style.css +1 -1
  12. package/lib/table/render/index.js +44 -11
  13. package/lib/table/render/index.min.js +1 -1
  14. package/lib/table/src/body.js +17 -28
  15. package/lib/table/src/body.min.js +1 -1
  16. package/lib/table/src/footer.js +21 -22
  17. package/lib/table/src/footer.min.js +1 -1
  18. package/lib/table/src/header.js +15 -7
  19. package/lib/table/src/header.min.js +1 -1
  20. package/lib/table/src/table.js +26 -25
  21. package/lib/table/src/table.min.js +1 -1
  22. package/lib/ui/index.js +1 -1
  23. package/lib/ui/index.min.js +1 -1
  24. package/lib/ui/src/log.js +1 -1
  25. package/lib/ui/src/log.min.js +1 -1
  26. package/package.json +2 -2
  27. package/packages/table/render/index.ts +45 -11
  28. package/packages/table/src/body.ts +20 -28
  29. package/packages/table/src/footer.ts +21 -20
  30. package/packages/table/src/header.ts +14 -8
  31. package/packages/table/src/table.ts +28 -22
  32. /package/es/{iconfont.1735003904604.ttf → iconfont.1735027807086.ttf} +0 -0
  33. /package/es/{iconfont.1735003904604.woff → iconfont.1735027807086.woff} +0 -0
  34. /package/es/{iconfont.1735003904604.woff2 → iconfont.1735027807086.woff2} +0 -0
  35. /package/lib/{iconfont.1735003904604.ttf → iconfont.1735027807086.ttf} +0 -0
  36. /package/lib/{iconfont.1735003904604.woff → iconfont.1735027807086.woff} +0 -0
  37. /package/lib/{iconfont.1735003904604.woff2 → iconfont.1735027807086.woff2} +0 -0
@@ -1,4 +1,4 @@
1
- import { createCommentVNode, defineComponent, TransitionGroup, h, ref, inject, nextTick, onBeforeUnmount, onMounted, onUnmounted } from 'vue';
1
+ import { defineComponent, TransitionGroup, h, ref, inject, nextTick, onBeforeUnmount, onMounted, onUnmounted } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
3
  import { VxeUI } from '../../ui';
4
4
  import { mergeBodyMethod, getRowid, getRefElem } from './util';
@@ -28,7 +28,7 @@ export default defineComponent({
28
28
  const xesize = inject('xesize', null);
29
29
  const { xID, props: tableProps, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
30
30
  const { refTableBody, refTableHeader, refTableFooter, refTableLeftBody, refTableRightBody, refScrollXHandleElem, refScrollYHandleElem } = $xeTable.getRefMaps();
31
- const { computeEditOpts, computeMouseOpts, computeAreaOpts, computeSYOpts, computeEmptyOpts, computeKeyboardOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts } = $xeTable.getComputeMaps();
31
+ const { computeEditOpts, computeMouseOpts, computeAreaOpts, computeSYOpts, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts } = $xeTable.getComputeMaps();
32
32
  const refElem = ref();
33
33
  const refBodyTable = ref();
34
34
  const refBodyColgroup = ref();
@@ -700,41 +700,29 @@ export default defineComponent({
700
700
  elemStore[`${prefix}emptyBlock`] = null;
701
701
  });
702
702
  const renderVN = () => {
703
- let { fixedColumn, fixedType, tableColumn } = props;
704
- const { keyboardConfig, showOverflow: allColumnOverflow, spanMethod, mouseConfig } = tableProps;
705
- const { tableData, mergeList, scrollYLoad, isAllOverflow, isDragRowMove } = tableReactData;
703
+ const { fixedColumn, fixedType, tableColumn } = props;
704
+ const { showOverflow: allColumnOverflow, spanMethod, footerSpanMethod, mouseConfig } = tableProps;
705
+ const { tableData, scrollXLoad, scrollYLoad, isAllOverflow, isDragRowMove, expandColumn } = tableReactData;
706
706
  const { visibleColumn } = tableInternalData;
707
707
  const { slots } = tableContext;
708
708
  const rowOpts = computeRowOpts.value;
709
709
  const sYOpts = computeSYOpts.value;
710
710
  const emptyOpts = computeEmptyOpts.value;
711
- const keyboardOpts = computeKeyboardOpts.value;
712
711
  const mouseOpts = computeMouseOpts.value;
713
712
  const rowDragOpts = computeRowDragOpts.value;
714
- // const isMergeLeftFixedExceeded = computeIsMergeLeftFixedExceeded.value
715
- // const isMergeRightFixedExceeded = computeIsMergeRightFixedExceeded.value
716
- // 如果是使用优化模式
713
+ let renderColumnList = tableColumn;
717
714
  if (fixedType) {
718
- // 如果存在展开行使用全量渲染
719
- if (!tableReactData.expandColumn && (scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow))) {
720
- if (!mergeList.length && !spanMethod && !(keyboardConfig && keyboardOpts.isMerge)) {
721
- tableColumn = fixedColumn;
715
+ renderColumnList = visibleColumn;
716
+ // 如果是使用优化模式
717
+ if (scrollXLoad || scrollYLoad || (allColumnOverflow && isAllOverflow)) {
718
+ // 如果不支持优化模式
719
+ if (expandColumn || spanMethod || footerSpanMethod) {
720
+ renderColumnList = visibleColumn;
722
721
  }
723
722
  else {
724
- tableColumn = visibleColumn;
725
- // 检查固定列是否被合并,合并范围是否超出固定列
726
- // if (mergeList.length && !isMergeLeftFixedExceeded && fixedType === 'left') {
727
- // tableColumn = fixedColumn
728
- // } else if (mergeList.length && !isMergeRightFixedExceeded && fixedType === 'right') {
729
- // tableColumn = fixedColumn
730
- // } else {
731
- // tableColumn = visibleColumn
732
- // }
723
+ renderColumnList = fixedColumn || [];
733
724
  }
734
725
  }
735
- else {
736
- tableColumn = visibleColumn;
737
- }
738
726
  }
739
727
  let emptyContent;
740
728
  const emptySlot = slots ? slots.empty : null;
@@ -759,7 +747,7 @@ export default defineComponent({
759
747
  }
760
748
  return h('div', Object.assign({ ref: refElem, class: ['vxe-table--body-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'], xid: xID }, ons), [
761
749
  fixedType
762
- ? createCommentVNode()
750
+ ? renderEmptyElement($xeTable)
763
751
  : h('div', {
764
752
  ref: refBodyXSpace,
765
753
  class: 'vxe-body--x-space'
@@ -781,7 +769,7 @@ export default defineComponent({
781
769
  */
782
770
  h('colgroup', {
783
771
  ref: refBodyColgroup
784
- }, tableColumn.map((column, $columnIndex) => {
772
+ }, renderColumnList.map((column, $columnIndex) => {
785
773
  return h('col', {
786
774
  name: column.id,
787
775
  key: $columnIndex
@@ -796,11 +784,11 @@ export default defineComponent({
796
784
  name: `vxe-body--row-list${isDragRowMove ? '' : '-disabled'}`,
797
785
  tag: 'tbody'
798
786
  }, {
799
- default: () => renderRows(fixedType, tableData, tableColumn)
787
+ default: () => renderRows(fixedType, tableData, renderColumnList)
800
788
  })
801
789
  : h('tbody', {
802
790
  ref: refBodyTBody
803
- }, renderRows(fixedType, tableData, tableColumn))
791
+ }, renderRows(fixedType, tableData, renderColumnList))
804
792
  ]),
805
793
  h('div', {
806
794
  class: 'vxe-table--checkbox-range'
@@ -1,8 +1,8 @@
1
- import { createCommentVNode, defineComponent, TransitionGroup, h, ref, inject, nextTick, onMounted, onUnmounted } from 'vue';
1
+ import { defineComponent, TransitionGroup, h, ref, inject, nextTick, onMounted, onUnmounted } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
3
  import { VxeUI } from '../../ui';
4
4
  import { updateCellTitle, getPropClass, setScrollLeft } from '../../ui/src/dom';
5
- const { renderer } = VxeUI;
5
+ const { renderer, renderEmptyElement } = VxeUI;
6
6
  const renderType = 'footer';
7
7
  function mergeFooterMethod(mergeFooterList, _rowIndex, _columnIndex) {
8
8
  for (let mIndex = 0; mIndex < mergeFooterList.length; mIndex++) {
@@ -211,8 +211,8 @@ export default defineComponent({
211
211
  ]
212
212
  : []);
213
213
  };
214
- const renderHeads = (footerTableData) => {
215
- const { fixedType, tableColumn } = props;
214
+ const renderHeads = (renderColumnList) => {
215
+ const { fixedType, footerTableData } = props;
216
216
  const { footerRowClassName, footerRowStyle } = tableProps;
217
217
  const { isDragColMove } = tableReactData;
218
218
  const columnOpts = computeColumnOpts.value;
@@ -231,7 +231,7 @@ export default defineComponent({
231
231
  ],
232
232
  style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : null
233
233
  }, {
234
- default: () => renderRows(tableColumn, footerTableData, row, $rowIndex, _rowIndex)
234
+ default: () => renderRows(renderColumnList, footerTableData, row, $rowIndex, _rowIndex)
235
235
  });
236
236
  }
237
237
  return h('tr', {
@@ -241,28 +241,27 @@ export default defineComponent({
241
241
  footerRowClassName ? XEUtils.isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : ''
242
242
  ],
243
243
  style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : null
244
- }, renderRows(tableColumn, footerTableData, row, $rowIndex, _rowIndex));
244
+ }, renderRows(renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
245
245
  });
246
246
  };
247
247
  const renderVN = () => {
248
- let { fixedType, fixedColumn, tableColumn, footerTableData } = props;
249
- const { footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps;
248
+ const { fixedType, fixedColumn, tableColumn } = props;
249
+ const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps;
250
250
  const { visibleColumn } = tableInternalData;
251
- const { scrollXLoad, scrollbarWidth, mergeFooterList } = tableReactData;
252
- // 如果是使用优化模式
251
+ const { scrollbarWidth } = tableReactData;
252
+ let renderColumnList = tableColumn;
253
253
  if (fixedType) {
254
- // 如果存在展开行使用全量渲染
255
- if (!tableReactData.expandColumn && (scrollXLoad || allColumnFooterOverflow)) {
256
- if (!mergeFooterList.length || !footerSpanMethod) {
257
- tableColumn = fixedColumn;
254
+ renderColumnList = visibleColumn;
255
+ // 如果是使用优化模式
256
+ if (allColumnFooterOverflow) {
257
+ // 如果不支持优化模式
258
+ if (spanMethod || footerSpanMethod) {
259
+ renderColumnList = visibleColumn;
258
260
  }
259
261
  else {
260
- tableColumn = visibleColumn;
262
+ renderColumnList = fixedColumn || [];
261
263
  }
262
264
  }
263
- else {
264
- tableColumn = visibleColumn;
265
- }
266
265
  }
267
266
  const ons = {};
268
267
  if (!fixedType) {
@@ -270,7 +269,7 @@ export default defineComponent({
270
269
  }
271
270
  return h('div', Object.assign({ ref: refElem, class: ['vxe-table--footer-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'], xid: xID }, ons), [
272
271
  fixedType
273
- ? createCommentVNode()
272
+ ? renderEmptyElement($xeTable)
274
273
  : h('div', {
275
274
  ref: refFooterXSpace,
276
275
  class: 'vxe-body--x-space'
@@ -288,7 +287,7 @@ export default defineComponent({
288
287
  */
289
288
  h('colgroup', {
290
289
  ref: refFooterColgroup
291
- }, tableColumn.map((column, $columnIndex) => {
290
+ }, renderColumnList.map((column, $columnIndex) => {
292
291
  return h('col', {
293
292
  name: column.id,
294
293
  key: $columnIndex
@@ -305,7 +304,7 @@ export default defineComponent({
305
304
  */
306
305
  h('tfoot', {
307
306
  ref: refFooterTFoot
308
- }, renderHeads(footerTableData))
307
+ }, renderHeads(renderColumnList))
309
308
  ])
310
309
  ]);
311
310
  };
@@ -1,9 +1,9 @@
1
- import { createCommentVNode, defineComponent, TransitionGroup, h, ref, inject, nextTick, watch, onMounted, onUnmounted } from 'vue';
1
+ import { defineComponent, TransitionGroup, h, ref, inject, nextTick, watch, onMounted, onUnmounted } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
3
  import { VxeUI } from '../../ui';
4
4
  import { convertHeaderColumnToRows, getColReMinWidth } from './util';
5
5
  import { hasClass, getOffsetPos, addClass, removeClass } from '../../ui/src/dom';
6
- const { renderer } = VxeUI;
6
+ const { renderer, renderEmptyElement } = VxeUI;
7
7
  const renderType = 'header';
8
8
  export default defineComponent({
9
9
  name: 'VxeTableHeader',
@@ -290,8 +290,8 @@ export default defineComponent({
290
290
  };
291
291
  const renderVN = () => {
292
292
  const { fixedType, fixedColumn, tableColumn } = props;
293
- const { showHeaderOverflow: allColumnHeaderOverflow } = tableProps;
294
- const { isGroup, scrollXLoad, scrollbarWidth } = tableReactData;
293
+ const { showHeaderOverflow: allColumnHeaderOverflow, spanMethod, footerSpanMethod } = tableProps;
294
+ const { isGroup, scrollbarWidth } = tableReactData;
295
295
  const { visibleColumn } = tableInternalData;
296
296
  let headerGroups = headerColumn.value;
297
297
  let renderColumnList = tableColumn;
@@ -299,10 +299,17 @@ export default defineComponent({
299
299
  renderColumnList = visibleColumn;
300
300
  }
301
301
  else {
302
- // 如果是使用优化模式
303
302
  if (fixedType) {
304
- if (scrollXLoad || allColumnHeaderOverflow) {
305
- renderColumnList = fixedColumn;
303
+ renderColumnList = visibleColumn;
304
+ // 如果是使用优化模式
305
+ if (allColumnHeaderOverflow) {
306
+ // 如果不支持优化模式
307
+ if (spanMethod || footerSpanMethod) {
308
+ renderColumnList = visibleColumn;
309
+ }
310
+ else {
311
+ renderColumnList = fixedColumn || [];
312
+ }
306
313
  }
307
314
  }
308
315
  headerGroups = [renderColumnList];
@@ -313,7 +320,7 @@ export default defineComponent({
313
320
  xid: xID
314
321
  }, [
315
322
  fixedType
316
- ? createCommentVNode()
323
+ ? renderEmptyElement($xeTable)
317
324
  : h('div', {
318
325
  ref: refHeaderXSpace,
319
326
  class: 'vxe-body--x-space'
@@ -1637,14 +1637,13 @@ export default defineComponent({
1637
1637
  updateAfterDataIndex();
1638
1638
  };
1639
1639
  const updateStyle = () => {
1640
- const { border, showFooter, showOverflow: allColumnOverflow, showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod, keyboardConfig } = props;
1641
- const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, scrollbarHeight, columnStore, editStore, mergeList, mergeFooterList, isAllOverflow } = reactData;
1640
+ const { border, showFooter, showOverflow: allColumnOverflow, showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props;
1641
+ const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, scrollbarHeight, columnStore, editStore, isAllOverflow, expandColumn } = reactData;
1642
1642
  let { visibleColumn, fullColumnIdData, tableHeight, tableWidth, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData;
1643
1643
  const containerList = ['main', 'left', 'right'];
1644
1644
  const emptyPlaceholderElem = refEmptyPlaceholder.value;
1645
1645
  const cellOffsetWidth = computeCellOffsetWidth.value;
1646
1646
  const mouseOpts = computeMouseOpts.value;
1647
- const keyboardOpts = computeKeyboardOpts.value;
1648
1647
  const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper']);
1649
1648
  if (emptyPlaceholderElem) {
1650
1649
  emptyPlaceholderElem.style.top = `${headerHeight}px`;
@@ -1701,10 +1700,17 @@ export default defineComponent({
1701
1700
  renderColumnList = visibleColumn;
1702
1701
  }
1703
1702
  else {
1704
- // 如果是使用优化模式
1705
1703
  if (fixedType) {
1706
- if (scrollXLoad || allColumnHeaderOverflow) {
1707
- renderColumnList = fixedColumn;
1704
+ renderColumnList = visibleColumn;
1705
+ // 如果是使用优化模式
1706
+ if (allColumnHeaderOverflow) {
1707
+ // 如果不支持优化模式
1708
+ if (spanMethod || footerSpanMethod) {
1709
+ renderColumnList = visibleColumn;
1710
+ }
1711
+ else {
1712
+ renderColumnList = fixedColumn || [];
1713
+ }
1708
1714
  }
1709
1715
  }
1710
1716
  }
@@ -1783,20 +1789,18 @@ export default defineComponent({
1783
1789
  }
1784
1790
  let tWidth = tableWidth;
1785
1791
  let renderColumnList = tableColumn;
1786
- // 如果是使用优化模式
1787
1792
  if (fixedType) {
1788
- // 如果存在展开行使用全量渲染
1789
- if (!reactData.expandColumn && (scrollYLoad || (allColumnOverflow ? isAllOverflow : allColumnOverflow))) {
1790
- if (!mergeList.length && !spanMethod && !(keyboardConfig && keyboardOpts.isMerge)) {
1791
- renderColumnList = fixedColumn;
1793
+ renderColumnList = visibleColumn;
1794
+ // 如果是使用优化模式
1795
+ if (scrollXLoad || scrollYLoad || (allColumnOverflow && isAllOverflow)) {
1796
+ // 如果不支持优化模式
1797
+ if (expandColumn || spanMethod || footerSpanMethod) {
1798
+ renderColumnList = visibleColumn;
1792
1799
  }
1793
1800
  else {
1794
- renderColumnList = visibleColumn;
1801
+ renderColumnList = fixedColumn || [];
1795
1802
  }
1796
1803
  }
1797
- else {
1798
- renderColumnList = visibleColumn;
1799
- }
1800
1804
  }
1801
1805
  tWidth = renderColumnList.reduce((previous, column) => previous + column.renderWidth, 0);
1802
1806
  if (tableElem) {
@@ -1811,20 +1815,18 @@ export default defineComponent({
1811
1815
  else if (layout === 'footer') {
1812
1816
  let tWidth = tableWidth;
1813
1817
  let renderColumnList = tableColumn;
1814
- // 如果是使用优化模式
1815
1818
  if (fixedType) {
1816
- // 如果存在展开行使用全量渲染
1817
- if (!reactData.expandColumn && (scrollXLoad || allColumnFooterOverflow)) {
1818
- if (!mergeFooterList.length || !footerSpanMethod) {
1819
- renderColumnList = fixedColumn;
1819
+ renderColumnList = visibleColumn;
1820
+ // 如果是使用优化模式
1821
+ if (allColumnFooterOverflow) {
1822
+ // 如果不支持优化模式
1823
+ if (spanMethod || footerSpanMethod) {
1824
+ renderColumnList = visibleColumn;
1820
1825
  }
1821
1826
  else {
1822
- renderColumnList = visibleColumn;
1827
+ renderColumnList = fixedColumn || [];
1823
1828
  }
1824
1829
  }
1825
- else {
1826
- renderColumnList = visibleColumn;
1827
- }
1828
1830
  }
1829
1831
  tWidth = renderColumnList.reduce((previous, column) => previous + column.renderWidth, 0);
1830
1832
  if (isNodeElement(wrapperElem)) {
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.9.34";
3
+ export const version = "4.9.35";
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.9.34"}`;
3
+ const version = `table v${"4.9.35"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);