vxe-table 3.21.11 → 3.21.13

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 (54) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/menu/panel.js +7 -7
  6. package/es/table/src/cell.js +17 -13
  7. package/es/table/src/columnInfo.js +85 -81
  8. package/es/table/src/methods.js +6 -2
  9. package/es/table/src/table.js +1 -1
  10. package/es/table/style.css +29 -13
  11. package/es/table/style.min.css +1 -1
  12. package/es/ui/index.js +1 -1
  13. package/es/ui/src/log.js +1 -1
  14. package/es/vxe-table/style.css +29 -13
  15. package/es/vxe-table/style.min.css +1 -1
  16. package/lib/index.css +1 -1
  17. package/lib/index.min.css +1 -1
  18. package/lib/index.umd.js +264 -250
  19. package/lib/index.umd.min.js +1 -1
  20. package/lib/style.css +1 -1
  21. package/lib/style.min.css +1 -1
  22. package/lib/table/module/menu/panel.js +8 -8
  23. package/lib/table/module/menu/panel.min.js +1 -1
  24. package/lib/table/src/cell.js +6 -4
  25. package/lib/table/src/cell.min.js +1 -1
  26. package/lib/table/src/columnInfo.js +93 -81
  27. package/lib/table/src/columnInfo.min.js +1 -1
  28. package/lib/table/src/methods.js +2 -2
  29. package/lib/table/src/methods.min.js +1 -1
  30. package/lib/table/src/table.js +1 -1
  31. package/lib/table/src/table.min.js +1 -1
  32. package/lib/table/style/style.css +29 -13
  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 +29 -13
  39. package/lib/vxe-table/style/style.min.css +1 -1
  40. package/package.json +2 -2
  41. package/packages/table/module/menu/panel.ts +7 -7
  42. package/packages/table/src/cell.ts +17 -13
  43. package/packages/table/src/columnInfo.ts +90 -84
  44. package/packages/table/src/methods.ts +6 -2
  45. package/packages/table/src/table.ts +1 -1
  46. package/packages/table/src/util.ts +1 -1
  47. package/styles/components/table-module/menu.scss +5 -2
  48. package/styles/components/table.scss +24 -6
  49. /package/es/{iconfont.1781074394243.ttf → iconfont.1781229212834.ttf} +0 -0
  50. /package/es/{iconfont.1781074394243.woff → iconfont.1781229212834.woff} +0 -0
  51. /package/es/{iconfont.1781074394243.woff2 → iconfont.1781229212834.woff2} +0 -0
  52. /package/lib/{iconfont.1781074394243.ttf → iconfont.1781229212834.ttf} +0 -0
  53. /package/lib/{iconfont.1781074394243.woff → iconfont.1781229212834.woff} +0 -0
  54. /package/lib/{iconfont.1781074394243.woff2 → iconfont.1781229212834.woff2} +0 -0
