vxe-table 3.21.0 → 3.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 (171) 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 +6 -4
  4. package/es/locale/lang/de-DE.js +6 -4
  5. package/es/locale/lang/en-US.js +6 -4
  6. package/es/locale/lang/es-ES.js +6 -4
  7. package/es/locale/lang/fr-FR.js +6 -4
  8. package/es/locale/lang/hu-HU.js +6 -4
  9. package/es/locale/lang/hy-AM.js +6 -4
  10. package/es/locale/lang/id-ID.js +6 -4
  11. package/es/locale/lang/it-IT.js +6 -4
  12. package/es/locale/lang/ja-JP.js +6 -4
  13. package/es/locale/lang/ko-KR.js +6 -4
  14. package/es/locale/lang/ms-MY.js +6 -4
  15. package/es/locale/lang/nb-NO.js +6 -4
  16. package/es/locale/lang/pt-BR.js +6 -4
  17. package/es/locale/lang/ru-RU.js +6 -4
  18. package/es/locale/lang/th-TH.js +6 -4
  19. package/es/locale/lang/ug-CN.js +6 -4
  20. package/es/locale/lang/uk-UA.js +6 -4
  21. package/es/locale/lang/uz-UZ.js +6 -4
  22. package/es/locale/lang/vi-VN.js +6 -4
  23. package/es/locale/lang/zh-CHT.js +6 -4
  24. package/es/locale/lang/zh-CN.js +6 -4
  25. package/es/style.css +1 -1
  26. package/es/style.min.css +1 -1
  27. package/es/table/module/custom/panel.js +45 -32
  28. package/es/table/module/menu/mixin.js +3 -2
  29. package/es/table/module/validator/mixin.js +4 -4
  30. package/es/table/src/cell.js +1 -1
  31. package/es/table/src/column.js +2 -0
  32. package/es/table/src/columnInfo.js +1 -0
  33. package/es/table/src/table.js +1 -1
  34. package/es/table/style.css +4 -1
  35. package/es/table/style.min.css +1 -1
  36. package/es/ui/index.js +2 -1
  37. package/es/ui/src/log.js +1 -1
  38. package/es/vxe-table/style.css +4 -1
  39. package/es/vxe-table/style.min.css +1 -1
  40. package/lib/index.css +1 -1
  41. package/lib/index.min.css +1 -1
  42. package/lib/index.umd.js +48 -30
  43. package/lib/index.umd.min.js +1 -1
  44. package/lib/locale/lang/ar-EG.js +6 -4
  45. package/lib/locale/lang/ar-EG.min.js +1 -1
  46. package/lib/locale/lang/ar-EG.umd.js +6 -4
  47. package/lib/locale/lang/de-DE.js +6 -4
  48. package/lib/locale/lang/de-DE.min.js +1 -1
  49. package/lib/locale/lang/de-DE.umd.js +6 -4
  50. package/lib/locale/lang/en-US.js +6 -4
  51. package/lib/locale/lang/en-US.min.js +1 -1
  52. package/lib/locale/lang/en-US.umd.js +6 -4
  53. package/lib/locale/lang/es-ES.js +6 -4
  54. package/lib/locale/lang/es-ES.min.js +1 -1
  55. package/lib/locale/lang/es-ES.umd.js +6 -4
  56. package/lib/locale/lang/fr-FR.js +6 -4
  57. package/lib/locale/lang/fr-FR.min.js +1 -1
  58. package/lib/locale/lang/fr-FR.umd.js +6 -4
  59. package/lib/locale/lang/hu-HU.js +6 -4
  60. package/lib/locale/lang/hu-HU.min.js +1 -1
  61. package/lib/locale/lang/hu-HU.umd.js +6 -4
  62. package/lib/locale/lang/hy-AM.js +6 -4
  63. package/lib/locale/lang/hy-AM.min.js +1 -1
  64. package/lib/locale/lang/hy-AM.umd.js +6 -4
  65. package/lib/locale/lang/id-ID.js +6 -4
  66. package/lib/locale/lang/id-ID.min.js +1 -1
  67. package/lib/locale/lang/id-ID.umd.js +6 -4
  68. package/lib/locale/lang/it-IT.js +6 -4
  69. package/lib/locale/lang/it-IT.min.js +1 -1
  70. package/lib/locale/lang/it-IT.umd.js +6 -4
  71. package/lib/locale/lang/ja-JP.js +6 -4
  72. package/lib/locale/lang/ja-JP.min.js +1 -1
  73. package/lib/locale/lang/ja-JP.umd.js +6 -4
  74. package/lib/locale/lang/ko-KR.js +6 -4
  75. package/lib/locale/lang/ko-KR.min.js +1 -1
  76. package/lib/locale/lang/ko-KR.umd.js +6 -4
  77. package/lib/locale/lang/ms-MY.js +6 -4
  78. package/lib/locale/lang/ms-MY.min.js +1 -1
  79. package/lib/locale/lang/ms-MY.umd.js +6 -4
  80. package/lib/locale/lang/nb-NO.js +6 -4
  81. package/lib/locale/lang/nb-NO.min.js +1 -1
  82. package/lib/locale/lang/nb-NO.umd.js +6 -4
  83. package/lib/locale/lang/pt-BR.js +6 -4
  84. package/lib/locale/lang/pt-BR.min.js +1 -1
  85. package/lib/locale/lang/pt-BR.umd.js +6 -4
  86. package/lib/locale/lang/ru-RU.js +6 -4
  87. package/lib/locale/lang/ru-RU.min.js +1 -1
  88. package/lib/locale/lang/ru-RU.umd.js +6 -4
  89. package/lib/locale/lang/th-TH.js +6 -4
  90. package/lib/locale/lang/th-TH.min.js +1 -1
  91. package/lib/locale/lang/th-TH.umd.js +6 -4
  92. package/lib/locale/lang/ug-CN.js +6 -4
  93. package/lib/locale/lang/ug-CN.min.js +1 -1
  94. package/lib/locale/lang/ug-CN.umd.js +6 -4
  95. package/lib/locale/lang/uk-UA.js +6 -4
  96. package/lib/locale/lang/uk-UA.min.js +1 -1
  97. package/lib/locale/lang/uk-UA.umd.js +6 -4
  98. package/lib/locale/lang/uz-UZ.js +6 -4
  99. package/lib/locale/lang/uz-UZ.min.js +1 -1
  100. package/lib/locale/lang/uz-UZ.umd.js +6 -4
  101. package/lib/locale/lang/vi-VN.js +6 -4
  102. package/lib/locale/lang/vi-VN.min.js +1 -1
  103. package/lib/locale/lang/vi-VN.umd.js +6 -4
  104. package/lib/locale/lang/zh-CHT.js +6 -4
  105. package/lib/locale/lang/zh-CHT.min.js +1 -1
  106. package/lib/locale/lang/zh-CHT.umd.js +6 -4
  107. package/lib/locale/lang/zh-CN.js +6 -4
  108. package/lib/locale/lang/zh-CN.min.js +1 -1
  109. package/lib/locale/lang/zh-CN.umd.js +6 -4
  110. package/lib/style.css +1 -1
  111. package/lib/style.min.css +1 -1
  112. package/lib/table/module/custom/panel.js +27 -16
  113. package/lib/table/module/custom/panel.min.js +1 -1
  114. package/lib/table/module/menu/mixin.js +3 -2
  115. package/lib/table/module/menu/mixin.min.js +1 -1
  116. package/lib/table/module/validator/mixin.js +4 -4
  117. package/lib/table/module/validator/mixin.min.js +1 -1
  118. package/lib/table/src/cell.js +1 -1
  119. package/lib/table/src/cell.min.js +1 -1
  120. package/lib/table/src/column.js +2 -0
  121. package/lib/table/src/column.min.js +1 -1
  122. package/lib/table/src/columnInfo.js +1 -0
  123. package/lib/table/src/columnInfo.min.js +1 -1
  124. package/lib/table/src/table.js +1 -1
  125. package/lib/table/src/table.min.js +1 -1
  126. package/lib/table/style/style.css +4 -1
  127. package/lib/table/style/style.min.css +1 -1
  128. package/lib/ui/index.js +2 -1
  129. package/lib/ui/index.min.js +1 -1
  130. package/lib/ui/src/log.js +1 -1
  131. package/lib/ui/src/log.min.js +1 -1
  132. package/lib/vxe-table/style/style.css +4 -1
  133. package/lib/vxe-table/style/style.min.css +1 -1
  134. package/package.json +2 -2
  135. package/packages/locale/lang/ar-EG.ts +6 -4
  136. package/packages/locale/lang/de-DE.ts +6 -4
  137. package/packages/locale/lang/en-US.ts +6 -4
  138. package/packages/locale/lang/es-ES.ts +6 -4
  139. package/packages/locale/lang/fr-FR.ts +6 -4
  140. package/packages/locale/lang/hu-HU.ts +6 -4
  141. package/packages/locale/lang/hy-AM.ts +6 -4
  142. package/packages/locale/lang/id-ID.ts +6 -4
  143. package/packages/locale/lang/it-IT.ts +6 -4
  144. package/packages/locale/lang/ja-JP.ts +6 -4
  145. package/packages/locale/lang/ko-KR.ts +6 -4
  146. package/packages/locale/lang/ms-MY.ts +6 -4
  147. package/packages/locale/lang/nb-NO.ts +6 -4
  148. package/packages/locale/lang/pt-BR.ts +6 -4
  149. package/packages/locale/lang/ru-RU.ts +6 -4
  150. package/packages/locale/lang/th-TH.ts +6 -4
  151. package/packages/locale/lang/ug-CN.ts +6 -4
  152. package/packages/locale/lang/uk-UA.ts +6 -4
  153. package/packages/locale/lang/uz-UZ.ts +6 -4
  154. package/packages/locale/lang/vi-VN.ts +6 -4
  155. package/packages/locale/lang/zh-CHT.ts +6 -4
  156. package/packages/locale/lang/zh-CN.ts +6 -4
  157. package/packages/table/module/custom/panel.ts +71 -54
  158. package/packages/table/module/menu/mixin.ts +3 -2
  159. package/packages/table/module/validator/mixin.ts +4 -4
  160. package/packages/table/src/cell.ts +1 -1
  161. package/packages/table/src/column.ts +2 -0
  162. package/packages/table/src/columnInfo.ts +1 -0
  163. package/packages/table/src/table.ts +1 -1
  164. package/packages/ui/index.ts +1 -0
  165. package/styles/components/table-module/custom.scss +5 -1
  166. /package/es/{iconfont.1779330830416.ttf → iconfont.1779778409753.ttf} +0 -0
  167. /package/es/{iconfont.1779330830416.woff → iconfont.1779778409753.woff} +0 -0
  168. /package/es/{iconfont.1779330830416.woff2 → iconfont.1779778409753.woff2} +0 -0
  169. /package/lib/{iconfont.1779330830416.ttf → iconfont.1779778409753.ttf} +0 -0
  170. /package/lib/{iconfont.1779330830416.woff → iconfont.1779778409753.woff} +0 -0
  171. /package/lib/{iconfont.1779330830416.woff2 → iconfont.1779778409753.woff2} +0 -0
