vxe-table 3.21.14 → 3.21.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.
Files changed (162) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/ar-EG.js +7 -0
  4. package/es/locale/lang/de-DE.js +7 -0
  5. package/es/locale/lang/en-US.js +7 -0
  6. package/es/locale/lang/es-ES.js +7 -0
  7. package/es/locale/lang/fr-FR.js +7 -0
  8. package/es/locale/lang/hu-HU.js +7 -0
  9. package/es/locale/lang/hy-AM.js +7 -0
  10. package/es/locale/lang/id-ID.js +7 -0
  11. package/es/locale/lang/it-IT.js +7 -0
  12. package/es/locale/lang/ja-JP.js +7 -0
  13. package/es/locale/lang/ko-KR.js +7 -0
  14. package/es/locale/lang/ms-MY.js +7 -0
  15. package/es/locale/lang/nb-NO.js +7 -0
  16. package/es/locale/lang/pt-BR.js +7 -0
  17. package/es/locale/lang/ru-RU.js +7 -0
  18. package/es/locale/lang/th-TH.js +7 -0
  19. package/es/locale/lang/ug-CN.js +7 -0
  20. package/es/locale/lang/uk-UA.js +7 -0
  21. package/es/locale/lang/uz-UZ.js +7 -0
  22. package/es/locale/lang/vi-VN.js +7 -0
  23. package/es/locale/lang/zh-CHT.js +7 -0
  24. package/es/locale/lang/zh-CN.js +7 -0
  25. package/es/style.css +1 -1
  26. package/es/style.min.css +1 -1
  27. package/es/table/module/export/mixin.js +22 -3
  28. package/es/table/render/index.js +46 -18
  29. package/es/table/src/header.js +6 -3
  30. package/es/table/src/methods.js +32 -4
  31. package/es/table/src/table.js +25 -3
  32. package/es/table/style.css +10 -5
  33. package/es/table/style.min.css +1 -1
  34. package/es/ui/index.js +1 -1
  35. package/es/ui/src/log.js +1 -1
  36. package/es/vxe-table/style.css +10 -5
  37. package/es/vxe-table/style.min.css +1 -1
  38. package/lib/index.css +1 -1
  39. package/lib/index.min.css +1 -1
  40. package/lib/index.umd.js +135 -29
  41. package/lib/index.umd.min.js +1 -1
  42. package/lib/locale/lang/ar-EG.js +7 -0
  43. package/lib/locale/lang/ar-EG.min.js +1 -1
  44. package/lib/locale/lang/ar-EG.umd.js +7 -0
  45. package/lib/locale/lang/de-DE.js +7 -0
  46. package/lib/locale/lang/de-DE.min.js +1 -1
  47. package/lib/locale/lang/de-DE.umd.js +7 -0
  48. package/lib/locale/lang/en-US.js +7 -0
  49. package/lib/locale/lang/en-US.min.js +1 -1
  50. package/lib/locale/lang/en-US.umd.js +7 -0
  51. package/lib/locale/lang/es-ES.js +7 -0
  52. package/lib/locale/lang/es-ES.min.js +1 -1
  53. package/lib/locale/lang/es-ES.umd.js +7 -0
  54. package/lib/locale/lang/fr-FR.js +7 -0
  55. package/lib/locale/lang/fr-FR.min.js +1 -1
  56. package/lib/locale/lang/fr-FR.umd.js +7 -0
  57. package/lib/locale/lang/hu-HU.js +7 -0
  58. package/lib/locale/lang/hu-HU.min.js +1 -1
  59. package/lib/locale/lang/hu-HU.umd.js +7 -0
  60. package/lib/locale/lang/hy-AM.js +7 -0
  61. package/lib/locale/lang/hy-AM.min.js +1 -1
  62. package/lib/locale/lang/hy-AM.umd.js +7 -0
  63. package/lib/locale/lang/id-ID.js +7 -0
  64. package/lib/locale/lang/id-ID.min.js +1 -1
  65. package/lib/locale/lang/id-ID.umd.js +7 -0
  66. package/lib/locale/lang/it-IT.js +7 -0
  67. package/lib/locale/lang/it-IT.min.js +1 -1
  68. package/lib/locale/lang/it-IT.umd.js +7 -0
  69. package/lib/locale/lang/ja-JP.js +7 -0
  70. package/lib/locale/lang/ja-JP.min.js +1 -1
  71. package/lib/locale/lang/ja-JP.umd.js +7 -0
  72. package/lib/locale/lang/ko-KR.js +7 -0
  73. package/lib/locale/lang/ko-KR.min.js +1 -1
  74. package/lib/locale/lang/ko-KR.umd.js +7 -0
  75. package/lib/locale/lang/ms-MY.js +7 -0
  76. package/lib/locale/lang/ms-MY.min.js +1 -1
  77. package/lib/locale/lang/ms-MY.umd.js +7 -0
  78. package/lib/locale/lang/nb-NO.js +7 -0
  79. package/lib/locale/lang/nb-NO.min.js +1 -1
  80. package/lib/locale/lang/nb-NO.umd.js +7 -0
  81. package/lib/locale/lang/pt-BR.js +7 -0
  82. package/lib/locale/lang/pt-BR.min.js +1 -1
  83. package/lib/locale/lang/pt-BR.umd.js +7 -0
  84. package/lib/locale/lang/ru-RU.js +7 -0
  85. package/lib/locale/lang/ru-RU.min.js +1 -1
  86. package/lib/locale/lang/ru-RU.umd.js +7 -0
  87. package/lib/locale/lang/th-TH.js +7 -0
  88. package/lib/locale/lang/th-TH.min.js +1 -1
  89. package/lib/locale/lang/th-TH.umd.js +7 -0
  90. package/lib/locale/lang/ug-CN.js +7 -0
  91. package/lib/locale/lang/ug-CN.min.js +1 -1
  92. package/lib/locale/lang/ug-CN.umd.js +7 -0
  93. package/lib/locale/lang/uk-UA.js +7 -0
  94. package/lib/locale/lang/uk-UA.min.js +1 -1
  95. package/lib/locale/lang/uk-UA.umd.js +7 -0
  96. package/lib/locale/lang/uz-UZ.js +7 -0
  97. package/lib/locale/lang/uz-UZ.min.js +1 -1
  98. package/lib/locale/lang/uz-UZ.umd.js +7 -0
  99. package/lib/locale/lang/vi-VN.js +7 -0
  100. package/lib/locale/lang/vi-VN.min.js +1 -1
  101. package/lib/locale/lang/vi-VN.umd.js +7 -0
  102. package/lib/locale/lang/zh-CHT.js +7 -0
  103. package/lib/locale/lang/zh-CHT.min.js +1 -1
  104. package/lib/locale/lang/zh-CHT.umd.js +7 -0
  105. package/lib/locale/lang/zh-CN.js +7 -0
  106. package/lib/locale/lang/zh-CN.min.js +1 -1
  107. package/lib/locale/lang/zh-CN.umd.js +7 -0
  108. package/lib/style.css +1 -1
  109. package/lib/style.min.css +1 -1
  110. package/lib/table/module/export/mixin.js +26 -3
  111. package/lib/table/module/export/mixin.min.js +1 -1
  112. package/lib/table/render/index.js +62 -18
  113. package/lib/table/render/index.min.js +1 -1
  114. package/lib/table/src/header.js +7 -3
  115. package/lib/table/src/header.min.js +1 -1
  116. package/lib/table/src/methods.js +6 -1
  117. package/lib/table/src/methods.min.js +1 -1
  118. package/lib/table/src/table.js +25 -2
  119. package/lib/table/src/table.min.js +1 -1
  120. package/lib/table/style/style.css +10 -5
  121. package/lib/table/style/style.min.css +1 -1
  122. package/lib/ui/index.js +1 -1
  123. package/lib/ui/index.min.js +1 -1
  124. package/lib/ui/src/log.js +1 -1
  125. package/lib/ui/src/log.min.js +1 -1
  126. package/lib/vxe-table/style/style.css +10 -5
  127. package/lib/vxe-table/style/style.min.css +1 -1
  128. package/package.json +2 -2
  129. package/packages/locale/lang/ar-EG.ts +7 -0
  130. package/packages/locale/lang/de-DE.ts +7 -0
  131. package/packages/locale/lang/en-US.ts +7 -0
  132. package/packages/locale/lang/es-ES.ts +7 -0
  133. package/packages/locale/lang/fr-FR.ts +7 -0
  134. package/packages/locale/lang/hu-HU.ts +7 -0
  135. package/packages/locale/lang/hy-AM.ts +7 -0
  136. package/packages/locale/lang/id-ID.ts +7 -0
  137. package/packages/locale/lang/it-IT.ts +7 -0
  138. package/packages/locale/lang/ja-JP.ts +7 -0
  139. package/packages/locale/lang/ko-KR.ts +7 -0
  140. package/packages/locale/lang/ms-MY.ts +7 -0
  141. package/packages/locale/lang/nb-NO.ts +7 -0
  142. package/packages/locale/lang/pt-BR.ts +7 -0
  143. package/packages/locale/lang/ru-RU.ts +7 -0
  144. package/packages/locale/lang/th-TH.ts +7 -0
  145. package/packages/locale/lang/ug-CN.ts +7 -0
  146. package/packages/locale/lang/uk-UA.ts +7 -0
  147. package/packages/locale/lang/uz-UZ.ts +7 -0
  148. package/packages/locale/lang/vi-VN.ts +7 -0
  149. package/packages/locale/lang/zh-CHT.ts +7 -0
  150. package/packages/locale/lang/zh-CN.ts +7 -0
  151. package/packages/table/module/export/mixin.ts +22 -3
  152. package/packages/table/render/index.ts +46 -18
  153. package/packages/table/src/header.ts +6 -3
  154. package/packages/table/src/methods.ts +29 -4
  155. package/packages/table/src/table.ts +31 -3
  156. package/styles/components/table.scss +8 -4
  157. /package/es/{iconfont.1781257629862.ttf → iconfont.1781753790081.ttf} +0 -0
  158. /package/es/{iconfont.1781257629862.woff → iconfont.1781753790081.woff} +0 -0
  159. /package/es/{iconfont.1781257629862.woff2 → iconfont.1781753790081.woff2} +0 -0
  160. /package/lib/{iconfont.1781257629862.ttf → iconfont.1781753790081.ttf} +0 -0
  161. /package/lib/{iconfont.1781257629862.woff → iconfont.1781753790081.woff} +0 -0
  162. /package/lib/{iconfont.1781257629862.woff2 → iconfont.1781753790081.woff2} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.21.14",
