vxe-table 3.18.1 → 3.18.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 (83) hide show
  1. package/es/grid/src/grid.js +5 -1
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/module/menu/mixin.js +67 -43
  7. package/es/table/module/menu/panel.js +10 -8
  8. package/es/table/src/body.js +12 -14
  9. package/es/table/src/column.js +2 -0
  10. package/es/table/src/columnInfo.js +1 -0
  11. package/es/table/src/footer.js +7 -5
  12. package/es/table/src/header.js +67 -28
  13. package/es/table/src/methods.js +233 -39
  14. package/es/table/src/props.js +23 -6
  15. package/es/table/src/table.js +43 -19
  16. package/es/table/src/util.js +70 -2
  17. package/es/table/style.css +11 -21
  18. package/es/table/style.min.css +1 -1
  19. package/es/ui/index.js +1 -1
  20. package/es/ui/src/log.js +1 -1
  21. package/es/ui/src/vn.js +16 -11
  22. package/es/vxe-table/style.css +11 -21
  23. package/es/vxe-table/style.min.css +1 -1
  24. package/lib/grid/src/grid.js +6 -0
  25. package/lib/grid/src/grid.min.js +1 -1
  26. package/lib/index.css +1 -1
  27. package/lib/index.min.css +1 -1
  28. package/lib/index.umd.js +610 -185
  29. package/lib/index.umd.min.js +1 -1
  30. package/lib/style.css +1 -1
  31. package/lib/style.min.css +1 -1
  32. package/lib/table/module/menu/mixin.js +84 -58
  33. package/lib/table/module/menu/mixin.min.js +1 -1
  34. package/lib/table/module/menu/panel.js +11 -10
  35. package/lib/table/module/menu/panel.min.js +1 -1
  36. package/lib/table/src/body.js +11 -13
  37. package/lib/table/src/body.min.js +1 -1
  38. package/lib/table/src/column.js +2 -0
  39. package/lib/table/src/column.min.js +1 -1
  40. package/lib/table/src/columnInfo.js +1 -0
  41. package/lib/table/src/columnInfo.min.js +1 -1
  42. package/lib/table/src/footer.js +7 -5
  43. package/lib/table/src/header.js +82 -25
  44. package/lib/table/src/header.min.js +1 -1
  45. package/lib/table/src/methods.js +259 -42
  46. package/lib/table/src/methods.min.js +1 -1
  47. package/lib/table/src/props.js +11 -3
  48. package/lib/table/src/props.min.js +1 -1
  49. package/lib/table/src/table.js +46 -16
  50. package/lib/table/src/table.min.js +1 -1
  51. package/lib/table/src/util.js +74 -2
  52. package/lib/table/src/util.min.js +1 -1
  53. package/lib/table/style/style.css +11 -21
  54. package/lib/table/style/style.min.css +1 -1
  55. package/lib/ui/index.js +1 -1
  56. package/lib/ui/index.min.js +1 -1
  57. package/lib/ui/src/log.js +1 -1
  58. package/lib/ui/src/log.min.js +1 -1
  59. package/lib/ui/src/vn.js +16 -10
  60. package/lib/ui/src/vn.min.js +1 -1
  61. package/lib/vxe-table/style/style.css +11 -21
  62. package/lib/vxe-table/style/style.min.css +1 -1
  63. package/package.json +1 -1
  64. package/packages/grid/src/grid.ts +5 -1
  65. package/packages/table/module/menu/mixin.ts +79 -50
  66. package/packages/table/module/menu/panel.ts +11 -9
  67. package/packages/table/src/body.ts +11 -13
  68. package/packages/table/src/column.ts +4 -2
  69. package/packages/table/src/columnInfo.ts +1 -0
  70. package/packages/table/src/footer.ts +11 -9
  71. package/packages/table/src/header.ts +76 -34
  72. package/packages/table/src/methods.ts +245 -40
  73. package/packages/table/src/props.ts +29 -12
  74. package/packages/table/src/table.ts +53 -16
  75. package/packages/table/src/util.ts +76 -2
  76. package/packages/ui/src/vn.ts +16 -11
  77. package/styles/components/table.scss +33 -56
  78. /package/es/{iconfont.1756272539382.ttf → iconfont.1756629700380.ttf} +0 -0
  79. /package/es/{iconfont.1756272539382.woff → iconfont.1756629700380.woff} +0 -0
  80. /package/es/{iconfont.1756272539382.woff2 → iconfont.1756629700380.woff2} +0 -0
  81. /package/lib/{iconfont.1756272539382.ttf → iconfont.1756629700380.ttf} +0 -0
  82. /package/lib/{iconfont.1756272539382.woff → iconfont.1756629700380.woff} +0 -0
  83. /package/lib/{iconfont.1756272539382.woff2 → iconfont.1756629700380.woff2} +0 -0