@@ -104,7 +104,8 @@ export default {
104
104
  select: {
105
105
  clear: '清除',
106
106
  allChecked: '全选',
107
- total: '{0} / {1}',
107
+ total: '已选 {0} 项',
108
+ close: '关闭',
108
109
  search: 'обшук',
109
110
  loadingText: 'навантаження',
110
111
  emptyText: 'Ще немає даних',
@@ -121,7 +122,8 @@ export default {
121
122
  allChecked: '全选',
122
123
  allExpand: '全部展开',
123
124
  clearExpand: '全部收起',
124
- total: '已选 {0}',
125
+ total: '已选 {0} 项',
126
+ close: '关闭',
125
127
  search: '搜索',
126
128
  emptyText: '暂无数据'
127
129
  },
@@ -164,7 +166,7 @@ export default {
164
166
  cstmDragTarget: 'Перемістити: {0}',
165
167
  setting: {
166
168
  colSort: 'Сортувати',
167
- sortHelpTip: '点击并拖动图标可以调整顺序',
169
+ sortHelpTip: '点击图标开始拖动',
168
170
  colTitle: 'Заголовок стовпців',
169
171
  colResizable: 'Ширина стовпця (пікселі)',
170
172
  colVisible: 'Чи відображати',
@@ -650,7 +652,7 @@ export default {
650
652
  groupPlaceholder: '拖至此处进行分组',
651
653
  valuesPlaceholder: '拖至此处进行聚合',
652
654
  dragExistCol: '该列已存在',
653
- sortHelpTip: '点击并拖动图标可以调整顺序'
655
+ sortHelpTip: '点击图标开始拖动'
654
656
  },
655
657
  aggFuncs: {
656
658
  sum: '求和',
@@ -104,7 +104,8 @@ export default {
104
104
  select: {
105
105
  clear: '清除',
106
106
  allChecked: '全选',
107
- total: '{0} / {1}',
107
+ total: '已选 {0} 项',
108
+ close: '关闭',
108
109
  search: 'qidirish',
109
110
  loadingText: 'yuklamoq',
110
111
  emptyText: "Hali ma'lumot yo'q",
@@ -121,7 +122,8 @@ export default {
121
122
  allChecked: '全选',
122
123
  allExpand: '全部展开',
123
124
  clearExpand: '全部收起',
124
- total: '{0} / {1}',
125
+ total: '已选 {0} 项',
126
+ close: '关闭',
125
127
  search: '搜索',
126
128
  emptyText: '暂无数据'
127
129
  },
@@ -164,7 +166,7 @@ export default {
164
166
  cstmDragTarget: "Ko'chiring: {0}",
165
167
  setting: {
166
168
  colSort: 'Tartib',
167
- sortHelpTip: '点击并拖动图标可以调整顺序',
169
+ sortHelpTip: '点击图标开始拖动',
168
170
  colTitle: 'Ustun unvon',
169
171
  colResizable: 'Ustun kengligi (piksellar)',
170
172
  colVisible: "Ko'rsatish kerakmi",
@@ -650,7 +652,7 @@ export default {
650
652
  groupPlaceholder: '拖至此处进行分组',
651
653
  valuesPlaceholder: '拖至此处进行聚合',
652
654
  dragExistCol: '该列已存在',
653
- sortHelpTip: '点击并拖动图标可以调整顺序'
655
+ sortHelpTip: '点击图标开始拖动'
654
656
  },
655
657
  aggFuncs: {
656
658
  sum: '求和',
@@ -104,7 +104,8 @@ export default {
104
104
  select: {
105
105
  clear: 'Thông thoáng',
106
106
  allChecked: 'Chọn tất cả',
107
- total: '{0} / {1}',
107
+ total: '已选 {0} 项',
108
+ close: '关闭',
108
109
  search: 'tìm kiếm',
109
110
  loadingText: 'đang tải',
110
111
  emptyText: 'Chưa có dữ liệu',
@@ -121,7 +122,8 @@ export default {
121
122
  allChecked: 'Chọn tất cả',
122
123
  allExpand: 'Mở rộng tất cả',
123
124
  clearExpand: 'Đóng tất cả',
124
- total: 'Đã chọn {0}',
125
+ total: '已选 {0} 项',
126
+ close: '关闭',
125
127
  search: 'tìm kiếm',
126
128
  emptyText: 'Chưa có dữ liệu'
127
129
  },
@@ -164,7 +166,7 @@ export default {
164
166
  cstmDragTarget: 'Di chuyển: {0}',
165
167
  setting: {
166
168
  colSort: 'Loại',
167
- sortHelpTip: 'Nhấp và kéo biểu tượng để điều chỉnh thứ tự',
169
+ sortHelpTip: '点击图标开始拖动',
168
170
  colTitle: 'Tiêu đề cột',
169
171
  colResizable: 'Chiều rộng cột (pixel)',
170
172
  colVisible: 'Có hiển thị không',
@@ -650,7 +652,7 @@ export default {
650
652
  groupPlaceholder: 'Kéo ở đây để nhóm',
651
653
  valuesPlaceholder: 'Kéo ở đây để tổng hợp',
652
654
  dragExistCol: 'Cột này đã tồn tại',
653
- sortHelpTip: 'Nhấp và kéo biểu tượng để điều chỉnh thứ tự'
655
+ sortHelpTip: '点击图标开始拖动'
654
656
  },
655
657
  aggFuncs: {
656
658
  sum: 'Yêu cầu tổng',
@@ -104,7 +104,8 @@ export default {
104
104
  select: {
105
105
  clear: '清除',
106
106
  allChecked: '全選',
107
- total: '{0} / {1}',
107
+ total: '已选 {0} 项',
108
+ close: '关闭',
108
109
  search: '搜尋',
109
110
  loadingText: '載入中',
110
111
  emptyText: '暫無數據',
@@ -121,7 +122,8 @@ export default {
121
122
  allChecked: '全選',
122
123
  allExpand: '全部展開',
123
124
  clearExpand: '全部收起',
124
- total: '已選 {0}',
125
+ total: '已选 {0} 项',
126
+ close: '关闭',
125
127
  search: '搜尋',
126
128
  emptyText: '暫無數據'
127
129
  },
@@ -164,7 +166,7 @@ export default {
164
166
  cstmDragTarget: '移動:{0}',
165
167
  setting: {
166
168
  colSort: '排序',
167
- sortHelpTip: '點擊並拖動圖標可以調整順序',
169
+ sortHelpTip: '点击图标开始拖动',
168
170
  colTitle: '列標題',
169
171
  colResizable: '列寬(像素)',
170
172
  colVisible: '是否顯示',
@@ -650,7 +652,7 @@ export default {
650
652
  groupPlaceholder: '拖至此處進行分組',
651
653
  valuesPlaceholder: '拖至此處進行聚合',
652
654
  dragExistCol: '該列已存在',
653
- sortHelpTip: '點擊並拖動圖標可以調整順序'
655
+ sortHelpTip: '点击图标开始拖动'
654
656
  },
655
657
  aggFuncs: {
656
658
  sum: '求和',
@@ -104,7 +104,8 @@ export default {
104
104
  select: {
105
105
  clear: '清除',
106
106
  allChecked: '全选',
107
- total: '{0} / {1}',
107
+ total: '已选 {0} 项',
108
+ close: '关闭',
108
109
  search: '搜索',
109
110
  loadingText: '加载中...',
110
111
  emptyText: '暂无数据',
@@ -121,7 +122,8 @@ export default {
121
122
  allChecked: '全选',
122
123
  allExpand: '全部展开',
123
124
  clearExpand: '全部收起',
124
- total: '已选 {0}',
125
+ total: '已选 {0} 项',
126
+ close: '关闭',
125
127
  search: '搜索',
126
128
  emptyText: '暂无数据'
127
129
  },
@@ -164,7 +166,7 @@ export default {
164
166
  cstmDragTarget: '移动:{0}',
165
167
  setting: {
166
168
  colSort: '排序',
167
- sortHelpTip: '点击并拖动图标可以调整顺序',
169
+ sortHelpTip: '点击图标开始拖动',
168
170
  colTitle: '列标题',
169
171
  colResizable: '列宽(像素)',
170
172
  colVisible: '是否显示',
@@ -650,7 +652,7 @@ export default {
650
652
  groupPlaceholder: '拖至此处进行分组',
651
653
  valuesPlaceholder: '拖至此处进行聚合',
652
654
  dragExistCol: '该列已存在',
653
- sortHelpTip: '点击并拖动图标可以调整顺序'
655
+ sortHelpTip: '点击图标开始拖动'
654
656
  },
655
657
  aggFuncs: {
656
658
  sum: '求和',
@@ -614,7 +614,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
614
614
 
615
615
  const { dragCol } = customPanelReactData
616
616
  const customOpts = $xeTable.computeCustomOpts
617
- const { immediate } = customOpts
617
+ const { showSortDragButton, allowSort, immediate } = customOpts
618
618
  const columnDragOpts = $xeTable.computeColumnDragOpts
619
619
  const { isCrossDrag, isToChildDrag } = columnDragOpts
620
620
  const optEl = evnt.currentTarget as HTMLElement
@@ -630,9 +630,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
630
630
  const dragPos = offsetY < optEl.clientHeight / 2 ? 'top' : 'bottom'
631
631
  if (
632
632
  !dragCol ||
633
+ !(showSortDragButton && allowSort) ||
633
634
  (dragCol && dragCol.id === column.id) ||
634
635
  (!isCrossDrag && column.level > 1) ||
635
- (!immediate && column.level > 1)
636
+ (!immediate && column.level > 1) ||
637
+ (!isCrossDrag && dragCol.level > 1) ||
638
+ (!immediate && dragCol.level > 1)
636
639
  ) {
637
640
  showDropTip($xeTableCustomPanel, evnt, optEl, false, dragPos)
638
641
  return
@@ -796,10 +799,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
796
799
  const { treeConfig, rowGroupConfig, aggregateConfig } = tableProps
797
800
  const { isCustomStatus, customColumnList, isCustomDragStatus } = tableReactData
798
801
  const customOpts = $xeTable.computeCustomOpts
799
- const { immediate } = customOpts
800
802
  const columnDragOpts = $xeTable.computeColumnDragOpts
801
803
  const { popupStyle } = customStore
802
- const { checkMethod, visibleMethod, allowVisible, allowSort, allowFixed, trigger, placement, showSortDragButton, showSortMoveButton, showSortPutButton } = customOpts
804
+ const { immediate, checkMethod, visibleMethod, allowVisible, allowSort, allowFixed, allowGroup, allowValues, trigger, placement, showSortDragButton, showSortMoveButton, showSortPutButton } = customOpts
803
805
  const isMaxFixedColumn = $xeTable.computeIsMaxFixedColumn
804
806
  const vSize = $xeTable.computeSize
805
807
  const { isCrossDrag } = columnDragOpts
@@ -879,29 +881,33 @@ export default /* define-vxe-component start */ defineVxeComponent({
879
881
  h('div', {
880
882
  class: 'vxe-table-custom--name-option'
881
883
  }, [
882
- allowSort && showSortDragButton && showSortBtn
883
- ? h('div', {
884
- class: 'vxe-table-custom--sort-option'
885
- }, [
886
- h('span', {
887
- class: ['vxe-table-custom--sort-btn', {
888
- 'is--disabled': isHidden
889
- }],
890
- attrs: {
891
- title: getI18n('vxe.custom.setting.sortHelpTip')
892
- },
893
- on: isHidden
894
- ? {}
895
- : {
896
- mousedown: $xeTableCustomPanel.sortMousedownEvent,
897
- mouseup: $xeTableCustomPanel.sortMouseupEvent
898
- }
899
- }, [
900
- h('i', {
901
- class: getIcon().TABLE_CUSTOM_SORT
902
- })
903
- ])
904
- ])
884
+ (allowSort && showSortDragButton) || (allowGroup || allowValues)
885
+ ? (
886
+ showSortBtn || ((allowGroup || allowValues) && !isColGroup)
887
+ ? h('div', {
888
+ class: 'vxe-table-custom--sort-option'
889
+ }, [
890
+ h('span', {
891
+ class: ['vxe-table-custom--sort-btn', {
892
+ 'is--disabled': isHidden
893
+ }],
894
+ attrs: {
895
+ title: getI18n('vxe.custom.setting.sortHelpTip')
896
+ },
897
+ on: isHidden
898
+ ? {}
899
+ : {
900
+ mousedown: $xeTableCustomPanel.sortMousedownEvent,
901
+ mouseup: $xeTableCustomPanel.sortMouseupEvent
902
+ }
903
+ }, [
904
+ h('i', {
905
+ class: getIcon().TABLE_CUSTOM_SORT
906
+ })
907
+ ])
908
+ ])
909
+ : renderEmptyElement($xeTable)
910
+ )
905
911
  : renderEmptyElement($xeTable),
906
912
  column.type === 'html'
907
913
  ? h('div', {
@@ -1190,9 +1196,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
1190
1196
  const { treeConfig, rowGroupConfig, aggregateConfig, resizable: allResizable } = tableProps
1191
1197
  const { isCustomStatus, customColumnList } = tableReactData
1192
1198
  const customOpts = $xeTable.computeCustomOpts
1193
- const { immediate, showSortDragButton, showSortMoveButton, showSortPutButton } = customOpts
1194
1199
  const columnDragOpts = $xeTable.computeColumnDragOpts
1195
- const { mode, modalOptions, drawerOptions, allowVisible, allowSort, allowFixed, allowResizable, checkMethod, visibleMethod } = customOpts
1200
+ const aggregateOpts = $xeTable.computeAggregateOpts
1201
+ const { placement: aggPlacement } = aggregateOpts
1202
+ const { mode, immediate, showSortDragButton, showSortMoveButton, showSortPutButton, modalOptions, drawerOptions, allowVisible, allowSort, allowFixed, allowResizable, allowGroup, allowValues, checkMethod, visibleMethod } = customOpts
1196
1203
  const columnOpts = $xeTable.computeColumnOpts
1197
1204
  const { maxFixedSize } = columnOpts
1198
1205
  const resizableOpts = $xeTable.computeResizableOpts
@@ -1210,6 +1217,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1210
1217
  const trVNs: VNode[] = []
1211
1218
  const isAllChecked = customStore.isAll
1212
1219
  const isAllIndeterminate = customStore.isIndeterminate
1220
+ const isAggRtBmLayout = aggPlacement === 'right' || aggPlacement === 'bottom'
1213
1221
  const params = {
1214
1222
  $table: $xeTable,
1215
1223
  $grid: $xeGrid,
@@ -1296,29 +1304,31 @@ export default /* define-vxe-component start */ defineVxeComponent({
1296
1304
  h('div', {
1297
1305
  class: 'vxe-table-custom-popup--name'
1298
1306
  }, [
1299
- allowSort
1300
- ? showSortDragButton && (showSortBtn
1301
- ? h('div', {
1302
- class: ['vxe-table-custom-popup--column-sort-btn', {
1303
- 'is--disabled': isHidden
1304
- }],
1305
- attrs: {
1306
- title: getI18n('vxe.custom.setting.sortHelpTip')
1307
- },
1308
- on: (isHidden
1309
- ? {}
1310
- : {
1311
- mousedown: $xeTableCustomPanel.sortMousedownEvent,
1312
- mouseup: $xeTableCustomPanel.sortMouseupEvent
1307
+ (allowSort && showSortDragButton) || (allowGroup || allowValues)
1308
+ ? (
1309
+ showSortBtn || ((allowGroup || allowValues) && !isColGroup)
1310
+ ? h('div', {
1311
+ class: ['vxe-table-custom-popup--column-sort-btn', {
1312
+ 'is--disabled': isHidden
1313
+ }],
1314
+ attrs: {
1315
+ title: getI18n('vxe.custom.setting.sortHelpTip')
1316
+ },
1317
+ on: (isHidden
1318
+ ? {}
1319
+ : {
1320
+ mousedown: $xeTableCustomPanel.sortMousedownEvent,
1321
+ mouseup: $xeTableCustomPanel.sortMouseupEvent
1322
+ })
1323
+ }, [
1324
+ h('i', {
1325
+ class: getIcon().TABLE_CUSTOM_SORT
1313
1326
  })
1314
- }, [
1315
- h('i', {
1316
- class: getIcon().TABLE_CUSTOM_SORT
1317
- })
1318
- ])
1319
- : h('div', {
1320
- class: 'vxe-table-custom-popup--column-sort-placeholder'
1321
- }))
1327
+ ])
1328
+ : h('div', {
1329
+ class: 'vxe-table-custom-popup--column-sort-placeholder'
1330
+ })
1331
+ )
1322
1332
  : renderEmptyElement($xeTable),
1323
1333
  column.type === 'html'
1324
1334
  ? h('div', {
@@ -1471,11 +1481,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
1471
1481
  default: () => {
1472
1482
  return h('div', {
1473
1483
  ref: 'refBodyWrapperElem',
1474
- class: 'vxe-table-custom-popup--body-wrapper'
1484
+ class: ['vxe-table-custom-popup--body-wrapper', `agg-layout--${aggPlacement}`]
1475
1485
  }, defaultSlot
1476
1486
  ? $xeTable.callSlot(defaultSlot, params, h)
1477
1487
  : [
1478
- !treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregatePopupPanel
1488
+ !isAggRtBmLayout && !treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregatePopupPanel
1479
1489
  ? h($xeTable.getPivotTableAggregatePopupPanel(), {
1480
1490
  props: {
1481
1491
  customStore
@@ -1565,7 +1575,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
1565
1575
  }, $xeTable.callSlot(bottomSlot, params, h))
1566
1576
  : renderEmptyElement($xeTable),
1567
1577
  $xeTableCustomPanel.renderDragTip(h)
1568
- ])
1578
+ ]),
1579
+ isAggRtBmLayout && !treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregatePopupPanel
1580
+ ? h($xeTable.getPivotTableAggregatePopupPanel(), {
1581
+ props: {
1582
+ customStore
1583
+ }
1584
+ })
1585
+ : renderEmptyElement($xeTable)
1569
1586
  ])
1570
1587
  },
1571
1588
  footer: () => {
@@ -312,8 +312,9 @@ export default {
312
312
  if (!menu.loading && !menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
313
313
  const gMenuOpts = menus.get(menu.code)
314
314
  const params = Object.assign({}, internalData._currMenuParams, { menu, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, $event: evnt })
315
- if (gMenuOpts && gMenuOpts.menuMethod) {
316
- gMenuOpts.menuMethod(params, evnt)
315
+ const tmMethod = gMenuOpts ? (gMenuOpts.tableMenuMethod || gMenuOpts.menuMethod) : null
316
+ if (tmMethod) {
317
+ tmMethod(params, evnt)
317
318
  }
318
319
  // 在 v4 中废弃事件 context-menu-click
319
320
  if ($xeTable.$listeners['context-menu-click']) {
@@ -394,9 +394,9 @@ export default {
394
394
  },
395
395
  hasCellRules (type: any, row: any, column: any) {
396
396
  const { editRules } = this
397
- const { property } = column
398
- if (property && editRules) {
399
- const rules = XEUtils.get(editRules, property)
397
+ const { field } = column
398
+ if (field && editRules) {
399
+ const rules = column.rules ? column.rules : XEUtils.get(editRules, field)
400
400
  return rules && XEUtils.find(rules, rule => type === 'all' || !rule.trigger || type === rule.trigger)
401
401
  }
402
402
  return false
@@ -425,7 +425,7 @@ export default {
425
425
  const errorRules: Rule[] = []
426
426
  const syncValidList: Promise<any>[] = []
427
427
  if (field && editRules) {
428
- const rules = XEUtils.get(editRules, field)
428
+ const rules = column.rules ? column.rules : XEUtils.get(editRules, field)
429
429
  if (rules) {
430
430
  const cellValue = XEUtils.isUndefined(val) ? XEUtils.get(row, field) : val
431
431
  rules.forEach((rule: any) => {
@@ -1161,7 +1161,7 @@ export const Cell = {
1161
1161
  const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null
1162
1162
  let isRequired = false
1163
1163
  if (editRules) {
1164
- const columnRules = XEUtils.get(editRules, column.field)
1164
+ const columnRules = column.rules ? column.rules : XEUtils.get(editRules, column.field)
1165
1165
  if (columnRules) {
1166
1166
  isRequired = columnRules.some((rule: any) => rule.required)
1167
1167
  }
@@ -103,6 +103,8 @@ export const columnProps = {
103
103
  filterRender: Object as PropType<VxeColumnPropTypes.FilterRender>,
104
104
  // 是否显示浮动筛选
105
105
  floatingFilters: Object as PropType<VxeColumnPropTypes.FloatingFilters>,
106
+ // 列的校验规则
107
+ rules: Array as PropType<VxeColumnPropTypes.Rules>,
106
108
  // 设置为分组节点
107
109
  rowGroupNode: Boolean as PropType<VxeColumnPropTypes.RowGroupNode>,
108
110
  // 设置为树节点
@@ -120,6 +120,7 @@ export class ColumnInfo {
120
120
  filterRecoverMethod: _vm.filterRecoverMethod,
121
121
  filterRender: filterRender,
122
122
  floatingFilters: _vm.floatingFilters,
123
+ rules: _vm.rules,
123
124
  rowGroupNode: _vm.rowGroupNode,
124
125
  treeNode: _vm.treeNode,
125
126
  dragSort: _vm.dragSort,
@@ -1839,7 +1839,7 @@ export default {
1839
1839
  warnLog('vxe.error.errConflicts', ['mouse-config.area', 'mouse-config.selected'])
1840
1840
  }
1841
1841
  if (mouseOpts.area && (props.treeConfig && !treeOpts.transform)) {
1842
- errLog('vxe.error.noTree', ['mouse-config.area'])
1842
+ errLog('vxe.error.notSupportProp', ['mouse-config.area', 'tree-config.transform=false', 'tree-config.transform=true'])
1843
1843
  }
1844
1844
  if (props.editConfig && editOpts.activeMethod) {
1845
1845
  warnLog('vxe.error.delProp', ['table.edit-config.activeMethod', 'table.edit-config.beforeEditMethod'])
@@ -171,6 +171,7 @@ VxeUI.setConfig({
171
171
  },
172
172
  aggregateConfig: {
173
173
  padding: true,
174
+ placement: 'left',
174
175
  rowField: 'id',
175
176
  parentField: '_X_ROW_PARENT_KEY',
176
177
  childrenField: '_X_ROW_CHILDREN',
@@ -225,10 +225,14 @@
225
225
  .vxe-table-custom-popup--body-wrapper {
226
226
  position: relative;
227
227
  display: flex;
228
- flex-direction: column;
228
+ flex-direction: row;
229
229
  overflow: hidden;
230
230
  height: 100%;
231
231
  outline: 0;
232
+ &.agg-layout--top,
233
+ &.agg-layout--bottom {
234
+ flex-direction: column;
235
+ }
232
236
  }
233
237
  .vxe-table-custom-popup--handle-wrapper {
234
238
  flex-grow: 1;