3
+ "version": "3.21.16",
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",
@@ -68,7 +68,7 @@
68
68
  "vue-i18n": "^8.15.1",
69
69
  "vue-router": "^3.5.1",
70
70
  "vue-template-compiler": "2.6.14",
71
- "vxe-pc-ui": "3.14.36"
71
+ "vxe-pc-ui": "3.15.2"
72
72
  },
73
73
  "vetur": {
74
74
  "tags": "helper/vetur/tags.json",
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0}',
352
352
  monthLabel: '{0}'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '¥'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '$'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '¥'
356
363
  },
@@ -351,6 +351,13 @@ export default {
351
351
  yearLabel: '{0} 年',
352
352
  monthLabel: '{0} 月'
353
353
  },
354
+ cascader: {
355
+ clearChecked: '清除',
356
+ allChecked: '全选',
357
+ total: '已选 {0} 项',
358
+ close: '关闭',
359
+ search: '搜索'
360
+ },
354
361
  numberInput: {
355
362
  currencySymbol: '¥'
356
363
  },
@@ -496,7 +496,7 @@ function toHtml ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, opts: V
496
496
 
497
497
  const { id, border, treeConfig, headerAlign: allHeaderAlign, align: allAlign, footerAlign: allFooterAlign, showOverflow: allColumnOverflow, showHeaderOverflow: allColumnHeaderOverflow } = props
