vxe-table 3.12.10-beta.8 → 3.12.10
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.
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/locale/lang/ar-EG.js +2 -1
- package/es/locale/lang/de-DE.js +2 -1
- package/es/locale/lang/en-US.js +4 -3
- package/es/locale/lang/es-ES.js +2 -1
- package/es/locale/lang/fr-FR.js +2 -1
- package/es/locale/lang/hu-HU.js +2 -1
- package/es/locale/lang/hy-AM.js +2 -1
- package/es/locale/lang/it-IT.js +2 -1
- package/es/locale/lang/ja-JP.js +2 -1
- package/es/locale/lang/ko-KR.js +2 -1
- package/es/locale/lang/nb-NO.js +2 -1
- package/es/locale/lang/pt-BR.js +2 -1
- package/es/locale/lang/ru-RU.js +4 -3
- package/es/locale/lang/th-TH.js +2 -1
- package/es/locale/lang/ug-CN.js +2 -1
- package/es/locale/lang/uk-UA.js +518 -517
- package/es/locale/lang/vi-VN.js +2 -1
- package/es/locale/lang/zh-CHT.js +2 -1
- package/es/locale/lang/zh-CN.js +2 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/edit/mixin.js +7 -7
- package/es/table/module/export/mixin.js +105 -69
- package/es/table/module/keyboard/mixin.js +68 -25
- package/es/table/module/menu/mixin.js +3 -1
- package/es/table/src/body.js +135 -83
- package/es/table/src/cell.js +43 -57
- package/es/table/src/column.js +43 -8
- package/es/table/src/columnInfo.js +3 -0
- package/es/table/src/footer.js +50 -9
- package/es/table/src/header.js +70 -168
- package/es/table/src/methods.js +985 -502
- package/es/table/src/props.js +14 -4
- package/es/table/src/table.js +114 -33
- package/es/table/src/util.js +73 -57
- package/es/table/style.css +253 -189
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +26 -10
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +253 -189
- package/es/vxe-table/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +1782 -1056
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +2 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +2 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +4 -3
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +4 -3
- package/lib/locale/lang/es-ES.js +2 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +2 -1
- package/lib/locale/lang/fr-FR.js +2 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +2 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +2 -1
- package/lib/locale/lang/hy-AM.js +2 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/it-IT.js +2 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +2 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +2 -1
- package/lib/locale/lang/ko-KR.js +2 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +2 -1
- package/lib/locale/lang/nb-NO.js +2 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +2 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +2 -1
- package/lib/locale/lang/ru-RU.js +4 -3
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +4 -3
- package/lib/locale/lang/th-TH.js +2 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +2 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +518 -517
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +518 -517
- package/lib/locale/lang/vi-VN.js +2 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +2 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +2 -1
- package/lib/locale/lang/zh-CN.js +2 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +2 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/edit/mixin.js +7 -2
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/mixin.js +105 -64
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +73 -27
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +3 -1
- package/lib/table/src/body.js +132 -79
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +32 -42
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/column.js +12 -0
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +3 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +46 -7
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +52 -175
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +1096 -560
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +14 -4
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +113 -36
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +87 -70
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +253 -189
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +26 -10
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-table/style/style.css +253 -189
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +2 -1
- package/packages/locale/lang/de-DE.ts +2 -1
- package/packages/locale/lang/en-US.ts +4 -3
- package/packages/locale/lang/es-ES.ts +2 -1
- package/packages/locale/lang/fr-FR.ts +2 -1
- package/packages/locale/lang/hu-HU.ts +2 -1
- package/packages/locale/lang/hy-AM.ts +2 -1
- package/packages/locale/lang/it-IT.ts +2 -1
- package/packages/locale/lang/ja-JP.ts +2 -1
- package/packages/locale/lang/ko-KR.ts +2 -1
- package/packages/locale/lang/nb-NO.ts +2 -1
- package/packages/locale/lang/pt-BR.ts +2 -1
- package/packages/locale/lang/ru-RU.ts +4 -3
- package/packages/locale/lang/th-TH.ts +2 -1
- package/packages/locale/lang/ug-CN.ts +2 -1
- package/packages/locale/lang/uk-UA.ts +518 -517
- package/packages/locale/lang/vi-VN.ts +2 -1
- package/packages/locale/lang/zh-CHT.ts +2 -1
- package/packages/locale/lang/zh-CN.ts +2 -1
- package/packages/table/module/edit/mixin.ts +7 -7
- package/packages/table/module/export/mixin.ts +138 -80
- package/packages/table/module/keyboard/mixin.ts +65 -24
- package/packages/table/module/menu/mixin.ts +4 -1
- package/packages/table/src/body.ts +148 -86
- package/packages/table/src/cell.ts +45 -67
- package/packages/table/src/column.ts +48 -10
- package/packages/table/src/columnInfo.ts +3 -0
- package/packages/table/src/footer.ts +53 -10
- package/packages/table/src/header.ts +70 -169
- package/packages/table/src/methods.ts +1031 -515
- package/packages/table/src/props.ts +16 -6
- package/packages/table/src/table.ts +124 -33
- package/packages/table/src/util.ts +82 -62
- package/packages/ui/index.ts +25 -9
- package/styles/components/table.scss +319 -271
- package/styles/theme/base.scss +4 -6
- package/styles/theme/dark.scss +1 -0
- package/styles/theme/light.scss +1 -0
- package/styles/variable.scss +1 -0
- /package/es/{iconfont.1736840896964.ttf → iconfont.1738985837413.ttf} +0 -0
- /package/es/{iconfont.1736840896964.woff → iconfont.1738985837413.woff} +0 -0
- /package/es/{iconfont.1736840896964.woff2 → iconfont.1738985837413.woff2} +0 -0
- /package/lib/{iconfont.1736840896964.ttf → iconfont.1738985837413.ttf} +0 -0
- /package/lib/{iconfont.1736840896964.woff → iconfont.1738985837413.woff} +0 -0
- /package/lib/{iconfont.1736840896964.woff2 → iconfont.1738985837413.woff2} +0 -0
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { PropType } from 'vue'
|
|
1
2
|
import Cell from './cell'
|
|
2
3
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
4
|
import { assembleColumn, destroyColumn } from './util'
|
|
4
5
|
|
|
6
|
+
import type { VxeColumnPropTypes } from '../../../types'
|
|
7
|
+
|
|
5
8
|
export const columnProps = {
|
|
6
9
|
// 列唯一主键
|
|
7
10
|
colId: [String, Number],
|
|
@@ -18,7 +21,10 @@ export const columnProps = {
|
|
|
18
21
|
// 列最大宽度
|
|
19
22
|
maxWidth: [Number, String],
|
|
20
23
|
// 是否允许拖动列宽调整大小
|
|
21
|
-
resizable: {
|
|
24
|
+
resizable: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
default: null
|
|
27
|
+
},
|
|
22
28
|
// 将列固定在左侧或者右侧
|
|
23
29
|
fixed: String,
|
|
24
30
|
// 列对其方式
|
|
@@ -28,11 +34,20 @@ export const columnProps = {
|
|
|
28
34
|
// 表尾列的对齐方式
|
|
29
35
|
footerAlign: String,
|
|
30
36
|
// 当内容过长时显示为省略号
|
|
31
|
-
showOverflow: {
|
|
37
|
+
showOverflow: {
|
|
38
|
+
type: [Boolean, String],
|
|
39
|
+
default: null
|
|
40
|
+
},
|
|
32
41
|
// 当表头内容过长时显示为省略号
|
|
33
|
-
showHeaderOverflow: {
|
|
42
|
+
showHeaderOverflow: {
|
|
43
|
+
type: [Boolean, String],
|
|
44
|
+
default: null
|
|
45
|
+
},
|
|
34
46
|
// 当表尾内容过长时显示为省略号
|
|
35
|
-
showFooterOverflow: {
|
|
47
|
+
showFooterOverflow: {
|
|
48
|
+
type: [Boolean, String],
|
|
49
|
+
default: null
|
|
50
|
+
},
|
|
36
51
|
// 给单元格附加 className
|
|
37
52
|
className: [String, Function],
|
|
38
53
|
// 给表头单元格附加 className
|
|
@@ -43,10 +58,23 @@ export const columnProps = {
|
|
|
43
58
|
formatter: [Function, Array, String],
|
|
44
59
|
// 格式化表尾显示内容
|
|
45
60
|
footerFormatter: [Function, Array, String],
|
|
61
|
+
// 是否显示间距
|
|
62
|
+
padding: {
|
|
63
|
+
type: Boolean as PropType<VxeColumnPropTypes.Padding>,
|
|
64
|
+
default: null
|
|
65
|
+
},
|
|
66
|
+
// 垂直对齐方式
|
|
67
|
+
verticalAlign: {
|
|
68
|
+
type: String as PropType<VxeColumnPropTypes.VerticalAlign>,
|
|
69
|
+
default: null
|
|
70
|
+
},
|
|
46
71
|
// 是否允许排序
|
|
47
72
|
sortable: Boolean,
|
|
48
73
|
// 在 v3 中废弃
|
|
49
|
-
remoteSort: {
|
|
74
|
+
remoteSort: {
|
|
75
|
+
type: Boolean,
|
|
76
|
+
default: null
|
|
77
|
+
},
|
|
50
78
|
// 在 v3 中只支持字符串类型
|
|
51
79
|
sortBy: [String, Function],
|
|
52
80
|
// 排序的字段类型,比如字符串转数值等
|
|
@@ -54,9 +82,15 @@ export const columnProps = {
|
|
|
54
82
|
// 在 v3 中废弃
|
|
55
83
|
sortMethod: Function,
|
|
56
84
|
// 配置筛选条件数组
|
|
57
|
-
filters: {
|
|
85
|
+
filters: {
|
|
86
|
+
type: Array,
|
|
87
|
+
default: null
|
|
88
|
+
},
|
|
58
89
|
// 筛选是否允许多选
|
|
59
|
-
filterMultiple: {
|
|
90
|
+
filterMultiple: {
|
|
91
|
+
type: Boolean,
|
|
92
|
+
default: true
|
|
93
|
+
},
|
|
60
94
|
// 自定义筛选方法
|
|
61
95
|
filterMethod: Function,
|
|
62
96
|
// 筛选重置方法
|
|
@@ -66,11 +100,15 @@ export const columnProps = {
|
|
|
66
100
|
// 筛选模板配置项
|
|
67
101
|
filterRender: Object,
|
|
68
102
|
// 设置为树节点
|
|
69
|
-
treeNode: Boolean
|
|
103
|
+
treeNode: Boolean as PropType<VxeColumnPropTypes.TreeNode>,
|
|
70
104
|
// 设置为拖拽排序
|
|
71
|
-
dragSort: Boolean
|
|
105
|
+
dragSort: Boolean as PropType<VxeColumnPropTypes.DragSort>,
|
|
106
|
+
// 设置为行高拖拽
|
|
107
|
+
rowResize: Boolean as PropType<VxeColumnPropTypes.RowResize>,
|
|
72
108
|
// 是否可视
|
|
73
|
-
visible: {
|
|
109
|
+
visible: {
|
|
110
|
+
type: Boolean, default: null
|
|
111
|
+
},
|
|
74
112
|
// 表头单元格数据导出方法
|
|
75
113
|
headerExportMethod: Function,
|
|
76
114
|
// 单元格数据导出方法
|
|
@@ -78,6 +78,8 @@ export class ColumnInfo {
|
|
|
78
78
|
footerClassName: _vm.footerClassName,
|
|
79
79
|
formatter,
|
|
80
80
|
footerFormatter: _vm.footerFormatter,
|
|
81
|
+
padding: _vm.padding,
|
|
82
|
+
verticalAlign: _vm.verticalAlign,
|
|
81
83
|
sortable: _vm.sortable,
|
|
82
84
|
sortBy: _vm.sortBy,
|
|
83
85
|
sortType: _vm.sortType,
|
|
@@ -91,6 +93,7 @@ export class ColumnInfo {
|
|
|
91
93
|
filterRender: _vm.filterRender,
|
|
92
94
|
treeNode: _vm.treeNode,
|
|
93
95
|
dragSort: _vm.dragSort,
|
|
96
|
+
rowResize: _vm.rowResize,
|
|
94
97
|
cellType: _vm.cellType,
|
|
95
98
|
cellRender: _vm.cellRender,
|
|
96
99
|
editRender: _vm.editRender,
|
|
@@ -3,6 +3,7 @@ import XEUtils from 'xe-utils'
|
|
|
3
3
|
import { VxeUI } from '../../ui'
|
|
4
4
|
import { getClass } from '../../ui/src/utils'
|
|
5
5
|
import { updateCellTitle } from '../../ui/src/dom'
|
|
6
|
+
import { getCellHeight } from './util'
|
|
6
7
|
|
|
7
8
|
import type { VxeTableDefines, VxeTableConstructor, VxeTablePrivateMethods, TableReactData, TableInternalData, VxeComponentStyleType } from '../../../types'
|
|
8
9
|
|
|
@@ -32,31 +33,41 @@ function renderRows (h: CreateElement, _vm: any, tableColumn: VxeTableDefines.Co
|
|
|
32
33
|
const tableInternalData = $xeTable as unknown as TableInternalData
|
|
33
34
|
|
|
34
35
|
const { fixedType } = props
|
|
35
|
-
const { footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps
|
|
36
|
+
const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps
|
|
36
37
|
const { scrollXLoad, scrollYLoad, overflowX, currentColumn, mergeFooterList } = tableReactData
|
|
37
38
|
const { scrollXStore } = tableInternalData
|
|
38
39
|
const tooltipOpts = $xeTable.computeTooltipOpts
|
|
40
|
+
const { isAllColumnDrag } = $xeTable.resizableOpts
|
|
39
41
|
const columnOpts = $xeTable.computeColumnOpts
|
|
42
|
+
const defaultRowHeight = $xeTable.computeDefaultRowHeight
|
|
43
|
+
const cellOpts = $xeTable.computeCellOpts
|
|
44
|
+
const footerCellOpts = $xeTable.computeFooterCellOpts
|
|
45
|
+
const currCellHeight = getCellHeight(footerCellOpts.height || cellOpts.height) || defaultRowHeight
|
|
40
46
|
|
|
41
47
|
return tableColumn.map((column: any, $columnIndex: any) => {
|
|
42
48
|
const { type, showFooterOverflow, footerAlign, align, footerClassName, editRender, cellRender } = column
|
|
49
|
+
const colid = column.id
|
|
43
50
|
const renderOpts = editRender || cellRender
|
|
44
51
|
const compConf = renderOpts ? renderer.get(renderOpts.name) : null
|
|
45
52
|
const showAllTip = tooltipOpts.showAll
|
|
46
53
|
const isColGroup = column.children && column.children.length
|
|
47
54
|
const fixedHiddenColumn = fixedType ? column.fixed !== fixedType && !isColGroup : column.fixed && overflowX
|
|
55
|
+
const isPadding = XEUtils.isBoolean(footerCellOpts.padding) ? footerCellOpts.padding : cellOpts.padding
|
|
48
56
|
const footOverflow = XEUtils.eqNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow
|
|
49
57
|
const footAlign = footerAlign || (compConf ? compConf.tableFooterCellAlign : '') || allFooterAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign
|
|
50
58
|
let showEllipsis = footOverflow === 'ellipsis'
|
|
51
59
|
const showTitle = footOverflow === 'title'
|
|
52
60
|
const showTooltip = footOverflow === true || footOverflow === 'tooltip'
|
|
53
61
|
let hasEllipsis = showTitle || showTooltip || showEllipsis
|
|
54
|
-
const
|
|
62
|
+
const showResizable = (XEUtils.isBoolean(column.resizable) ? column.resizable : (columnOpts.resizable || allResizable))
|
|
63
|
+
const attrs: any = { colid }
|
|
55
64
|
const tfOns: any = {}
|
|
56
65
|
const columnIndex = $xeTable.getColumnIndex(column)
|
|
57
66
|
const _columnIndex = $xeTable.getVTColumnIndex(column)
|
|
58
67
|
const itemIndex = _columnIndex
|
|
59
|
-
const cellParams: VxeTableDefines.CellRenderFooterParams
|
|
68
|
+
const cellParams: VxeTableDefines.CellRenderFooterParams & {
|
|
69
|
+
$table: VxeTableConstructor<any> & VxeTablePrivateMethods
|
|
70
|
+
} = {
|
|
60
71
|
$table: $xeTable,
|
|
61
72
|
$grid: $xeTable.xegrid,
|
|
62
73
|
row,
|
|
@@ -130,9 +141,16 @@ function renderRows (h: CreateElement, _vm: any, tableColumn: VxeTableDefines.Co
|
|
|
130
141
|
const isLastColumn = $columnIndex === tableColumn.length - 1
|
|
131
142
|
const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto')
|
|
132
143
|
|
|
133
|
-
let
|
|
134
|
-
if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex || _columnIndex > scrollXStore.visibleEndIndex)) {
|
|
135
|
-
|
|
144
|
+
let isVNPreEmptyStatus = false
|
|
145
|
+
if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
|
|
146
|
+
isVNPreEmptyStatus = true
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const tcStyle: Record<string, string> = {}
|
|
150
|
+
if (hasEllipsis) {
|
|
151
|
+
tcStyle.height = `${currCellHeight}px`
|
|
152
|
+
} else {
|
|
153
|
+
tcStyle.minHeight = `${currCellHeight}px`
|
|
136
154
|
}
|
|
137
155
|
|
|
138
156
|
return h('td', {
|
|
@@ -142,6 +160,7 @@ function renderRows (h: CreateElement, _vm: any, tableColumn: VxeTableDefines.Co
|
|
|
142
160
|
'col--last': isLastColumn,
|
|
143
161
|
'fixed--width': !isAutoCellWidth,
|
|
144
162
|
'fixed--hidden': fixedHiddenColumn,
|
|
163
|
+
'is--padding': isPadding,
|
|
145
164
|
'col--ellipsis': hasEllipsis,
|
|
146
165
|
'col--current': currentColumn === column
|
|
147
166
|
}, getClass(footerClassName, cellParams), getClass(footerCellClassName, cellParams)],
|
|
@@ -155,8 +174,32 @@ function renderRows (h: CreateElement, _vm: any, tableColumn: VxeTableDefines.Co
|
|
|
155
174
|
'c--title': showTitle,
|
|
156
175
|
'c--tooltip': showTooltip,
|
|
157
176
|
'c--ellipsis': showEllipsis
|
|
158
|
-
}]
|
|
159
|
-
|
|
177
|
+
}],
|
|
178
|
+
style: tcStyle
|
|
179
|
+
}, isVNPreEmptyStatus
|
|
180
|
+
? []
|
|
181
|
+
: [
|
|
182
|
+
h('div', {
|
|
183
|
+
attrs: {
|
|
184
|
+
colid
|
|
185
|
+
},
|
|
186
|
+
class: 'vxe-cell--wrapper'
|
|
187
|
+
}, column.renderFooter(h, cellParams))
|
|
188
|
+
]),
|
|
189
|
+
/**
|
|
190
|
+
* 列宽拖动
|
|
191
|
+
*/
|
|
192
|
+
!fixedHiddenColumn && showResizable && isAllColumnDrag
|
|
193
|
+
? h('div', {
|
|
194
|
+
class: ['vxe-cell--col-resizable', {
|
|
195
|
+
'is--line': !border || border === 'none'
|
|
196
|
+
}],
|
|
197
|
+
on: {
|
|
198
|
+
mousedown: (evnt: MouseEvent) => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams),
|
|
199
|
+
dblclick: (evnt: MouseEvent) => $xeTable.handleColResizeDblclickEvent(evnt, cellParams)
|
|
200
|
+
}
|
|
201
|
+
})
|
|
202
|
+
: renderEmptyElement($xeTable)
|
|
160
203
|
])
|
|
161
204
|
})
|
|
162
205
|
}
|
|
@@ -170,7 +213,7 @@ function renderHeads (h: CreateElement, _vm: any, renderColumnList: VxeTableDefi
|
|
|
170
213
|
const { fixedType, footerTableData } = props
|
|
171
214
|
|
|
172
215
|
const { footerRowClassName, footerRowStyle } = tableProps
|
|
173
|
-
const { isDragColMove } = tableReactData
|
|
216
|
+
const { isColLoading, isDragColMove } = tableReactData
|
|
174
217
|
const columnOpts = $xeTable.computeColumnOpts
|
|
175
218
|
const columnDragOpts = $xeTable.computeColumnDragOpts
|
|
176
219
|
|
|
@@ -178,7 +221,7 @@ function renderHeads (h: CreateElement, _vm: any, renderColumnList: VxeTableDefi
|
|
|
178
221
|
const _rowIndex = $rowIndex
|
|
179
222
|
const rowParams = { $table: $xeTable, row, _rowIndex, $rowIndex, fixed: fixedType, type: renderType }
|
|
180
223
|
|
|
181
|
-
if (columnOpts.drag && columnDragOpts.animation) {
|
|
224
|
+
if (!isColLoading && columnOpts.drag && columnDragOpts.animation) {
|
|
182
225
|
return h('transition-group', {
|
|
183
226
|
key: $rowIndex,
|
|
184
227
|
props: {
|
|
@@ -2,12 +2,11 @@ import { PropType, CreateElement } from 'vue'
|
|
|
2
2
|
import XEUtils from 'xe-utils'
|
|
3
3
|
import { VxeUI } from '../../ui'
|
|
4
4
|
import { getClass } from '../../ui/src/utils'
|
|
5
|
-
import {
|
|
6
|
-
import { convertHeaderColumnToRows, getColReMinWidth, getRefElem } from './util'
|
|
5
|
+
import { getCellHeight, convertHeaderColumnToRows } from './util'
|
|
7
6
|
|
|
8
7
|
import type { VxeTableDefines, VxeTableConstructor, VxeTablePrivateMethods, VxeColumnPropTypes, TableReactData, TableInternalData, VxeComponentStyleType } from '../../../types'
|
|
9
8
|
|
|
10
|
-
const {
|
|
9
|
+
const { renderer, renderEmptyElement } = VxeUI
|
|
11
10
|
|
|
12
11
|
const cellType = 'header'
|
|
13
12
|
|
|
@@ -25,6 +24,10 @@ const renderRows = (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMode
|
|
|
25
24
|
const { scrollXStore } = tableInternalData
|
|
26
25
|
const columnOpts = $xeTable.computeColumnOpts
|
|
27
26
|
const columnDragOpts = $xeTable.computeColumnDragOpts
|
|
27
|
+
const cellOpts = $xeTable.computeCellOpts
|
|
28
|
+
const defaultRowHeight = $xeTable.computeDefaultRowHeight
|
|
29
|
+
const headerCellOpts = $xeTable.computeHeaderCellOpts
|
|
30
|
+
const currCellHeight = getCellHeight(headerCellOpts.height || cellOpts.height) || defaultRowHeight
|
|
28
31
|
const { disabledMethod: dragDisabledMethod, isCrossDrag, isPeerDrag } = columnDragOpts
|
|
29
32
|
return cols.map((column: any, $columnIndex: any) => {
|
|
30
33
|
const { type, showHeaderOverflow, headerAlign, align, filters, headerClassName, editRender, cellRender } = column
|
|
@@ -34,6 +37,7 @@ const renderRows = (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMode
|
|
|
34
37
|
const compConf = renderOpts ? renderer.get(renderOpts.name) : null
|
|
35
38
|
const isColGroup = column.children && column.children.length
|
|
36
39
|
const fixedHiddenColumn = fixedType ? column.fixed !== fixedType && !isColGroup : column.fixed && overflowX
|
|
40
|
+
const isPadding = XEUtils.isBoolean(headerCellOpts.padding) ? headerCellOpts.padding : cellOpts.padding
|
|
37
41
|
const headOverflow = XEUtils.isUndefined(showHeaderOverflow) || XEUtils.isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
|
|
38
42
|
const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : '') || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign
|
|
39
43
|
let showEllipsis = headOverflow === 'ellipsis'
|
|
@@ -48,15 +52,15 @@ const renderRows = (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMode
|
|
|
48
52
|
}
|
|
49
53
|
const columnIndex = $xeTable.getColumnIndex(column)
|
|
50
54
|
const _columnIndex = $xeTable.getVTColumnIndex(column)
|
|
51
|
-
const
|
|
55
|
+
const cellParams = { $table: $xeTable, $grid: $xeGrid, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, firstFilterOption, fixed: fixedType, type: cellType, isHidden: fixedHiddenColumn, hasFilter }
|
|
52
56
|
const thAttrs: Record<string, string | number | null> = {
|
|
53
57
|
colid,
|
|
54
58
|
colspan: column.colSpan > 1 ? column.colSpan : null,
|
|
55
59
|
rowspan: column.rowSpan > 1 ? column.rowSpan : null
|
|
56
60
|
}
|
|
57
61
|
const thOns: any = {
|
|
58
|
-
click: (evnt: MouseEvent) => $xeTable.triggerHeaderCellClickEvent(evnt,
|
|
59
|
-
dblclick: (evnt: MouseEvent) => $xeTable.triggerHeaderCellDblclickEvent(evnt,
|
|
62
|
+
click: (evnt: MouseEvent) => $xeTable.triggerHeaderCellClickEvent(evnt, cellParams),
|
|
63
|
+
dblclick: (evnt: MouseEvent) => $xeTable.triggerHeaderCellDblclickEvent(evnt, cellParams)
|
|
60
64
|
}
|
|
61
65
|
// 虚拟滚动不支持动态高度
|
|
62
66
|
if (scrollXLoad && !hasEllipsis) {
|
|
@@ -65,11 +69,11 @@ const renderRows = (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMode
|
|
|
65
69
|
const isColDragCell = columnOpts.drag && columnDragOpts.trigger === 'cell'
|
|
66
70
|
let isDisabledDrag = false
|
|
67
71
|
if (isColDragCell) {
|
|
68
|
-
isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(
|
|
72
|
+
isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(cellParams))
|
|
69
73
|
}
|
|
70
74
|
// 按下事件处理
|
|
71
75
|
if (mouseConfig || isColDragCell) {
|
|
72
|
-
thOns.mousedown = (evnt: any) => $xeTable.triggerHeaderCellMousedownEvent(evnt,
|
|
76
|
+
thOns.mousedown = (evnt: any) => $xeTable.triggerHeaderCellMousedownEvent(evnt, cellParams)
|
|
73
77
|
}
|
|
74
78
|
// 拖拽列事件
|
|
75
79
|
if (columnOpts.drag) {
|
|
@@ -84,9 +88,16 @@ const renderRows = (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMode
|
|
|
84
88
|
const showResizable = (XEUtils.isBoolean(column.resizable) ? column.resizable : (columnOpts.resizable || allResizable))
|
|
85
89
|
const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto')
|
|
86
90
|
|
|
87
|
-
let
|
|
88
|
-
if (scrollXLoad && !
|
|
89
|
-
|
|
91
|
+
let isVNPreEmptyStatus = false
|
|
92
|
+
if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
|
|
93
|
+
isVNPreEmptyStatus = true
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const tcStyle: Record<string, string> = {}
|
|
97
|
+
if (hasEllipsis) {
|
|
98
|
+
tcStyle.height = `${currCellHeight}px`
|
|
99
|
+
} else {
|
|
100
|
+
tcStyle.minHeight = `${currCellHeight}px`
|
|
90
101
|
}
|
|
91
102
|
|
|
92
103
|
return h('th', {
|
|
@@ -99,15 +110,16 @@ const renderRows = (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMode
|
|
|
99
110
|
'col--ellipsis': hasEllipsis,
|
|
100
111
|
'fixed--width': !isAutoCellWidth,
|
|
101
112
|
'fixed--hidden': fixedHiddenColumn,
|
|
113
|
+
'is--padding': isPadding,
|
|
102
114
|
'is--sortable': column.sortable,
|
|
103
115
|
'col--filter': !!filters,
|
|
104
116
|
'is--filter-active': hasFilter,
|
|
105
117
|
'is--drag-active': !column.fixed && !isDisabledDrag && (isCrossDrag || isPeerDrag || !column.parentId),
|
|
106
118
|
'is--drag-disabled': isDisabledDrag,
|
|
107
119
|
'col--current': currentColumn === column
|
|
108
|
-
}, getClass(headerClassName,
|
|
120
|
+
}, getClass(headerClassName, cellParams), getClass(headerCellClassName, cellParams)],
|
|
109
121
|
attrs: thAttrs,
|
|
110
|
-
style: headerCellStyle ? (XEUtils.isFunction(headerCellStyle) ? headerCellStyle(
|
|
122
|
+
style: headerCellStyle ? (XEUtils.isFunction(headerCellStyle) ? headerCellStyle(cellParams) : headerCellStyle) as VxeComponentStyleType : undefined,
|
|
111
123
|
on: thOns,
|
|
112
124
|
key: columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex
|
|
113
125
|
}, [
|
|
@@ -116,19 +128,29 @@ const renderRows = (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMode
|
|
|
116
128
|
'c--title': showTitle,
|
|
117
129
|
'c--tooltip': showTooltip,
|
|
118
130
|
'c--ellipsis': showEllipsis
|
|
119
|
-
}]
|
|
120
|
-
|
|
131
|
+
}],
|
|
132
|
+
style: tcStyle
|
|
133
|
+
}, isVNPreEmptyStatus || (isOptimizeMode && fixedHiddenColumn)
|
|
134
|
+
? []
|
|
135
|
+
: [
|
|
136
|
+
h('div', {
|
|
137
|
+
attrs: {
|
|
138
|
+
colid
|
|
139
|
+
},
|
|
140
|
+
class: 'vxe-cell--wrapper'
|
|
141
|
+
}, column.renderHeader(h, cellParams))
|
|
142
|
+
]),
|
|
121
143
|
/**
|
|
122
144
|
* 列宽拖动
|
|
123
145
|
*/
|
|
124
146
|
!fixedHiddenColumn && showResizable
|
|
125
147
|
? h('div', {
|
|
126
|
-
class: ['vxe-resizable', {
|
|
148
|
+
class: ['vxe-cell--col-resizable', {
|
|
127
149
|
'is--line': !border || border === 'none'
|
|
128
150
|
}],
|
|
129
151
|
on: {
|
|
130
|
-
mousedown: (evnt: MouseEvent) =>
|
|
131
|
-
dblclick: (evnt: MouseEvent) => $xeTable.
|
|
152
|
+
mousedown: (evnt: MouseEvent) => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams),
|
|
153
|
+
dblclick: (evnt: MouseEvent) => $xeTable.handleColResizeDblclickEvent(evnt, cellParams)
|
|
132
154
|
}
|
|
133
155
|
})
|
|
134
156
|
: renderEmptyElement($xeTable)
|
|
@@ -148,12 +170,12 @@ function renderHeads (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMo
|
|
|
148
170
|
const columnDragOpts = $xeTable.computeColumnDragOpts
|
|
149
171
|
|
|
150
172
|
const { headerRowClassName, headerRowStyle } = tableProps
|
|
151
|
-
const { isDragColMove } = tableReactData
|
|
173
|
+
const { isColLoading, isDragColMove } = tableReactData
|
|
152
174
|
|
|
153
175
|
return headerGroups.map((cols: any, $rowIndex: any) => {
|
|
154
176
|
const params = { $table: $xeTable, $rowIndex, fixed: fixedType, type: cellType }
|
|
155
177
|
|
|
156
|
-
if (columnOpts.drag && columnDragOpts.animation) {
|
|
178
|
+
if (!isColLoading && columnOpts.drag && columnDragOpts.animation) {
|
|
157
179
|
return h('transition-group', {
|
|
158
180
|
key: $rowIndex,
|
|
159
181
|
props: {
|
|
@@ -247,10 +269,11 @@ export default {
|
|
|
247
269
|
const { fixedType, fixedColumn, tableColumn } = props
|
|
248
270
|
const { headerColumn } = this
|
|
249
271
|
|
|
250
|
-
const { showHeaderOverflow: allColumnHeaderOverflow, spanMethod, footerSpanMethod } = tableProps
|
|
272
|
+
const { mouseConfig, showHeaderOverflow: allColumnHeaderOverflow, spanMethod, footerSpanMethod } = tableProps
|
|
251
273
|
const { isGroup, scrollXLoad, scrollYLoad, dragCol } = tableReactData
|
|
252
274
|
const { visibleColumn, fullColumnIdData } = tableInternalData
|
|
253
275
|
|
|
276
|
+
const mouseOpts = $xeTable.computeMouseOpts
|
|
254
277
|
let renderHeaderList = headerColumn as VxeTableDefines.ColumnInfo[][]
|
|
255
278
|
let renderColumnList = tableColumn as VxeTableDefines.ColumnInfo[]
|
|
256
279
|
let isOptimizeMode = false
|
|
@@ -354,15 +377,32 @@ export default {
|
|
|
354
377
|
*/
|
|
355
378
|
h('thead', {
|
|
356
379
|
ref: 'refHeaderTHead'
|
|
357
|
-
}, renderHeads(h, this, isGroup, isOptimizeMode, renderHeaderList))
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
380
|
+
}, renderHeads(h, this, isGroup, isOptimizeMode, renderHeaderList)),
|
|
381
|
+
mouseConfig && mouseOpts.area
|
|
382
|
+
? h('div', {
|
|
383
|
+
class: 'vxe-table--cell-area'
|
|
384
|
+
}, [
|
|
385
|
+
h('span', {
|
|
386
|
+
class: 'vxe-table--cell-main-area'
|
|
387
|
+
}),
|
|
388
|
+
h('span', {
|
|
389
|
+
class: 'vxe-table--cell-copy-area'
|
|
390
|
+
}),
|
|
391
|
+
h('span', {
|
|
392
|
+
class: 'vxe-table--cell-extend-area'
|
|
393
|
+
}),
|
|
394
|
+
h('span', {
|
|
395
|
+
class: 'vxe-table--cell-multi-area'
|
|
396
|
+
}),
|
|
397
|
+
h('span', {
|
|
398
|
+
class: 'vxe-table--cell-active-area'
|
|
399
|
+
}),
|
|
400
|
+
h('span', {
|
|
401
|
+
class: 'vxe-table--cell-col-status-area'
|
|
402
|
+
})
|
|
403
|
+
])
|
|
404
|
+
: renderEmptyElement($xeTable)
|
|
405
|
+
])
|
|
366
406
|
])
|
|
367
407
|
])
|
|
368
408
|
},
|
|
@@ -370,145 +410,6 @@ export default {
|
|
|
370
410
|
uploadColumn () {
|
|
371
411
|
const { $parent: $xetable } = this
|
|
372
412
|
this.headerColumn = $xetable.isGroup ? convertHeaderColumnToRows(this.tableGroupColumn) : []
|
|
373
|
-
},
|
|
374
|
-
resizeMousedownEvent (evnt: MouseEvent, params: VxeTableDefines.CellRenderHeaderParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }) {
|
|
375
|
-
const _vm = this
|
|
376
|
-
const props = _vm
|
|
377
|
-
|
|
378
|
-
const $xeTable = this.$parent as VxeTableConstructor & VxeTablePrivateMethods
|
|
379
|
-
const tableReactData = $xeTable as unknown as TableReactData
|
|
380
|
-
const tableInternalData = $xeTable as unknown as TableInternalData
|
|
381
|
-
|
|
382
|
-
const { column } = params
|
|
383
|
-
const { fixedType } = props
|
|
384
|
-
const { scrollbarHeight } = tableReactData
|
|
385
|
-
const { elemStore, visibleColumn } = tableInternalData
|
|
386
|
-
const resizableOpts = $xeTable.computeResizableOpts
|
|
387
|
-
const tableEl = $xeTable.$refs.refElem as HTMLDivElement
|
|
388
|
-
const leftContainerElem = $xeTable.$refs.refLeftContainer as HTMLDivElement
|
|
389
|
-
const rightContainerElem = $xeTable.$refs.refRightContainer as HTMLDivElement
|
|
390
|
-
const resizeBarElem = $xeTable.$refs.refCellResizeBar as HTMLDivElement
|
|
391
|
-
const resizeTipElem = $xeTable.$refs.refCellResizeTip as HTMLDivElement
|
|
392
|
-
const scrollbarXToTop = $xeTable.computeScrollbarXToTop
|
|
393
|
-
const { clientX: dragClientX } = evnt
|
|
394
|
-
const wrapperElem = _vm.$el
|
|
395
|
-
const dragBtnElem = evnt.target as HTMLDivElement
|
|
396
|
-
let resizeColumn = column
|
|
397
|
-
if (column.children && column.children.length) {
|
|
398
|
-
XEUtils.eachTree(column.children, childColumn => {
|
|
399
|
-
resizeColumn = childColumn
|
|
400
|
-
})
|
|
401
|
-
}
|
|
402
|
-
const cell = dragBtnElem.parentNode as HTMLTableCellElement
|
|
403
|
-
const cellParams = Object.assign(params, { cell })
|
|
404
|
-
let dragLeft = 0
|
|
405
|
-
const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
|
|
406
|
-
if (!bodyScrollElem) {
|
|
407
|
-
return
|
|
408
|
-
}
|
|
409
|
-
const pos = getOffsetPos(dragBtnElem, tableEl)
|
|
410
|
-
const dragBtnWidth = dragBtnElem.clientWidth
|
|
411
|
-
const dragBtnOffsetWidth = Math.floor(dragBtnWidth / 2)
|
|
412
|
-
const minInterval = getColReMinWidth(cellParams) - dragBtnOffsetWidth // 列之间的最小间距
|
|
413
|
-
let dragMinLeft = pos.left - cell.clientWidth + dragBtnWidth + minInterval
|
|
414
|
-
let dragPosLeft = pos.left + dragBtnOffsetWidth
|
|
415
|
-
const domMousemove = document.onmousemove
|
|
416
|
-
const domMouseup = document.onmouseup
|
|
417
|
-
const isLeftFixed = fixedType === 'left'
|
|
418
|
-
const isRightFixed = fixedType === 'right'
|
|
419
|
-
|
|
420
|
-
// 计算左右侧固定列偏移量
|
|
421
|
-
let fixedOffsetWidth = 0
|
|
422
|
-
if (isLeftFixed || isRightFixed) {
|
|
423
|
-
const siblingProp = isLeftFixed ? 'nextElementSibling' : 'previousElementSibling'
|
|
424
|
-
let tempCellElem = cell[siblingProp] as HTMLTableCellElement
|
|
425
|
-
while (tempCellElem) {
|
|
426
|
-
if (hasClass(tempCellElem, 'fixed--hidden')) {
|
|
427
|
-
break
|
|
428
|
-
} else if (!hasClass(tempCellElem, 'col--group')) {
|
|
429
|
-
fixedOffsetWidth += tempCellElem.offsetWidth
|
|
430
|
-
}
|
|
431
|
-
tempCellElem = tempCellElem[siblingProp] as HTMLTableCellElement
|
|
432
|
-
}
|
|
433
|
-
if (isRightFixed && rightContainerElem) {
|
|
434
|
-
dragPosLeft = rightContainerElem.offsetLeft + fixedOffsetWidth
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
// 处理拖动事件
|
|
439
|
-
const updateEvent = function (evnt: any) {
|
|
440
|
-
evnt.stopPropagation()
|
|
441
|
-
evnt.preventDefault()
|
|
442
|
-
const tableHeight = tableEl.clientHeight
|
|
443
|
-
const offsetX = evnt.clientX - dragClientX
|
|
444
|
-
let left = dragPosLeft + offsetX
|
|
445
|
-
const scrollLeft = fixedType ? 0 : bodyScrollElem.scrollLeft
|
|
446
|
-
if (isLeftFixed) {
|
|
447
|
-
// 左固定列(不允许超过右侧固定列、不允许超过右边距)
|
|
448
|
-
left = Math.min(left, (rightContainerElem ? rightContainerElem.offsetLeft : bodyScrollElem.clientWidth) - fixedOffsetWidth - minInterval)
|
|
449
|
-
} else if (isRightFixed) {
|
|
450
|
-
// 右侧固定列(不允许超过左侧固定列、不允许超过左边距)
|
|
451
|
-
dragMinLeft = (leftContainerElem ? leftContainerElem.clientWidth : 0) + fixedOffsetWidth + minInterval
|
|
452
|
-
left = Math.min(left, dragPosLeft + cell.clientWidth - minInterval)
|
|
453
|
-
} else {
|
|
454
|
-
dragMinLeft = Math.max(bodyScrollElem.scrollLeft, dragMinLeft)
|
|
455
|
-
// left = Math.min(left, bodyScrollElem.clientWidth + bodyScrollElem.scrollLeft - 40)
|
|
456
|
-
}
|
|
457
|
-
dragLeft = Math.max(left, dragMinLeft)
|
|
458
|
-
const resizeBarLeft = Math.max(1, dragLeft - scrollLeft)
|
|
459
|
-
resizeBarElem.style.left = `${resizeBarLeft}px`
|
|
460
|
-
resizeBarElem.style.top = `${scrollbarXToTop ? scrollbarHeight : 0}px`
|
|
461
|
-
resizeBarElem.style.height = `${scrollbarXToTop ? tableHeight - scrollbarHeight : tableHeight}px`
|
|
462
|
-
if (resizableOpts.showDragTip && resizeTipElem) {
|
|
463
|
-
const tableWidth = tableEl.clientWidth
|
|
464
|
-
const wrapperRect = wrapperElem.getBoundingClientRect()
|
|
465
|
-
const resizeBarWidth = resizeBarElem.clientWidth
|
|
466
|
-
const resizeTipWidth = resizeTipElem.clientWidth
|
|
467
|
-
const resizeTipHeight = resizeTipElem.clientHeight
|
|
468
|
-
let resizeTipLeft = -resizeTipWidth
|
|
469
|
-
if (resizeBarLeft < resizeTipWidth + resizeBarWidth) {
|
|
470
|
-
resizeTipLeft = 0
|
|
471
|
-
} else if (resizeBarLeft > tableWidth) {
|
|
472
|
-
resizeTipLeft += tableWidth - resizeBarLeft
|
|
473
|
-
}
|
|
474
|
-
resizeTipElem.style.left = `${resizeTipLeft}px`
|
|
475
|
-
resizeTipElem.style.top = `${Math.min(tableHeight - resizeTipHeight, Math.max(0, evnt.clientY - wrapperRect.y - resizeTipHeight / 2))}px`
|
|
476
|
-
resizeTipElem.textContent = getI18n('vxe.table.resizeColTip', [resizeColumn.renderWidth + (isRightFixed ? dragPosLeft - dragLeft : dragLeft - dragPosLeft)])
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
tableReactData._isResize = true
|
|
481
|
-
addClass(tableEl, 'drag--resize')
|
|
482
|
-
resizeBarElem.style.display = 'block'
|
|
483
|
-
document.onmousemove = updateEvent
|
|
484
|
-
document.onmouseup = function (evnt) {
|
|
485
|
-
document.onmousemove = domMousemove
|
|
486
|
-
document.onmouseup = domMouseup
|
|
487
|
-
const resizeWidth = resizeColumn.renderWidth + (isRightFixed ? dragPosLeft - dragLeft : dragLeft - dragPosLeft)
|
|
488
|
-
resizeColumn.resizeWidth = resizeWidth
|
|
489
|
-
if (resizableOpts.dragMode === 'fixed') {
|
|
490
|
-
visibleColumn.forEach((item: any) => {
|
|
491
|
-
if (item.id !== resizeColumn.id) {
|
|
492
|
-
if (!item.resizeWidth) {
|
|
493
|
-
item.resizeWidth = item.renderWidth
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
})
|
|
497
|
-
}
|
|
498
|
-
resizeBarElem.style.display = 'none'
|
|
499
|
-
tableReactData._isResize = false
|
|
500
|
-
tableInternalData._lastResizeTime = Date.now()
|
|
501
|
-
$xeTable.analyColumnWidth()
|
|
502
|
-
$xeTable.recalculate(true).then(() => {
|
|
503
|
-
$xeTable.saveCustomStore('update:visible')
|
|
504
|
-
$xeTable.updateCellAreas()
|
|
505
|
-
$xeTable.dispatchEvent('resizable-change', { ...params, resizeWidth }, evnt)
|
|
506
|
-
setTimeout(() => $xeTable.recalculate(true), 300)
|
|
507
|
-
})
|
|
508
|
-
removeClass(tableEl, 'drag--resize')
|
|
509
|
-
}
|
|
510
|
-
updateEvent(evnt)
|
|
511
|
-
$xeTable.closeMenu()
|
|
512
413
|
}
|
|
513
414
|
} as any
|
|
514
415
|
} as any
|