@@ -1069,7 +1069,7 @@ function updateStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
1069
1069
  }
1070
1070
  if (xRightCornerEl) {
1071
1071
  xRightCornerEl.style.width = scrollbarXToTop ? '' : `${osbWidth}px`
1072
- xRightCornerEl.style.display = scrollbarXToTop ? '' : (overflowX && osbHeight ? 'block' : '')
1072
+ xRightCornerEl.style.display = scrollbarXToTop ? '' : (xScrollbarVisible === 'visible' ? 'block' : '')
1073
1073
  }
1074
1074
 
1075
1075
  const scrollYVirtualEl = $xeTable.$refs.refScrollYVirtualElem as HTMLDivElement
@@ -1081,7 +1081,7 @@ function updateStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
1081
1081
  const yTopCornerEl = $xeTable.$refs.refScrollYTopCornerElem as HTMLDivElement
1082
1082
  if (yTopCornerEl) {
1083
1083
  yTopCornerEl.style.height = `${tHeaderHeight}px`
1084
- yTopCornerEl.style.display = overflowY && tHeaderHeight ? 'block' : ''
1084
+ yTopCornerEl.style.display = tHeaderHeight && yScrollbarVisible === 'visible' ? 'block' : ''
1085
1085
  }
1086
1086
  const yWrapperEl = $xeTable.$refs.refScrollYWrapperElem as HTMLDivElement
1087
1087
  if (yWrapperEl) {
@@ -1092,7 +1092,7 @@ function updateStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
1092
1092
  if (yBottomCornerEl) {
1093
1093
  yBottomCornerEl.style.height = `${tFooterHeight}px`
1094
1094
  yBottomCornerEl.style.top = `${tHeaderHeight + tbHeight}px`
1095
- yBottomCornerEl.style.display = overflowY && tFooterHeight ? 'block' : ''
1095
+ yBottomCornerEl.style.display = tFooterHeight && yScrollbarVisible === 'visible' ? 'block' : ''
1096
1096
  }
1097
1097
 
1098
1098
  const rowExpandEl = $xeTable.$refs.refRowExpandElem as HTMLDivElement
@@ -2016,12 +2016,60 @@ function handleBodyMerge ($xeTable: VxeTableConstructor & VxeTablePrivateMethods
2016
2016
  }
2017
2017
  }
2018
2018
 
