vxe-table 4.21.1 → 4.21.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 (52) hide show
  1. package/dist/all.esm.js +42 -13
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/index.css +1 -1
  5. package/es/index.min.css +1 -1
  6. package/es/style.css +1 -1
  7. package/es/style.min.css +1 -1
  8. package/es/table/src/body.js +12 -4
  9. package/es/table/src/footer.js +12 -3
  10. package/es/table/src/header.js +12 -4
  11. package/es/table/src/table.js +7 -2
  12. package/es/table/style.css +35 -60
  13. package/es/table/style.min.css +1 -1
  14. package/es/ui/index.js +1 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/es/vxe-table/style.css +35 -60
  17. package/es/vxe-table/style.min.css +1 -1
  18. package/lib/index.css +1 -1
  19. package/lib/index.min.css +1 -1
  20. package/lib/index.umd.js +38 -13
  21. package/lib/index.umd.min.js +1 -1
  22. package/lib/style.css +1 -1
  23. package/lib/style.min.css +1 -1
  24. package/lib/table/src/body.js +11 -3
  25. package/lib/table/src/body.min.js +1 -1
  26. package/lib/table/src/footer.js +12 -3
  27. package/lib/table/src/footer.min.js +1 -1
  28. package/lib/table/src/header.js +11 -3
  29. package/lib/table/src/header.min.js +1 -1
  30. package/lib/table/src/table.js +2 -2
  31. package/lib/table/src/table.min.js +1 -1
  32. package/lib/table/style/style.css +35 -60
  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 +35 -60
  39. package/lib/vxe-table/style/style.min.css +1 -1
  40. package/package.json +2 -2
  41. package/packages/table/src/body.ts +14 -4
  42. package/packages/table/src/footer.ts +14 -3
  43. package/packages/table/src/header.ts +14 -4
  44. package/packages/table/src/table.ts +7 -2
  45. package/packages/ui/src/utils.ts +1 -1
  46. package/styles/components/table.scss +37 -75
  47. /package/es/{iconfont.1787542597284.ttf → iconfont.1787677402393.ttf} +0 -0
  48. /package/es/{iconfont.1787542597284.woff → iconfont.1787677402393.woff} +0 -0
  49. /package/es/{iconfont.1787542597284.woff2 → iconfont.1787677402393.woff2} +0 -0
  50. /package/lib/{iconfont.1787542597284.ttf → iconfont.1787677402393.ttf} +0 -0
  51. /package/lib/{iconfont.1787542597284.woff → iconfont.1787677402393.woff} +0 -0
  52. /package/lib/{iconfont.1787542597284.woff2 → iconfont.1787677402393.woff2} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "4.21.1",
3
+ "version": "4.21.2",
4
4
  "description": "A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -66,7 +66,7 @@
66
66
  "typescript": "~5.9.3",
67
67
  "vue": "3.4.27",
68
68
  "vue-router": "~4.5.1",
69
- "vxe-pc-ui": "4.17.14"
69
+ "vxe-pc-ui": "4.17.18"
70
70
  },
71
71
  "vetur": {
72
72
  "tags": "helper/vetur/tags.json",
@@ -4,7 +4,7 @@ import XEUtils from 'xe-utils'
4
4
  import { VxeUI } from '../../ui'
5
5
  import { getRowid, createHandleGetRowId, getCellRestHeight } from './util'
6
6
  import { updateCellTitle, getPropClass } from '../../ui/src/dom'
7
- import { isEnableConf } from '../../ui/src/utils'
7
+ import { isEnableConf, getDefaultConfig } from '../../ui/src/utils'
8
8
  import { getSlotVNs } from '../../ui/src/vn'
9
9
 
10
10
  import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableDefines, VxeComponentSlotType } from '../../../types'
