vxe-table 3.15.5 → 3.15.6
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 +3 -2
- package/es/locale/lang/de-DE.js +3 -2
- package/es/locale/lang/en-US.js +2 -1
- package/es/locale/lang/es-ES.js +3 -2
- 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/id-ID.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 +2 -1
- 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 +2 -1
- 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/custom/mixin.js +62 -37
- package/es/table/module/custom/panel.js +7 -7
- package/es/table/module/export/mixin.js +13 -12
- package/es/table/module/keyboard/mixin.js +3 -2
- package/es/table/src/body.js +49 -16
- package/es/table/src/cell.js +137 -45
- package/es/table/src/column.js +2 -0
- package/es/table/src/columnInfo.js +1 -0
- package/es/table/src/methods.js +977 -495
- package/es/table/src/props.js +9 -7
- package/es/table/src/table.js +108 -35
- package/es/table/style.css +70 -40
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +13 -1
- package/es/ui/src/dom.js +3 -0
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +70 -40
- 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 +1729 -858
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +3 -2
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +3 -2
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +2 -1
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +2 -1
- package/lib/locale/lang/es-ES.js +3 -2
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +3 -2
- 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/id-ID.js +2 -1
- package/lib/locale/lang/id-ID.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 +2 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +2 -1
- 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 +2 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +2 -1
- 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/custom/mixin.js +74 -48
- package/lib/table/module/custom/mixin.min.js +1 -1
- package/lib/table/module/custom/panel.js +6 -2
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +13 -5
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +2 -1
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/src/body.js +39 -15
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +157 -36
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/column.js +2 -0
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +1 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/methods.js +1158 -562
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +9 -7
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +104 -34
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +70 -40
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +13 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/dom.js +4 -0
- package/lib/ui/src/dom.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 +70 -40
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +3 -2
- package/packages/locale/lang/de-DE.ts +3 -2
- package/packages/locale/lang/en-US.ts +2 -1
- package/packages/locale/lang/es-ES.ts +3 -2
- 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/id-ID.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 +2 -1
- 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 +2 -1
- 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/custom/mixin.ts +85 -51
- package/packages/table/module/custom/panel.ts +8 -8
- package/packages/table/module/export/mixin.ts +19 -18
- package/packages/table/module/keyboard/mixin.ts +3 -2
- package/packages/table/src/body.ts +50 -17
- package/packages/table/src/cell.ts +136 -45
- package/packages/table/src/column.ts +2 -0
- package/packages/table/src/columnInfo.ts +1 -0
- package/packages/table/src/methods.ts +1010 -512
- package/packages/table/src/props.ts +9 -7
- package/packages/table/src/table.ts +122 -38
- package/packages/ui/index.ts +12 -0
- package/packages/ui/src/dom.ts +4 -0
- package/styles/components/table.scss +131 -92
- /package/es/{iconfont.1744880837792.ttf → iconfont.1745197894601.ttf} +0 -0
- /package/es/{iconfont.1744880837792.woff → iconfont.1745197894601.woff} +0 -0
- /package/es/{iconfont.1744880837792.woff2 → iconfont.1745197894601.woff2} +0 -0
- /package/lib/{iconfont.1744880837792.ttf → iconfont.1745197894601.ttf} +0 -0
- /package/lib/{iconfont.1744880837792.woff → iconfont.1745197894601.woff} +0 -0
- /package/lib/{iconfont.1744880837792.woff2 → iconfont.1745197894601.woff2} +0 -0
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
|
+
function calcMaxHeight($xeTable) {
|
|
3
|
+
const reactData = $xeTable;
|
|
4
|
+
const { customStore } = reactData;
|
|
5
|
+
const el = $xeTable.$refs.refElem;
|
|
6
|
+
// 判断面板不能大于表格高度
|
|
7
|
+
let tableHeight = 0;
|
|
8
|
+
if (el) {
|
|
9
|
+
tableHeight = el.clientHeight - 28;
|
|
10
|
+
}
|
|
11
|
+
customStore.maxHeight = Math.max(88, tableHeight);
|
|
12
|
+
}
|
|
13
|
+
function emitCustomEvent($xeTable, type, evnt) {
|
|
14
|
+
const $xeGrid = $xeTable.$xeGrid;
|
|
15
|
+
const comp = $xeGrid || $xeTable;
|
|
16
|
+
comp.dispatchEvent('custom', { type }, evnt);
|
|
17
|
+
}
|
|
2
18
|
export default {
|
|
3
19
|
methods: {
|
|
4
20
|
_openCustom() {
|
|
@@ -9,18 +25,21 @@ export default {
|
|
|
9
25
|
initStore.custom = true;
|
|
10
26
|
$xeTable.handleUpdateCustomColumn();
|
|
11
27
|
$xeTable.checkCustomStatus();
|
|
12
|
-
$xeTable
|
|
13
|
-
return
|
|
28
|
+
calcMaxHeight($xeTable);
|
|
29
|
+
return $xeTable.$nextTick().then(() => calcMaxHeight($xeTable));
|
|
14
30
|
},
|
|
15
31
|
_closeCustom() {
|
|
16
|
-
const
|
|
32
|
+
const $xeTable = this;
|
|
33
|
+
const reactData = $xeTable;
|
|
34
|
+
const { customStore } = reactData;
|
|
35
|
+
const customOpts = $xeTable.computeCustomOpts;
|
|
17
36
|
if (customStore.visible) {
|
|
18
37
|
customStore.visible = false;
|
|
19
38
|
if (!customOpts.immediate) {
|
|
20
|
-
|
|
39
|
+
$xeTable.handleCustom();
|
|
21
40
|
}
|
|
22
41
|
}
|
|
23
|
-
return
|
|
42
|
+
return $xeTable.$nextTick();
|
|
24
43
|
},
|
|
25
44
|
_saveCustom() {
|
|
26
45
|
const $xeTable = this;
|
|
@@ -62,8 +81,10 @@ export default {
|
|
|
62
81
|
},
|
|
63
82
|
_cancelCustom() {
|
|
64
83
|
const $xeTable = this;
|
|
65
|
-
const
|
|
84
|
+
const reactData = $xeTable;
|
|
85
|
+
const { customColumnList, customStore } = reactData;
|
|
66
86
|
const { oldSortMaps, oldFixedMaps, oldVisibleMaps } = customStore;
|
|
87
|
+
const customOpts = $xeTable.computeCustomOpts;
|
|
67
88
|
const { allowVisible, allowSort, allowFixed, allowResizable } = customOpts;
|
|
68
89
|
XEUtils.eachTree(customColumnList, column => {
|
|
69
90
|
const colid = column.getKey();
|
|
@@ -90,7 +111,8 @@ export default {
|
|
|
90
111
|
const $xeTable = this;
|
|
91
112
|
const reactData = $xeTable;
|
|
92
113
|
const internalData = $xeTable;
|
|
93
|
-
const { collectColumn
|
|
114
|
+
const { collectColumn } = internalData;
|
|
115
|
+
const customOpts = $xeTable.computeCustomOpts;
|
|
94
116
|
const { checkMethod } = customOpts;
|
|
95
117
|
const opts = Object.assign({
|
|
96
118
|
visible: true,
|
|
@@ -108,7 +130,7 @@ export default {
|
|
|
108
130
|
if (opts.sort) {
|
|
109
131
|
column.renderSortNumber = column.sortNumber;
|
|
110
132
|
}
|
|
111
|
-
if (!checkMethod || checkMethod({ column })) {
|
|
133
|
+
if (!checkMethod || checkMethod({ $table: $xeTable, column })) {
|
|
112
134
|
column.visible = column.defaultVisible;
|
|
113
135
|
}
|
|
114
136
|
column.renderResizeWidth = column.renderWidth;
|
|
@@ -125,16 +147,17 @@ export default {
|
|
|
125
147
|
_setCustomAllCheckbox(checked) {
|
|
126
148
|
const $xeTable = this;
|
|
127
149
|
const reactData = $xeTable;
|
|
128
|
-
const { customStore } =
|
|
129
|
-
const { customColumnList
|
|
150
|
+
const { customStore } = reactData;
|
|
151
|
+
const { customColumnList } = reactData;
|
|
152
|
+
const customOpts = $xeTable.computeCustomOpts;
|
|
130
153
|
const { checkMethod, visibleMethod } = customOpts;
|
|
131
154
|
const isAll = !!checked;
|
|
132
155
|
if (customOpts.immediate) {
|
|
133
156
|
XEUtils.eachTree(customColumnList, (column) => {
|
|
134
|
-
if (visibleMethod && !visibleMethod({ column })) {
|
|
157
|
+
if (visibleMethod && !visibleMethod({ $table: $xeTable, column })) {
|
|
135
158
|
return;
|
|
136
159
|
}
|
|
137
|
-
if (checkMethod && !checkMethod({ column })) {
|
|
160
|
+
if (checkMethod && !checkMethod({ $table: $xeTable, column })) {
|
|
138
161
|
return;
|
|
139
162
|
}
|
|
140
163
|
column.visible = isAll;
|
|
@@ -148,10 +171,10 @@ export default {
|
|
|
148
171
|
}
|
|
149
172
|
else {
|
|
150
173
|
XEUtils.eachTree(customColumnList, (column) => {
|
|
151
|
-
if (visibleMethod && !visibleMethod({ column })) {
|
|
174
|
+
if (visibleMethod && !visibleMethod({ $table: $xeTable, column })) {
|
|
152
175
|
return;
|
|
153
176
|
}
|
|
154
|
-
if (checkMethod && !checkMethod({ column })) {
|
|
177
|
+
if (checkMethod && !checkMethod({ $table: $xeTable, column })) {
|
|
155
178
|
return;
|
|
156
179
|
}
|
|
157
180
|
column.renderVisible = isAll;
|
|
@@ -161,54 +184,56 @@ export default {
|
|
|
161
184
|
}
|
|
162
185
|
$xeTable.checkCustomStatus();
|
|
163
186
|
},
|
|
164
|
-
calcMaxHeight() {
|
|
165
|
-
const { $el, customStore } = this;
|
|
166
|
-
// 判断面板不能大于表格高度
|
|
167
|
-
let tableHeight = 0;
|
|
168
|
-
if ($el) {
|
|
169
|
-
tableHeight = $el.clientHeight - 28;
|
|
170
|
-
}
|
|
171
|
-
customStore.maxHeight = Math.max(88, tableHeight);
|
|
172
|
-
},
|
|
173
187
|
checkCustomStatus() {
|
|
174
|
-
const
|
|
188
|
+
const $xeTable = this;
|
|
189
|
+
const reactData = $xeTable;
|
|
190
|
+
const internalData = $xeTable;
|
|
191
|
+
const { customStore } = reactData;
|
|
192
|
+
const { collectColumn } = internalData;
|
|
193
|
+
const customOpts = $xeTable.computeCustomOpts;
|
|
175
194
|
const { checkMethod } = customOpts;
|
|
176
|
-
customStore.isAll = collectColumn.every((column) => (checkMethod ? !checkMethod({ column }) : false) || column.renderVisible);
|
|
177
|
-
customStore.isIndeterminate = !customStore.isAll && collectColumn.some((column) => (!checkMethod || checkMethod({ column })) && (column.renderVisible || column.halfVisible));
|
|
195
|
+
customStore.isAll = collectColumn.every((column) => (checkMethod ? !checkMethod({ $table: $xeTable, column }) : false) || column.renderVisible);
|
|
196
|
+
customStore.isIndeterminate = !customStore.isAll && collectColumn.some((column) => (!checkMethod || checkMethod({ $table: $xeTable, column })) && (column.renderVisible || column.halfVisible));
|
|
178
197
|
},
|
|
179
198
|
emitCustomEvent(type, evnt) {
|
|
180
199
|
const $xeTable = this;
|
|
181
200
|
const $xeGrid = $xeTable.$xeGrid;
|
|
182
201
|
const comp = $xeGrid || $xeTable;
|
|
183
|
-
comp
|
|
202
|
+
comp.dispatchEvent('custom', { type }, evnt);
|
|
184
203
|
},
|
|
185
204
|
triggerCustomEvent(evnt) {
|
|
186
|
-
const
|
|
205
|
+
const $xeTable = this;
|
|
206
|
+
const reactData = $xeTable;
|
|
207
|
+
const { customStore } = reactData;
|
|
187
208
|
if (customStore.visible) {
|
|
188
209
|
this.closeCustom();
|
|
189
|
-
|
|
210
|
+
emitCustomEvent($xeTable, 'close', evnt);
|
|
190
211
|
}
|
|
191
212
|
else {
|
|
192
213
|
customStore.btnEl = evnt.target;
|
|
193
214
|
this.openCustom();
|
|
194
|
-
|
|
215
|
+
emitCustomEvent($xeTable, 'open', evnt);
|
|
195
216
|
}
|
|
196
217
|
},
|
|
197
218
|
customOpenEvent(evnt) {
|
|
198
|
-
const
|
|
199
|
-
|
|
219
|
+
const $xeTable = this;
|
|
220
|
+
const reactData = $xeTable;
|
|
221
|
+
const { customStore } = reactData;
|
|
222
|
+
if (customStore.visible) {
|
|
200
223
|
customStore.activeBtn = true;
|
|
201
224
|
customStore.btnEl = evnt.target;
|
|
202
|
-
|
|
203
|
-
|
|
225
|
+
$xeTable.openCustom();
|
|
226
|
+
emitCustomEvent($xeTable, 'open', evnt);
|
|
204
227
|
}
|
|
205
228
|
},
|
|
206
229
|
customCloseEvent(evnt) {
|
|
207
|
-
const
|
|
230
|
+
const $xeTable = this;
|
|
231
|
+
const reactData = $xeTable;
|
|
232
|
+
const { customStore } = reactData;
|
|
208
233
|
if (customStore.visible) {
|
|
209
234
|
customStore.activeBtn = false;
|
|
210
|
-
|
|
211
|
-
|
|
235
|
+
$xeTable.closeCustom();
|
|
236
|
+
emitCustomEvent($xeTable, 'close', evnt);
|
|
212
237
|
}
|
|
213
238
|
},
|
|
214
239
|
handleUpdateCustomColumn() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VxeUI } from '../../../ui';
|
|
2
2
|
import { formatText } from '../../../ui/src/utils';
|
|
3
|
-
import { getTpImg, addClass, removeClass } from '../../../ui/src/dom';
|
|
3
|
+
import { getTpImg, addClass, removeClass, hasControlKey } from '../../../ui/src/dom';
|
|
4
4
|
import { errLog } from '../../../ui/src/log';
|
|
5
5
|
import XEUtils from 'xe-utils';
|
|
6
6
|
const { getI18n, getIcon, renderEmptyElement } = VxeUI;
|
|
@@ -123,13 +123,13 @@ const renderSimplePanel = (h, _vm) => {
|
|
|
123
123
|
isCustomStatus
|
|
124
124
|
};
|
|
125
125
|
XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => {
|
|
126
|
-
const isVisible = visibleMethod ? visibleMethod({ column }) : true;
|
|
126
|
+
const isVisible = visibleMethod ? visibleMethod({ $table: $xeTable, column }) : true;
|
|
127
127
|
if (isVisible) {
|
|
128
128
|
const isChecked = column.renderVisible;
|
|
129
129
|
const isIndeterminate = column.halfVisible;
|
|
130
130
|
const isColGroup = column.children && column.children.length;
|
|
131
131
|
const colTitle = formatText(column.getTitle(), 1);
|
|
132
|
-
const isDisabled = checkMethod ? !checkMethod({ column }) : false;
|
|
132
|
+
const isDisabled = checkMethod ? !checkMethod({ $table: $xeTable, column }) : false;
|
|
133
133
|
const isHidden = !isChecked;
|
|
134
134
|
colVNs.push(h('li', {
|
|
135
135
|
key: column.id,
|
|
@@ -426,7 +426,7 @@ const renderPopupPanel = (h, _vm) => {
|
|
|
426
426
|
isCustomStatus
|
|
427
427
|
};
|
|
428
428
|
XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => {
|
|
429
|
-
const isVisible = visibleMethod ? visibleMethod({ column }) : true;
|
|
429
|
+
const isVisible = visibleMethod ? visibleMethod({ $table: $xeTable, column }) : true;
|
|
430
430
|
if (isVisible) {
|
|
431
431
|
// 默认继承调整宽度
|
|
432
432
|
let customMinWidth = 0;
|
|
@@ -450,7 +450,7 @@ const renderPopupPanel = (h, _vm) => {
|
|
|
450
450
|
const isIndeterminate = column.halfVisible;
|
|
451
451
|
const colTitle = formatText(column.getTitle(), 1);
|
|
452
452
|
const isColGroup = column.children && column.children.length;
|
|
453
|
-
const isDisabled = checkMethod ? !checkMethod({ column }) : false;
|
|
453
|
+
const isDisabled = checkMethod ? !checkMethod({ $table: $xeTable, column }) : false;
|
|
454
454
|
const isHidden = !isChecked;
|
|
455
455
|
trVNs.push(h('tr', {
|
|
456
456
|
key: column.id,
|
|
@@ -1230,7 +1230,7 @@ export default {
|
|
|
1230
1230
|
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
1231
1231
|
const { isCrossDrag, isToChildDrag } = columnDragOpts;
|
|
1232
1232
|
const optEl = evnt.currentTarget;
|
|
1233
|
-
const
|
|
1233
|
+
const isControlKey = hasControlKey(evnt);
|
|
1234
1234
|
const colid = optEl.getAttribute('colid');
|
|
1235
1235
|
const column = $xeTable.getColumnById(colid);
|
|
1236
1236
|
// 是否移入有效列
|
|
@@ -1245,7 +1245,7 @@ export default {
|
|
|
1245
1245
|
showDropTip(this, evnt, optEl, false, dragPos);
|
|
1246
1246
|
return;
|
|
1247
1247
|
}
|
|
1248
|
-
this.prevDragToChild = !!((isCrossDrag && isToChildDrag) &&
|
|
1248
|
+
this.prevDragToChild = !!((isCrossDrag && isToChildDrag) && isControlKey && immediate);
|
|
1249
1249
|
this.prevDragCol = column;
|
|
1250
1250
|
this.prevDragPos = dragPos;
|
|
1251
1251
|
showDropTip(this, evnt, optEl, true, dragPos);
|
|
@@ -22,6 +22,7 @@ function getSeq($xeTable, cellValue, row, $rowIndex, column, $columnIndex) {
|
|
|
22
22
|
const seqMethod = seqOpts.seqMethod || column.seqMethod;
|
|
23
23
|
if (seqMethod) {
|
|
24
24
|
return seqMethod({
|
|
25
|
+
$table: $xeTable,
|
|
25
26
|
row,
|
|
26
27
|
rowIndex: $xeTable.getRowIndex(row),
|
|
27
28
|
$rowIndex,
|
|
@@ -103,12 +104,12 @@ function getBodyLabelData($xeTable, opts, columns, datas) {
|
|
|
103
104
|
case 'checkbox':
|
|
104
105
|
cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row));
|
|
105
106
|
item._checkboxLabel = checkboxOpts.labelField ? XEUtils.get(row, checkboxOpts.labelField) : '';
|
|
106
|
-
item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ row });
|
|
107
|
+
item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ $table: $xeTable, row });
|
|
107
108
|
break;
|
|
108
109
|
case 'radio':
|
|
109
110
|
cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row));
|
|
110
111
|
item._radioLabel = radioOpts.labelField ? XEUtils.get(row, radioOpts.labelField) : '';
|
|
111
|
-
item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ row });
|
|
112
|
+
item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ $table: $xeTable, row });
|
|
112
113
|
break;
|
|
113
114
|
default:
|
|
114
115
|
if (opts.original) {
|
|
@@ -164,12 +165,12 @@ function getBodyLabelData($xeTable, opts, columns, datas) {
|
|
|
164
165
|
case 'checkbox':
|
|
165
166
|
cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row));
|
|
166
167
|
item._checkboxLabel = checkboxOpts.labelField ? XEUtils.get(row, checkboxOpts.labelField) : '';
|
|
167
|
-
item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ row });
|
|
168
|
+
item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ $table: $xeTable, row });
|
|
168
169
|
break;
|
|
169
170
|
case 'radio':
|
|
170
171
|
cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row));
|
|
171
172
|
item._radioLabel = radioOpts.labelField ? XEUtils.get(row, radioOpts.labelField) : '';
|
|
172
|
-
item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ row });
|
|
173
|
+
item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ $table: $xeTable, row });
|
|
173
174
|
break;
|
|
174
175
|
default:
|
|
175
176
|
if (opts.original) {
|
|
@@ -199,7 +200,7 @@ function getExportData($xeTable, opts) {
|
|
|
199
200
|
const { columns, dataFilterMethod } = opts;
|
|
200
201
|
let datas = opts.data;
|
|
201
202
|
if (dataFilterMethod) {
|
|
202
|
-
datas = datas.filter((row, index) => dataFilterMethod({ row, $rowIndex: index }));
|
|
203
|
+
datas = datas.filter((row, index) => dataFilterMethod({ $table: $xeTable, row, $rowIndex: index }));
|
|
203
204
|
}
|
|
204
205
|
return getBodyLabelData($xeTable, opts, columns, datas);
|
|
205
206
|
}
|
|
@@ -234,9 +235,9 @@ function getFooterCellValue($xeTable, opts, row, column) {
|
|
|
234
235
|
}
|
|
235
236
|
return XEUtils.get(row, column.field);
|
|
236
237
|
}
|
|
237
|
-
function getFooterData(opts, footerTableData) {
|
|
238
|
+
function getFooterData($xeTable, opts, footerTableData) {
|
|
238
239
|
const { footerFilterMethod } = opts;
|
|
239
|
-
return footerFilterMethod ? footerTableData.filter((items, index) => footerFilterMethod({ items, $rowIndex: index })) : footerTableData;
|
|
240
|
+
return footerFilterMethod ? footerTableData.filter((items, index) => footerFilterMethod({ $table: $xeTable, items, $rowIndex: index })) : footerTableData;
|
|
240
241
|
}
|
|
241
242
|
function getCsvCellTypeLabel(column, cellValue) {
|
|
242
243
|
if (cellValue) {
|
|
@@ -277,7 +278,7 @@ function toCsv($xeTable, opts, columns, datas) {
|
|
|
277
278
|
});
|
|
278
279
|
if (opts.isFooter) {
|
|
279
280
|
const { footerTableData } = reactData;
|
|
280
|
-
const footers = getFooterData(opts, footerTableData);
|
|
281
|
+
const footers = getFooterData($xeTable, opts, footerTableData);
|
|
281
282
|
footers.forEach((row) => {
|
|
282
283
|
content += columns.map(column => toTxtCellLabel(getFooterCellValue($xeTable, opts, row, column))).join(',') + enterSymbol;
|
|
283
284
|
});
|
|
@@ -295,7 +296,7 @@ function toTxt($xeTable, opts, columns, datas) {
|
|
|
295
296
|
});
|
|
296
297
|
if (opts.isFooter) {
|
|
297
298
|
const { footerTableData } = reactData;
|
|
298
|
-
const footers = getFooterData(opts, footerTableData);
|
|
299
|
+
const footers = getFooterData($xeTable, opts, footerTableData);
|
|
299
300
|
footers.forEach((row) => {
|
|
300
301
|
content += columns.map(column => toTxtCellLabel(getFooterCellValue($xeTable, opts, row, column))).join('\t') + enterSymbol;
|
|
301
302
|
});
|
|
@@ -458,7 +459,7 @@ function toHtml($xeTable, opts, columns, datas) {
|
|
|
458
459
|
}
|
|
459
460
|
if (isFooter) {
|
|
460
461
|
const { footerTableData } = reactData;
|
|
461
|
-
const footers = getFooterData(opts, footerTableData);
|
|
462
|
+
const footers = getFooterData($xeTable, opts, footerTableData);
|
|
462
463
|
if (footers.length) {
|
|
463
464
|
tables.push('<tfoot>');
|
|
464
465
|
footers.forEach((row) => {
|
|
@@ -509,7 +510,7 @@ function toXML($xeTable, opts, columns, datas) {
|
|
|
509
510
|
});
|
|
510
511
|
if (opts.isFooter) {
|
|
511
512
|
const { footerTableData } = reactData;
|
|
512
|
-
const footers = getFooterData(opts, footerTableData);
|
|
513
|
+
const footers = getFooterData($xeTable, opts, footerTableData);
|
|
513
514
|
footers.forEach((row) => {
|
|
514
515
|
xml += `<Row>${columns.map(column => `<Cell><Data ss:Type="String">${getFooterCellValue($xeTable, opts, row, column)}</Data></Cell>`).join('')}</Row>`;
|
|
515
516
|
});
|
|
@@ -1066,7 +1067,7 @@ function handleExportAndPrint($xeTable, options, isPrint) {
|
|
|
1066
1067
|
}
|
|
1067
1068
|
column.checked = isChecked;
|
|
1068
1069
|
column.halfChecked = false;
|
|
1069
|
-
column.disabled = (parent && parent.disabled) || (checkMethod ? !checkMethod({ column }) : false);
|
|
1070
|
+
column.disabled = (parent && parent.disabled) || (checkMethod ? !checkMethod({ $table: $xeTable, column }) : false);
|
|
1070
1071
|
});
|
|
1071
1072
|
// 更新条件
|
|
1072
1073
|
Object.assign(exportStore, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { getRefElem } from '../../src/util';
|
|
3
|
-
import { hasClass, getAbsolutePos, addClass, removeClass } from '../../../ui/src/dom';
|
|
3
|
+
import { hasClass, getAbsolutePos, addClass, removeClass, hasControlKey } from '../../../ui/src/dom';
|
|
4
4
|
const browseObj = XEUtils.browse();
|
|
5
5
|
function getTargetOffset(target, container) {
|
|
6
6
|
let offsetTop = 0;
|
|
@@ -446,8 +446,9 @@ export default {
|
|
|
446
446
|
const rangeRows = getCheckboxRangeRows(this, evnt, params, trElem, trRect, offsetClientTop, offsetTop < marginSize ? -rangeHeight : rangeHeight);
|
|
447
447
|
// 至少滑动 10px 才能有效匹配
|
|
448
448
|
if (rangeHeight > 10 && rangeRows.length !== lastRangeRows.length) {
|
|
449
|
+
const isControlKey = hasControlKey(evnt);
|
|
449
450
|
lastRangeRows = rangeRows;
|
|
450
|
-
if (
|
|
451
|
+
if (isControlKey) {
|
|
451
452
|
rangeRows.forEach((row) => {
|
|
452
453
|
$xeTable.handleBatchSelectRows([row], selectRecords.indexOf(row) === -1);
|
|
453
454
|
});
|
package/es/table/src/body.js
CHANGED
|
@@ -14,8 +14,7 @@ const isVMScrollProcess = ($xeTable) => {
|
|
|
14
14
|
const { lastScrollTime, isDragResize } = tableReactData;
|
|
15
15
|
return !!(isDragResize || (lastScrollTime && Date.now() < lastScrollTime + delayHover));
|
|
16
16
|
};
|
|
17
|
-
function renderLine(h,
|
|
18
|
-
const $xeTable = _vm.$parent;
|
|
17
|
+
function renderLine(h, $xeTable, rowid, params, cellHeight) {
|
|
19
18
|
const tableProps = $xeTable;
|
|
20
19
|
const tableInternalData = $xeTable;
|
|
21
20
|
const { row, column } = params;
|
|
@@ -56,8 +55,7 @@ function renderLine(h, _vm, rowid, params, cellHeight) {
|
|
|
56
55
|
/**
|
|
57
56
|
* 渲染列
|
|
58
57
|
*/
|
|
59
|
-
function renderTdColumn(h,
|
|
60
|
-
const $xeTable = _vm.$parent;
|
|
58
|
+
function renderTdColumn(h, $xeTable, seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) {
|
|
61
59
|
const tableProps = $xeTable;
|
|
62
60
|
const tableReactData = $xeTable;
|
|
63
61
|
const tableInternalData = $xeTable;
|
|
@@ -281,7 +279,7 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
281
279
|
}
|
|
282
280
|
else {
|
|
283
281
|
// 渲染单元格
|
|
284
|
-
tdVNs.push(...renderLine(h,
|
|
282
|
+
tdVNs.push(...renderLine(h, $xeTable, rowid, cellParams, cellHeight), h('div', {
|
|
285
283
|
key: 'tc',
|
|
286
284
|
class: ['vxe-cell', {
|
|
287
285
|
'c--title': showTitle,
|
|
@@ -401,9 +399,10 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
401
399
|
const tableProps = $xeTable;
|
|
402
400
|
const tableReactData = $xeTable;
|
|
403
401
|
const tableInternalData = $xeTable;
|
|
402
|
+
const $xeGrid = $xeTable.$xeGrid;
|
|
404
403
|
const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, editConfig, treeConfig } = tableProps;
|
|
405
|
-
const { hasFixedColumn, treeExpandedFlag, isColLoading, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedFlag, expandColumn, selectRadioRow, pendingRowFlag, isDragColMove, rowExpandHeightFlag } = tableReactData;
|
|
406
|
-
const { fullAllDataRowIdData, treeExpandedMaps, pendingRowMaps, rowExpandedMaps } = tableInternalData;
|
|
404
|
+
const { hasFixedColumn, treeExpandedFlag, isColLoading, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedFlag, expandColumn, selectRadioRow, pendingRowFlag, isDragColMove, rowExpandHeightFlag, isRowGroupStatus } = tableReactData;
|
|
405
|
+
const { fullAllDataRowIdData, fullColumnIdData, treeExpandedMaps, pendingRowMaps, rowExpandedMaps } = tableInternalData;
|
|
407
406
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
408
407
|
const radioOpts = $xeTable.computeRadioOpts;
|
|
409
408
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
@@ -415,6 +414,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
415
414
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
416
415
|
const rows = [];
|
|
417
416
|
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
417
|
+
const isDeepRow = treeConfig || isRowGroupStatus;
|
|
418
418
|
tableData.forEach((row, $rowIndex) => {
|
|
419
419
|
const trOn = {};
|
|
420
420
|
const rowid = handleGetRowId(row);
|
|
@@ -423,6 +423,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
423
423
|
let rowLevel = 0;
|
|
424
424
|
let seq = -1;
|
|
425
425
|
let _rowIndex = -1;
|
|
426
|
+
const hasRowGroupAggregate = isRowGroupStatus && row.isAggregate;
|
|
426
427
|
// 当前行事件
|
|
427
428
|
if (rowOpts.isHover || highlightHoverRow) {
|
|
428
429
|
trOn.mouseenter = (evnt) => {
|
|
@@ -440,7 +441,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
440
441
|
}
|
|
441
442
|
if (rowRest) {
|
|
442
443
|
rowLevel = rowRest.level;
|
|
443
|
-
if (treeConfig && transform && seqMode === 'increasing') {
|
|
444
|
+
if (hasRowGroupAggregate || (treeConfig && transform && seqMode === 'increasing')) {
|
|
444
445
|
seq = rowRest._index + 1;
|
|
445
446
|
}
|
|
446
447
|
else {
|
|
@@ -465,14 +466,14 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
465
466
|
isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
|
|
466
467
|
}
|
|
467
468
|
// 拖拽行事件
|
|
468
|
-
if (rowOpts.drag && (!treeConfig || transform)) {
|
|
469
|
+
if (rowOpts.drag && !isRowGroupStatus && (!treeConfig || transform)) {
|
|
469
470
|
trOn.dragstart = $xeTable.handleRowDragDragstartEvent;
|
|
470
471
|
trOn.dragend = $xeTable.handleRowDragDragendEvent;
|
|
471
472
|
trOn.dragover = $xeTable.handleRowDragDragoverEvent;
|
|
472
473
|
}
|
|
473
474
|
const trClass = [
|
|
474
475
|
'vxe-body--row',
|
|
475
|
-
|
|
476
|
+
isDeepRow ? `row--level-${rowLevel}` : '',
|
|
476
477
|
{
|
|
477
478
|
'row--stripe': stripe && (_rowIndex + 1) % 2 === 0,
|
|
478
479
|
'is--new': isNewRow,
|
|
@@ -481,12 +482,13 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
481
482
|
'row--new': isNewRow && (editOpts.showStatus || editOpts.showInsertStatus),
|
|
482
483
|
'row--radio': radioOpts.highlight && selectRadioRow === row,
|
|
483
484
|
'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
|
|
484
|
-
'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid]
|
|
485
|
+
'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid],
|
|
486
|
+
'row--group': hasRowGroupAggregate
|
|
485
487
|
},
|
|
486
488
|
rowClassName ? (XEUtils.isFunction(rowClassName) ? rowClassName(params) : rowClassName) : ''
|
|
487
489
|
];
|
|
488
490
|
const tdVNs = tableColumn.map((column, $columnIndex) => {
|
|
489
|
-
return renderTdColumn(h,
|
|
491
|
+
return renderTdColumn(h, $xeTable, seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, tableColumn, tableData);
|
|
490
492
|
});
|
|
491
493
|
rows.push(!isColLoading && (columnOpts.drag && columnDragOpts.animation)
|
|
492
494
|
? h('transition-group', {
|
|
@@ -499,7 +501,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
499
501
|
rowid
|
|
500
502
|
},
|
|
501
503
|
style: rowStyle ? (XEUtils.isFunction(rowStyle) ? rowStyle(params) : rowStyle) : undefined,
|
|
502
|
-
key: rowKey || scrollXLoad || scrollYLoad || rowOpts.useKey || rowOpts.drag || columnOpts.drag || treeConfig ? rowid : $rowIndex,
|
|
504
|
+
key: rowKey || scrollXLoad || scrollYLoad || rowOpts.useKey || rowOpts.drag || columnOpts.drag || isRowGroupStatus || treeConfig ? rowid : $rowIndex,
|
|
503
505
|
nativeOn: trOn
|
|
504
506
|
}, tdVNs)
|
|
505
507
|
: h('tr', {
|
|
@@ -508,7 +510,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
508
510
|
rowid
|
|
509
511
|
},
|
|
510
512
|
style: rowStyle ? (XEUtils.isFunction(rowStyle) ? rowStyle(params) : rowStyle) : undefined,
|
|
511
|
-
key: rowKey || scrollXLoad || scrollYLoad || rowOpts.useKey || rowOpts.drag || columnOpts.drag || treeConfig ? rowid : $rowIndex,
|
|
513
|
+
key: rowKey || scrollXLoad || scrollYLoad || rowOpts.useKey || rowOpts.drag || columnOpts.drag || isRowGroupStatus || treeConfig ? rowid : $rowIndex,
|
|
512
514
|
on: trOn
|
|
513
515
|
}, tdVNs));
|
|
514
516
|
// 如果行被展开了
|
|
@@ -542,9 +544,40 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
542
544
|
if (treeConfig) {
|
|
543
545
|
cellStyle.paddingLeft = `${(rowLevel * treeOpts.indent) + 30}px`;
|
|
544
546
|
}
|
|
545
|
-
const { showOverflow } = expandColumn;
|
|
547
|
+
const { showOverflow } = expandColumn || {};
|
|
548
|
+
const colid = expandColumn.id;
|
|
549
|
+
const colRest = fullColumnIdData[colid] || {};
|
|
546
550
|
const hasEllipsis = (XEUtils.isUndefined(showOverflow) || XEUtils.isNull(showOverflow)) ? isAllOverflow : showOverflow;
|
|
547
|
-
|
|
551
|
+
let columnIndex = -1;
|
|
552
|
+
let $columnIndex = -1;
|
|
553
|
+
let _columnIndex = -1;
|
|
554
|
+
if (colRest) {
|
|
555
|
+
columnIndex = colRest.index;
|
|
556
|
+
$columnIndex = colRest.$index;
|
|
557
|
+
_columnIndex = colRest._index;
|
|
558
|
+
}
|
|
559
|
+
const expandParams = {
|
|
560
|
+
$grid: $xeGrid,
|
|
561
|
+
$table: $xeTable,
|
|
562
|
+
seq,
|
|
563
|
+
column: expandColumn,
|
|
564
|
+
columnIndex,
|
|
565
|
+
$columnIndex,
|
|
566
|
+
_columnIndex,
|
|
567
|
+
fixed: fixedType,
|
|
568
|
+
type: renderType,
|
|
569
|
+
level: rowLevel,
|
|
570
|
+
row,
|
|
571
|
+
rowid,
|
|
572
|
+
rowIndex,
|
|
573
|
+
$rowIndex,
|
|
574
|
+
_rowIndex,
|
|
575
|
+
isHidden: false,
|
|
576
|
+
isEdit: false,
|
|
577
|
+
visibleData: [],
|
|
578
|
+
data: [],
|
|
579
|
+
items: []
|
|
580
|
+
};
|
|
548
581
|
rows.push(h('tr', {
|
|
549
582
|
class: ['vxe-body--expanded-row', {
|
|
550
583
|
'is--padding': padding
|