vxe-table 4.13.44 → 4.13.45
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/README.md +4 -4
- package/es/{iconfont.1750301328949.ttf → iconfont.1750641793236.ttf} +0 -0
- package/es/iconfont.1750641793236.woff +0 -0
- package/es/iconfont.1750641793236.woff2 +0 -0
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/custom/hook.js +9 -1
- package/es/table/module/custom/panel.js +320 -224
- package/es/table/module/edit/hook.js +24 -10
- package/es/table/module/export/hook.js +19 -6
- package/es/table/src/cell.js +4 -4
- package/es/table/src/emits.js +3 -0
- package/es/table/src/table.js +16 -4
- package/es/table/style.css +37 -9
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +5 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +37 -9
- package/es/vxe-table/style.min.css +1 -1
- package/lib/{iconfont.1750301328949.ttf → iconfont.1750641793236.ttf} +0 -0
- package/lib/iconfont.1750641793236.woff +0 -0
- package/lib/iconfont.1750641793236.woff2 +0 -0
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +273 -87
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/custom/hook.js +11 -1
- package/lib/table/module/custom/hook.min.js +1 -1
- package/lib/table/module/custom/panel.js +181 -60
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/edit/hook.js +46 -10
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/module/export/hook.js +19 -4
- package/lib/table/module/export/hook.min.js +1 -1
- package/lib/table/src/cell.js +4 -4
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/emits.js +1 -1
- package/lib/table/src/emits.min.js +1 -1
- package/lib/table/src/table.js +5 -5
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +37 -9
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +5 -1
- 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 +37 -9
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/table/module/custom/hook.ts +10 -1
- package/packages/table/module/custom/panel.ts +338 -236
- package/packages/table/module/edit/hook.ts +24 -10
- package/packages/table/module/export/hook.ts +18 -7
- package/packages/table/src/cell.ts +4 -4
- package/packages/table/src/emits.ts +3 -0
- package/packages/table/src/table.ts +1 -1
- package/packages/ui/index.ts +4 -0
- package/styles/components/icon.scss +9 -1
- package/styles/components/table-module/custom.scss +26 -3
- package/styles/helpers/baseMixin.scss +16 -2
- package/styles/icon/iconfont.ttf +0 -0
- package/styles/icon/iconfont.woff +0 -0
- package/styles/icon/iconfont.woff2 +0 -0
- package/es/iconfont.1750301328949.woff +0 -0
- package/es/iconfont.1750301328949.woff2 +0 -0
- package/lib/iconfont.1750301328949.woff +0 -0
- package/lib/iconfont.1750301328949.woff2 +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h, inject, ref, nextTick, TransitionGroup, createCommentVNode } from 'vue';
|
|
1
|
+
import { h, inject, ref, provide, nextTick, TransitionGroup, createCommentVNode, reactive } from 'vue';
|
|
2
2
|
import { defineVxeComponent } from '../../../ui/src/comp';
|
|
3
3
|
import { VxeUI } from '../../../ui';
|
|
4
4
|
import { formatText } from '../../../ui/src/utils';
|
|
@@ -14,23 +14,40 @@ export default defineVxeComponent({
|
|
|
14
14
|
default: () => ({})
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
|
-
setup(props) {
|
|
17
|
+
setup(props, context) {
|
|
18
|
+
const xID = XEUtils.uniqueId();
|
|
18
19
|
const VxeUIModalComponent = VxeUI.getComponent('VxeModal');
|
|
19
20
|
const VxeUIDrawerComponent = VxeUI.getComponent('VxeDrawer');
|
|
20
21
|
const VxeUIButtonComponent = VxeUI.getComponent('VxeButton');
|
|
21
22
|
const VxeUINumberInputComponent = VxeUI.getComponent('VxeNumberInput');
|
|
22
23
|
const VxeUIRadioGroupComponent = VxeUI.getComponent('VxeRadioGroup');
|
|
23
24
|
const $xeTable = inject('$xeTable', {});
|
|
24
|
-
const { props: tableProps, reactData, internalData } = $xeTable;
|
|
25
|
+
const { props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
|
|
25
26
|
const { computeCustomOpts, computeColumnDragOpts, computeColumnOpts, computeIsMaxFixedColumn, computeResizableOpts } = $xeTable.getComputeMaps();
|
|
26
27
|
const refElem = ref();
|
|
27
|
-
const
|
|
28
|
+
const refBodyWrapperElem = ref();
|
|
29
|
+
const refCustomBodyElem = ref();
|
|
28
30
|
const refDragLineElem = ref();
|
|
29
31
|
const refDragTipElem = ref();
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const customPanelReactData = reactive({
|
|
33
|
+
dragCol: null,
|
|
34
|
+
dragGroup: null,
|
|
35
|
+
dragValues: null,
|
|
36
|
+
dragTipText: ''
|
|
37
|
+
});
|
|
38
|
+
const customPanelInternalData = {
|
|
39
|
+
// prevDragCol: undefined,
|
|
40
|
+
// prevDragToChild: false,
|
|
41
|
+
// prevDragPos: null
|
|
42
|
+
};
|
|
43
|
+
const refMaps = {
|
|
44
|
+
refElem,
|
|
45
|
+
refBodyWrapperElem,
|
|
46
|
+
refCustomBodyElem,
|
|
47
|
+
refDragLineElem,
|
|
48
|
+
refDragTipElem
|
|
49
|
+
};
|
|
50
|
+
const computeMaps = {};
|
|
34
51
|
const handleWrapperMouseenterEvent = (evnt) => {
|
|
35
52
|
const { customStore } = props;
|
|
36
53
|
customStore.activeWrapper = true;
|
|
@@ -46,7 +63,7 @@ export default defineVxeComponent({
|
|
|
46
63
|
}, 300);
|
|
47
64
|
};
|
|
48
65
|
const confirmCustomEvent = ({ $event }) => {
|
|
49
|
-
|
|
66
|
+
tableReactData.isCustomStatus = true;
|
|
50
67
|
$xeTable.saveCustom();
|
|
51
68
|
$xeTable.closeCustom();
|
|
52
69
|
$xeTable.emitCustomEvent('confirm', $event);
|
|
@@ -82,7 +99,7 @@ export default defineVxeComponent({
|
|
|
82
99
|
}
|
|
83
100
|
};
|
|
84
101
|
const handleOptionCheck = (column) => {
|
|
85
|
-
const { customColumnList } =
|
|
102
|
+
const { customColumnList } = tableReactData;
|
|
86
103
|
const matchObj = XEUtils.findTree(customColumnList, item => item === column);
|
|
87
104
|
if (matchObj && matchObj.parent) {
|
|
88
105
|
const { parent } = matchObj;
|
|
@@ -93,7 +110,7 @@ export default defineVxeComponent({
|
|
|
93
110
|
}
|
|
94
111
|
}
|
|
95
112
|
};
|
|
96
|
-
const changeCheckboxOption = (column) => {
|
|
113
|
+
const changeCheckboxOption = (column, evnt) => {
|
|
97
114
|
const isChecked = !column.renderVisible;
|
|
98
115
|
const customOpts = computeCustomOpts.value;
|
|
99
116
|
if (customOpts.immediate) {
|
|
@@ -102,7 +119,7 @@ export default defineVxeComponent({
|
|
|
102
119
|
item.renderVisible = isChecked;
|
|
103
120
|
item.halfVisible = false;
|
|
104
121
|
});
|
|
105
|
-
|
|
122
|
+
tableReactData.isCustomStatus = true;
|
|
106
123
|
$xeTable.handleCustom();
|
|
107
124
|
$xeTable.saveCustomStore('update:visible');
|
|
108
125
|
}
|
|
@@ -114,6 +131,7 @@ export default defineVxeComponent({
|
|
|
114
131
|
}
|
|
115
132
|
handleOptionCheck(column);
|
|
116
133
|
$xeTable.checkCustomStatus();
|
|
134
|
+
$xeTable.dispatchEvent('custom-visible-change', { column, checked: isChecked }, evnt);
|
|
117
135
|
};
|
|
118
136
|
const changeColumnWidth = (column) => {
|
|
119
137
|
const customOpts = computeCustomOpts.value;
|
|
@@ -121,17 +139,19 @@ export default defineVxeComponent({
|
|
|
121
139
|
if (column.renderResizeWidth !== column.renderWidth) {
|
|
122
140
|
column.resizeWidth = column.renderResizeWidth;
|
|
123
141
|
column.renderWidth = column.renderResizeWidth;
|
|
124
|
-
|
|
142
|
+
tableReactData.isCustomStatus = true;
|
|
125
143
|
$xeTable.handleCustom();
|
|
126
144
|
$xeTable.saveCustomStore('update:width');
|
|
127
145
|
}
|
|
128
146
|
}
|
|
129
147
|
};
|
|
130
|
-
const changeFixedOption = (column, colFixed) => {
|
|
148
|
+
const changeFixedOption = (column, colFixed, evnt) => {
|
|
131
149
|
const isMaxFixedColumn = computeIsMaxFixedColumn.value;
|
|
132
150
|
const customOpts = computeCustomOpts.value;
|
|
151
|
+
let targetFixed = null;
|
|
133
152
|
if (customOpts.immediate) {
|
|
134
153
|
if (column.renderFixed === colFixed) {
|
|
154
|
+
targetFixed = '';
|
|
135
155
|
XEUtils.eachTree([column], col => {
|
|
136
156
|
col.fixed = '';
|
|
137
157
|
col.renderFixed = '';
|
|
@@ -139,47 +159,63 @@ export default defineVxeComponent({
|
|
|
139
159
|
}
|
|
140
160
|
else {
|
|
141
161
|
if (!isMaxFixedColumn || column.renderFixed) {
|
|
162
|
+
targetFixed = colFixed;
|
|
142
163
|
XEUtils.eachTree([column], col => {
|
|
143
164
|
col.fixed = colFixed;
|
|
144
165
|
col.renderFixed = colFixed;
|
|
145
166
|
});
|
|
146
167
|
}
|
|
147
168
|
}
|
|
148
|
-
|
|
169
|
+
tableReactData.isCustomStatus = true;
|
|
149
170
|
$xeTable.handleCustom();
|
|
150
171
|
$xeTable.saveCustomStore('update:fixed');
|
|
151
172
|
}
|
|
152
173
|
else {
|
|
153
174
|
if (column.renderFixed === colFixed) {
|
|
175
|
+
targetFixed = '';
|
|
154
176
|
XEUtils.eachTree([column], col => {
|
|
155
177
|
col.renderFixed = '';
|
|
156
178
|
});
|
|
157
179
|
}
|
|
158
180
|
else {
|
|
159
181
|
if (!isMaxFixedColumn || column.renderFixed) {
|
|
182
|
+
targetFixed = colFixed;
|
|
160
183
|
XEUtils.eachTree([column], col => {
|
|
161
184
|
col.renderFixed = colFixed;
|
|
162
185
|
});
|
|
163
186
|
}
|
|
164
187
|
}
|
|
165
188
|
}
|
|
189
|
+
if (!targetFixed !== null) {
|
|
190
|
+
$xeTable.dispatchEvent('custom-fixed-change', { column, fixed: targetFixed }, evnt);
|
|
191
|
+
}
|
|
166
192
|
};
|
|
167
|
-
const allOptionEvent = () => {
|
|
193
|
+
const allOptionEvent = (evnt) => {
|
|
194
|
+
const { customStore } = tableReactData;
|
|
195
|
+
const isAll = !customStore.isAll;
|
|
168
196
|
$xeTable.toggleCustomAllCheckbox();
|
|
197
|
+
$xeTable.dispatchEvent('custom-visible-all', { checked: isAll }, evnt);
|
|
169
198
|
};
|
|
170
199
|
const showDropTip = (evnt, optEl, showLine, dragPos) => {
|
|
171
|
-
const
|
|
172
|
-
if (!
|
|
200
|
+
const bodyWrapperElem = refBodyWrapperElem.value;
|
|
201
|
+
if (!bodyWrapperElem) {
|
|
173
202
|
return;
|
|
174
203
|
}
|
|
175
|
-
const
|
|
204
|
+
const customBodyElem = refCustomBodyElem.value;
|
|
205
|
+
if (!customBodyElem) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const { prevDragToChild } = customPanelInternalData;
|
|
209
|
+
const bodyWrapperRect = bodyWrapperElem.getBoundingClientRect();
|
|
210
|
+
const customBodyRect = customBodyElem.getBoundingClientRect();
|
|
176
211
|
if (optEl) {
|
|
177
212
|
const dragLineEl = refDragLineElem.value;
|
|
178
213
|
if (dragLineEl) {
|
|
179
214
|
if (showLine) {
|
|
180
215
|
const optRect = optEl.getBoundingClientRect();
|
|
181
216
|
dragLineEl.style.display = 'block';
|
|
182
|
-
dragLineEl.style.
|
|
217
|
+
dragLineEl.style.left = `${Math.max(0, customBodyRect.x - bodyWrapperRect.x)}px`;
|
|
218
|
+
dragLineEl.style.top = `${Math.max(1, optRect.y + bodyWrapperElem.scrollTop - bodyWrapperRect.y)}px`;
|
|
183
219
|
dragLineEl.style.height = `${optRect.height}px`;
|
|
184
220
|
dragLineEl.style.width = `${optRect.width}px`;
|
|
185
221
|
dragLineEl.setAttribute('drag-pos', dragPos);
|
|
@@ -193,11 +229,28 @@ export default defineVxeComponent({
|
|
|
193
229
|
const dragTipEl = refDragTipElem.value;
|
|
194
230
|
if (dragTipEl) {
|
|
195
231
|
dragTipEl.style.display = 'block';
|
|
196
|
-
dragTipEl.style.top = `${Math.min(
|
|
197
|
-
dragTipEl.style.left = `${Math.min(
|
|
232
|
+
dragTipEl.style.top = `${Math.min(bodyWrapperElem.clientHeight + bodyWrapperElem.scrollTop - dragTipEl.clientHeight, evnt.clientY + bodyWrapperElem.scrollTop - bodyWrapperRect.y)}px`;
|
|
233
|
+
dragTipEl.style.left = `${Math.min(bodyWrapperElem.clientWidth + bodyWrapperElem.scrollLeft - dragTipEl.clientWidth, evnt.clientX + bodyWrapperElem.scrollLeft - bodyWrapperRect.x)}px`;
|
|
198
234
|
dragTipEl.setAttribute('drag-status', showLine ? (prevDragToChild ? 'sub' : 'normal') : 'disabled');
|
|
199
235
|
}
|
|
200
236
|
};
|
|
237
|
+
const updateColDropTipContent = () => {
|
|
238
|
+
const { dragCol } = customPanelReactData;
|
|
239
|
+
const columnDragOpts = computeColumnDragOpts.value;
|
|
240
|
+
const { tooltipMethod } = columnDragOpts;
|
|
241
|
+
let tipContent = '';
|
|
242
|
+
if (tooltipMethod) {
|
|
243
|
+
const dtParams = {
|
|
244
|
+
$table: $xeTable,
|
|
245
|
+
column: dragCol
|
|
246
|
+
};
|
|
247
|
+
tipContent = `${tooltipMethod(dtParams) || ''}`;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
tipContent = getI18n('vxe.custom.cstmDragTarget', [dragCol && dragCol.type !== 'html' ? dragCol.getTitle() : '']);
|
|
251
|
+
}
|
|
252
|
+
customPanelReactData.dragTipText = tipContent;
|
|
253
|
+
};
|
|
201
254
|
const hideDropTip = () => {
|
|
202
255
|
const dragTipEl = refDragTipElem.value;
|
|
203
256
|
const dragLineEl = refDragLineElem.value;
|
|
@@ -216,7 +269,8 @@ export default defineVxeComponent({
|
|
|
216
269
|
const colid = trEl.getAttribute('colid');
|
|
217
270
|
const column = $xeTable.getColumnById(colid);
|
|
218
271
|
trEl.draggable = true;
|
|
219
|
-
|
|
272
|
+
customPanelReactData.dragCol = column;
|
|
273
|
+
updateColDropTipContent();
|
|
220
274
|
addClass(trEl, 'active--drag-origin');
|
|
221
275
|
};
|
|
222
276
|
const sortMouseupEvent = (evnt) => {
|
|
@@ -226,26 +280,34 @@ export default defineVxeComponent({
|
|
|
226
280
|
const trEl = tdEl.parentElement;
|
|
227
281
|
hideDropTip();
|
|
228
282
|
trEl.draggable = false;
|
|
229
|
-
|
|
283
|
+
customPanelReactData.dragCol = null;
|
|
230
284
|
removeClass(trEl, 'active--drag-origin');
|
|
231
285
|
};
|
|
232
286
|
const sortDragstartEvent = (evnt) => {
|
|
233
287
|
if (evnt.dataTransfer) {
|
|
234
288
|
evnt.dataTransfer.setDragImage(getTpImg(), 0, 0);
|
|
235
289
|
}
|
|
290
|
+
customPanelReactData.dragGroup = null;
|
|
291
|
+
customPanelReactData.dragValues = null;
|
|
236
292
|
};
|
|
237
293
|
const sortDragendEvent = (evnt) => {
|
|
238
294
|
const { mouseConfig } = tableProps;
|
|
239
|
-
const { customColumnList } =
|
|
240
|
-
const { collectColumn } =
|
|
295
|
+
const { customColumnList } = tableReactData;
|
|
296
|
+
const { collectColumn } = tableInternalData;
|
|
241
297
|
const customOpts = computeCustomOpts.value;
|
|
242
298
|
const { immediate } = customOpts;
|
|
243
299
|
const trEl = evnt.currentTarget;
|
|
244
|
-
const dragCol = dragColumnRef.value;
|
|
245
300
|
const columnDragOpts = computeColumnDragOpts.value;
|
|
246
301
|
const { isCrossDrag, isSelfToChildDrag, isToChildDrag, dragEndMethod } = columnDragOpts;
|
|
302
|
+
const { dragCol, dragGroup, dragValues } = customPanelReactData;
|
|
303
|
+
const { prevDragCol, prevDragPos, prevDragToChild } = customPanelInternalData;
|
|
247
304
|
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
248
|
-
if (
|
|
305
|
+
if (dragGroup || dragValues) {
|
|
306
|
+
if ($xeTable.handlePivotTableAggregatePanelDragendEvent) {
|
|
307
|
+
$xeTable.handlePivotTableAggregatePanelDragendEvent(evnt);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
else if (prevDragCol && dragCol) {
|
|
249
311
|
// 判断是否有拖动
|
|
250
312
|
if (prevDragCol !== dragCol) {
|
|
251
313
|
const dragColumn = dragCol;
|
|
@@ -368,7 +430,7 @@ export default defineVxeComponent({
|
|
|
368
430
|
nafIndex = XEUtils.findIndexOf(customColumnList, item => item.id === newColumn.id);
|
|
369
431
|
customColumnList.splice(nafIndex + dragOffsetIndex, 0, dragColumn);
|
|
370
432
|
}
|
|
371
|
-
|
|
433
|
+
tableReactData.isDragColMove = true;
|
|
372
434
|
if (mouseConfig) {
|
|
373
435
|
if ($xeTable.clearSelected) {
|
|
374
436
|
$xeTable.clearSelected();
|
|
@@ -390,7 +452,7 @@ export default defineVxeComponent({
|
|
|
390
452
|
}
|
|
391
453
|
}, evnt);
|
|
392
454
|
if (immediate) {
|
|
393
|
-
|
|
455
|
+
tableReactData.customColumnList = collectColumn.slice(0);
|
|
394
456
|
$xeTable.handleColDragSwapColumn();
|
|
395
457
|
}
|
|
396
458
|
}).catch(() => {
|
|
@@ -398,7 +460,9 @@ export default defineVxeComponent({
|
|
|
398
460
|
}
|
|
399
461
|
}
|
|
400
462
|
hideDropTip();
|
|
401
|
-
|
|
463
|
+
customPanelReactData.dragCol = null;
|
|
464
|
+
customPanelReactData.dragGroup = null;
|
|
465
|
+
customPanelReactData.dragValues = null;
|
|
402
466
|
trEl.draggable = false;
|
|
403
467
|
trEl.removeAttribute('drag-pos');
|
|
404
468
|
removeClass(trEl, 'active--drag-target');
|
|
@@ -413,7 +477,9 @@ export default defineVxeComponent({
|
|
|
413
477
|
const isControlKey = hasControlKey(evnt);
|
|
414
478
|
const colid = optEl.getAttribute('colid');
|
|
415
479
|
const column = $xeTable.getColumnById(colid);
|
|
416
|
-
const dragCol =
|
|
480
|
+
const { dragCol } = customPanelReactData;
|
|
481
|
+
customPanelReactData.dragGroup = null;
|
|
482
|
+
customPanelReactData.dragValues = null;
|
|
417
483
|
// 是否移入有效列
|
|
418
484
|
if (column && (isCrossDrag || column.level === 1)) {
|
|
419
485
|
evnt.preventDefault();
|
|
@@ -426,14 +492,14 @@ export default defineVxeComponent({
|
|
|
426
492
|
showDropTip(evnt, optEl, false, dragPos);
|
|
427
493
|
return;
|
|
428
494
|
}
|
|
429
|
-
prevDragToChild = !!((isCrossDrag && isToChildDrag) && isControlKey && immediate);
|
|
430
|
-
prevDragCol = column;
|
|
431
|
-
prevDragPos = dragPos;
|
|
495
|
+
customPanelInternalData.prevDragToChild = !!((isCrossDrag && isToChildDrag) && isControlKey && immediate);
|
|
496
|
+
customPanelInternalData.prevDragCol = column;
|
|
497
|
+
customPanelInternalData.prevDragPos = dragPos;
|
|
432
498
|
showDropTip(evnt, optEl, true, dragPos);
|
|
433
499
|
}
|
|
434
500
|
};
|
|
435
501
|
const renderDragTip = () => {
|
|
436
|
-
const
|
|
502
|
+
const { dragTipText } = customPanelReactData;
|
|
437
503
|
const columnDragOpts = computeColumnDragOpts.value;
|
|
438
504
|
return h('div', {}, [
|
|
439
505
|
h('div', {
|
|
@@ -458,13 +524,19 @@ export default defineVxeComponent({
|
|
|
458
524
|
h('span', {
|
|
459
525
|
class: ['vxe-table-custom-popup--drag-tip-sub-status', getIcon().TABLE_DRAG_STATUS_SUB_ROW]
|
|
460
526
|
}),
|
|
527
|
+
h('span', {
|
|
528
|
+
class: ['vxe-table-custom-popup--drag-tip-group-status', getIcon().TABLE_DRAG_STATUS_AGG_GROUP]
|
|
529
|
+
}),
|
|
530
|
+
h('span', {
|
|
531
|
+
class: ['vxe-table-custom-popup--drag-tip-values-status', getIcon().TABLE_DRAG_STATUS_AGG_VALUES]
|
|
532
|
+
}),
|
|
461
533
|
h('span', {
|
|
462
534
|
class: ['vxe-table-custom-popup--drag-tip-disabled-status', getIcon().TABLE_DRAG_DISABLED]
|
|
463
535
|
})
|
|
464
536
|
]),
|
|
465
537
|
h('div', {
|
|
466
538
|
class: 'vxe-table-custom-popup--drag-tip-content'
|
|
467
|
-
},
|
|
539
|
+
}, `${dragTipText || ''}`)
|
|
468
540
|
])
|
|
469
541
|
])
|
|
470
542
|
]);
|
|
@@ -474,7 +546,7 @@ export default defineVxeComponent({
|
|
|
474
546
|
const tableProps = $xeTable.props;
|
|
475
547
|
const { customStore } = props;
|
|
476
548
|
const { treeConfig, rowGroupConfig, aggregateConfig } = tableProps;
|
|
477
|
-
const { isCustomStatus, customColumnList } =
|
|
549
|
+
const { isCustomStatus, customColumnList } = tableReactData;
|
|
478
550
|
const customOpts = computeCustomOpts.value;
|
|
479
551
|
const { immediate } = customOpts;
|
|
480
552
|
const columnDragOpts = computeColumnDragOpts.value;
|
|
@@ -533,9 +605,9 @@ export default defineVxeComponent({
|
|
|
533
605
|
'is--disabled': isDisabled
|
|
534
606
|
}],
|
|
535
607
|
title: getI18n('vxe.custom.setting.colVisible'),
|
|
536
|
-
onClick: () => {
|
|
608
|
+
onClick: (evnt) => {
|
|
537
609
|
if (!isDisabled) {
|
|
538
|
-
changeCheckboxOption(column);
|
|
610
|
+
changeCheckboxOption(column, evnt);
|
|
539
611
|
}
|
|
540
612
|
}
|
|
541
613
|
}, [
|
|
@@ -587,8 +659,8 @@ export default defineVxeComponent({
|
|
|
587
659
|
status: column.renderFixed === 'left' ? 'primary' : '',
|
|
588
660
|
disabled: isDisabled || isHidden || (isMaxFixedColumn && !column.renderFixed),
|
|
589
661
|
title: getI18n(column.renderFixed === 'left' ? 'vxe.toolbar.cancelFixed' : 'vxe.toolbar.fixedLeft'),
|
|
590
|
-
onClick: () => {
|
|
591
|
-
changeFixedOption(column, 'left');
|
|
662
|
+
onClick: ({ $event }) => {
|
|
663
|
+
changeFixedOption(column, 'left', $event);
|
|
592
664
|
}
|
|
593
665
|
})
|
|
594
666
|
: createCommentVNode(),
|
|
@@ -599,8 +671,8 @@ export default defineVxeComponent({
|
|
|
599
671
|
status: column.renderFixed === 'right' ? 'primary' : '',
|
|
600
672
|
disabled: isDisabled || isHidden || (isMaxFixedColumn && !column.renderFixed),
|
|
601
673
|
title: getI18n(column.renderFixed === 'right' ? 'vxe.toolbar.cancelFixed' : 'vxe.toolbar.fixedRight'),
|
|
602
|
-
onClick: () => {
|
|
603
|
-
changeFixedOption(column, 'right');
|
|
674
|
+
onClick: ({ $event }) => {
|
|
675
|
+
changeFixedOption(column, 'right', $event);
|
|
604
676
|
}
|
|
605
677
|
})
|
|
606
678
|
: createCommentVNode()
|
|
@@ -622,115 +694,120 @@ export default defineVxeComponent({
|
|
|
622
694
|
: {}
|
|
623
695
|
}, customStore.visible
|
|
624
696
|
? [
|
|
625
|
-
!treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregateSimplePanel
|
|
626
|
-
? h($xeTable.getPivotTableAggregateSimplePanel(), {
|
|
627
|
-
customStore
|
|
628
|
-
})
|
|
629
|
-
: renderEmptyElement($xeTable),
|
|
630
697
|
h('div', {
|
|
631
|
-
|
|
698
|
+
ref: refBodyWrapperElem,
|
|
699
|
+
class: 'vxe-table-custom-simple--body-wrapper'
|
|
632
700
|
}, [
|
|
701
|
+
!treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregateSimplePanel
|
|
702
|
+
? h($xeTable.getPivotTableAggregateSimplePanel(), {
|
|
703
|
+
customStore
|
|
704
|
+
})
|
|
705
|
+
: renderEmptyElement($xeTable),
|
|
633
706
|
h('div', {
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
707
|
+
ref: refCustomBodyElem,
|
|
708
|
+
class: 'vxe-table-custom--handle-wrapper'
|
|
709
|
+
}, [
|
|
710
|
+
h('div', {
|
|
711
|
+
class: 'vxe-table-custom--header'
|
|
712
|
+
}, headerSlot
|
|
713
|
+
? $xeTable.callSlot(headerSlot, params)
|
|
714
|
+
: [
|
|
715
|
+
h('ul', {
|
|
716
|
+
class: 'vxe-table-custom--panel-list'
|
|
643
717
|
}, [
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
}
|
|
656
|
-
|
|
718
|
+
h('li', {
|
|
719
|
+
class: 'vxe-table-custom--option'
|
|
720
|
+
}, [
|
|
721
|
+
allowVisible
|
|
722
|
+
? h('div', {
|
|
723
|
+
class: ['vxe-table-custom--checkbox-option', {
|
|
724
|
+
'is--checked': isAllChecked,
|
|
725
|
+
'is--indeterminate': isAllIndeterminate
|
|
726
|
+
}],
|
|
727
|
+
title: getI18n('vxe.table.allTitle'),
|
|
728
|
+
onClick: allOptionEvent
|
|
729
|
+
}, [
|
|
730
|
+
h('span', {
|
|
731
|
+
class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
|
|
732
|
+
}),
|
|
733
|
+
h('span', {
|
|
734
|
+
class: 'vxe-checkbox--label'
|
|
735
|
+
}, getI18n('vxe.toolbar.customAll'))
|
|
736
|
+
])
|
|
737
|
+
: h('span', {
|
|
657
738
|
class: 'vxe-checkbox--label'
|
|
658
|
-
}, getI18n('vxe.
|
|
659
|
-
|
|
660
|
-
: h('span', {
|
|
661
|
-
class: 'vxe-checkbox--label'
|
|
662
|
-
}, getI18n('vxe.table.customTitle'))
|
|
739
|
+
}, getI18n('vxe.table.customTitle'))
|
|
740
|
+
])
|
|
663
741
|
])
|
|
664
|
-
])
|
|
742
|
+
]),
|
|
743
|
+
h('div', {
|
|
744
|
+
class: 'vxe-table-custom--body'
|
|
745
|
+
}, [
|
|
746
|
+
topSlot
|
|
747
|
+
? h('div', {
|
|
748
|
+
class: 'vxe-table-custom--panel-top'
|
|
749
|
+
}, $xeTable.callSlot(topSlot, params))
|
|
750
|
+
: renderEmptyElement($xeTable),
|
|
751
|
+
defaultSlot
|
|
752
|
+
? h('div', {
|
|
753
|
+
class: 'vxe-table-custom--panel-body'
|
|
754
|
+
}, $xeTable.callSlot(defaultSlot, params))
|
|
755
|
+
: h(TransitionGroup, Object.assign({ class: 'vxe-table-custom--panel-list', name: 'vxe-table-custom--list', tag: 'ul' }, customWrapperOns), {
|
|
756
|
+
default: () => colVNs
|
|
757
|
+
}),
|
|
758
|
+
bottomSlot
|
|
759
|
+
? h('div', {
|
|
760
|
+
class: 'vxe-table-custom--panel-bottom'
|
|
761
|
+
}, $xeTable.callSlot(bottomSlot, params))
|
|
762
|
+
: renderEmptyElement($xeTable)
|
|
665
763
|
]),
|
|
666
|
-
|
|
667
|
-
ref: bodyElemRef,
|
|
668
|
-
class: 'vxe-table-custom--body'
|
|
669
|
-
}, [
|
|
670
|
-
topSlot
|
|
671
|
-
? h('div', {
|
|
672
|
-
class: 'vxe-table-custom--panel-top'
|
|
673
|
-
}, $xeTable.callSlot(topSlot, params))
|
|
674
|
-
: renderEmptyElement($xeTable),
|
|
675
|
-
defaultSlot
|
|
764
|
+
customOpts.showFooter
|
|
676
765
|
? h('div', {
|
|
677
|
-
class: 'vxe-table-custom--
|
|
678
|
-
},
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
}, $xeTable.callSlot(bottomSlot, params))
|
|
686
|
-
: renderEmptyElement($xeTable),
|
|
687
|
-
renderDragTip()
|
|
688
|
-
]),
|
|
689
|
-
customOpts.showFooter
|
|
690
|
-
? h('div', {
|
|
691
|
-
class: 'vxe-table-custom--footer'
|
|
692
|
-
}, footerSlot
|
|
693
|
-
? $xeTable.callSlot(footerSlot, params)
|
|
694
|
-
: [
|
|
695
|
-
h('div', {
|
|
696
|
-
class: 'vxe-table-custom--footer-buttons'
|
|
697
|
-
}, [
|
|
698
|
-
VxeUIButtonComponent
|
|
699
|
-
? h(VxeUIButtonComponent, {
|
|
700
|
-
mode: 'text',
|
|
701
|
-
content: customOpts.resetButtonText || getI18n('vxe.table.customRestore'),
|
|
702
|
-
disabled: !isCustomStatus,
|
|
703
|
-
onClick: resetCustomEvent
|
|
704
|
-
})
|
|
705
|
-
: createCommentVNode(),
|
|
706
|
-
immediate
|
|
707
|
-
? (VxeUIButtonComponent
|
|
708
|
-
? h(VxeUIButtonComponent, {
|
|
709
|
-
mode: 'text',
|
|
710
|
-
content: customOpts.closeButtonText || getI18n('vxe.table.customClose'),
|
|
711
|
-
onClick: cancelCloseEvent
|
|
712
|
-
})
|
|
713
|
-
: createCommentVNode())
|
|
714
|
-
: (VxeUIButtonComponent
|
|
715
|
-
? h(VxeUIButtonComponent, {
|
|
716
|
-
mode: 'text',
|
|
717
|
-
content: customOpts.cancelButtonText || getI18n('vxe.table.customCancel'),
|
|
718
|
-
onClick: cancelCustomEvent
|
|
719
|
-
})
|
|
720
|
-
: createCommentVNode()),
|
|
721
|
-
immediate
|
|
722
|
-
? createCommentVNode()
|
|
723
|
-
: (VxeUIButtonComponent
|
|
766
|
+
class: 'vxe-table-custom--footer'
|
|
767
|
+
}, footerSlot
|
|
768
|
+
? $xeTable.callSlot(footerSlot, params)
|
|
769
|
+
: [
|
|
770
|
+
h('div', {
|
|
771
|
+
class: 'vxe-table-custom--footer-buttons'
|
|
772
|
+
}, [
|
|
773
|
+
VxeUIButtonComponent
|
|
724
774
|
? h(VxeUIButtonComponent, {
|
|
725
775
|
mode: 'text',
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
onClick:
|
|
776
|
+
content: customOpts.resetButtonText || getI18n('vxe.table.customRestore'),
|
|
777
|
+
disabled: !isCustomStatus,
|
|
778
|
+
onClick: resetCustomEvent
|
|
729
779
|
})
|
|
730
|
-
: createCommentVNode()
|
|
780
|
+
: createCommentVNode(),
|
|
781
|
+
immediate
|
|
782
|
+
? (VxeUIButtonComponent
|
|
783
|
+
? h(VxeUIButtonComponent, {
|
|
784
|
+
mode: 'text',
|
|
785
|
+
content: customOpts.closeButtonText || getI18n('vxe.table.customClose'),
|
|
786
|
+
onClick: cancelCloseEvent
|
|
787
|
+
})
|
|
788
|
+
: createCommentVNode())
|
|
789
|
+
: (VxeUIButtonComponent
|
|
790
|
+
? h(VxeUIButtonComponent, {
|
|
791
|
+
mode: 'text',
|
|
792
|
+
content: customOpts.cancelButtonText || getI18n('vxe.table.customCancel'),
|
|
793
|
+
onClick: cancelCustomEvent
|
|
794
|
+
})
|
|
795
|
+
: createCommentVNode()),
|
|
796
|
+
immediate
|
|
797
|
+
? createCommentVNode()
|
|
798
|
+
: (VxeUIButtonComponent
|
|
799
|
+
? h(VxeUIButtonComponent, {
|
|
800
|
+
mode: 'text',
|
|
801
|
+
status: 'primary',
|
|
802
|
+
content: customOpts.confirmButtonText || getI18n('vxe.table.customConfirm'),
|
|
803
|
+
onClick: confirmCustomEvent
|
|
804
|
+
})
|
|
805
|
+
: createCommentVNode())
|
|
806
|
+
])
|
|
731
807
|
])
|
|
732
|
-
|
|
733
|
-
|
|
808
|
+
: null
|
|
809
|
+
]),
|
|
810
|
+
renderDragTip()
|
|
734
811
|
])
|
|
735
812
|
]
|
|
736
813
|
: []);
|
|
@@ -739,7 +816,7 @@ export default defineVxeComponent({
|
|
|
739
816
|
const $xeGrid = $xeTable.xeGrid;
|
|
740
817
|
const { customStore } = props;
|
|
741
818
|
const { resizable: allResizable } = tableProps;
|
|
742
|
-
const { isCustomStatus, customColumnList } =
|
|
819
|
+
const { isCustomStatus, customColumnList } = tableReactData;
|
|
743
820
|
const customOpts = computeCustomOpts.value;
|
|
744
821
|
const { immediate } = customOpts;
|
|
745
822
|
const columnDragOpts = computeColumnDragOpts.value;
|
|
@@ -817,9 +894,9 @@ export default defineVxeComponent({
|
|
|
817
894
|
'is--disabled': isDisabled
|
|
818
895
|
}],
|
|
819
896
|
title: getI18n('vxe.custom.setting.colVisible'),
|
|
820
|
-
onClick: () => {
|
|
897
|
+
onClick: (evnt) => {
|
|
821
898
|
if (!isDisabled) {
|
|
822
|
-
changeCheckboxOption(column);
|
|
899
|
+
changeCheckboxOption(column, evnt);
|
|
823
900
|
}
|
|
824
901
|
}
|
|
825
902
|
}, [
|
|
@@ -909,8 +986,8 @@ export default defineVxeComponent({
|
|
|
909
986
|
{ label: getI18n('vxe.custom.setting.fixedUnset'), value: '', disabled: isDisabled || isHidden },
|
|
910
987
|
{ label: getI18n('vxe.custom.setting.fixedRight'), value: 'right', disabled: isDisabled || isHidden || isMaxFixedColumn }
|
|
911
988
|
],
|
|
912
|
-
|
|
913
|
-
changeFixedOption(column,
|
|
989
|
+
onChange({ label, $event }) {
|
|
990
|
+
changeFixedOption(column, label, $event);
|
|
914
991
|
}
|
|
915
992
|
})
|
|
916
993
|
: createCommentVNode())
|
|
@@ -921,88 +998,92 @@ export default defineVxeComponent({
|
|
|
921
998
|
});
|
|
922
999
|
const scopedSlots = {
|
|
923
1000
|
default: () => {
|
|
924
|
-
if (defaultSlot) {
|
|
925
|
-
return $xeTable.callSlot(defaultSlot, params);
|
|
926
|
-
}
|
|
927
1001
|
return h('div', {
|
|
928
|
-
ref:
|
|
929
|
-
class: 'vxe-table-custom-popup--body'
|
|
930
|
-
},
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
1002
|
+
ref: refBodyWrapperElem,
|
|
1003
|
+
class: 'vxe-table-custom-popup--body-wrapper'
|
|
1004
|
+
}, defaultSlot
|
|
1005
|
+
? $xeTable.callSlot(defaultSlot, params)
|
|
1006
|
+
: [
|
|
1007
|
+
h('div', {
|
|
1008
|
+
ref: refCustomBodyElem,
|
|
1009
|
+
class: 'vxe-table-custom-popup--handle-wrapper'
|
|
1010
|
+
}, [
|
|
1011
|
+
topSlot
|
|
1012
|
+
? h('div', {
|
|
1013
|
+
class: 'vxe-table-custom-popup--table-top'
|
|
1014
|
+
}, $xeTable.callSlot(topSlot, params))
|
|
1015
|
+
: renderEmptyElement($xeTable),
|
|
1016
|
+
h('div', {
|
|
1017
|
+
class: 'vxe-table-custom-popup--table-wrapper'
|
|
1018
|
+
}, [
|
|
1019
|
+
h('table', {}, [
|
|
1020
|
+
h('colgroup', {}, [
|
|
1021
|
+
allowVisible
|
|
1022
|
+
? h('col', {
|
|
1023
|
+
class: 'vxe-table-custom-popup--table-col-seq'
|
|
1024
|
+
})
|
|
1025
|
+
: createCommentVNode(),
|
|
1026
|
+
h('col', {
|
|
1027
|
+
class: 'vxe-table-custom-popup--table-col-title'
|
|
1028
|
+
}),
|
|
1029
|
+
allowResizable
|
|
1030
|
+
? h('col', {
|
|
1031
|
+
class: 'vxe-table-custom-popup--table-col-width'
|
|
1032
|
+
})
|
|
1033
|
+
: createCommentVNode(),
|
|
1034
|
+
allowFixed
|
|
1035
|
+
? h('col', {
|
|
1036
|
+
class: 'vxe-table-custom-popup--table-col-fixed'
|
|
1037
|
+
})
|
|
1038
|
+
: createCommentVNode()
|
|
1039
|
+
]),
|
|
1040
|
+
h('thead', {}, [
|
|
1041
|
+
h('tr', {}, [
|
|
1042
|
+
allowVisible
|
|
1043
|
+
? h('th', {}, [
|
|
1044
|
+
h('div', {
|
|
1045
|
+
class: ['vxe-table-custom--checkbox-option', {
|
|
1046
|
+
'is--checked': isAllChecked,
|
|
1047
|
+
'is--indeterminate': isAllIndeterminate
|
|
1048
|
+
}],
|
|
1049
|
+
title: getI18n('vxe.table.allTitle'),
|
|
1050
|
+
onClick: allOptionEvent
|
|
1051
|
+
}, [
|
|
1052
|
+
h('span', {
|
|
1053
|
+
class: ['vxe-checkbox--icon', isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
|
|
1054
|
+
}),
|
|
1055
|
+
h('span', {
|
|
1056
|
+
class: 'vxe-checkbox--label'
|
|
1057
|
+
}, getI18n('vxe.toolbar.customAll'))
|
|
1058
|
+
])
|
|
1059
|
+
])
|
|
1060
|
+
: createCommentVNode(),
|
|
1061
|
+
h('th', {}, getI18n('vxe.custom.setting.colTitle')),
|
|
1062
|
+
allowResizable
|
|
1063
|
+
? h('th', {}, getI18n('vxe.custom.setting.colResizable'))
|
|
1064
|
+
: createCommentVNode(),
|
|
1065
|
+
allowFixed
|
|
1066
|
+
? h('th', {}, getI18n(`vxe.custom.setting.${maxFixedSize ? 'colFixedMax' : 'colFixed'}`, [maxFixedSize]))
|
|
1067
|
+
: createCommentVNode()
|
|
979
1068
|
])
|
|
980
|
-
|
|
981
|
-
h(
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
:
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
1069
|
+
]),
|
|
1070
|
+
h(TransitionGroup, {
|
|
1071
|
+
class: 'vxe-table-custom--panel-list',
|
|
1072
|
+
tag: 'tbody',
|
|
1073
|
+
name: 'vxe-table-custom--list'
|
|
1074
|
+
}, {
|
|
1075
|
+
default: () => trVNs
|
|
1076
|
+
})
|
|
988
1077
|
])
|
|
989
1078
|
]),
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
})
|
|
1079
|
+
bottomSlot
|
|
1080
|
+
? h('div', {
|
|
1081
|
+
class: 'vxe-table-custom-popup--table-bottom'
|
|
1082
|
+
}, $xeTable.callSlot(bottomSlot, params))
|
|
1083
|
+
: renderEmptyElement($xeTable),
|
|
1084
|
+
renderDragTip()
|
|
997
1085
|
])
|
|
998
|
-
])
|
|
999
|
-
bottomSlot
|
|
1000
|
-
? h('div', {
|
|
1001
|
-
class: 'vxe-table-custom-popup--table-bottom'
|
|
1002
|
-
}, $xeTable.callSlot(bottomSlot, params))
|
|
1003
|
-
: renderEmptyElement($xeTable),
|
|
1004
|
-
renderDragTip()
|
|
1005
|
-
]);
|
|
1086
|
+
]);
|
|
1006
1087
|
},
|
|
1007
1088
|
footer: () => {
|
|
1008
1089
|
if (footerSlot) {
|
|
@@ -1118,6 +1199,21 @@ export default defineVxeComponent({
|
|
|
1118
1199
|
errLog('vxe.error.reqComp', ['vxe-radio-group']);
|
|
1119
1200
|
}
|
|
1120
1201
|
});
|
|
1121
|
-
|
|
1202
|
+
const $xeTableCustomPanel = {
|
|
1203
|
+
xID,
|
|
1204
|
+
props,
|
|
1205
|
+
context,
|
|
1206
|
+
reactData: customPanelReactData,
|
|
1207
|
+
internalData: customPanelInternalData,
|
|
1208
|
+
xeTable: $xeTable,
|
|
1209
|
+
getRefMaps: () => refMaps,
|
|
1210
|
+
getComputeMaps: () => computeMaps,
|
|
1211
|
+
renderVN
|
|
1212
|
+
};
|
|
1213
|
+
provide('$xeTableCustomPanel', $xeTableCustomPanel);
|
|
1214
|
+
return $xeTableCustomPanel;
|
|
1215
|
+
},
|
|
1216
|
+
render() {
|
|
1217
|
+
return this.renderVN();
|
|
1122
1218
|
}
|
|
1123
1219
|
});
|