@@ -36,8 +36,8 @@ export default {
36
36
  const tableReactData = $xeTable;
37
37
  const { ctxMenuStore } = tableReactData;
38
38
  const menuOpts = $xeTable.computeMenuOpts;
39
- const { destroyOnClose } = menuOpts;
40
- const { visible, list, className } = ctxMenuStore;
39
+ const { destroyOnClose, className } = menuOpts;
40
+ const { visible, list } = ctxMenuStore;
41
41
  return h('div', {
42
42
  ref: 'refElem',
43
43
  class: ['vxe-table--context-menu-wrapper', className, {
@@ -49,7 +49,7 @@ export default {
49
49
  return options.every((item) => item.visible === false)
50
50
  ? renderEmptyElement($xeTable)
51
51
  : h('ul', {
52
- class: 'vxe-context-menu--option-wrapper',
52
+ class: 'vxe-table--context-menu-group-wrapper',
53
53
  key: gIndex
54
54
  }, options.map((item, index) => {
55
55
  const { children, loading } = item;
@@ -62,7 +62,7 @@ export default {
62
62
  return item.visible === false
63
63
  ? renderEmptyElement($xeTable)
64
64
  : h('li', {
65
- class: [item.className, {
65
+ class: ['vxe-table--context-menu--option', item.className, {
66
66
  'link--loading': loading,
67
67
  'link--disabled': item.disabled,
68
68
  'link--active': item === ctxMenuStore.selected
@@ -116,12 +116,12 @@ export default {
116
116
  suffixOpts.content ? h('span', `${suffixOpts.content}`) : renderEmptyElement($xeTable)
117
117
  ])
118
118
  ]),
119
- hasChildMenus && item.children
119
+ hasChildMenus && children
120
120
  ? h('ul', {
121
121
  class: ['vxe-table--context-menu-clild-wrapper', {
122
122
  'is--show': item === ctxMenuStore.selected && ctxMenuStore.showChild
123
123
  }]
124
- }, item.children.map((child, cIndex) => {
124
+ }, children.map((child, cIndex) => {
125
125
  const { loading: childLoading } = child;
126
126
  const childPrefixOpts = Object.assign({}, child.prefixConfig);
127
127
  const childPrefixIcon = childPrefixOpts.icon || child.prefixIcon;
@@ -131,7 +131,7 @@ export default {
131
131
  return child.visible === false
132
132
  ? null
133
133
  : h('li', {
134
- class: [child.className, {
134
+ class: ['vxe-table--context-menu--option', child.className, {
135
135
  'link--loading': childLoading,
136
136
  'link--disabled': child.disabled,
137
137
  'link--active': child === ctxMenuStore.selectChild
@@ -944,22 +944,26 @@ export const Cell = {
944
944
  }
945
945
  return renderCellBaseVNs(h, params, [
946
946
  showIcon && (!visibleMethod || visibleMethod(params))
947
- ? h('span', {
947
+ ? h('div', {
948
948
  class: ['vxe-table--expanded', {
949
949
  'is--active': isActive
950
- }],
951
- on: {
952
- mousedown(evnt) {
953
- evnt.stopPropagation();
954
- },
955
- click(evnt) {
956
- $table.triggerRowExpandEvent(evnt, params);
957
- }
958
- }
950
+ }]
959
951
  }, [
960
- h('i', {
961
- class: ['vxe-table--expand-btn', isLazyLoading ? (iconLoaded || getIcon().TABLE_EXPAND_LOADED) : (isActive ? (iconOpen || getIcon().TABLE_EXPAND_OPEN) : (iconClose || getIcon().TABLE_EXPAND_CLOSE))]
962
- })
952
+ h('span', {
953
+ class: 'vxe-table--expand-btn',
954
+ on: {
955
+ mousedown(evnt) {
956
+ evnt.stopPropagation();
957
+ },
958
+ click(evnt) {
959
+ $table.triggerRowExpandEvent(evnt, params);
960
+ }
961
+ }
962
+ }, [
963
+ h('i', {
964
+ class: isLazyLoading ? (iconLoaded || getIcon().TABLE_EXPAND_LOADED) : (isActive ? (iconOpen || getIcon().TABLE_EXPAND_OPEN) : (iconClose || getIcon().TABLE_EXPAND_CLOSE))
965
+ })
966
+ ])
963
967
  ])
964
968
  : renderEmptyElement($table),
965
969
  defaultSlot || labelField
@@ -2,43 +2,46 @@ import XEUtils from 'xe-utils';
2
2
  import { VxeUI } from '../../ui';
3
3
  import { toFilters } from './util';
4
4
  import { isEnableConf, getFuncText } from '../../ui/src/utils';
5
+ import { isPx } from '../../ui/src/dom';
5
6
  import { warnLog, errLog } from '../../ui/src/log';
6
7
  const { getI18n, formats, renderer } = VxeUI;
7
8
  export class ColumnInfo {
8
9
  /* eslint-disable @typescript-eslint/no-use-before-define */
9
- constructor($xeTable, _vm, { renderHeader, renderCell, renderFooter, renderData } = {}) {
10
+ constructor($xeTable, colConfs, { renderHeader, renderCell, renderFooter, renderData } = {}) {
10
11
  const tableProps = $xeTable;
11
12
  const $xeGrid = $xeTable.$xeGrid;
12
13
  const $xeGantt = $xeTable.$xeGantt;
13
14
  const $xeGGWrapper = $xeGrid || $xeGantt;
14
- const { field, editRender, filterRender } = _vm;
15
- const colId = _vm.colId || XEUtils.uniqueId('col_');
15
+ const { type, field, width, visible, aggFunc, formatter, filterMultiple, cellRender, editRender, filterRender } = colConfs;
16
+ const colId = colConfs.colId || XEUtils.uniqueId('col_');
16
17
  const proxyOpts = $xeGrid ? $xeGrid.computeProxyOpts : null;
17
- const formatter = _vm.formatter;
18
- const visible = XEUtils.isBoolean(_vm.visible) ? _vm.visible : true;
19
- const flCompConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
18
+ const defaultVisible = XEUtils.isBoolean(visible) ? visible : true;
19
+ const defaultRenderWidth = width && isPx(width) && width !== 'auto' ? Math.max(0, XEUtils.toInteger(width)) : 0;
20
+ const flCompConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
20
21
  const ctFilterOptions = flCompConf ? flCompConf.createTableFilterOptions : null;
21
- const filters = toFilters(_vm.filters, colId);
22
+ const filters = toFilters(colConfs.filters, colId);
22
23
  const types = ['seq', 'checkbox', 'radio', 'expand', 'html'];
23
- if (_vm.type && types.indexOf(_vm.type) === -1) {
24
- warnLog('vxe.error.errProp', [`type=${_vm.type}`, types.join(', ')]);
24
+ if (type && types.indexOf(type) === -1) {
25
+ warnLog('vxe.error.errProp', [`type=${type}`, types.join(', ')]);
25
26
  }
26
- if (XEUtils.isBoolean(_vm.cellRender) || (_vm.cellRender && !XEUtils.isObject(_vm.cellRender))) {
27
- warnLog('vxe.error.errProp', [`column.cell-render=${_vm.cellRender}`, 'column.cell-render={}']);
27
+ if (XEUtils.isBoolean(cellRender) || (cellRender && !XEUtils.isObject(cellRender))) {
28
+ warnLog('vxe.error.errProp', [`column.cell-render=${cellRender}`, 'column.cell-render={}']);
28
29
  }
29
- if (XEUtils.isBoolean(_vm.editRender) || (_vm.editRender && !XEUtils.isObject(_vm.editRender))) {
30
- warnLog('vxe.error.errProp', [`column.edit-render=${_vm.editRender}`, 'column.edit-render={}']);
30
+ if (XEUtils.isBoolean(editRender) || (editRender && !XEUtils.isObject(editRender))) {
31
+ warnLog('vxe.error.errProp', [`column.edit-render=${editRender}`, 'column.edit-render={}']);
31
32
  }
32
- if (_vm.type === 'expand') {
33
+ if (type === 'expand') {
33
34
  const { treeConfig } = tableProps;
34
35
  if (treeConfig && ($xeTable.treeOpts.showLine || $xeTable.treeOpts.line)) {
35
36
  errLog('vxe.error.errConflicts', ['tree-config.line', 'column.type=expand']);
36
37
  }
37
38
  }
38
- if (_vm.remoteSort) {
39
+ // 参数已废弃
40
+ if (colConfs.remoteSort) {
39
41
  warnLog('vxe.error.delProp', ['column.remote-sort', 'sort-config.remote']);
40
42
  }
41
- if (_vm.sortMethod) {
43
+ // 参数已废弃
44
+ if (colConfs.sortMethod) {
42
45
  warnLog('vxe.error.delProp', ['column.sort-method', 'sort-config.sortMethod']);
43
46
  }
44
47
  if (formatter) {
@@ -55,9 +58,9 @@ export class ColumnInfo {
55
58
  }
56
59
  }
57
60
  }
58
- if (_vm.aggFunc) {
59
- if (!$xeTable.handlePivotTableAggData && _vm.aggFunc !== true) {
60
- errLog('vxe.error.errProp', [`column.agg-func=${_vm.aggFunc}`, 'column.agg-func=true']);
61
+ if (aggFunc) {
62
+ if (!$xeTable.handlePivotTableAggData && aggFunc !== true) {
63
+ errLog('vxe.error.errProp', [`column.agg-func=${aggFunc}`, 'column.agg-func=true']);
61
64
  }
62
65
  }
63
66
  if (field && editRender) {
@@ -70,73 +73,74 @@ export class ColumnInfo {
70
73
  }
71
74
  Object.assign(this, {
72
75
  // 基本属性
73
- type: _vm.type,
74
- property: _vm.field,
76
+ type: colConfs.type,
77
+ property: colConfs.field,
75
78
  field: field,
76
- title: _vm.title,
77
- width: _vm.width,
78
- minWidth: _vm.minWidth,
79
- maxWidth: _vm.maxWidth,
80
- resizable: _vm.resizable,
81
- fixed: _vm.fixed,
82
- align: _vm.align,
83
- headerAlign: _vm.headerAlign,
84
- footerAlign: _vm.footerAlign,
85
- showOverflow: _vm.showOverflow,
86
- showHeaderOverflow: _vm.showHeaderOverflow,
87
- showFooterOverflow: _vm.showFooterOverflow,
88
- className: _vm.className,
89
- headerClassName: _vm.headerClassName,
90
- footerClassName: _vm.footerClassName,
79
+ title: colConfs.title,
80
+ width: colConfs.width,
81
+ minWidth: colConfs.minWidth,
82
+ maxWidth: colConfs.maxWidth,
83
+ resizable: colConfs.resizable,
84
+ fixed: colConfs.fixed,
85
+ align: colConfs.align,
86
+ headerAlign: colConfs.headerAlign,
87
+ footerAlign: colConfs.footerAlign,
88
+ showOverflow: colConfs.showOverflow,
89
+ showHeaderOverflow: colConfs.showHeaderOverflow,
90
+ showFooterOverflow: colConfs.showFooterOverflow,
91
+ className: colConfs.className,
92
+ headerClassName: colConfs.headerClassName,
93
+ footerClassName: colConfs.footerClassName,
91
94
  formatter,
92
- headerFormatter: _vm.headerFormatter,
93
- footerFormatter: _vm.footerFormatter,
94
- padding: _vm.padding,
95
- verticalAlign: _vm.verticalAlign,
96
- sortable: _vm.sortable,
97
- sortBy: _vm.sortBy,
98
- sortType: _vm.sortType,
99
- sortMethod: _vm.sortMethod,
100
- remoteSort: _vm.remoteSort,
95
+ headerFormatter: colConfs.headerFormatter,
96
+ footerFormatter: colConfs.footerFormatter,
97
+ padding: colConfs.padding,
98
+ verticalAlign: colConfs.verticalAlign,
99
+ sortable: colConfs.sortable,
100
+ sortBy: colConfs.sortBy,
101
+ sortType: colConfs.sortType,
102
+ // 参数已废弃
103
+ sortMethod: colConfs.sortMethod,
104
+ // 参数已废弃
105
+ remoteSort: colConfs.remoteSort,
101
106
  filters: filters,
102
- filterMultiple: XEUtils.isBoolean(_vm.filterMultiple) ? _vm.filterMultiple : true,
103
- filterMethod: _vm.filterMethod,
104
- filterResetMethod: _vm.filterResetMethod,
105
- filterRecoverMethod: _vm.filterRecoverMethod,
107
+ filterMultiple: XEUtils.isBoolean(filterMultiple) ? filterMultiple : true,
108
+ filterMethod: colConfs.filterMethod,
109
+ filterResetMethod: colConfs.filterResetMethod,
110
+ filterRecoverMethod: colConfs.filterRecoverMethod,
106
111
  filterRender: filterRender,
107
- floatingFilters: _vm.floatingFilters,
108
- rules: _vm.rules,
109
- rowGroupNode: _vm.rowGroupNode,
110
- treeNode: _vm.treeNode,
111
- dragSort: _vm.dragSort,
112
- rowResize: _vm.rowResize,
113
- cellType: _vm.cellType,
114
- cellRender: _vm.cellRender,
112
+ floatingFilters: colConfs.floatingFilters,
113
+ rules: colConfs.rules,
114
+ rowGroupNode: colConfs.rowGroupNode,
115
+ treeNode: colConfs.treeNode,
116
+ dragSort: colConfs.dragSort,
117
+ rowResize: colConfs.rowResize,
118
+ cellType: colConfs.cellType,
119
+ cellRender: colConfs.cellRender,
115
120
  editRender: editRender,
116
- contentRender: _vm.contentRender,
117
- headerExportMethod: _vm.headerExportMethod,
118
- exportMethod: _vm.exportMethod,
119
- footerExportMethod: _vm.footerExportMethod,
120
- titleHelp: _vm.titleHelp,
121
- titlePrefix: _vm.titlePrefix,
122
- titleSuffix: _vm.titleSuffix,
123
- aggFunc: _vm.aggFunc,
124
- copyMethod: _vm.copyMethod,
125
- cutMethod: _vm.cutMethod,
126
- pasteMethod: _vm.pasteMethod,
121
+ contentRender: colConfs.contentRender,
122
+ headerExportMethod: colConfs.headerExportMethod,
123
+ exportMethod: colConfs.exportMethod,
124
+ footerExportMethod: colConfs.footerExportMethod,
125
+ titleHelp: colConfs.titleHelp,
126
+ titlePrefix: colConfs.titlePrefix,
127
+ titleSuffix: colConfs.titleSuffix,
128
+ aggFunc: colConfs.aggFunc,
129
+ copyMethod: colConfs.copyMethod,
130
+ cutMethod: colConfs.cutMethod,
131
+ pasteMethod: colConfs.pasteMethod,
127
132
  // 自定义参数
128
- params: _vm.params,
133
+ params: colConfs.params,
129
134
  // 渲染属性
130
135
  id: colId,
131
136
  parentId: null,
132
- visible,
137
+ visible: defaultVisible,
133
138
  // 内部属性(一旦被使用,将导致不可升级版本)
134
139
  defaultParentId: null,
135
140
  halfVisible: false,
136
- defaultVisible: visible,
137
- defaultFixed: _vm.fixed,
138
- defaultAggGroup: _vm.aggGroup,
139
- defaultAggFunc: _vm.aggFunc,
141
+ defaultVisible: defaultVisible,
142
+ defaultFixed: colConfs.fixed,
143
+ defaultAggFunc: colConfs.aggFunc,
140
144
  checked: false,
141
145
  halfChecked: false,
142
146
  disabled: false,
@@ -157,7 +161,7 @@ export class ColumnInfo {
157
161
  renderAggFormat: null,
158
162
  renderFixed: '',
159
163
  renderVisible: false,
160
- renderWidth: 0,
164
+ renderWidth: defaultRenderWidth,
161
165
  renderHeight: 0,
162
166
  renderResizeWidth: 0,
163
167
  renderAutoWidth: 0,
@@ -165,12 +169,12 @@ export class ColumnInfo {
165
169
  renderLeft: 0,
166
170
  renderArgs: [],
167
171
  model: {},
168
- renderHeader: renderHeader || _vm.renderHeader,
169
- renderCell: renderCell || _vm.renderCell,
170
- renderFooter: renderFooter || _vm.renderFooter,
172
+ renderHeader: renderHeader || colConfs.renderHeader,
173
+ renderCell: renderCell || colConfs.renderCell,
174
+ renderFooter: renderFooter || colConfs.renderFooter,
171
175
  renderData,
172
176
  // 单元格插槽,只对 grid 有效
173
- slots: _vm.slots
177
+ slots: colConfs.slots
174
178
  });
175
179
  if (ctFilterOptions && (!filters || !filters.length)) {
176
180
  this.filters = toFilters(ctFilterOptions({ $table: $xeTable, column: this }), colId);
@@ -185,8 +189,8 @@ export class ColumnInfo {
185
189
  return getFuncText(this.title || (this.type === 'seq' ? getI18n('vxe.table.seqTitle') : ''));
186
190
  }
187
191
  getKey() {
188
- const { type } = this;
189
- return this.field || (type ? `type=${type}` : null);
192
+ const { type, field } = this;
193
+ return field || (type ? `type=${type}` : null);
190
194
  }
191
195
  update(name, value) {
192
196
  // 不支持直接修改的属性
@@ -415,7 +415,11 @@ function updateScrollYStatus($xeTable, fullData) {
415
415
  const { transform } = treeOpts;
416
416
  const allList = fullData || internalData.tableFullData;
417
417
  // 如果gt为0,则总是启用
418
- const scrollYLoad = (transform || !treeConfig) && !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt < allList.length);
418
+ let scrollYLoad = !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt < allList.length);
419
+ if (scrollYLoad && (treeConfig && !transform)) {
420
+ errLog('vxe.error.notSupportProp', ['[table] virtual-y-config.enabled=true', 'tree-config.transform=false', 'tree-config.transform=true']);
421
+ scrollYLoad = false;
422
+ }
419
423
  reactData.scrollYLoad = scrollYLoad;
420
424
  syncGanttScrollYStatus($xeTable);
421
425
  return scrollYLoad;
@@ -4937,7 +4941,7 @@ const tableMethods = {
4937
4941
  const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
4938
4942
  XEUtils.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
4939
4943
  const rowid = handleUpdateRowId(row);
4940
- if (treeConfig && lazy) {
4944
+ if (lazy) {
4941
4945
  if (row[hasChildField] && row[childrenField] === undefined) {
4942
4946
  row[childrenField] = null;
4943
4947
  }
@@ -1728,7 +1728,7 @@ export default {
1728
1728
  warnLog('vxe.error.delProp', ['table.edit-config.activeMethod', 'table.edit-config.beforeEditMethod']);
1729
1729
  }
1730
1730
  if (props.treeConfig && checkboxOpts.isShiftKey) {
1731
- errLog('vxe.error.errConflicts', ['tree-config', 'checkbox-config.isShiftKey']);
1731
+ errLog('vxe.error.reqSupportProp', ['tree-config', 'checkbox-config.isShiftKey=false']);
1732
1732
  }
1733
1733
  if (checkboxOpts.halfField) {
1734
1734
  warnLog('vxe.error.delProp', ['checkbox-config.halfField', 'checkbox-config.indeterminateField']);
@@ -1698,13 +1698,17 @@
1698
1698
  background-color: var(--vxe-ui-layout-background-color);
1699
1699
  }
1700
1700
 
1701
+ .vxe-context-menu--option {
1702
+ color: var(--vxe-ui-font-color);
1703
+ }
1704
+
1701
1705
  .vxe-context-menu--link {
1702
1706
  display: flex;
1703
1707
  flex-direction: row;
1704
1708
  width: var(--vxe-ui-table-menu-item-width);
1705
1709
  line-height: 26px;
1706
1710
  padding: 0 0.8em;
1707
- color: var(--vxe-ui-font-color);
1711
+ color: inherit;
1708
1712
  cursor: pointer;
1709
1713
  }
1710
1714
  .vxe-context-menu--link .vxe-context-menu--link-prefix,
@@ -1722,35 +1726,35 @@
1722
1726
  white-space: nowrap;
1723
1727
  }
1724
1728
 
1725
- .vxe-context-menu--option-wrapper,
1729
+ .vxe-table--context-menu-group-wrapper,
1726
1730
  .vxe-table--context-menu-clild-wrapper {
1727
1731
  margin: 0;
1728
1732
  padding: 0;
1729
1733
  list-style-type: none;
1730
1734
  border-bottom: 1px solid var(--vxe-ui-base-popup-border-color);
1731
1735
  }
1732
- .vxe-context-menu--option-wrapper li,
1736
+ .vxe-table--context-menu-group-wrapper li,
1733
1737
  .vxe-table--context-menu-clild-wrapper li {
1734
1738
  position: relative;
1735
1739
  margin: 1px 0;
1736
1740
  border: 1px solid transparent;
1737
1741
  }
1738
- .vxe-context-menu--option-wrapper li:last-child,
1742
+ .vxe-table--context-menu-group-wrapper li:last-child,
1739
1743
  .vxe-table--context-menu-clild-wrapper li:last-child {
1740
1744
  border: 0;
1741
1745
  }
1742
- .vxe-context-menu--option-wrapper li.link--active,
1746
+ .vxe-table--context-menu-group-wrapper li.link--active,
1743
1747
  .vxe-table--context-menu-clild-wrapper li.link--active {
1744
1748
  background-color: var(--vxe-ui-base-hover-background-color);
1745
1749
  border-color: var(--vxe-ui-base-hover-background-color);
1746
1750
  }
1747
- .vxe-context-menu--option-wrapper li.link--loading > .vxe-context-menu--link, .vxe-context-menu--option-wrapper li.link--disabled > .vxe-context-menu--link,
1751
+ .vxe-table--context-menu-group-wrapper li.link--loading > .vxe-context-menu--link, .vxe-table--context-menu-group-wrapper li.link--disabled > .vxe-context-menu--link,
1748
1752
  .vxe-table--context-menu-clild-wrapper li.link--loading > .vxe-context-menu--link,
1749
1753
  .vxe-table--context-menu-clild-wrapper li.link--disabled > .vxe-context-menu--link {
1750
1754
  color: var(--vxe-ui-font-disabled-color);
1751
1755
  cursor: no-drop;
1752
1756
  }
1753
- .vxe-context-menu--option-wrapper li.link--loading.link--active:hover, .vxe-context-menu--option-wrapper li.link--disabled.link--active:hover,
1757
+ .vxe-table--context-menu-group-wrapper li.link--loading.link--active:hover, .vxe-table--context-menu-group-wrapper li.link--disabled.link--active:hover,
1754
1758
  .vxe-table--context-menu-clild-wrapper li.link--loading.link--active:hover,
1755
1759
  .vxe-table--context-menu-clild-wrapper li.link--disabled.link--active:hover {
1756
1760
  background-color: inherit;
@@ -3563,6 +3567,10 @@
3563
3567
  .vxe-table--render-default {
3564
3568
  /*展开行*/
3565
3569
  }
3570
+ .vxe-table--render-default .vxe-body--column.col--expand > .vxe-cell .vxe-cell--wrapper {
3571
+ display: flex;
3572
+ flex-direction: row;
3573
+ }
3566
3574
  .vxe-table--render-default .vxe-table--row-expanded-wrapper {
3567
3575
  position: absolute;
3568
3576
  top: 0;
@@ -3594,23 +3602,31 @@
3594
3602
  border-right: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
3595
3603
  }
3596
3604
  .vxe-table--render-default .vxe-table--expanded {
3597
- cursor: pointer;
3605
+ display: flex;
3606
+ flex-direction: row;
3607
+ align-items: center;
3608
+ justify-content: center;
3609
+ flex-shrink: 0;
3598
3610
  }
3599
3611
  .vxe-table--render-default .vxe-table--expanded .vxe-table--expand-btn {
3600
- display: inline-block;
3601
- width: 1em;
3602
- height: 1em;
3603
- text-align: center;
3612
+ cursor: pointer;
3604
3613
  -webkit-user-select: none;
3605
3614
  -moz-user-select: none;
3606
3615
  user-select: none;
3607
3616
  color: var(--vxe-ui-font-lighten-color);
3608
- transition: transform 0.1s ease-in-out;
3609
3617
  }
3610
3618
  .vxe-table--render-default .vxe-table--expanded .vxe-table--expand-btn:hover {
3611
3619
  color: var(--vxe-ui-font-color);
3612
3620
  }
3621
+ .vxe-table--render-default .vxe-table--expanded .vxe-table--expand-btn i {
3622
+ display: inline-block;
3623
+ width: 1em;
3624
+ height: 1em;
3625
+ line-height: 1em;
3626
+ transition: transform 0.1s ease-in-out;
3627
+ }
3613
3628
  .vxe-table--render-default .vxe-table--expanded + .vxe-table--expand-label {
3629
+ flex-grow: 1;
3614
3630
  padding-left: 0.5em;
3615
3631
  }
3616
3632
  .vxe-table--render-default .vxe-body--expanded-row.is--padding > .vxe-body--expanded-column > .vxe-body--expanded-cell {