2019
- function handleFooterMerge ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
2019
+ function removeBodyMerges ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
2020
+ const internalData = $xeTable as unknown as TableInternalData
2021
+
2022
+ const { mergeBodyList, fullColumnIdData, fullAllDataRowIdData, mergeBodyMaps } = internalData
2023
+ const rest: VxeTableDefines.MergeItem[] = []
2024
+ if (merges) {
2025
+ const { handleGetRowId } = createHandleGetRowId($xeTable)
2026
+ if (!XEUtils.isArray(merges)) {
2027
+ merges = [merges]
2028
+ }
2029
+ merges.forEach((item) => {
2030
+ const { row: margeRow, col: margeCol } = item
2031
+ let mergeRowIndex = -1
2032
+ let mergeColumnIndex = -1
2033
+ if (XEUtils.isNumber(margeRow)) {
2034
+ mergeRowIndex = margeRow
2035
+ } else {
2036
+ const rowid = margeRow ? handleGetRowId(margeRow) : null
2037
+ const rowRest = rowid ? fullAllDataRowIdData[rowid] : null
2038
+ if (rowRest) {
2039
+ mergeRowIndex = rowRest._index
2040
+ }
2041
+ }
2042
+ if (XEUtils.isNumber(margeCol)) {
2043
+ mergeColumnIndex = margeCol
2044
+ } else {
2045
+ const colid = margeCol ? margeCol.id : null
2046
+ const colRest = colid ? fullColumnIdData[colid] : null
2047
+ if (colRest) {
2048
+ mergeColumnIndex = colRest._index
2049
+ }
2050
+ }
2051
+ const mcIndex = XEUtils.findIndexOf(mergeBodyList, item => (item.row === mergeRowIndex) && (item.col === mergeColumnIndex))
2052
+ if (mcIndex > -1) {
2053
+ const rItems = mergeBodyList.splice(mcIndex, 1)
2054
+ const item = rItems[0]
2055
+ if (item) {
2056
+ rest.push(rItems[0])
2057
+ if (mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
2058
+ delete mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]
2059
+ }
2060
+ }
2061
+ }
2062
+ })
2063
+ }
2064
+ return rest
2065
+ }
2066
+
2067
+ function handleHeaderMerge ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
2020
2068
  const reactData = $xeTable as unknown as TableReactData
2021
2069
  const internalData = $xeTable as unknown as TableInternalData
2022
2070
 
2023
2071
  const { footerTableData } = reactData
2024
- const { mergeFooterList, mergeFooterMaps, fullColumnIdData } = internalData
2072
+ const { mergeHeaderList, mergeHeaderMaps, fullColumnIdData } = internalData
2025
2073
  if (merges) {
2026
2074
  const { visibleColumn } = internalData
2027
2075
  if (!XEUtils.isArray(merges)) {
@@ -2046,7 +2094,7 @@ function handleFooterMerge ($xeTable: VxeTableConstructor & VxeTablePrivateMetho
2046
2094
  if (rowspan > 1 || colspan > 1) {
2047
2095
  const row = footerTableData[mergeRowIndex]
2048
2096
  const column = visibleColumn[mergeColumnIndex]
2049
- let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]
2097
+ let mergeItem = mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]
2050
2098
  if (mergeItem) {
2051
2099
  mergeItem.rowspan = rowspan
2052
2100
  mergeItem.colspan = colspan
@@ -2063,8 +2111,8 @@ function handleFooterMerge ($xeTable: VxeTableConstructor & VxeTablePrivateMetho
2063
2111
  _rowspan: rowspan,
2064
2112
  _colspan: colspan
2065
2113
  }
2066
- mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem
2067
- mergeFooterList.push(mergeItem)
2114
+ mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem
2115
+ mergeHeaderList.push(mergeItem)
2068
2116
  }
2069
2117
  }
2070
2118
  }
@@ -2072,29 +2120,19 @@ function handleFooterMerge ($xeTable: VxeTableConstructor & VxeTablePrivateMetho
2072
2120
  }
2073
2121
  }
2074
2122
 
2075
- function removeBodyMerges ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
2123
+ function removeHeaderMerges ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
2076
2124
  const internalData = $xeTable as unknown as TableInternalData
2077
2125
 
2078
- const { mergeBodyList, fullColumnIdData, fullAllDataRowIdData, mergeBodyMaps } = internalData
2126
+ const { mergeHeaderList, fullColumnIdData, mergeHeaderMaps } = internalData
2079
2127
  const rest: VxeTableDefines.MergeItem[] = []
