vxe-table 3.14.0-beta.8 → 3.14.0
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/grid/src/grid.js +75 -50
- package/es/locale/lang/ar-EG.js +7 -1
- package/es/locale/lang/de-DE.js +7 -1
- package/es/locale/lang/en-US.js +7 -1
- package/es/locale/lang/es-ES.js +7 -1
- package/es/locale/lang/fr-FR.js +7 -1
- package/es/locale/lang/hu-HU.js +7 -1
- package/es/locale/lang/hy-AM.js +7 -1
- package/es/locale/lang/id-ID.js +7 -1
- package/es/locale/lang/it-IT.js +7 -1
- package/es/locale/lang/ja-JP.js +7 -1
- package/es/locale/lang/ko-KR.js +7 -1
- package/es/locale/lang/nb-NO.js +7 -1
- package/es/locale/lang/pt-BR.js +7 -1
- package/es/locale/lang/ru-RU.js +7 -1
- package/es/locale/lang/th-TH.js +7 -1
- package/es/locale/lang/ug-CN.js +7 -1
- package/es/locale/lang/uk-UA.js +7 -1
- package/es/locale/lang/vi-VN.js +7 -1
- package/es/locale/lang/zh-CHT.js +7 -1
- package/es/locale/lang/zh-CN.js +7 -1
- package/es/style.css +1 -1
- package/es/table/module/custom/mixin.js +4 -2
- package/es/table/module/custom/panel.js +24 -23
- package/es/table/module/edit/mixin.js +17 -11
- package/es/table/module/export/export-panel.js +5 -4
- package/es/table/module/export/import-panel.js +8 -7
- package/es/table/module/export/mixin.js +30 -27
- package/es/table/module/filter/panel.js +21 -10
- package/es/table/module/keyboard/mixin.js +141 -41
- package/es/table/module/menu/mixin.js +6 -3
- package/es/table/module/menu/panel.js +7 -7
- package/es/table/module/validator/mixin.js +2 -2
- package/es/table/render/index.js +2 -2
- package/es/table/src/body.js +39 -20
- package/es/table/src/cell.js +27 -22
- package/es/table/src/column.js +11 -9
- package/es/table/src/columnInfo.js +6 -6
- package/es/table/src/footer.js +12 -7
- package/es/table/src/group.js +6 -5
- package/es/table/src/header.js +15 -9
- package/es/table/src/methods.js +773 -704
- package/es/table/src/props.js +4 -0
- package/es/table/src/table.js +85 -49
- package/es/table/src/util.js +55 -20
- package/es/toolbar/src/toolbar.js +3 -3
- package/es/ui/index.js +2 -1
- package/es/ui/src/log.js +1 -1
- package/helper/vetur/attributes.json +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/grid/src/grid.js +82 -67
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.umd.js +1590 -1249
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +7 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +7 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +7 -1
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +7 -1
- package/lib/locale/lang/es-ES.js +7 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +7 -1
- package/lib/locale/lang/fr-FR.js +7 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +7 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +7 -1
- package/lib/locale/lang/hy-AM.js +7 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/id-ID.js +7 -1
- package/lib/locale/lang/id-ID.min.js +1 -1
- package/lib/locale/lang/it-IT.js +7 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +7 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +7 -1
- package/lib/locale/lang/ko-KR.js +7 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +7 -1
- package/lib/locale/lang/nb-NO.js +7 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +7 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +7 -1
- package/lib/locale/lang/ru-RU.js +7 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +7 -1
- package/lib/locale/lang/th-TH.js +7 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +7 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +7 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +7 -1
- package/lib/locale/lang/vi-VN.js +7 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +7 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +7 -1
- package/lib/locale/lang/zh-CN.js +7 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +7 -1
- package/lib/style.css +1 -1
- package/lib/table/module/custom/mixin.js +5 -3
- package/lib/table/module/custom/mixin.min.js +1 -1
- package/lib/table/module/custom/panel.js +22 -29
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/edit/mixin.js +19 -13
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/export-panel.js +5 -4
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/import-panel.js +8 -7
- package/lib/table/module/export/import-panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +35 -34
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/filter/panel.js +16 -16
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +149 -47
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +6 -3
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/menu/panel.js +7 -7
- package/lib/table/module/menu/panel.min.js +1 -1
- package/lib/table/module/validator/mixin.js +3 -3
- package/lib/table/module/validator/mixin.min.js +1 -1
- package/lib/table/render/index.js +3 -2
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/body.js +47 -20
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +39 -23
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/column.js +11 -9
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +6 -6
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +12 -5
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/group.js +6 -5
- package/lib/table/src/group.min.js +1 -1
- package/lib/table/src/header.js +16 -8
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +911 -830
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +4 -0
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +93 -52
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +62 -21
- package/lib/table/src/util.min.js +1 -1
- package/lib/toolbar/src/toolbar.js +3 -3
- package/lib/ui/index.js +2 -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/package.json +2 -2
- package/packages/grid/src/grid.ts +88 -59
- package/packages/locale/lang/ar-EG.ts +7 -1
- package/packages/locale/lang/de-DE.ts +7 -1
- package/packages/locale/lang/en-US.ts +7 -1
- package/packages/locale/lang/es-ES.ts +7 -1
- package/packages/locale/lang/fr-FR.ts +7 -1
- package/packages/locale/lang/hu-HU.ts +7 -1
- package/packages/locale/lang/hy-AM.ts +7 -1
- package/packages/locale/lang/id-ID.ts +7 -1
- package/packages/locale/lang/it-IT.ts +7 -1
- package/packages/locale/lang/ja-JP.ts +7 -1
- package/packages/locale/lang/ko-KR.ts +7 -1
- package/packages/locale/lang/nb-NO.ts +7 -1
- package/packages/locale/lang/pt-BR.ts +7 -1
- package/packages/locale/lang/ru-RU.ts +7 -1
- package/packages/locale/lang/th-TH.ts +7 -1
- package/packages/locale/lang/ug-CN.ts +7 -1
- package/packages/locale/lang/uk-UA.ts +7 -1
- package/packages/locale/lang/vi-VN.ts +7 -1
- package/packages/locale/lang/zh-CHT.ts +7 -1
- package/packages/locale/lang/zh-CN.ts +7 -1
- package/packages/table/module/custom/mixin.ts +6 -3
- package/packages/table/module/custom/panel.ts +42 -37
- package/packages/table/module/edit/mixin.ts +20 -14
- package/packages/table/module/export/export-panel.ts +8 -5
- package/packages/table/module/export/import-panel.ts +11 -7
- package/packages/table/module/export/mixin.ts +37 -32
- package/packages/table/module/filter/panel.ts +25 -10
- package/packages/table/module/keyboard/mixin.ts +155 -49
- package/packages/table/module/menu/mixin.ts +12 -6
- package/packages/table/module/menu/panel.ts +10 -7
- package/packages/table/module/validator/mixin.ts +2 -2
- package/packages/table/render/index.ts +2 -2
- package/packages/table/src/body.ts +39 -20
- package/packages/table/src/cell.ts +27 -22
- package/packages/table/src/column.ts +14 -10
- package/packages/table/src/columnInfo.ts +9 -6
- package/packages/table/src/footer.ts +12 -7
- package/packages/table/src/group.ts +9 -5
- package/packages/table/src/header.ts +16 -9
- package/packages/table/src/methods.ts +854 -740
- package/packages/table/src/props.ts +16 -12
- package/packages/table/src/table.ts +99 -52
- package/packages/table/src/util.ts +63 -21
- package/packages/toolbar/src/toolbar.ts +3 -3
- package/packages/ui/index.ts +1 -0
- /package/es/{iconfont.1741333630357.ttf → iconfont.1742955973002.ttf} +0 -0
- /package/es/{iconfont.1741333630357.woff → iconfont.1742955973002.woff} +0 -0
- /package/es/{iconfont.1741333630357.woff2 → iconfont.1742955973002.woff2} +0 -0
- /package/lib/{iconfont.1741333630357.ttf → iconfont.1742955973002.ttf} +0 -0
- /package/lib/{iconfont.1741333630357.woff → iconfont.1742955973002.woff} +0 -0
- /package/lib/{iconfont.1741333630357.woff2 → iconfont.1742955973002.woff2} +0 -0
|
@@ -95,17 +95,59 @@ function getCheckboxRangeRows($xeTable, evnt, params, targetTrElem, trRect, offs
|
|
|
95
95
|
}
|
|
96
96
|
return rangeRows;
|
|
97
97
|
}
|
|
98
|
+
function handleMoveSelected($xeTable, evnt, args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow) {
|
|
99
|
+
const internalData = $xeTable;
|
|
100
|
+
const { afterFullData, visibleColumn } = internalData;
|
|
101
|
+
const params = Object.assign({}, args);
|
|
102
|
+
const _rowIndex = $xeTable.getVTRowIndex(params.row);
|
|
103
|
+
const _columnIndex = $xeTable.getVTColumnIndex(params.column);
|
|
104
|
+
evnt.preventDefault();
|
|
105
|
+
if (isUpArrow && _rowIndex > 0) {
|
|
106
|
+
// 移动到上一行
|
|
107
|
+
params.rowIndex = _rowIndex - 1;
|
|
108
|
+
params.row = afterFullData[params.rowIndex];
|
|
109
|
+
}
|
|
110
|
+
else if (isDwArrow && _rowIndex < afterFullData.length - 1) {
|
|
111
|
+
// 移动到下一行
|
|
112
|
+
params.rowIndex = _rowIndex + 1;
|
|
113
|
+
params.row = afterFullData[params.rowIndex];
|
|
114
|
+
}
|
|
115
|
+
else if (isLeftArrow && _columnIndex) {
|
|
116
|
+
// 移动到左侧单元格
|
|
117
|
+
params.columnIndex = _columnIndex - 1;
|
|
118
|
+
params.column = visibleColumn[params.columnIndex];
|
|
119
|
+
}
|
|
120
|
+
else if (isRightArrow && _columnIndex < visibleColumn.length - 1) {
|
|
121
|
+
// 移动到右侧单元格
|
|
122
|
+
params.columnIndex = _columnIndex + 1;
|
|
123
|
+
params.column = visibleColumn[params.columnIndex];
|
|
124
|
+
}
|
|
125
|
+
$xeTable.scrollToRow(params.row, params.column).then(() => {
|
|
126
|
+
params.cell = $xeTable.getCellElement(params.row, params.column);
|
|
127
|
+
$xeTable.handleSelected(params, evnt);
|
|
128
|
+
});
|
|
129
|
+
return params;
|
|
130
|
+
}
|
|
98
131
|
export default {
|
|
99
132
|
methods: {
|
|
100
133
|
// 处理 Tab 键移动
|
|
101
134
|
moveTabSelected(args, isLeft, evnt) {
|
|
102
|
-
const
|
|
135
|
+
const $xeTable = this;
|
|
136
|
+
const props = $xeTable;
|
|
137
|
+
const internalData = $xeTable;
|
|
138
|
+
const { editConfig } = props;
|
|
139
|
+
const { afterFullData, visibleColumn } = internalData;
|
|
140
|
+
const editOpts = $xeTable.computeEditOpts;
|
|
141
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
142
|
+
const currentRowOpts = $xeTable.computeCurrentRowOpts;
|
|
143
|
+
const columnOpts = $xeTable.computeColumnOpts;
|
|
144
|
+
const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
|
|
103
145
|
let targetRow;
|
|
104
146
|
let targetRowIndex;
|
|
105
147
|
let targetColumnIndex;
|
|
106
148
|
const params = Object.assign({}, args);
|
|
107
|
-
const _rowIndex =
|
|
108
|
-
const _columnIndex =
|
|
149
|
+
const _rowIndex = $xeTable.getVTRowIndex(params.row);
|
|
150
|
+
const _columnIndex = $xeTable.getVTColumnIndex(params.column);
|
|
109
151
|
evnt.preventDefault();
|
|
110
152
|
if (isLeft) {
|
|
111
153
|
// 向左
|
|
@@ -145,30 +187,46 @@ export default {
|
|
|
145
187
|
}
|
|
146
188
|
params.columnIndex = targetColumnIndex;
|
|
147
189
|
params.column = targetColumn;
|
|
148
|
-
params.cell =
|
|
190
|
+
params.cell = $xeTable.getCellElement(params.row, params.column);
|
|
191
|
+
if (rowOpts.isCurrent && currentRowOpts.isFollowSelected) {
|
|
192
|
+
$xeTable.triggerCurrentRowEvent(evnt, params);
|
|
193
|
+
}
|
|
194
|
+
if (columnOpts.isCurrent && currentColumnOpts.isFollowSelected) {
|
|
195
|
+
$xeTable.triggerCurrentColumnEvent(evnt, params);
|
|
196
|
+
}
|
|
149
197
|
if (editConfig) {
|
|
150
198
|
if (editOpts.trigger === 'click' || editOpts.trigger === 'dblclick') {
|
|
151
199
|
if (editOpts.mode === 'row') {
|
|
152
|
-
|
|
200
|
+
$xeTable.handleEdit(params, evnt);
|
|
153
201
|
}
|
|
154
202
|
else {
|
|
155
|
-
|
|
156
|
-
.then(() =>
|
|
203
|
+
$xeTable.scrollToRow(params.row, params.column)
|
|
204
|
+
.then(() => {
|
|
205
|
+
$xeTable.handleSelected(params, evnt);
|
|
206
|
+
});
|
|
157
207
|
}
|
|
158
208
|
}
|
|
159
209
|
}
|
|
160
210
|
else {
|
|
161
|
-
|
|
162
|
-
.then(() =>
|
|
211
|
+
$xeTable.scrollToRow(params.row, params.column)
|
|
212
|
+
.then(() => {
|
|
213
|
+
$xeTable.handleSelected(params, evnt);
|
|
214
|
+
});
|
|
163
215
|
}
|
|
164
216
|
}
|
|
165
217
|
},
|
|
166
218
|
// 处理当前行方向键移动
|
|
167
219
|
moveCurrentRow(isUpArrow, isDwArrow, evnt) {
|
|
168
|
-
const
|
|
220
|
+
const $xeTable = this;
|
|
221
|
+
const props = $xeTable;
|
|
222
|
+
const reactData = $xeTable;
|
|
223
|
+
const internalData = $xeTable;
|
|
224
|
+
const { treeConfig } = props;
|
|
225
|
+
const { currentRow } = reactData;
|
|
226
|
+
const { afterFullData } = internalData;
|
|
227
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
169
228
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
170
229
|
let targetRow;
|
|
171
|
-
evnt.preventDefault();
|
|
172
230
|
if (currentRow) {
|
|
173
231
|
if (treeConfig) {
|
|
174
232
|
const { index, items } = XEUtils.findTree(afterFullData, item => item === currentRow, { children: childrenField });
|
|
@@ -180,7 +238,7 @@ export default {
|
|
|
180
238
|
}
|
|
181
239
|
}
|
|
182
240
|
else {
|
|
183
|
-
const _rowIndex =
|
|
241
|
+
const _rowIndex = $xeTable.getVTRowIndex(currentRow);
|
|
184
242
|
if (isUpArrow && _rowIndex > 0) {
|
|
185
243
|
targetRow = afterFullData[_rowIndex - 1];
|
|
186
244
|
}
|
|
@@ -193,42 +251,84 @@ export default {
|
|
|
193
251
|
targetRow = afterFullData[0];
|
|
194
252
|
}
|
|
195
253
|
if (targetRow) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
254
|
+
evnt.preventDefault();
|
|
255
|
+
const params = {
|
|
256
|
+
$table: $xeTable,
|
|
257
|
+
row: targetRow,
|
|
258
|
+
rowIndex: $xeTable.getRowIndex(targetRow),
|
|
259
|
+
$rowIndex: $xeTable.getVMRowIndex(targetRow)
|
|
260
|
+
};
|
|
261
|
+
$xeTable.scrollToRow(targetRow)
|
|
262
|
+
.then(() => $xeTable.triggerCurrentRowEvent(evnt, params));
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
// 处理当前列方向键移动
|
|
266
|
+
moveCurrentColumn(isLeftArrow, isRightArrow, evnt) {
|
|
267
|
+
const $xeTable = this;
|
|
268
|
+
const reactData = $xeTable;
|
|
269
|
+
const internalData = $xeTable;
|
|
270
|
+
const { currentColumn } = reactData;
|
|
271
|
+
const { visibleColumn } = internalData;
|
|
272
|
+
let targetCol = null;
|
|
273
|
+
if (currentColumn) {
|
|
274
|
+
const _columnIndex = $xeTable.getVTColumnIndex(currentColumn);
|
|
275
|
+
if (isLeftArrow && _columnIndex > 0) {
|
|
276
|
+
targetCol = visibleColumn[_columnIndex - 1];
|
|
277
|
+
}
|
|
278
|
+
else if (isRightArrow && _columnIndex < visibleColumn.length - 1) {
|
|
279
|
+
targetCol = visibleColumn[_columnIndex + 1];
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
targetCol = visibleColumn[0];
|
|
284
|
+
}
|
|
285
|
+
if (targetCol) {
|
|
286
|
+
evnt.preventDefault();
|
|
287
|
+
const params = {
|
|
288
|
+
$table: $xeTable,
|
|
289
|
+
column: targetCol,
|
|
290
|
+
columnIndex: $xeTable.getColumnIndex(targetCol),
|
|
291
|
+
$columnIndex: $xeTable.getVMColumnIndex(targetCol)
|
|
292
|
+
};
|
|
293
|
+
$xeTable.scrollToColumn(targetCol)
|
|
294
|
+
.then(() => $xeTable.triggerCurrentColumnEvent(evnt, params));
|
|
199
295
|
}
|
|
200
296
|
},
|
|
201
297
|
// 处理可编辑方向键移动
|
|
202
|
-
|
|
203
|
-
const
|
|
204
|
-
const
|
|
205
|
-
const
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
298
|
+
moveArrowSelected(args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt) {
|
|
299
|
+
const $xeTable = this;
|
|
300
|
+
const props = $xeTable;
|
|
301
|
+
const { highlightCurrentRow, highlightCurrentColumn } = props;
|
|
302
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
303
|
+
const columnOpts = $xeTable.computeColumnOpts;
|
|
304
|
+
handleMoveSelected($xeTable, evnt, args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow);
|
|
305
|
+
// 当前行按键上下移动
|
|
306
|
+
if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
|
|
307
|
+
$xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
|
|
212
308
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
params.row = afterFullData[params.rowIndex];
|
|
309
|
+
// 当前行按键左右移动
|
|
310
|
+
if ((isLeftArrow || isRightArrow) && (columnOpts.isCurrent || highlightCurrentColumn)) {
|
|
311
|
+
$xeTable.moveCurrentColumn(isLeftArrow, isRightArrow, evnt);
|
|
217
312
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
313
|
+
},
|
|
314
|
+
moveEnterSelected(args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt) {
|
|
315
|
+
const $xeTable = this;
|
|
316
|
+
const rowOpts = $xeTable.computeRowOpts;
|
|
317
|
+
const currentRowOpts = $xeTable.computeCurrentRowOpts;
|
|
318
|
+
const columnOpts = $xeTable.computeColumnOpts;
|
|
319
|
+
const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
|
|
320
|
+
const params = handleMoveSelected($xeTable, evnt, args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow);
|
|
321
|
+
if ((rowOpts.isCurrent && currentRowOpts.isFollowSelected)) {
|
|
322
|
+
$xeTable.triggerCurrentRowEvent(evnt, params);
|
|
222
323
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
params.columnIndex = _columnIndex + 1;
|
|
226
|
-
params.column = visibleColumn[params.columnIndex];
|
|
324
|
+
if (columnOpts.isCurrent && currentColumnOpts.isFollowSelected) {
|
|
325
|
+
$xeTable.triggerCurrentColumnEvent(evnt, params);
|
|
227
326
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
327
|
+
},
|
|
328
|
+
// 处理可编辑方向键移动
|
|
329
|
+
moveSelected(args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt) {
|
|
330
|
+
const $xeTable = this;
|
|
331
|
+
handleMoveSelected($xeTable, evnt, args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow);
|
|
232
332
|
},
|
|
233
333
|
handleCellMousedownEvent(evnt, params) {
|
|
234
334
|
const $xeTable = this;
|
|
@@ -58,6 +58,7 @@ export default {
|
|
|
58
58
|
*/
|
|
59
59
|
handleGlobalContextmenuEvent(evnt) {
|
|
60
60
|
const $xeTable = this;
|
|
61
|
+
const $xeGrid = $xeTable.$xeGrid;
|
|
61
62
|
const internalData = $xeTable;
|
|
62
63
|
const { $refs, tId, editStore, menuConfig, contextMenu, ctxMenuStore, ctxMenuOpts, mouseConfig, mouseOpts } = this;
|
|
63
64
|
const { selected } = editStore;
|
|
@@ -70,7 +71,7 @@ export default {
|
|
|
70
71
|
}
|
|
71
72
|
if (internalData._keyCtx) {
|
|
72
73
|
const type = 'body';
|
|
73
|
-
const params = { type, $grid:
|
|
74
|
+
const params = { type, $grid: $xeGrid, $table: this, keyboard: true, columns: this.visibleColumn.slice(0), $event: evnt };
|
|
74
75
|
// 如果开启单元格区域
|
|
75
76
|
if (mouseConfig && mouseOpts.area) {
|
|
76
77
|
const activeArea = this.getActiveCellArea();
|
|
@@ -98,7 +99,7 @@ export default {
|
|
|
98
99
|
// target=td|th,直接向上找 table 去匹配即可
|
|
99
100
|
return target.parentNode.parentNode.parentNode.getAttribute('xid') === tId;
|
|
100
101
|
});
|
|
101
|
-
const params = { type: layout, $grid:
|
|
102
|
+
const params = { type: layout, $grid: $xeGrid, $table: this, columns: this.visibleColumn.slice(0), $event: evnt };
|
|
102
103
|
if (columnTargetNode.flag) {
|
|
103
104
|
const cell = columnTargetNode.targetElem;
|
|
104
105
|
const column = this.getColumnNode(cell).item;
|
|
@@ -261,10 +262,12 @@ export default {
|
|
|
261
262
|
* 快捷菜单点击事件
|
|
262
263
|
*/
|
|
263
264
|
ctxMenuLinkEvent(evnt, menu) {
|
|
265
|
+
const $xeTable = this;
|
|
266
|
+
const $xeGrid = $xeTable.$xeGrid;
|
|
264
267
|
// 如果一级菜单有配置 code 则允许点击,否则不能点击
|
|
265
268
|
if (!menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
|
|
266
269
|
const gMenuOpts = menus.get(menu.code);
|
|
267
|
-
const params = Object.assign({ menu, $grid:
|
|
270
|
+
const params = Object.assign({ menu, $grid: $xeGrid, $table: this, $event: evnt }, this.ctxMenuStore.args);
|
|
268
271
|
if (gMenuOpts && gMenuOpts.menuMethod) {
|
|
269
272
|
gMenuOpts.menuMethod(params, evnt);
|
|
270
273
|
}
|
|
@@ -17,7 +17,7 @@ export default {
|
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
render(h) {
|
|
20
|
-
const $
|
|
20
|
+
const $xeTable = this.$parent;
|
|
21
21
|
const { _e, ctxMenuOpts, ctxMenuStore } = this;
|
|
22
22
|
return h('div', {
|
|
23
23
|
class: ['vxe-table--context-menu-wrapper', ctxMenuOpts.className, {
|
|
@@ -47,13 +47,13 @@ export default {
|
|
|
47
47
|
class: 'vxe-context-menu--link',
|
|
48
48
|
on: {
|
|
49
49
|
click(evnt) {
|
|
50
|
-
$
|
|
50
|
+
$xeTable.ctxMenuLinkEvent(evnt, item);
|
|
51
51
|
},
|
|
52
52
|
mouseover(evnt) {
|
|
53
|
-
$
|
|
53
|
+
$xeTable.ctxMenuMouseoverEvent(evnt, item);
|
|
54
54
|
},
|
|
55
55
|
mouseout(evnt) {
|
|
56
|
-
$
|
|
56
|
+
$xeTable.ctxMenuMouseoutEvent(evnt, item);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
}, [
|
|
@@ -98,13 +98,13 @@ export default {
|
|
|
98
98
|
class: 'vxe-context-menu--link',
|
|
99
99
|
on: {
|
|
100
100
|
click(evnt) {
|
|
101
|
-
$
|
|
101
|
+
$xeTable.ctxMenuLinkEvent(evnt, child);
|
|
102
102
|
},
|
|
103
103
|
mouseover(evnt) {
|
|
104
|
-
$
|
|
104
|
+
$xeTable.ctxMenuMouseoverEvent(evnt, item, child);
|
|
105
105
|
},
|
|
106
106
|
mouseout(evnt) {
|
|
107
|
-
$
|
|
107
|
+
$xeTable.ctxMenuMouseoutEvent(evnt, item);
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
}, [
|
|
@@ -153,8 +153,8 @@ export default {
|
|
|
153
153
|
const internalData = $xeTable;
|
|
154
154
|
const validRest = {};
|
|
155
155
|
const { editRules, treeConfig } = props;
|
|
156
|
-
const { editStore
|
|
157
|
-
const { afterFullData } = internalData;
|
|
156
|
+
const { editStore } = reactData;
|
|
157
|
+
const { afterFullData, pendingRowMaps } = internalData;
|
|
158
158
|
const { removeMaps } = editStore;
|
|
159
159
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
160
160
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
package/es/table/render/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { getCellValue, setCellValue } from '../src/util';
|
|
|
4
4
|
import { getFuncText, formatText, isEmptyValue } from '../../ui/src/utils';
|
|
5
5
|
import { getOnName, getModelEvent, getChangeEvent } from '../../ui/src/vn';
|
|
6
6
|
import { errLog } from '../../ui/src/log';
|
|
7
|
-
const { getConfig, renderer, getI18n } = VxeUI;
|
|
7
|
+
const { getConfig, renderer, getI18n, getComponent } = VxeUI;
|
|
8
8
|
const componentDefaultModelProp = 'value';
|
|
9
9
|
const defaultCompProps = {};
|
|
10
10
|
function handleDefaultValue(value, defaultVal, initVal) {
|
|
@@ -35,7 +35,7 @@ function getOldComponent({ name }) {
|
|
|
35
35
|
return getOldComponentName(name);
|
|
36
36
|
}
|
|
37
37
|
function getDefaultComponent({ name }) {
|
|
38
|
-
return name;
|
|
38
|
+
return getComponent(name) || name;
|
|
39
39
|
}
|
|
40
40
|
function handleConfirmFilter(params, checked, option) {
|
|
41
41
|
const { $panel } = params;
|
package/es/table/src/body.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { VxeUI } from '../../ui';
|
|
3
3
|
import { isEnableConf, getClass } from '../../ui/src/utils';
|
|
4
|
-
import { getOffsetSize, calcTreeLine, mergeBodyMethod, getRowid } from './util';
|
|
4
|
+
import { getOffsetSize, calcTreeLine, mergeBodyMethod, getRowid, createHandleGetRowId } from './util';
|
|
5
5
|
import { updateCellTitle } from '../../ui/src/dom';
|
|
6
6
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
7
7
|
const { getI18n, renderer, renderEmptyElement } = VxeUI;
|
|
@@ -14,7 +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, _vm, params, cellHeight) {
|
|
17
|
+
function renderLine(h, _vm, rowid, params, cellHeight) {
|
|
18
18
|
const $xeTable = _vm.$parent;
|
|
19
19
|
const tableProps = $xeTable;
|
|
20
20
|
const tableInternalData = $xeTable;
|
|
@@ -27,7 +27,6 @@ function renderLine(h, _vm, params, cellHeight) {
|
|
|
27
27
|
if (slots && slots.line) {
|
|
28
28
|
return $xeTable.callSlot(slots.line, params, h);
|
|
29
29
|
}
|
|
30
|
-
const rowid = getRowid($xeTable, row);
|
|
31
30
|
const rest = fullAllDataRowIdData[rowid];
|
|
32
31
|
let rLevel = 0;
|
|
33
32
|
let prevRow = null;
|
|
@@ -63,9 +62,10 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
63
62
|
const tableProps = $xeTable;
|
|
64
63
|
const tableReactData = $xeTable;
|
|
65
64
|
const tableInternalData = $xeTable;
|
|
66
|
-
const
|
|
65
|
+
const $xeGrid = $xeTable.$xeGrid;
|
|
66
|
+
const { fullAllDataRowIdData, fullColumnIdData, visibleColumn } = tableInternalData;
|
|
67
67
|
const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
|
|
68
|
-
const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, calcCellHeightFlag, resizeHeightFlag, mergeList, editStore, isAllOverflow, validErrorMaps } = tableReactData;
|
|
68
|
+
const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, mergeList, editStore, isAllOverflow, validErrorMaps } = tableReactData;
|
|
69
69
|
const { afterFullData, scrollXStore, scrollYStore } = tableInternalData;
|
|
70
70
|
const cellOpts = $xeTable.computeCellOpts;
|
|
71
71
|
const validOpts = $xeTable.computeValidOpts;
|
|
@@ -81,19 +81,21 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
81
81
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
82
82
|
const mouseOpts = $xeTable.computeMouseOpts;
|
|
83
83
|
const areaOpts = $xeTable.computeAreaOpts;
|
|
84
|
+
const cellOffsetWidth = $xeTable.computeCellOffsetWidth;
|
|
84
85
|
const { selectCellToRow } = areaOpts;
|
|
85
86
|
const { type, cellRender, editRender, align, showOverflow, className, treeNode, rowResize, padding, verticalAlign, slots } = column;
|
|
86
87
|
const { verticalAlign: allVerticalAlign } = cellOpts;
|
|
87
88
|
const { actived } = editStore;
|
|
88
|
-
const rowRest = fullAllDataRowIdData[rowid];
|
|
89
|
+
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
89
90
|
const colid = column.id;
|
|
91
|
+
const colRest = fullColumnIdData[colid] || {};
|
|
90
92
|
const renderOpts = editRender || cellRender;
|
|
91
93
|
const compConf = renderOpts ? renderer.get(renderOpts.name) : null;
|
|
92
94
|
const compCellClassName = compConf ? (compConf.tableCellClassName || compConf.cellClassName) : null;
|
|
93
95
|
const compCellStyle = compConf ? (compConf.tableCellStyle || compConf.cellStyle) : '';
|
|
94
96
|
const showAllTip = tooltipOpts.showAll;
|
|
95
|
-
const columnIndex =
|
|
96
|
-
const _columnIndex =
|
|
97
|
+
const columnIndex = colRest.index;
|
|
98
|
+
const _columnIndex = colRest._index;
|
|
97
99
|
const isEdit = isEnableConf(editRender);
|
|
98
100
|
const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
|
|
99
101
|
let fixedHiddenColumn = fixedType ? column.fixed !== fixedType : column.fixed && overflowX;
|
|
@@ -115,7 +117,7 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
115
117
|
const tdAttrs = { colid };
|
|
116
118
|
const cellParams = {
|
|
117
119
|
$table: $xeTable,
|
|
118
|
-
$grid: $
|
|
120
|
+
$grid: $xeGrid,
|
|
119
121
|
isEdit: false,
|
|
120
122
|
seq,
|
|
121
123
|
rowid,
|
|
@@ -247,6 +249,18 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
247
249
|
}
|
|
248
250
|
}
|
|
249
251
|
const tcStyle = {};
|
|
252
|
+
if (hasEllipsis && resizeWidthFlag) {
|
|
253
|
+
let tsColspan = tdAttrs.colspan || 0;
|
|
254
|
+
if (tsColspan > 1) {
|
|
255
|
+
for (let index = 1; index < tsColspan; index++) {
|
|
256
|
+
const nextColumn = visibleColumn[columnIndex + index];
|
|
257
|
+
if (nextColumn) {
|
|
258
|
+
tsColspan += nextColumn.renderWidth;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
tcStyle.width = `${column.renderWidth - (cellOffsetWidth * tsColspan)}px`;
|
|
263
|
+
}
|
|
250
264
|
if (scrollYLoad || hasEllipsis || isCsHeight || isRsHeight) {
|
|
251
265
|
tcStyle.height = `${cellHeight}px`;
|
|
252
266
|
}
|
|
@@ -267,7 +281,7 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
267
281
|
}
|
|
268
282
|
else {
|
|
269
283
|
// 渲染单元格
|
|
270
|
-
tdVNs.push(...renderLine(h, _vm, cellParams, cellHeight), h('div', {
|
|
284
|
+
tdVNs.push(...renderLine(h, _vm, rowid, cellParams, cellHeight), h('div', {
|
|
271
285
|
key: 'tc',
|
|
272
286
|
class: ['vxe-cell', {
|
|
273
287
|
'c--title': showTitle,
|
|
@@ -388,8 +402,8 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
388
402
|
const tableReactData = $xeTable;
|
|
389
403
|
const tableInternalData = $xeTable;
|
|
390
404
|
const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, editConfig, treeConfig } = tableProps;
|
|
391
|
-
const { hasFixedColumn,
|
|
392
|
-
const { fullAllDataRowIdData } = tableInternalData;
|
|
405
|
+
const { hasFixedColumn, treeExpandedFlag, isColLoading, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedFlag, expandColumn, selectRadioRow, pendingRowFlag, isDragColMove, rowExpandHeightFlag } = tableReactData;
|
|
406
|
+
const { fullAllDataRowIdData, treeExpandedMaps, pendingRowMaps, rowExpandedMaps } = tableInternalData;
|
|
393
407
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
394
408
|
const radioOpts = $xeTable.computeRadioOpts;
|
|
395
409
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
@@ -400,6 +414,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
400
414
|
const { transform, seqMode } = treeOpts;
|
|
401
415
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
402
416
|
const rows = [];
|
|
417
|
+
const { handleGetRowId } = createHandleGetRowId($xeTable);
|
|
403
418
|
tableData.forEach((row, $rowIndex) => {
|
|
404
419
|
const trOn = {};
|
|
405
420
|
let rowIndex = $rowIndex;
|
|
@@ -420,8 +435,8 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
420
435
|
$xeTable.clearHoverRow();
|
|
421
436
|
};
|
|
422
437
|
}
|
|
423
|
-
const rowid =
|
|
424
|
-
const rowRest = fullAllDataRowIdData[rowid];
|
|
438
|
+
const rowid = handleGetRowId(row);
|
|
439
|
+
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
425
440
|
let rowLevel = 0;
|
|
426
441
|
let seq = -1;
|
|
427
442
|
let _rowIndex = 0;
|
|
@@ -437,7 +452,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
437
452
|
}
|
|
438
453
|
const params = { $table: $xeTable, seq, rowid, fixed: fixedType, type: renderType, level: rowLevel, row, rowIndex, $rowIndex, _rowIndex };
|
|
439
454
|
// 行是否被展开
|
|
440
|
-
const isExpandRow = expandColumn && !!rowExpandedMaps[rowid];
|
|
455
|
+
const isExpandRow = expandColumn && !!rowExpandedFlag && !!rowExpandedMaps[rowid];
|
|
441
456
|
// 树节点是否被展开
|
|
442
457
|
let isExpandTree = false;
|
|
443
458
|
let rowChildren = [];
|
|
@@ -448,7 +463,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
448
463
|
}
|
|
449
464
|
if (treeConfig && !scrollYLoad && !transform) {
|
|
450
465
|
rowChildren = row[childrenField];
|
|
451
|
-
isExpandTree = rowChildren && rowChildren.length && !!treeExpandedMaps[rowid];
|
|
466
|
+
isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
|
|
452
467
|
}
|
|
453
468
|
// 拖拽行事件
|
|
454
469
|
if (rowOpts.drag && (!treeConfig || transform)) {
|
|
@@ -467,7 +482,7 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
|
|
|
467
482
|
'row--new': isNewRow && (editOpts.showStatus || editOpts.showInsertStatus),
|
|
468
483
|
'row--radio': radioOpts.highlight && selectRadioRow === row,
|
|
469
484
|
'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
|
|
470
|
-
'row--pending': !!pendingRowMaps[rowid]
|
|
485
|
+
'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid]
|
|
471
486
|
},
|
|
472
487
|
rowClassName ? (XEUtils.isFunction(rowClassName) ? rowClassName(params) : rowClassName) : ''
|
|
473
488
|
];
|
|
@@ -615,6 +630,7 @@ export default {
|
|
|
615
630
|
const tableProps = $xeTable;
|
|
616
631
|
const tableReactData = $xeTable;
|
|
617
632
|
const tableInternalData = $xeTable;
|
|
633
|
+
const $xeGrid = $xeTable.$xeGrid;
|
|
618
634
|
const { xID, $scopedSlots } = $xeTable;
|
|
619
635
|
const { fixedColumn, fixedType, tableColumn } = props;
|
|
620
636
|
const { spanMethod, footerSpanMethod, mouseConfig } = tableProps;
|
|
@@ -637,7 +653,7 @@ export default {
|
|
|
637
653
|
isOptimizeMode = true;
|
|
638
654
|
}
|
|
639
655
|
}
|
|
640
|
-
if (fixedType || !overflowX) {
|
|
656
|
+
if (!isColLoading && (fixedType || !overflowX)) {
|
|
641
657
|
renderColumnList = visibleColumn;
|
|
642
658
|
}
|
|
643
659
|
if (fixedType) {
|
|
@@ -695,7 +711,7 @@ export default {
|
|
|
695
711
|
}
|
|
696
712
|
let emptyContent;
|
|
697
713
|
if ($scopedSlots.empty) {
|
|
698
|
-
emptyContent = $scopedSlots.empty.call(this, { $table: $xeTable, $grid: $
|
|
714
|
+
emptyContent = $scopedSlots.empty.call(this, { $table: $xeTable, $grid: $xeGrid });
|
|
699
715
|
}
|
|
700
716
|
else {
|
|
701
717
|
const compConf = emptyOpts.name ? renderer.get(emptyOpts.name) : null;
|
|
@@ -754,7 +770,10 @@ export default {
|
|
|
754
770
|
attrs: {
|
|
755
771
|
name: column.id
|
|
756
772
|
},
|
|
757
|
-
key: $columnIndex
|
|
773
|
+
key: $columnIndex,
|
|
774
|
+
style: {
|
|
775
|
+
width: `${column.renderWidth}px`
|
|
776
|
+
}
|
|
758
777
|
});
|
|
759
778
|
})),
|
|
760
779
|
/**
|