@@ -159,8 +159,15 @@ export default defineVxeComponent({
159
159
  const isEdit = isEnableConf(editRender)
160
160
  const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0
161
161
  let fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed)
162
- const isCellPadding = XEUtils.eqNull(padding) ? (allPadding === null ? cellOpts.padding : allPadding) : padding
163
- const cellOverflow = XEUtils.eqNull(showOverflow) ? allShowOverflow : showOverflow
162
+
163
+ const cellPadding = getDefaultConfig(padding, (allPadding === null ? cellOpts.padding : allPadding))
164
+ const isAllCellPadding = cellPadding === true
165
+ const isCellPaddingTop = cellPadding ? (isAllCellPadding || cellPadding.top !== false) : false
166
+ const isCellPaddingBottom = cellPadding ? (isAllCellPadding || cellPadding.bottom !== false) : false
167
+ const isCellPaddingLeft = cellPadding ? (isAllCellPadding || cellPadding.left !== false) : false
168
+ const isCellPaddingRight = cellPadding ? (isAllCellPadding || cellPadding.right !== false) : false
169
+
170
+ const cellOverflow = getDefaultConfig(showOverflow, allShowOverflow)
164
171
  const showEllipsis = (cellOverflow === true ? tooltipOpts.mode : cellOverflow) === 'ellipsis'
165
172
  const showTitle = (cellOverflow === true ? tooltipOpts.mode : cellOverflow) === 'title'
166
173
  const showTooltip = (cellOverflow === true ? tooltipOpts.mode : cellOverflow) === 'tooltip'
@@ -473,7 +480,10 @@ export default defineVxeComponent({
473
480
  'col--max-height': maxHeight,
474
481
  'fixed--width': !isAutoCellWidth,
475
482
  'fixed--hidden': fixedHiddenColumn,
476
- 'is--padding': isCellPadding,
483
+ 'is--pg-top': isCellPaddingTop,
484
+ 'is--pg-bottom': isCellPaddingBottom,
485
+ 'is--pg-left': isCellPaddingLeft,
486
+ 'is--pg-right': isCellPaddingRight,
477
487
  'is--progress': (fixedHiddenColumn && isAllOverflow) || isVNPreEmptyStatus,
478
488
  'is--drag-cell': isRowDragCell && (isCrossDrag || isPeerDrag || !rowLevel),
479
489
  'is--drag-disabled': isDisabledDrag,
@@ -6,6 +6,7 @@ import { updateCellTitle, getPropClass } from '../../ui/src/dom'
6
6
  import { getCalcHeight } from './util'
7
7
 
8
8
  import type { VxeTablePrivateMethods, VxeTableConstructor, VxeTableMethods, VxeTableDefines } from '../../../types'
9
+ import { getDefaultConfig } from '../../ui/src/utils'
9
10
 
10
11
  const { renderer, renderEmptyElement } = VxeUI
11
12
 
@@ -71,8 +72,15 @@ export default defineVxeComponent({
71
72
  const compConf = renderOpts ? renderer.get(renderOpts.name) : null
72
73
  const showAllTip = footerTooltipOpts.showAll
73
74
  const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed)
74
- const isPadding = XEUtils.isBoolean(footerCellOpts.padding) ? footerCellOpts.padding : cellOpts.padding
75
- const footOverflow = XEUtils.eqNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow
75
+
76
+ const cellPadding = getDefaultConfig(footerCellOpts.padding, cellOpts.padding)
77
+ const isAllCellPadding = cellPadding === true
78
+ const isCellPaddingTop = cellPadding ? (isAllCellPadding || cellPadding.top !== false) : false
79
+ const isCellPaddingBottom = cellPadding ? (isAllCellPadding || cellPadding.bottom !== false) : false
80
+ const isCellPaddingLeft = cellPadding ? (isAllCellPadding || cellPadding.left !== false) : false
81
+ const isCellPaddingRight = cellPadding ? (isAllCellPadding || cellPadding.right !== false) : false
82
+
83
+ const footOverflow = getDefaultConfig(showFooterOverflow, allColumnFooterOverflow)
76
84
  const footAlign = footerAlign || (compConf ? compConf.tableFooterCellAlign : '') || allFooterAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign
77
85
  const showEllipsis = (footOverflow === true ? footerTooltipOpts.mode : footOverflow) === 'ellipsis'
78
86
  const showTitle = (footOverflow === true ? footerTooltipOpts.mode : footOverflow) === 'title'
@@ -182,7 +190,10 @@ export default defineVxeComponent({
182
190
  'col--last': isLastColumn,
183
191
  'fixed--width': !isAutoCellWidth,
184
192
  'fixed--hidden': fixedHiddenColumn,
185
- 'is--padding': isPadding,
193
+ 'is--pg-top': isCellPaddingTop,
194
+ 'is--pg-bottom': isCellPaddingBottom,
195
+ 'is--pg-left': isCellPaddingLeft,
196
+ 'is--pg-right': isCellPaddingRight,
186
197
  'col--ellipsis': hasEllipsis,
187
198
  'col--current': currentColumn === column
188
199
  }, getPropClass(footerClassName, cellParams), getPropClass(footerCellClassName, cellParams)],
@@ -2,7 +2,7 @@ import { h, ref, Ref, PropType, inject, nextTick, watch, onMounted, onUnmounted
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { VxeUI } from '../../ui'
5
- import { isEnableConf } from '../../ui/src/utils'
5
+ import { getDefaultConfig, isEnableConf } from '../../ui/src/utils'
6
6
  import { getCalcHeight, convertHeaderColumnToRows, convertHeaderToGridRows } from './util'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
 
@@ -85,8 +85,15 @@ export default defineVxeComponent({
85
85
  const compConf = renderOpts ? renderer.get(renderOpts.name) : null
86
86
  const isColGroup = column.children && column.children.length
87
87
  const fixedHiddenColumn = overflowX && !isColGroup && (fixedType ? column.fixed !== fixedType : !!column.fixed)
88
- const isPadding = XEUtils.isBoolean(headerCellOpts.padding) ? headerCellOpts.padding : cellOpts.padding
89
- const headOverflow = XEUtils.eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
88
+
89
+ const cellPadding = getDefaultConfig(headerCellOpts.padding, cellOpts.padding)
90
+ const isAllCellPadding = cellPadding === true
91
+ const isCellPaddingTop = cellPadding ? (isAllCellPadding || cellPadding.top !== false) : false
92
+ const isCellPaddingBottom = cellPadding ? (isAllCellPadding || cellPadding.bottom !== false) : false
93
+ const isCellPaddingLeft = cellPadding ? (isAllCellPadding || cellPadding.left !== false) : false
94
+ const isCellPaddingRight = cellPadding ? (isAllCellPadding || cellPadding.right !== false) : false
95
+
96
+ const headOverflow = getDefaultConfig(showHeaderOverflow, allColumnHeaderOverflow)
90
97
  const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : '') || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign
91
98
  const showEllipsis = (headOverflow === true ? headerTooltipOpts.mode : headOverflow) === 'ellipsis'
92
99
  const showTitle = (headOverflow === true ? headerTooltipOpts.mode : headOverflow) === 'title'
@@ -210,7 +217,10 @@ export default defineVxeComponent({
210
217
  'col--group': isColGroup,
211
218
  'col--ellipsis': hasEllipsis,
212
219
  'fixed--width': !isAutoCellWidth,
213
- 'is--padding': isPadding,
220
+ 'is--pg-top': isCellPaddingTop,
221
+ 'is--pg-bottom': isCellPaddingBottom,
222
+ 'is--pg-left': isCellPaddingLeft,
223
+ 'is--pg-right': isCellPaddingRight,
214
224
  'is--sortable': column.sortable,
215
225
  'col--filter': !!filters,
216
226
  'is--filter-active': hasFilter,
@@ -2176,10 +2176,9 @@ export default defineVxeComponent({
2176
2176
  if (!el || !el.clientWidth) {
2177
2177
  return
2178
2178
  }
2179
- const cellOpts = computeCellOpts.value
2180
2179
  const treeOpts = computeTreeOpts.value
2181
2180
  const defaultRowHeight = computeDefaultRowHeight.value
2182
- if (!isAllOverflow && (scrollYLoad || scrollXLoad || cellOpts.maxHeight || (treeConfig && treeOpts.showLine))) {
2181
+ if (!isAllOverflow && (scrollYLoad || scrollXLoad || (treeConfig && treeOpts.showLine))) {
2183
2182
  const { handleGetRowId } = createHandleGetRowId($xeTable)
2184
2183
  el.setAttribute('data-calc-row', 'Y')
2185
2184
  tableData.forEach(row => {
@@ -14485,6 +14484,12 @@ export default defineVxeComponent({
14485
14484
  }, () => {
14486
14485
  reLayoutFlag.value++
14487
14486
  })
14487
+ watch(() => {
14488
+ const cellOpts = computeCellOpts.value
14489
+ return cellOpts.height
14490
+ }, () => {
14491
+ reLayoutFlag.value++
14492
+ })
14488
14493
  watch(reLayoutFlag, () => {
14489
14494
  $xeTable.recalculate(true)
14490
14495
  })
@@ -51,6 +51,6 @@ export function eqEmptyValue (cellValue: any) {
51
51
  return cellValue === '' || XEUtils.eqNull(cellValue)
52
52
  }
53
53
 
54
- export function getDefaultConfig (val1: any, def1: any) {
54
+ export function getDefaultConfig <T = any, D = any> (val1: T, def1: D): (T | D) {
55
55
  return XEUtils.eqNull(val1) ? def1 : val1
56
56
  }
@@ -8,20 +8,27 @@
8
8
  // 局部变量
9
9
  .vxe-table {
10
10
  --vxe-ui-table-current-font-size: var(--vxe-ui-font-size-default);
11
+ --vxe-ui-table-current-cell-padding: var(--vxe-ui-table-cell-padding-default);
12
+ --vxe-ui-table-current-row-line-height: var(--vxe-ui-table-row-line-height);
11
13
  &.size--xlarge {
12
14
  --vxe-ui-table-current-font-size: var(--vxe-ui-font-size-xlarge);
15
+ --vxe-ui-table-current-cell-padding: var(--vxe-ui-table-cell-padding-xlarge);
13
16
  }
14
17
  &.size--large {
15
18
  --vxe-ui-table-current-font-size: var(--vxe-ui-font-size-large);
19
+ --vxe-ui-table-current-cell-padding: var(--vxe-ui-table-cell-padding-large);
16
20
  }
17
21
  &.size--medium {
18
22
  --vxe-ui-table-current-font-size: var(--vxe-ui-font-size-medium);
23
+ --vxe-ui-table-current-cell-padding: var(--vxe-ui-table-cell-padding-medium);
19
24
  }
20
25
  &.size--small {
21
26
  --vxe-ui-table-current-font-size: var(--vxe-ui-font-size-small);
27
+ --vxe-ui-table-current-cell-padding: var(--vxe-ui-table-cell-padding-small);
22
28
  }
23
29
  &.size--mini {
24
30
  --vxe-ui-table-current-font-size: var(--vxe-ui-font-size-mini);
31
+ --vxe-ui-table-current-cell-padding: var(--vxe-ui-table-cell-padding-mini);
25
32
  }
26
33
  }
27
34
 
@@ -1392,6 +1399,34 @@ $btnThemeList: (
1392
1399
  white-space: nowrap;
1393
1400
  }
1394
1401
 
1402
+ .vxe-header--column,
1403
+ .vxe-body--column,
1404
+ .vxe-footer--column {
1405
+ &.is--pg-top {
1406
+ .vxe-cell {
1407
+ padding-top: var(--vxe-ui-table-current-cell-padding);
1408
+ }
1409
+ }
1410
+ &.is--pg-bottom {
1411
+ .vxe-cell {
1412
+ padding-bottom: var(--vxe-ui-table-current-cell-padding);
1413
+ }
1414
+ }
1415
+ &.is--pg-left {
1416
+ .vxe-cell {
1417
+ padding-left: var(--vxe-ui-table-current-cell-padding);
1418
+ }
1419
+ }
1420
+ &.is--pg-right {
1421
+ .vxe-cell {
1422
+ padding-right: var(--vxe-ui-table-current-cell-padding);
1423
+ }
1424
+ }
1425
+ .vxe-default-textarea {
1426
+ padding: var(--vxe-ui-table-current-cell-padding);
1427
+ }
1428
+ }
1429
+
1395
1430
  /*table*/
1396
1431
  .vxe-table--render-default {
1397
1432
  position: relative;
@@ -1504,7 +1539,7 @@ $btnThemeList: (
1504
1539
  .vxe-body--column,
1505
1540
  .vxe-footer--column {
1506
1541
  position: relative;
1507
- line-height: var(--vxe-ui-table-row-line-height);
1542
+ line-height: var(--vxe-ui-table-current-row-line-height);
1508
1543
  text-align: left;
1509
1544
  &.col--center {
1510
1545
  text-align: center;
@@ -1573,7 +1608,7 @@ $btnThemeList: (
1573
1608
  .vxe-body--column,
1574
1609
  .vxe-footer--column {
1575
1610
  position: relative;
1576
- line-height: var(--vxe-ui-table-row-line-height);
1611
+ line-height: var(--vxe-ui-table-current-row-line-height);
1577
1612
  text-align: left;
1578
1613
  &.col--current {
1579
1614
  background-color: var(--vxe-ui-table-column-current-background-color);
@@ -1857,18 +1892,6 @@ $btnThemeList: (
1857
1892
  .vxe-table--empty-block {
1858
1893
  min-height: var(--vxe-ui-table-row-height-medium);
1859
1894
  }
1860
- .vxe-header--column,
1861
- .vxe-body--column,
1862
- .vxe-footer--column {
1863
- &.is--padding {
1864
- .vxe-cell {
1865
- padding: var(--vxe-ui-table-cell-padding-medium);
1866
- .vxe-default-textarea {
1867
- padding: var(--vxe-ui-table-cell-padding-medium);
1868
- }
1869
- }
1870
- }
1871
- }
1872
1895
  .vxe-cell {
1873
1896
  .vxe-default-input,
1874
1897
  .vxe-default-textarea,
@@ -1890,18 +1913,6 @@ $btnThemeList: (
1890
1913
  .vxe-table--empty-block {
1891
1914
  min-height: var(--vxe-ui-table-row-height-small);
1892
1915
  }
1893
- .vxe-header--column,
1894
- .vxe-body--column,
1895
- .vxe-footer--column {
1896
- &.is--padding {
1897
- .vxe-cell {
1898
- padding: var(--vxe-ui-table-cell-padding-small);
1899
- .vxe-default-textarea {
1900
- padding: var(--vxe-ui-table-cell-padding-small);
1901
- }
1902
- }
1903
- }
1904
- }
1905
1916
  .vxe-cell {
1906
1917
  .vxe-default-input,
1907
1918
  .vxe-default-textarea,
@@ -1923,18 +1934,6 @@ $btnThemeList: (
1923
1934
  .vxe-table--empty-block {
1924
1935
  min-height: var(--vxe-ui-table-row-height-mini);
1925
1936
  }
1926
- .vxe-header--column,
1927
- .vxe-body--column,
1928
- .vxe-footer--column {
1929
- &.is--padding {
1930
- .vxe-cell {
1931
- padding: var(--vxe-ui-table-cell-padding-mini);
1932
- .vxe-default-textarea {
1933
- padding: var(--vxe-ui-table-cell-padding-mini);
1934
- }
1935
- }
1936
- }
1937
- }
1938
1937
  .vxe-cell {
1939
1938
  .vxe-default-input,
1940
1939
  .vxe-default-textarea,
@@ -1951,19 +1950,6 @@ $btnThemeList: (
1951
1950
  padding: 0 var(--vxe-ui-table-cell-padding-mini);
1952
1951
  }
1953
1952
  }
1954
-
1955
- .vxe-header--column,
1956
- .vxe-body--column,
1957
- .vxe-footer--column {
1958
- &.is--padding {
1959
- .vxe-cell {
1960
- padding: var(--vxe-ui-table-cell-padding-default);
1961
- .vxe-default-textarea {
1962
- padding: var(--vxe-ui-table-cell-padding-default);
1963
- }
1964
- }
1965
- }
1966
- }
1967
1953
 
1968
1954
  .vxe-cell {
1969
1955
  white-space: pre-line;
@@ -2396,30 +2382,6 @@ $btnThemeList: (
2396
2382
  }
2397
2383
  }
2398
2384
 
2399
- &.size--medium {
2400
- .vxe-cell--checkbox {
2401
- font-size: var(--vxe-checkbox-font-size-medium);
2402
- }
2403
- .vxe-cell--radio {
2404
- font-size: var(--vxe-radio-font-size-medium);
2405
- }
2406
- }
2407
- &.size--small {
2408
- .vxe-cell--checkbox {
2409
- font-size: var(--vxe-checkbox-font-size-small);
2410
- }
2411
- .vxe-cell--radio {
2412
- font-size: var(--vxe-radio-font-size-small);
2413
- }
2414
- }
2415
- &.size--mini {
2416
- .vxe-cell--checkbox {
2417
- font-size: var(--vxe-checkbox-font-size-mini);
2418
- }
2419
- .vxe-cell--radio {
2420
- font-size: var(--vxe-radio-font-size-mini);
2421
- }
2422
- }
2423
2385
 
2424
2386
  /*暂无数据*/
2425
2387
  .vxe-table--empty-placeholder,