2080
2128
  if (merges) {
2081
- const { handleGetRowId } = createHandleGetRowId($xeTable)
2082
2129
  if (!XEUtils.isArray(merges)) {
2083
2130
  merges = [merges]
2084
2131
  }
2085
2132
  merges.forEach((item) => {
2086
2133
  const { row: margeRow, col: margeCol } = item
2087
- let mergeRowIndex = -1
2134
+ const mergeRowIndex = XEUtils.isNumber(margeRow) ? margeRow : -1
2088
2135
  let mergeColumnIndex = -1
2089
- if (XEUtils.isNumber(margeRow)) {
2090
- mergeRowIndex = margeRow
2091
- } else {
2092
- const rowid = margeRow ? handleGetRowId(margeRow) : null
2093
- const rowRest = rowid ? fullAllDataRowIdData[rowid] : null
2094
- if (rowRest) {
2095
- mergeRowIndex = rowRest._index
2096
- }
2097
- }
2098
2136
  if (XEUtils.isNumber(margeCol)) {
2099
2137
  mergeColumnIndex = margeCol
2100
2138
  } else {
@@ -2104,14 +2142,14 @@ function removeBodyMerges ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
2104
2142
  mergeColumnIndex = colRest._index
2105
2143
  }
2106
2144
  }
2107
- const mcIndex = XEUtils.findIndexOf(mergeBodyList, item => (item.row === mergeRowIndex) && (item.col === mergeColumnIndex))
2145
+ const mcIndex = XEUtils.findIndexOf(mergeHeaderList, item => item.row === mergeRowIndex && item.col === mergeColumnIndex)
2108
2146
  if (mcIndex > -1) {
2109
- const rItems = mergeBodyList.splice(mcIndex, 1)
2147
+ const rItems = mergeHeaderList.splice(mcIndex, 1)
2110
2148
  const item = rItems[0]
2111
2149
  if (item) {
2112
- rest.push(rItems[0])
2113
- if (mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
2114
- delete mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]
2150
+ rest.push(item)
2151
+ if (mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
2152
+ delete mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]
2115
2153
  }
2116
2154
  }
2117
2155
  }
@@ -2120,6 +2158,62 @@ function removeBodyMerges ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
2120
2158
  return rest
2121
2159
  }
2122
2160
 
2161
+ function handleFooterMerge ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
2162
+ const reactData = $xeTable as unknown as TableReactData
2163
+ const internalData = $xeTable as unknown as TableInternalData
2164
+
2165
+ const { footerTableData } = reactData
2166
+ const { mergeFooterList, mergeFooterMaps, fullColumnIdData } = internalData
2167
+ if (merges) {
2168
+ const { visibleColumn } = internalData
2169
+ if (!XEUtils.isArray(merges)) {
2170
+ merges = [merges]
2171
+ }
2172
+ merges.forEach((item) => {
2173
+ let { row: margeRow, col: margeCol, rowspan, colspan } = item
2174
+ const mergeRowIndex = XEUtils.isNumber(margeRow) ? margeRow : -1
2175
+ let mergeColumnIndex = -1
2176
+ if (XEUtils.isNumber(margeCol)) {
2177
+ mergeColumnIndex = margeCol
2178
+ } else {
2179
+ const colid = margeCol ? margeCol.id : null
2180
+ const colRest = colid ? fullColumnIdData[colid] : null
2181
+ if (colRest) {
2182
+ mergeColumnIndex = colRest._index
2183
+ }
2184
+ }
2185
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
2186
+ rowspan = XEUtils.toNumber(rowspan) || 1
2187
+ colspan = XEUtils.toNumber(colspan) || 1
2188
+ if (rowspan > 1 || colspan > 1) {
2189
+ const row = footerTableData[mergeRowIndex]
2190
+ const column = visibleColumn[mergeColumnIndex]
2191
+ let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]
2192
+ if (mergeItem) {
2193
+ mergeItem.rowspan = rowspan
2194
+ mergeItem.colspan = colspan
2195
+ mergeItem._rowspan = rowspan
2196
+ mergeItem._colspan = colspan
2197
+ } else {
2198
+ mergeItem = {
2199
+ row: mergeRowIndex,
2200
+ col: mergeColumnIndex,
2201
+ rowspan,
2202
+ colspan,
2203
+ _row: row,
2204
+ _col: column,
2205
+ _rowspan: rowspan,
2206
+ _colspan: colspan
2207
+ }
2208
+ mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem
2209
+ mergeFooterList.push(mergeItem)
2210
+ }
2211
+ }
2212
+ }
2213
+ })
2214
+ }
2215
+ }
2216
+
2123
2217
  function removeFooterMerges ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