498
498
  const { isAllSelected, isIndeterminate } = reactData
499
- const { mergeBodyCellMaps } = internalData
499
+ const { mergeBodyCellMaps, mergeFooterCellMaps } = internalData
500
500
  const treeOpts = $xeTable.computeTreeOpts
501
501
  const { print: isPrint, isHeader, isFooter, isColgroup, isMerge, colgroups, original } = opts
502
502
  const allCls = 'check-all'
@@ -637,16 +637,35 @@ function toHtml ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, opts: V
637
637
  const footers = getFooterData($xeTable, opts, footerTableData)
638
638
  if (footers.length) {
639
639
  tables.push('<tfoot>')
640
- footers.forEach((row: any) => {
640
+ footers.forEach((row, rIndex) => {
641
641
  tables.push(
642
642
  `<tr>${columns.map(column => {
643
643
  const footAlign = column.footerAlign || column.align || allFooterAlign || allAlign
644
644
  const classNames = hasEllipsis($xeTable, column, 'showOverflow', allColumnOverflow) ? ['col--ellipsis'] : []
645
645
  const cellValue = getFooterCellValue($xeTable, opts, row, column)
646
+ let rowSpan = 1
647
+ let colSpan = 1
648
+ if (isMerge) {
649
+ const _rowIndex = rIndex
650
+ const _columnIndex = $xeTable.getVTColumnIndex(column)
651
+ const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`]
652
+ if (spanRest) {
653
+ const { rowspan, colspan } = spanRest
654
+ if (!rowspan || !colspan) {
655
+ return ''
656
+ }
657
+ if (rowspan > 1) {
658
+ rowSpan = rowspan
659
+ }
660
+ if (colspan > 1) {
661
+ colSpan = colspan
662
+ }
663
+ }
664
+ }
646
665
  if (footAlign) {
647
666
  classNames.push(`col--${footAlign}`)
648
667
  }
649
- return `<td class="${classNames.join(' ')}" title="${cellValue}"><div ${isPrint ? '' : `style="width: ${column.renderWidth}px"`}>${formatText(cellValue, true)}</div></td>`
668
+ return `<td class="${classNames.join(' ')}" rowspan="${rowSpan}" colspan="${colSpan}" title="${cellValue}"><div ${isPrint ? '' : `style="width: ${column.renderWidth}px"`}>${formatText(cellValue, true)}</div></td>`
650
669
  }).join('')}</tr>`
651
670
  )
652
671
  })
@@ -894,14 +894,14 @@ function handleSetTreeSelectValue (renderOpts: VxeGlobalRendererHandles.RenderTa
894
894
  */
895
895
  renderer.mixin({
896
896
  input: {
897
- tableAutoFocus: 'input',
897
+ tableAutoFocus: true,
898
898
  renderTableEdit: nativeEditRender,
899
899
  renderTableDefault: nativeEditRender,
900
900
  renderTableFilter: nativeFilterRender,
901
901
  tableFilterDefaultMethod: handleInputFilterMethod
902
902
  },
903
903
  textarea: {
904
- tableAutoFocus: 'textarea',
904
+ tableAutoFocus: true,
905
905
  renderTableEdit: nativeEditRender
906
906
  },
907
907
  select: {
@@ -946,7 +946,7 @@ renderer.mixin({
946
946
  tableExportMethod: handleExportSelectMethod
947
947
  },
948
948
  VxeInput: {
949
- tableAutoFocus: 'input',
949
+ tableAutoFocus: true,
950
950
  renderTableEdit: defaultEditRender,
951
951
  renderTableCell (h, renderOpts, params) {
952
952
  const { props = {} } = renderOpts
@@ -986,7 +986,7 @@ renderer.mixin({
986
986
  }
987
987
  },
988
988
  VxeNumberInput: {
989
- tableAutoFocus: 'input',
989
+ tableAutoFocus: true,
990
990
  renderTableEdit: defaultEditRender,
991
991
  renderTableCell: handleNumberCell,
992
992
  renderTableFooter (h, renderOpts, params) {
@@ -1037,7 +1037,7 @@ renderer.mixin({
1037
1037
  }
1038
1038
  },
1039
1039
  VxeDatePicker: {
1040
- tableAutoFocus: 'input',
1040
+ tableAutoFocus: true,
1041
1041
  renderTableEdit: defaultEditRender,
1042
1042
  renderTableCell (h, renderOpts, params) {
1043
1043
  const props = renderOpts.props || {}
@@ -1063,7 +1063,7 @@ renderer.mixin({
1063
1063
  tableFilterDefaultMethod: handleFilterMethod
1064
1064
  },
1065
1065
  VxeDateRangePicker: {
1066
- tableAutoFocus: 'input',
1066
+ tableAutoFocus: true,
1067
1067
  renderTableEdit (h: CreateElement, renderOpts: VxeGlobalRendererHandles.RenderTableEditOptions, params: VxeGlobalRendererHandles.RenderEditParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }) {
1068
1068
  const { startField, endField } = renderOpts
1069
1069
  const { $table, row, column } = params
@@ -1167,7 +1167,7 @@ renderer.mixin({
1167
1167
  }
1168
1168
  },
1169
1169
  VxeTextarea: {
1170
- tableAutoFocus: 'textarea',
1170
+ tableAutoFocus: true,
1171
1171
  renderTableDefault: defaultEditRender,
1172
1172
  renderTableEdit: defaultEditRender
1173
1173
  },
@@ -1189,7 +1189,7 @@ renderer.mixin({
1189
1189
  }
1190
1190
  },
1191
1191
  VxeSelect: {
1192
- tableAutoFocus: 'input',
1192
+ tableAutoFocus: true,
1193
1193
  renderTableEdit: defaultSelectEditRender,
1194
1194
  renderTableDefault: defaultSelectEditRender,
1195
1195
  renderTableCell (h, renderOpts, params) {
@@ -1311,7 +1311,7 @@ renderer.mixin({
1311
1311
  tableExportMethod: handleExportSelectMethod
1312
1312
  },
1313
1313
  VxeTreeSelect: {
1314
- tableAutoFocus: 'input',
1314
+ tableAutoFocus: true,
1315
1315
  renderTableEdit: defaultTableOrTreeSelectEditRender,
1316
1316
  renderTableCell (h, renderOpts, params) {
1317
1317
  const { options, optionGroups } = renderOpts
@@ -1373,8 +1373,36 @@ renderer.mixin({
1373
1373
  tableCellPasteMethod: handleSetTreeSelectValue,
1374
1374
  tableExportMethod: handleExportTreeSelectMethod
1375
1375
  },
1376
+ VxeCascader: {
1377
+ tableAutoFocus: true,
1378
+ renderTableEdit: defaultTableOrTreeSelectEditRender,
1379
+ renderTableCell (h, renderOpts, params) {
1380
+ const { options, optionGroups } = renderOpts
1381
+ const { $table, row, column } = params
1382
+ const opSize = options ? options.length : null
1383
+ const ogSize = optionGroups ? optionGroups.length : null
1384
+ const { cellResult } = $table.effectCellData(row, column, {
1385
+ key: 'render_table_cell',
1386
+ isChanged ({ oldValue, cellValue }) {
1387
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize
1388
+ },
1389
+ setValue ({ cellValue }) {
1390
+ return [cellValue, opSize, ogSize]
1391
+ },
1392
+ getResult ({ cellValue }) {
1393
+ return handleTreeSelectCellValue(cellValue, renderOpts)
1394
+ }
1395
+ })
1396
+ // const cellResult = getTreeSelectCellValue(renderOpts, params)
1397
+ return getCellLabelVNs(h, renderOpts, params, cellResult)
1398
+ },
1399
+ tableCellFormatter: handleFormatTreeSelect,
1400
+ tableCellCopyMethod: handleFormatTreeSelect,
1401
+ tableCellPasteMethod: handleSetTreeSelectValue,
1402
+ tableExportMethod: handleExportTreeSelectMethod
1403
+ },
1376
1404
  VxeTableSelect: {
1377
- tableAutoFocus: 'input',
1405
+ tableAutoFocus: true,
1378
1406
  renderTableEdit: defaultTableOrTreeSelectEditRender,
1379
1407
  renderTableCell (h, renderOpts, params) {
1380
1408
  const { options, optionGroups } = renderOpts
@@ -1402,7 +1430,7 @@ renderer.mixin({
1402
1430
  tableExportMethod: handleExportTreeSelectMethod
1403
1431
  },
1404
1432
  VxeColorPicker: {
1405
- tableAutoFocus: 'input',
1433
+ tableAutoFocus: true,
1406
1434
  renderTableEdit (h, renderOpts, params: VxeGlobalRendererHandles.RenderTableEditParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }) {
1407
1435
  const { row, column } = params
1408
1436
  const { options } = renderOpts
@@ -1430,7 +1458,7 @@ renderer.mixin({
1430
1458
  }
1431
1459
  },
1432
1460
  VxeIconPicker: {
1433
- tableAutoFocus: 'input',
1461
+ tableAutoFocus: true,
1434
1462
  renderTableEdit (h, renderOpts, params: VxeGlobalRendererHandles.RenderTableEditParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }) {
1435
1463
  const { row, column } = params
1436
1464
  const { options } = renderOpts
@@ -1526,7 +1554,7 @@ renderer.mixin({
1526
1554
 
1527
1555
  // 以下已废弃
1528
1556
  $input: {
1529
- tableAutoFocus: '.vxe-input--inner',
1557
+ tableAutoFocus: 'input',
1530
1558
  renderTableEdit: oldEditRender,
1531
1559
  renderTableCell (h, renderOpts, params) {
1532
1560
  const { props = {} } = renderOpts
@@ -1553,7 +1581,7 @@ renderer.mixin({
1553
1581
  tableFilterDefaultMethod: handleInputFilterMethod
1554
1582
  },
1555
1583
  $textarea: {
1556
- tableAutoFocus: '.vxe-textarea--inner'
1584
+ tableAutoFocus: 'textarea'
1557
1585
  },
1558
1586
  $button: {
1559
1587
  renderTableDefault: oldButtonEditRender
@@ -1562,7 +1590,7 @@ renderer.mixin({
1562
1590
  renderTableDefault: oldButtonsEditRender
1563
1591
  },
1564
1592
  $select: {
1565
- tableAutoFocus: '.vxe-input--inner',
1593
+ tableAutoFocus: 'input',
1566
1594
  renderTableEdit: oldSelectEditRender,
1567
1595
  renderTableDefault: oldSelectEditRender,
1568
1596
  renderTableCell (h, renderOpts, params) {
@@ -1584,13 +1612,13 @@ renderer.mixin({
1584
1612
  tableExportMethod: handleExportSelectMethod
1585
1613
  },
1586
1614
  $radio: {
1587
- tableAutoFocus: '.vxe-radio--input'
1615
+ tableAutoFocus: 'input'
1588
1616
  },
1589
1617
  $checkbox: {
1590
- tableAutoFocus: '.vxe-checkbox--input'
1618
+ tableAutoFocus: 'input'
1591
1619
  },
1592
1620
  $switch: {
1593
- tableAutoFocus: '.vxe-switch--button',
1621
+ tableAutoFocus: 'button',
1594
1622
  renderTableEdit: oldEditRender,
1595
1623
  renderTableDefault: oldEditRender
1596
1624
  }
@@ -229,6 +229,8 @@ function renderFilterRows (h: CreateElement, _vm: any, isOptimizeMode: boolean,
229
229
  const cellOpts = $xeTable.computeCellOpts
230
230
  const defaultRowHeight = $xeTable.computeDefaultRowHeight
231
231
  const headerCellOpts = $xeTable.computeHeaderCellOpts
232
+ const floatingFilterOpts = $xeTable.computeFloatingFilterOpts
233
+ const { cellClassName } = floatingFilterOpts
232
234
  const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight
233
235
 
234
236
  return cols.map((column, $columnIndex) => {
@@ -288,7 +290,7 @@ function renderFilterRows (h: CreateElement, _vm: any, isOptimizeMode: boolean,
288
290
  }
289
291
 
290
292
  return h('th', {
291
- class: ['vxe-table--column vxe-header--column', colid, fixedHiddenColumn ? 'fixed--hidden' : 'fixed--visible', {
293
+ class: ['vxe-table--column vxe-header--column is--floating-filters', colid, fixedHiddenColumn ? 'fixed--hidden' : 'fixed--visible', {
292
294
  [`col--${headAlign}`]: headAlign,
293
295
  [`col--${type}`]: type,
294
296
  'col--last': isLastColumn,
@@ -304,7 +306,7 @@ function renderFilterRows (h: CreateElement, _vm: any, isOptimizeMode: boolean,
304
306
  attrs: thAttrs
305
307
  }, [
306
308
  h('div', {
307
- class: ['vxe-cell', {
309
+ class: ['vxe-cell', '' + (cellClassName || ''), {
308
310
  'c--title': showTitle,
309
311
  'c--tooltip': showTooltip,
310
312
  'c--ellipsis': showEllipsis
@@ -354,7 +356,8 @@ function renderHeads (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMo
354
356
  h('tr', {
355
357
  key: 'ff',
356
358
  class: [
357
- 'vxe-header--row'
359
+ 'vxe-header--row is--floating-filters',
360
+ '' + (floatingFilterOpts.rowClassName || '')
358
361
  ]
359
362
  }, renderFilterRows(h, _vm, isOptimizeMode, renderColumnList))
360
363
  )
@@ -2973,11 +2973,36 @@ function handleTooltip ($xeTable: VxeTableConstructor & VxeTablePrivateMethods,
2973
2973
  const { tooltipStore } = reactData
2974
2974
  const { column, row } = params
2975
2975
  const { showAll, contentMethod } = tipOpts
2976
- const customContent = contentMethod ? contentMethod(params) : null
2977
- const useCustom = contentMethod && !XEUtils.eqNull(customContent)
2978
- const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim()
2976
+ const cellText = XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim()
2979
2977
  const isOver = tipOverEl.scrollWidth > tipOverEl.clientWidth
2980
- if (content && (showAll || useCustom || isOver)) {
2978
+ let isShow = false
2979
+ let customContent: any = null
2980
+ let content = ''
2981
+ if (contentMethod) {
2982
+ customContent = contentMethod(params)
2983
+ }
2984
+ // 是否全部展示
2985
+ if (showAll) {
2986
+ // 如果为 null 默认显示
2987
+ if (XEUtils.eqNull(customContent)) {
2988
+ isShow = true
2989
+ content = cellText
2990
+ } else if (customContent !== '' && customContent !== false) {
2991
+ // 如果为 '' | false 则不显示
2992
+ isShow = true
2993
+ content = '' + customContent
2994
+ }
2995
+ } else {
2996
+ // 如果为 null 使用默认逻辑
2997
+ if (XEUtils.eqNull(customContent)) {
2998
+ isShow = isOver
2999
+ } else if (customContent !== '' && customContent !== false) {
3000
+ // 如果为 '' | false 则不显示
3001
+ isShow = true
3002
+ }
3003
+ content = cellText
3004
+ }
3005
+ if (isShow && content) {
2981
3006
  const tipContent = formatText(content)
2982
3007
  Object.assign(tooltipStore, {
2983
3008
  row,