2124
2218
  const internalData = $xeTable as unknown as TableInternalData
2125
2219
 
@@ -2236,8 +2330,22 @@ function calcTableHeight ($xeTable: VxeTableConstructor & VxeTablePrivateMethods
2236
2330
  const props = $xeTable
2237
2331
  const reactData = $xeTable as unknown as TableReactData
2238
2332
 
2333
+ const { editConfig } = props
2239
2334
  const { parentHeight } = reactData
2240
- const val = props[key]
2335
+ let val = props[key]
2336
+ if (key === 'minHeight') {
2337
+ const defMinHeight = getConfig().table.minHeight
2338
+ if (XEUtils.eqNull(val)) {
2339
+ if (eqEmptyValue(defMinHeight)) {
2340
+ // 编辑模式默认最小高度
2341
+ if (isEnableConf(editConfig)) {
2342
+ val = 144
2343
+ }
2344
+ } else {
2345
+ val = defMinHeight
2346
+ }
2347
+ }
2348
+ }
2241
2349
  let num = 0
2242
2350
  if (val) {
2243
2351
  if (val === '100%' || val === 'auto') {
@@ -2756,12 +2864,22 @@ function handleDefaultMergeCells ($xeTable: VxeTableConstructor & VxeTablePrivat
2756
2864
  }
2757
2865
  }
2758
2866
 
2867
+ function handleDefaultMergeHeaderItems ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
2868
+ const props = $xeTable
2869
+
2870
+ const { mergeHeaderCells } = props
2871
+ if (mergeHeaderCells) {
2872
+ $xeTable.setMergeHeaderCells(mergeHeaderCells)
2873
+ }
2874
+ }
2875
+
2759
2876
  function handleDefaultMergeFooterItems ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
2760
2877
  const props = $xeTable
2761
2878
 
2762
- const { mergeFooterItems } = props
2763
- if (mergeFooterItems) {
2764
- $xeTable.setMergeFooterItems(mergeFooterItems)
2879
+ const { mergeFooterCells, mergeFooterItems } = props
2880
+ const mFooterCells = mergeFooterCells || mergeFooterItems
2881
+ if (mFooterCells) {
2882
+ $xeTable.setMergeFooterCells(mFooterCells)
2765
2883
  }
2766
2884
  }
2767
2885
 
@@ -3237,6 +3355,10 @@ function loadTableData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods,
3237
3355
 
3238
3356
  handleReserveStatus($xeTable)
3239
3357
  $xeTable.checkSelectionStatus()
3358
+ $xeTable.dispatchEvent('data-change', {
3359
+ visibleColumn: internalData.visibleColumn,
3360
+ visibleData: internalData.afterFullData
3361
+ }, null)
3240
3362
  return new Promise<void>(resolve => {
3241
3363
  $xeTable.$nextTick()
3242
3364
  .then(() => handleRecalculateStyle($xeTable, false, false, false))
@@ -3299,6 +3421,7 @@ function handleLoadDefaults ($xeTable: VxeTableConstructor & VxeTablePrivateMeth
3299
3421
  handleDefaultTreeExpand($xeTable)
3300
3422
  handleDefaultRowGroupExpand($xeTable)
3301
3423
  handleDefaultMergeCells($xeTable)
3424
+ handleDefaultMergeHeaderItems($xeTable)
3302
3425
  handleDefaultMergeFooterItems($xeTable)
3303
3426
  $xeTable.$nextTick(() => setTimeout(() => $xeTable.recalculate()))
3304
3427
  }
@@ -6902,6 +7025,15 @@ const Methods = {
6902
7025
  internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList)
6903
7026
  reactData.mergeBodyFlag++
6904
7027
  },
7028
+ handleUpdateHeaderMerge () {
7029
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
7030
+ const reactData = $xeTable as unknown as TableReactData
7031
+ const internalData = $xeTable as unknown as TableInternalData
7032
+
7033
+ const { mergeHeaderList } = internalData
7034
+ internalData.mergeHeaderCellMaps = buildMergeData(mergeHeaderList)
7035
+ reactData.mergeHeadFlag++
7036
+ },
6905
7037
  handleUpdateFooterMerge () {
6906
7038
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
6907
7039
  const reactData = $xeTable as unknown as TableReactData
@@ -11518,6 +11650,10 @@ const Methods = {
11518
11650
  }
11519
11651
  reactData.footerTableData = footData
11520
11652
  $xeTable.handleUpdateFooterMerge()
11653
+ $xeTable.dispatchEvent('footer-data-change', {
11654
+ visibleColumn: internalData.visibleColumn,
11655
+ footData
11656
+ }, null)
11521
11657
  return $xeTable.$nextTick()
11522
11658
  },
11523
11659
  /**
@@ -11539,7 +11675,7 @@ const Methods = {
11539
11675
  /**
11540
11676
  * 设置合并单元格 [{ row: Row|number, column: ColumnInfo|number, rowspan: number, colspan: number }]
11541
11677
  */
11542
- setMergeCells (merges: any) {
11678
+ setMergeCells (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
11543
11679
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11544
11680
  const props = $xeTable
11545
11681
  const reactData = $xeTable as unknown as TableReactData
@@ -11563,7 +11699,7 @@ const Methods = {
11563
11699
  /**
11564
11700
  * 移除单元格合并 [{row:Row|number, col:ColumnInfo|number}]
11565
11701
  */
11566
- removeMergeCells (merges: any) {
11702
+ removeMergeCells (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
11567
11703
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11568
11704
  const props = $xeTable
11569
11705
 
@@ -11603,48 +11739,111 @@ const Methods = {
11603
11739
  return updateStyle($xeTable)
11604
11740
  })
11605
11741
  },
11606
- setMergeFooterItems (merges: any) {
11742
+ setMergeHeaderCells (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
11743
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11744
+
11745
+ handleHeaderMerge($xeTable, merges)
11746
+ $xeTable.handleUpdateHeaderMerge()
11747
+ return $xeTable.$nextTick().then(() => {
11748
+ return updateStyle($xeTable)
11749
+ })
11750
+ },
11751
+ /**
11752
+ * 移除表头单元格合并 [{row:Row|number, col:ColumnInfo|number}]
11753
+ */
11754
+ removeMergeHeaderCells (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
11755
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11756
+
11757
+ const rest = removeHeaderMerges($xeTable, merges)
11758
+ $xeTable.handleUpdateHeaderMerge()
11759
+ return $xeTable.$nextTick().then(() => {
11760
+ updateStyle($xeTable)
11761
+ return rest
11762
+ })
11763
+ },
11764
+ /**
11765
+ * 获取所有被合并的表头单元格
11766
+ */
11767
+ getMergeHeaderCells () {
11768
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11769
+ const internalData = $xeTable as unknown as TableInternalData
11770
+
11771
+ return internalData.mergeHeaderList.slice(0)
11772
+ },
11773
+ /**
11774
+ * 清除所有表头单元格合并
11775
+ */
11776
+ clearMergeHeaderCells () {
11777
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11778
+ const reactData = $xeTable as unknown as TableReactData
11779
+ const internalData = $xeTable as unknown as TableInternalData
11780
+
11781
+ internalData.mergeHeaderList = []
11782
+ internalData.mergeHeaderMaps = {}
11783
+ internalData.mergeHeaderCellMaps = {}
11784
+ reactData.mergeHeadFlag++
11785
+ return $xeTable.$nextTick().then(() => {
11786
+ return updateStyle($xeTable)
11787
+ })
11788
+ },
11789
+ setMergeFooterCells (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
11607
11790
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11608
11791
  const props = $xeTable
11609
11792
 
11610
11793
  if (props.footerSpanMethod) {
11611
- errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method'])
11794
+ errLog('vxe.error.errConflicts', ['merge-footer-cells | merge-footer-items', 'footer-span-method'])
11612
11795
  }
11613
11796
  handleFooterMerge($xeTable, merges)
11614
11797
  $xeTable.handleUpdateFooterMerge()
11615
11798
  return $xeTable.$nextTick().then(() => {
11616
- $xeTable.updateCellAreas()
11617
11799
  return updateStyle($xeTable)
11618
11800
  })
11619
11801
  },
11620
- removeMergeFooterItems (merges: any) {
11802
+ setMergeFooterItems (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
11803
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11804
+
11805
+ // errLog('vxe.error.delFunc', ['setMergeFooterItems', 'setMergeFooterCells'])
11806
+ return $xeTable.setMergeFooterCells(merges)
11807
+ },
11808
+ removeMergeFooterCells (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
11621
11809
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11622
11810
  const props = $xeTable
11623
11811
 
11624
11812
  if (props.footerSpanMethod) {
11625
- errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method'])
11813
+ errLog('vxe.error.errConflicts', ['merge-footer-cells | merge-footer-items', 'footer-span-method'])
11626
11814
  }
11627
11815
  const rest = removeFooterMerges($xeTable, merges)
11628
11816
  $xeTable.handleUpdateFooterMerge()
11629
11817
  return $xeTable.$nextTick().then(() => {
11630
- $xeTable.updateCellAreas()
11631
11818
  updateStyle($xeTable)
11632
11819
  return rest
11633
11820
  })
11634
11821
  },
11822
+ removeMergeFooterItems (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[]) {
11823
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11824
+
11825
+ // errLog('vxe.error.delFunc', ['removeMergeFooterItems', 'removeMergeFooterCells'])
11826
+ return $xeTable.removeMergeFooterCells(merges)
11827
+ },
11635
11828
  /**
11636
11829
  * 获取所有被合并的表尾
11637
11830
  */
11638
- getMergeFooterItems () {
11831
+ getMergeFooterCells () {
11639
11832
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11640
11833
  const internalData = $xeTable as unknown as TableInternalData
11641
11834
 
11642
11835
  return internalData.mergeFooterList.slice(0)
11643
11836
  },
11837
+ getMergeFooterItems () {
11838
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11839
+
11840
+ // errLog('vxe.error.delFunc', ['getMergeFooterItems', 'getMergeFooterCells'])
11841
+ return $xeTable.getMergeFooterCells()
11842
+ },
11644
11843
  /**
11645
11844
  * 清除所有表尾合并
11646
11845
  */
11647
- clearMergeFooterItems () {
11846
+ clearMergeFooterCells () {
11648
11847
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11649
11848
  const reactData = $xeTable as unknown as TableReactData
11650
11849
  const internalData = $xeTable as unknown as TableInternalData
@@ -11657,6 +11856,12 @@ const Methods = {
11657
11856
  return updateStyle($xeTable)
11658
11857
  })
11659
11858
  },
11859
+ clearMergeFooterItems () {
11860
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11861
+
11862
+ // errLog('vxe.error.delFunc', ['clearMergeFooterItems', 'clearMergeFooterCells'])
11863
+ return $xeTable.clearMergeFooterCells()
11864
+ },
11660
11865
  handleUpdateAggData () {
11661
11866
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
11662
11867
  const internalData = $xeTable as unknown as TableInternalData
@@ -15,7 +15,7 @@ export const tableProps = {
15
15
  // 表格的最小高度
16
16
  minHeight: {
17
17
  type: [Number, String] as PropType<VxeTablePropTypes.MinHeight>,
18
- default: () => getConfig().table.minHeight
18
+ default: () => null
19
19
  },
20
20
  // 表格的最大高度
21
21
  maxHeight: [Number, String] as PropType<VxeTablePropTypes.MaxHeight>,
@@ -131,23 +131,40 @@ export const tableProps = {
131
131
  // 给行附加样式
132
132
  rowStyle: [Object, Function],
133
133
  // 给表头行附加样式
134
- headerRowStyle: [Object, Function],
134
+ headerRowStyle: [Object, Function] as PropType<VxeTablePropTypes.HeaderRowStyle>,
135
135
  // 给表尾行附加样式
136
- footerRowStyle: [Object, Function],
137
- // 合并指定单元格
138
- mergeCells: Array,
139
- // 合并指定的表尾
140
- mergeFooterItems: Array,
136
+ footerRowStyle: [Object, Function] as PropType<VxeTablePropTypes.FooterRowStyle>,
137
+ // 用于分组表头,显示为自定义列头,配合 mergeHeaderCells 灵活实现自定义合并
138
+ showCustomHeader: {
139
+ type: Boolean as PropType<VxeTablePropTypes.ShowCustomHeader>,
140
+ default: () => getConfig().table.showCustomHeader
141
+ },
142
+ // 临时合并指定的表头单元格
143
+ mergeHeaderCells: Array as PropType<VxeTablePropTypes.MergeHeaderCells>,
144
+ // 临时合并指定的单元格
145
+ mergeCells: Array as PropType<VxeTablePropTypes.MergeCells>,
146
+ // 临时合并指定的表尾单元格
147
+ mergeFooterCells: Array as PropType<VxeTablePropTypes.MergeFooterCells>,
148
+ mergeFooterItems: Array as PropType<VxeTablePropTypes.MergeFooterItems>,
141
149
  // 自定义合并行或列的方法
142
- spanMethod: Function,
150
+ spanMethod: Function as PropType<VxeTablePropTypes.SpanMethod>,
143
151
  // 表尾合并行或列
144
- footerSpanMethod: Function,
152
+ footerSpanMethod: Function as PropType<VxeTablePropTypes.FooterSpanMethod>,
145
153
  // 设置所有内容过长时显示为省略号
146
- showOverflow: { type: [Boolean, String], default: () => getConfig().table.showOverflow },
154
+ showOverflow: {
155
+ type: [Boolean, String] as PropType<VxeTablePropTypes.ShowOverflow>,
156
+ default: () => getConfig().table.showOverflow
157
+ },
147
158
  // 设置表头所有内容过长时显示为省略号
148
- showHeaderOverflow: { type: [Boolean, String], default: () => getConfig().table.showHeaderOverflow },
159
+ showHeaderOverflow: {
160
+ type: [Boolean, String] as PropType<VxeTablePropTypes.ShowHeaderOverflow>,
161
+ default: () => getConfig().table.showHeaderOverflow
162
+ },
149
163
  // 设置表尾所有内容过长时显示为省略号
150
- showFooterOverflow: { type: [Boolean, String], default: () => getConfig().table.showFooterOverflow },
164
+ showFooterOverflow: {
165
+ type: [Boolean, String] as PropType<VxeTablePropTypes.ShowFooterOverflow>,
166
+ default: () => getConfig().table.showFooterOverflow
167
+ },
151
168
 
152
169
  /** 高级属性 */
153
170
  /**