vxe-table 3.20.13 → 3.21.0-beta.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/style.css +1 -1
- package/es/table/module/edit/mixin.js +33 -12
- package/es/table/module/keyboard/mixin.js +2 -2
- package/es/table/src/cell.js +3 -3
- package/es/table/src/column.js +6 -3
- package/es/table/src/group.js +6 -3
- package/es/table/src/methods.js +365 -165
- package/es/table/src/props.js +2 -2
- package/es/table/src/table.js +13 -6
- package/es/table/src/util.js +12 -3
- package/es/ui/index.js +3 -3
- package/es/ui/src/dom.js +4 -0
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +364 -302
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/module/edit/mixin.js +39 -12
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +2 -2
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/src/cell.js +3 -3
- package/lib/table/src/column.js +6 -3
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/group.js +6 -3
- package/lib/table/src/group.min.js +1 -1
- package/lib/table/src/methods.js +35 -29
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +2 -2
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +15 -6
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +12 -3
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +3 -3
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/dom.js +5 -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/package.json +3 -3
- package/packages/table/module/edit/mixin.ts +47 -12
- package/packages/table/module/keyboard/mixin.ts +2 -2
- package/packages/table/src/cell.ts +5 -5
- package/packages/table/src/column.ts +10 -7
- package/packages/table/src/group.ts +10 -6
- package/packages/table/src/methods.ts +376 -161
- package/packages/table/src/props.ts +3 -3
- package/packages/table/src/table.ts +13 -6
- package/packages/table/src/util.ts +16 -6
- package/packages/ui/index.ts +2 -2
- package/packages/ui/src/dom.ts +5 -0
- /package/es/{iconfont.1776926445391.ttf → iconfont.1777796331871.ttf} +0 -0
- /package/es/{iconfont.1776926445391.woff → iconfont.1777796331871.woff} +0 -0
- /package/es/{iconfont.1776926445391.woff2 → iconfont.1777796331871.woff2} +0 -0
- /package/lib/{iconfont.1776926445391.ttf → iconfont.1777796331871.ttf} +0 -0
- /package/lib/{iconfont.1776926445391.woff → iconfont.1777796331871.woff} +0 -0
- /package/lib/{iconfont.1776926445391.woff2 → iconfont.1777796331871.woff2} +0 -0
package/es/table/src/methods.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
|
-
import { getTpImg, isPx, isScale, hasClass, addClass, removeClass, wheelScrollLeftTo, wheelScrollTopTo, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey, checkTargetElement } from '../../ui/src/dom';
|
|
2
|
+
import { getTpImg, isPx, isScale, hasClass, addClass, removeClass, wheelScrollLeftTo, wheelScrollTopTo, getEventTargetNode, getPaddingTopBottomSize, setScrollTop, setScrollLeft, toCssUnit, hasControlKey, checkTargetElement, hasEventInputTarget } from '../../ui/src/dom';
|
|
3
3
|
import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils';
|
|
4
4
|
import { VxeUI } from '../../ui';
|
|
5
5
|
import Cell from './cell';
|
|
@@ -8,7 +8,7 @@ import { getSlotVNs } from '../../ui/src/vn';
|
|
|
8
8
|
import { moveRowAnimateToTb, clearRowAnimate, moveColAnimateToLr, clearColAnimate } from '../../ui/src/anime';
|
|
9
9
|
import { warnLog, errLog } from '../../ui/src/log';
|
|
10
10
|
import { getCrossTableDragRowInfo } from './store';
|
|
11
|
-
const { getConfig, getI18n, renderer, formats, interceptor, createEvent } = VxeUI;
|
|
11
|
+
const { getConfig, getI18n, renderer, formats, interceptor, createEvent, globalEvents, GLOBAL_EVENT_KEYS } = VxeUI;
|
|
12
12
|
const browseObj = XEUtils.browse();
|
|
13
13
|
const supportMaxRow = 5e6;
|
|
14
14
|
const customStorageKey = 'VXE_CUSTOM_STORE';
|
|
@@ -365,7 +365,7 @@ function cacheColumnMap($xeTable) {
|
|
|
365
365
|
errLog('vxe.error.errConflicts', ['mouse-config.area', 'column.type=expand']);
|
|
366
366
|
}
|
|
367
367
|
if (expandOpts.mode !== 'inside' && (treeConfig && !treeOpts.transform)) {
|
|
368
|
-
errLog('vxe.error.notConflictProp', ['tree-config.transform=false', 'expand-config.mode=
|
|
368
|
+
errLog('vxe.error.notConflictProp', ['tree-config.transform=false', 'expand-config.mode=inside']);
|
|
369
369
|
}
|
|
370
370
|
if (props.spanMethod) {
|
|
371
371
|
warnLog('vxe.error.notSupportProp', ['column.type=expand', 'span-method', 'span-method=null']);
|
|
@@ -3365,6 +3365,7 @@ function loadTableData($xeTable, datas, isReload, isReset) {
|
|
|
3365
3365
|
}
|
|
3366
3366
|
$xeTable.clearMergeCells();
|
|
3367
3367
|
$xeTable.clearMergeFooterItems();
|
|
3368
|
+
$xeTable.handleClearStack();
|
|
3368
3369
|
$xeTable.handleTableData(true);
|
|
3369
3370
|
$xeTable.updateFooter();
|
|
3370
3371
|
$xeTable.handleUpdateBodyMerge();
|
|
@@ -4293,6 +4294,102 @@ function reUpdateCustomStyleEvent($xeTable, evnt) {
|
|
|
4293
4294
|
}
|
|
4294
4295
|
}
|
|
4295
4296
|
}
|
|
4297
|
+
function truncateStackHistory($xeTable) {
|
|
4298
|
+
const internalData = $xeTable;
|
|
4299
|
+
const { stackHistoryStore } = internalData;
|
|
4300
|
+
const { undoStacks } = stackHistoryStore;
|
|
4301
|
+
const undoRedoHistoryOpts = $xeTable.computeUndoRedoHistoryOpts;
|
|
4302
|
+
const { stackSize } = undoRedoHistoryOpts;
|
|
4303
|
+
if (undoStacks.length > XEUtils.toNumber(stackSize)) {
|
|
4304
|
+
undoStacks.shift();
|
|
4305
|
+
}
|
|
4306
|
+
}
|
|
4307
|
+
/**
|
|
4308
|
+
* 生成快照数据
|
|
4309
|
+
*/
|
|
4310
|
+
function getSnapshotStackData($xeTable) {
|
|
4311
|
+
const reactData = $xeTable;
|
|
4312
|
+
const internalData = $xeTable;
|
|
4313
|
+
const { editStore } = reactData;
|
|
4314
|
+
const { afterFullData } = internalData;
|
|
4315
|
+
const { selected, actived } = editStore;
|
|
4316
|
+
const { row: selectRow, column: selectColumn } = selected;
|
|
4317
|
+
const { row: editRow, column: editColumn } = actived;
|
|
4318
|
+
const stackObj = {
|
|
4319
|
+
selectActiveInfo: selectRow && selectColumn
|
|
4320
|
+
? {
|
|
4321
|
+
rowid: getRowid($xeTable, selectRow),
|
|
4322
|
+
colid: selectColumn.id
|
|
4323
|
+
}
|
|
4324
|
+
: undefined,
|
|
4325
|
+
editActiveInfo: editRow && editColumn
|
|
4326
|
+
? {
|
|
4327
|
+
rowid: getRowid($xeTable, editRow),
|
|
4328
|
+
colid: editColumn.id
|
|
4329
|
+
}
|
|
4330
|
+
: undefined,
|
|
4331
|
+
visibleData: XEUtils.clone(afterFullData, true),
|
|
4332
|
+
visibleColumn: []
|
|
4333
|
+
};
|
|
4334
|
+
return $xeTable.getCellAreaPushStackObj ? $xeTable.getCellAreaPushStackObj(stackObj) : stackObj;
|
|
4335
|
+
}
|
|
4336
|
+
/**
|
|
4337
|
+
* 刷新栈视图
|
|
4338
|
+
*/
|
|
4339
|
+
function handleUpdateSnapshotStackData($xeTable, stackObj) {
|
|
4340
|
+
const reactData = $xeTable;
|
|
4341
|
+
const internalData = $xeTable;
|
|
4342
|
+
const { editStore } = reactData;
|
|
4343
|
+
const { fullAllDataRowIdData, fullColumnIdData } = internalData;
|
|
4344
|
+
if (!stackObj) {
|
|
4345
|
+
return;
|
|
4346
|
+
}
|
|
4347
|
+
const { visibleData, editActiveInfo, selectActiveInfo } = stackObj;
|
|
4348
|
+
const afterFullList = visibleData.map(item => {
|
|
4349
|
+
const rowid = getRowid($xeTable, item);
|
|
4350
|
+
const rest = fullAllDataRowIdData[rowid];
|
|
4351
|
+
let row = item;
|
|
4352
|
+
if (rest) {
|
|
4353
|
+
row = rest.row;
|
|
4354
|
+
Object.assign(row, item);
|
|
4355
|
+
}
|
|
4356
|
+
return row;
|
|
4357
|
+
});
|
|
4358
|
+
internalData.afterFullData = afterFullList;
|
|
4359
|
+
if ($xeTable.handleCellAreaSnapshotStackData) {
|
|
4360
|
+
$xeTable.handleCellAreaSnapshotStackData(stackObj);
|
|
4361
|
+
}
|
|
4362
|
+
else {
|
|
4363
|
+
const { selected } = editStore;
|
|
4364
|
+
const mouseOpts = $xeTable.computeMouseOpts;
|
|
4365
|
+
let selectRowid = '';
|
|
4366
|
+
let selectColid = '';
|
|
4367
|
+
if (editActiveInfo) {
|
|
4368
|
+
selectRowid = editActiveInfo.rowid;
|
|
4369
|
+
selectColid = editActiveInfo.colid;
|
|
4370
|
+
}
|
|
4371
|
+
else if (selectActiveInfo) {
|
|
4372
|
+
selectRowid = selectActiveInfo.rowid;
|
|
4373
|
+
selectColid = selectActiveInfo.colid;
|
|
4374
|
+
}
|
|
4375
|
+
if (selectRowid && selectColid && mouseOpts.selected) {
|
|
4376
|
+
const editRow = fullAllDataRowIdData[selectRowid] ? fullAllDataRowIdData[selectRowid].row : null;
|
|
4377
|
+
const editColumn = fullColumnIdData[selectColid] ? fullColumnIdData[selectColid].column : null;
|
|
4378
|
+
if (editRow && editColumn) {
|
|
4379
|
+
const params = {
|
|
4380
|
+
row: editRow,
|
|
4381
|
+
column: editColumn
|
|
4382
|
+
};
|
|
4383
|
+
selected.row = editRow;
|
|
4384
|
+
selected.column = editColumn;
|
|
4385
|
+
selected.args = params;
|
|
4386
|
+
$xeTable.$nextTick(() => {
|
|
4387
|
+
$xeTable.addCellSelectedClass();
|
|
4388
|
+
});
|
|
4389
|
+
}
|
|
4390
|
+
}
|
|
4391
|
+
}
|
|
4392
|
+
}
|
|
4296
4393
|
const tableMethods = {
|
|
4297
4394
|
callSlot(slotFunc, params, h, vNodes) {
|
|
4298
4395
|
const $xeTable = this;
|
|
@@ -7023,18 +7120,20 @@ const tableMethods = {
|
|
|
7023
7120
|
const { isLastEnterAppendRow, beforeEnterMethod, enterMethod, isLastTabAppendRow, beforeTabMethod, tabMethod } = keyboardOpts;
|
|
7024
7121
|
const { selected, actived } = editStore;
|
|
7025
7122
|
const { keyCode } = evnt;
|
|
7026
|
-
const
|
|
7027
|
-
const
|
|
7028
|
-
const
|
|
7029
|
-
const
|
|
7030
|
-
const isSpacebar =
|
|
7031
|
-
const isLeftArrow =
|
|
7032
|
-
const isUpArrow =
|
|
7033
|
-
const isRightArrow =
|
|
7034
|
-
const isDwArrow =
|
|
7035
|
-
const hasDeleteKey =
|
|
7036
|
-
const
|
|
7037
|
-
const
|
|
7123
|
+
const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE);
|
|
7124
|
+
const hasBackspaceKey = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.BACKSPACE);
|
|
7125
|
+
const isTab = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.TAB);
|
|
7126
|
+
const isEnter = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ENTER);
|
|
7127
|
+
const isSpacebar = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.SPACEBAR);
|
|
7128
|
+
const isLeftArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_LEFT);
|
|
7129
|
+
const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP);
|
|
7130
|
+
const isRightArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_RIGHT);
|
|
7131
|
+
const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN);
|
|
7132
|
+
const hasDeleteKey = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.DELETE);
|
|
7133
|
+
const isY = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.Y);
|
|
7134
|
+
const isZ = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.Z);
|
|
7135
|
+
const isF2 = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.F2);
|
|
7136
|
+
const isContextMenu = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.CONTEXT_MENU);
|
|
7038
7137
|
const isControlKey = hasControlKey(evnt);
|
|
7039
7138
|
const hasShiftKey = evnt.shiftKey;
|
|
7040
7139
|
const hasAltKey = evnt.altKey;
|
|
@@ -7043,6 +7142,7 @@ const tableMethods = {
|
|
|
7043
7142
|
const isEditStatus = isEnableConf(editConfig) && actived.column && actived.row;
|
|
7044
7143
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
7045
7144
|
const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
|
|
7145
|
+
const selectColumn = selected.column;
|
|
7046
7146
|
if (operCtxMenu) {
|
|
7047
7147
|
// 如果配置了右键菜单; 支持方向键操作、回车
|
|
7048
7148
|
evnt.preventDefault();
|
|
@@ -7074,10 +7174,10 @@ const tableMethods = {
|
|
|
7074
7174
|
}
|
|
7075
7175
|
}
|
|
7076
7176
|
}
|
|
7077
|
-
else if (keyboardConfig && isSpacebar && keyboardOpts.isChecked && selected.row &&
|
|
7177
|
+
else if (keyboardConfig && isSpacebar && keyboardOpts.isChecked && selected.row && selectColumn && (selectColumn.type === 'checkbox' || selectColumn.type === 'radio')) {
|
|
7078
7178
|
// 空格键支持选中复选框
|
|
7079
7179
|
evnt.preventDefault();
|
|
7080
|
-
if (
|
|
7180
|
+
if (selectColumn.type === 'checkbox') {
|
|
7081
7181
|
$xeTable.handleToggleCheckRowEvent(evnt, selected.args);
|
|
7082
7182
|
}
|
|
7083
7183
|
else {
|
|
@@ -7087,8 +7187,7 @@ const tableMethods = {
|
|
|
7087
7187
|
else if (isF2 && isEnableConf(editConfig)) {
|
|
7088
7188
|
if (!isEditStatus) {
|
|
7089
7189
|
// 如果按下了 F2 键
|
|
7090
|
-
if (selected.row &&
|
|
7091
|
-
evnt.stopPropagation();
|
|
7190
|
+
if (selected.row && selectColumn) {
|
|
7092
7191
|
evnt.preventDefault();
|
|
7093
7192
|
$xeTable.handleEdit(selected.args, evnt);
|
|
7094
7193
|
}
|
|
@@ -7096,7 +7195,7 @@ const tableMethods = {
|
|
|
7096
7195
|
}
|
|
7097
7196
|
else if (isContextMenu) {
|
|
7098
7197
|
// 如果按下上下文键
|
|
7099
|
-
internalData._keyCtx = selected.row &&
|
|
7198
|
+
internalData._keyCtx = selected.row && selectColumn && bodyMenu.length;
|
|
7100
7199
|
clearTimeout(internalData.keyCtxTimeout);
|
|
7101
7200
|
internalData.keyCtxTimeout = setTimeout(() => {
|
|
7102
7201
|
internalData._keyCtx = false;
|
|
@@ -7119,89 +7218,91 @@ const tableMethods = {
|
|
|
7119
7218
|
// 如果是激活状态,退则出到上一行/下一行
|
|
7120
7219
|
if (selected.row || actived.row) {
|
|
7121
7220
|
const activeRow = selected.row || actived.row;
|
|
7122
|
-
const activeColumn =
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
if (
|
|
7126
|
-
|
|
7221
|
+
const activeColumn = selectColumn || actived.column;
|
|
7222
|
+
if (activeColumn) {
|
|
7223
|
+
const activeParams = selected.row ? selected.args : actived.args;
|
|
7224
|
+
if (hasShiftKey) {
|
|
7225
|
+
if (keyboardOpts.enterToTab) {
|
|
7226
|
+
$xeTable.moveTabSelected(activeParams, hasShiftKey, evnt);
|
|
7227
|
+
}
|
|
7228
|
+
else {
|
|
7229
|
+
$xeTable.moveEnterSelected(activeParams, isLeftArrow, true, isRightArrow, false, evnt);
|
|
7230
|
+
}
|
|
7127
7231
|
}
|
|
7128
7232
|
else {
|
|
7129
|
-
$xeTable.
|
|
7130
|
-
|
|
7131
|
-
|
|
7132
|
-
|
|
7133
|
-
|
|
7134
|
-
|
|
7135
|
-
|
|
7136
|
-
|
|
7137
|
-
|
|
7138
|
-
|
|
7139
|
-
|
|
7140
|
-
|
|
7141
|
-
|
|
7142
|
-
|
|
7143
|
-
|
|
7144
|
-
|
|
7145
|
-
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
|
|
7149
|
-
|
|
7150
|
-
|
|
7151
|
-
|
|
7152
|
-
|
|
7153
|
-
|
|
7154
|
-
|
|
7233
|
+
const _rowIndex = $xeTable.getVTRowIndex(activeRow);
|
|
7234
|
+
const _columnIndex = $xeTable.getVTColumnIndex(activeColumn);
|
|
7235
|
+
if (keyboardOpts.enterToTab) {
|
|
7236
|
+
const ttrParams = {
|
|
7237
|
+
row: activeRow,
|
|
7238
|
+
rowIndex: $xeTable.getRowIndex(activeRow),
|
|
7239
|
+
$rowIndex: $xeTable.getVMRowIndex(activeRow),
|
|
7240
|
+
_rowIndex,
|
|
7241
|
+
column: activeColumn,
|
|
7242
|
+
columnIndex: $xeTable.getColumnIndex(activeColumn),
|
|
7243
|
+
$columnIndex: $xeTable.getVMColumnIndex(activeColumn),
|
|
7244
|
+
_columnIndex,
|
|
7245
|
+
$table: $xeTable
|
|
7246
|
+
};
|
|
7247
|
+
if (!beforeTabMethod || beforeTabMethod(ttrParams) !== false) {
|
|
7248
|
+
evnt.preventDefault();
|
|
7249
|
+
// 最后一行按下Tab键,自动追加一行
|
|
7250
|
+
if (isLastTabAppendRow) {
|
|
7251
|
+
const newColumn = visibleColumn[0];
|
|
7252
|
+
if (_rowIndex >= afterFullData.length - 1 && _columnIndex >= visibleColumn.length - 1) {
|
|
7253
|
+
if (actived.row) {
|
|
7254
|
+
$xeTable.handleClearEdit(evnt);
|
|
7255
|
+
}
|
|
7256
|
+
$xeTable.insertAt({}, -1).then(({ row: newRow }) => {
|
|
7257
|
+
$xeTable.scrollToRow(newRow, newColumn);
|
|
7258
|
+
$xeTable.handleSelected(Object.assign(Object.assign({}, activeParams), { row: newRow, column: newColumn }), evnt);
|
|
7259
|
+
});
|
|
7260
|
+
$xeTable.dispatchEvent('tab-append-row', ttrParams, evnt);
|
|
7261
|
+
return;
|
|
7155
7262
|
}
|
|
7156
|
-
$xeTable.insertAt({}, -1).then(({ row: newRow }) => {
|
|
7157
|
-
$xeTable.scrollToRow(newRow, newColumn);
|
|
7158
|
-
$xeTable.handleSelected(Object.assign(Object.assign({}, activeParams), { row: newRow, column: newColumn }), evnt);
|
|
7159
|
-
});
|
|
7160
|
-
$xeTable.dispatchEvent('tab-append-row', ttrParams, evnt);
|
|
7161
|
-
return;
|
|
7162
7263
|
}
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
|
|
7166
|
-
|
|
7167
|
-
|
|
7168
|
-
|
|
7264
|
+
if (tabMethod) {
|
|
7265
|
+
tabMethod(ttrParams);
|
|
7266
|
+
}
|
|
7267
|
+
else {
|
|
7268
|
+
$xeTable.moveTabSelected(activeParams, hasShiftKey, evnt);
|
|
7269
|
+
}
|
|
7169
7270
|
}
|
|
7170
7271
|
}
|
|
7171
|
-
|
|
7172
|
-
|
|
7173
|
-
|
|
7174
|
-
|
|
7175
|
-
|
|
7176
|
-
|
|
7177
|
-
|
|
7178
|
-
|
|
7179
|
-
|
|
7180
|
-
|
|
7181
|
-
|
|
7182
|
-
|
|
7183
|
-
|
|
7184
|
-
|
|
7185
|
-
|
|
7186
|
-
|
|
7187
|
-
|
|
7188
|
-
|
|
7189
|
-
|
|
7190
|
-
|
|
7191
|
-
|
|
7192
|
-
|
|
7193
|
-
|
|
7194
|
-
|
|
7272
|
+
else {
|
|
7273
|
+
const etrParams = {
|
|
7274
|
+
row: activeRow,
|
|
7275
|
+
rowIndex: $xeTable.getRowIndex(activeRow),
|
|
7276
|
+
$rowIndex: $xeTable.getVMRowIndex(activeRow),
|
|
7277
|
+
_rowIndex,
|
|
7278
|
+
column: activeColumn,
|
|
7279
|
+
columnIndex: $xeTable.getColumnIndex(activeColumn),
|
|
7280
|
+
$columnIndex: $xeTable.getVMColumnIndex(activeColumn),
|
|
7281
|
+
_columnIndex,
|
|
7282
|
+
$table: $xeTable
|
|
7283
|
+
};
|
|
7284
|
+
if (!beforeEnterMethod || beforeEnterMethod(etrParams) !== false) {
|
|
7285
|
+
evnt.preventDefault();
|
|
7286
|
+
// 最后一行按下回车键,自动追加一行
|
|
7287
|
+
if (isLastEnterAppendRow) {
|
|
7288
|
+
if (_rowIndex >= afterFullData.length - 1) {
|
|
7289
|
+
$xeTable.insertAt({}, -1).then(({ row: newRow }) => {
|
|
7290
|
+
$xeTable.scrollToRow(newRow, selectColumn);
|
|
7291
|
+
$xeTable.handleSelected(Object.assign(Object.assign({}, activeParams), { row: newRow }), evnt);
|
|
7292
|
+
});
|
|
7293
|
+
$xeTable.dispatchEvent('enter-append-row', etrParams, evnt);
|
|
7294
|
+
return;
|
|
7295
|
+
}
|
|
7195
7296
|
}
|
|
7196
|
-
|
|
7197
|
-
|
|
7198
|
-
|
|
7199
|
-
|
|
7200
|
-
|
|
7201
|
-
|
|
7202
|
-
|
|
7297
|
+
if (enterMethod) {
|
|
7298
|
+
enterMethod(etrParams);
|
|
7299
|
+
}
|
|
7300
|
+
else {
|
|
7301
|
+
if (actived.row) {
|
|
7302
|
+
$xeTable.handleClearEdit(evnt);
|
|
7303
|
+
}
|
|
7304
|
+
$xeTable.moveEnterSelected(activeParams, isLeftArrow, false, isRightArrow, true, evnt);
|
|
7203
7305
|
}
|
|
7204
|
-
$xeTable.moveEnterSelected(activeParams, isLeftArrow, false, isRightArrow, true, evnt);
|
|
7205
7306
|
}
|
|
7206
7307
|
}
|
|
7207
7308
|
}
|
|
@@ -7229,7 +7330,7 @@ const tableMethods = {
|
|
|
7229
7330
|
else if (operArrow && keyboardConfig && keyboardOpts.isArrow) {
|
|
7230
7331
|
if (!isEditStatus) {
|
|
7231
7332
|
// 如果按下了方向键
|
|
7232
|
-
if (mouseOpts.selected && selected.row &&
|
|
7333
|
+
if (mouseOpts.selected && selected.row && selectColumn) {
|
|
7233
7334
|
$xeTable.moveArrowSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
|
|
7234
7335
|
}
|
|
7235
7336
|
else {
|
|
@@ -7248,59 +7349,61 @@ const tableMethods = {
|
|
|
7248
7349
|
// 如果按下了 Tab 键切换
|
|
7249
7350
|
if (selected.row || actived.row) {
|
|
7250
7351
|
const activeRow = selected.row || actived.row;
|
|
7251
|
-
const activeColumn =
|
|
7252
|
-
|
|
7253
|
-
|
|
7254
|
-
|
|
7255
|
-
|
|
7256
|
-
|
|
7257
|
-
|
|
7258
|
-
|
|
7259
|
-
|
|
7260
|
-
|
|
7261
|
-
|
|
7262
|
-
|
|
7263
|
-
|
|
7264
|
-
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
|
|
7268
|
-
|
|
7269
|
-
|
|
7270
|
-
|
|
7271
|
-
|
|
7352
|
+
const activeColumn = selectColumn || actived.column;
|
|
7353
|
+
if (activeColumn) {
|
|
7354
|
+
const activeParams = selected.row ? selected.args : actived.args;
|
|
7355
|
+
const _rowIndex = $xeTable.getVTRowIndex(activeRow);
|
|
7356
|
+
const _columnIndex = $xeTable.getVTColumnIndex(activeColumn);
|
|
7357
|
+
const ttrParams = {
|
|
7358
|
+
row: activeRow,
|
|
7359
|
+
rowIndex: $xeTable.getRowIndex(activeRow),
|
|
7360
|
+
$rowIndex: $xeTable.getVMRowIndex(activeRow),
|
|
7361
|
+
_rowIndex,
|
|
7362
|
+
column: activeColumn,
|
|
7363
|
+
columnIndex: $xeTable.getColumnIndex(activeColumn),
|
|
7364
|
+
$columnIndex: $xeTable.getVMColumnIndex(activeColumn),
|
|
7365
|
+
_columnIndex,
|
|
7366
|
+
$table: $xeTable
|
|
7367
|
+
};
|
|
7368
|
+
if (!beforeTabMethod || beforeTabMethod(ttrParams) !== false) {
|
|
7369
|
+
evnt.preventDefault();
|
|
7370
|
+
// 最后一行按下Tab键,自动追加一行
|
|
7371
|
+
if (isLastTabAppendRow) {
|
|
7372
|
+
const newColumn = visibleColumn[0];
|
|
7373
|
+
if (_rowIndex >= afterFullData.length - 1 && _columnIndex >= visibleColumn.length - 1) {
|
|
7374
|
+
if (actived.row) {
|
|
7375
|
+
$xeTable.handleClearEdit(evnt);
|
|
7376
|
+
}
|
|
7377
|
+
$xeTable.insertAt({}, -1).then(({ row: newRow }) => {
|
|
7378
|
+
$xeTable.scrollToRow(newRow, newColumn);
|
|
7379
|
+
$xeTable.handleSelected(Object.assign(Object.assign({}, activeParams), { row: newRow, column: newColumn }), evnt);
|
|
7380
|
+
});
|
|
7381
|
+
$xeTable.dispatchEvent('tab-append-row', ttrParams, evnt);
|
|
7382
|
+
return;
|
|
7383
|
+
}
|
|
7384
|
+
}
|
|
7385
|
+
if (tabMethod) {
|
|
7386
|
+
tabMethod(ttrParams);
|
|
7387
|
+
}
|
|
7388
|
+
else {
|
|
7272
7389
|
if (actived.row) {
|
|
7273
7390
|
$xeTable.handleClearEdit(evnt);
|
|
7274
7391
|
}
|
|
7275
|
-
$xeTable.
|
|
7276
|
-
$xeTable.scrollToRow(newRow, newColumn);
|
|
7277
|
-
$xeTable.handleSelected(Object.assign(Object.assign({}, activeParams), { row: newRow, column: newColumn }), evnt);
|
|
7278
|
-
});
|
|
7279
|
-
$xeTable.dispatchEvent('tab-append-row', ttrParams, evnt);
|
|
7280
|
-
return;
|
|
7281
|
-
}
|
|
7282
|
-
}
|
|
7283
|
-
if (tabMethod) {
|
|
7284
|
-
tabMethod(ttrParams);
|
|
7285
|
-
}
|
|
7286
|
-
else {
|
|
7287
|
-
if (actived.row) {
|
|
7288
|
-
$xeTable.handleClearEdit(evnt);
|
|
7392
|
+
$xeTable.moveTabSelected(activeParams, hasShiftKey, evnt);
|
|
7289
7393
|
}
|
|
7290
|
-
$xeTable.moveTabSelected(activeParams, hasShiftKey, evnt);
|
|
7291
7394
|
}
|
|
7292
7395
|
}
|
|
7293
7396
|
}
|
|
7294
7397
|
}
|
|
7295
|
-
else if (keyboardConfig && keyboardOpts.isDel && hasDeleteKey && isEnableConf(editConfig) && (selected.row ||
|
|
7398
|
+
else if (keyboardConfig && keyboardOpts.isDel && hasDeleteKey && isEnableConf(editConfig) && (selected.row || selectColumn)) {
|
|
7296
7399
|
// 如果是删除键
|
|
7297
7400
|
if (!isEditStatus) {
|
|
7298
7401
|
const { delMethod } = keyboardOpts;
|
|
7299
7402
|
const params = {
|
|
7300
7403
|
row: selected.row,
|
|
7301
7404
|
rowIndex: $xeTable.getRowIndex(selected.row),
|
|
7302
|
-
column:
|
|
7303
|
-
columnIndex: $xeTable.getColumnIndex(
|
|
7405
|
+
column: selectColumn,
|
|
7406
|
+
columnIndex: $xeTable.getColumnIndex(selectColumn),
|
|
7304
7407
|
$table: $xeTable,
|
|
7305
7408
|
$grid: $xeGrid,
|
|
7306
7409
|
$gantt: $xeGantt
|
|
@@ -7311,7 +7414,11 @@ const tableMethods = {
|
|
|
7311
7414
|
delMethod(params);
|
|
7312
7415
|
}
|
|
7313
7416
|
else {
|
|
7314
|
-
|
|
7417
|
+
const selectCellValue = getCellValue(selected.row, selectColumn);
|
|
7418
|
+
if (selectCellValue !== null) {
|
|
7419
|
+
$xeTable.handlePushStack();
|
|
7420
|
+
setCellValue(selected.row, selectColumn, null);
|
|
7421
|
+
}
|
|
7315
7422
|
}
|
|
7316
7423
|
// 如果按下 del 键,更新表尾数据
|
|
7317
7424
|
$xeTable.updateFooter();
|
|
@@ -7319,16 +7426,16 @@ const tableMethods = {
|
|
|
7319
7426
|
}
|
|
7320
7427
|
}
|
|
7321
7428
|
}
|
|
7322
|
-
else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selected.row ||
|
|
7429
|
+
else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selected.row || selectColumn)) {
|
|
7323
7430
|
if (!isEditStatus) {
|
|
7324
|
-
const {
|
|
7431
|
+
const { backMethod } = keyboardOpts;
|
|
7325
7432
|
// 如果是删除键
|
|
7326
|
-
if (keyboardOpts.isDel && isEnableConf(editConfig) && (selected.row ||
|
|
7433
|
+
if (keyboardOpts.isDel && isEnableConf(editConfig) && (selected.row || selectColumn)) {
|
|
7327
7434
|
const params = {
|
|
7328
7435
|
row: selected.row,
|
|
7329
7436
|
rowIndex: $xeTable.getRowIndex(selected.row),
|
|
7330
|
-
column:
|
|
7331
|
-
columnIndex: $xeTable.getColumnIndex(
|
|
7437
|
+
column: selectColumn,
|
|
7438
|
+
columnIndex: $xeTable.getColumnIndex(selectColumn),
|
|
7332
7439
|
$table: $xeTable,
|
|
7333
7440
|
$grid: $xeGrid,
|
|
7334
7441
|
$gantt: $xeGantt
|
|
@@ -7339,11 +7446,9 @@ const tableMethods = {
|
|
|
7339
7446
|
backMethod(params);
|
|
7340
7447
|
}
|
|
7341
7448
|
else {
|
|
7342
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
}
|
|
7346
|
-
$xeTable.handleEdit(selected.args, evnt);
|
|
7449
|
+
$xeTable.handleEdit(params, evnt, {
|
|
7450
|
+
isClear: true
|
|
7451
|
+
});
|
|
7347
7452
|
}
|
|
7348
7453
|
$xeTable.dispatchEvent('cell-backspace-value', params, evnt);
|
|
7349
7454
|
}
|
|
@@ -7368,20 +7473,32 @@ const tableMethods = {
|
|
|
7368
7473
|
.then(() => $xeTable.triggerCurrentRowEvent(evnt, params));
|
|
7369
7474
|
}
|
|
7370
7475
|
}
|
|
7476
|
+
else if (keyboardConfig && keyboardOpts.isUndoRedo && isControlKey && (isZ || isY) && !hasEventInputTarget(evnt.target)) {
|
|
7477
|
+
if (isY || (hasShiftKey && isZ)) {
|
|
7478
|
+
// 恢复被撤销的操作:Ctrl + Y 或 Ctrl + Shift + Z
|
|
7479
|
+
evnt.preventDefault();
|
|
7480
|
+
$xeTable.handleRedoStackEvent(evnt);
|
|
7481
|
+
}
|
|
7482
|
+
else if (isZ) {
|
|
7483
|
+
// 撤销上一步操作:Ctrl + Z
|
|
7484
|
+
evnt.preventDefault();
|
|
7485
|
+
$xeTable.handleUndoStackEvent(evnt);
|
|
7486
|
+
}
|
|
7487
|
+
}
|
|
7371
7488
|
else if (keyboardConfig && keyboardOpts.isEdit && !isControlKey && (isSpacebar || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 96 && keyCode <= 111) || (keyCode >= 186 && keyCode <= 192) || (keyCode >= 219 && keyCode <= 222))) {
|
|
7372
|
-
const { editMethod } = keyboardOpts;
|
|
7489
|
+
const { editMode, editMethod } = keyboardOpts;
|
|
7373
7490
|
// 启用编辑后,空格键功能将失效
|
|
7374
7491
|
// if (isSpacebar) {
|
|
7375
7492
|
// evnt.preventDefault()
|
|
7376
7493
|
// }
|
|
7377
7494
|
// 如果是按下非功能键之外允许直接编辑
|
|
7378
|
-
if (
|
|
7495
|
+
if (selectColumn && selected.row && isEnableConf(selectColumn.editRender)) {
|
|
7379
7496
|
const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
|
|
7380
7497
|
const params = {
|
|
7381
7498
|
row: selected.row,
|
|
7382
7499
|
rowIndex: $xeTable.getRowIndex(selected.row),
|
|
7383
|
-
column:
|
|
7384
|
-
columnIndex: $xeTable.getColumnIndex(
|
|
7500
|
+
column: selectColumn,
|
|
7501
|
+
columnIndex: $xeTable.getColumnIndex(selectColumn),
|
|
7385
7502
|
$table: $xeTable,
|
|
7386
7503
|
$grid: $xeGrid,
|
|
7387
7504
|
$gantt: $xeGantt
|
|
@@ -7391,8 +7508,14 @@ const tableMethods = {
|
|
|
7391
7508
|
editMethod(params);
|
|
7392
7509
|
}
|
|
7393
7510
|
else {
|
|
7394
|
-
|
|
7395
|
-
|
|
7511
|
+
let isClearValue = false;
|
|
7512
|
+
// 追加方式与覆盖式
|
|
7513
|
+
if (editMode !== 'insert') {
|
|
7514
|
+
isClearValue = true;
|
|
7515
|
+
}
|
|
7516
|
+
$xeTable.handleEdit(params, evnt, {
|
|
7517
|
+
isClear: isClearValue
|
|
7518
|
+
});
|
|
7396
7519
|
}
|
|
7397
7520
|
}
|
|
7398
7521
|
}
|
|
@@ -9236,6 +9359,7 @@ const tableMethods = {
|
|
|
9236
9359
|
afterFullData.splice(nafIndex, 0, dragRow);
|
|
9237
9360
|
tableFullData.splice(ntfIndex, 0, dragRow);
|
|
9238
9361
|
}
|
|
9362
|
+
$xeTable.handleClearStack();
|
|
9239
9363
|
$xeTable.handleTableData(treeConfig && transform);
|
|
9240
9364
|
$xeTable.cacheRowMap(false);
|
|
9241
9365
|
updateScrollYStatus($xeTable);
|
|
@@ -9929,6 +10053,7 @@ const tableMethods = {
|
|
|
9929
10053
|
column.renderSortNumber = sortIndex;
|
|
9930
10054
|
}
|
|
9931
10055
|
});
|
|
10056
|
+
$xeTable.handleClearStack();
|
|
9932
10057
|
if (mouseConfig) {
|
|
9933
10058
|
if ($xeTable.clearSelected) {
|
|
9934
10059
|
$xeTable.clearSelected();
|
|
@@ -12434,12 +12559,71 @@ const tableMethods = {
|
|
|
12434
12559
|
const internalData = $xeTable;
|
|
12435
12560
|
return loadTableData($xeTable, internalData.tableSynchData, false, true);
|
|
12436
12561
|
},
|
|
12562
|
+
handlePushStack() {
|
|
12563
|
+
const $xeTable = this;
|
|
12564
|
+
const internalData = $xeTable;
|
|
12565
|
+
const keyboardOpts = $xeTable.computeKeyboardOpts;
|
|
12566
|
+
if (!keyboardOpts.isUndoRedo) {
|
|
12567
|
+
return;
|
|
12568
|
+
}
|
|
12569
|
+
const { stackHistoryStore } = internalData;
|
|
12570
|
+
const stackObj = getSnapshotStackData($xeTable);
|
|
12571
|
+
stackHistoryStore.undoStacks.push(stackObj);
|
|
12572
|
+
stackHistoryStore.redoStacks = [];
|
|
12573
|
+
truncateStackHistory($xeTable);
|
|
12574
|
+
},
|
|
12575
|
+
handleUndoStackEvent(evnt) {
|
|
12576
|
+
const $xeTable = this;
|
|
12577
|
+
const internalData = $xeTable;
|
|
12578
|
+
const { stackHistoryStore } = internalData;
|
|
12579
|
+
const { undoStacks, redoStacks } = stackHistoryStore;
|
|
12580
|
+
if (undoStacks.length) {
|
|
12581
|
+
const stackObj = getSnapshotStackData($xeTable);
|
|
12582
|
+
redoStacks.push(stackObj);
|
|
12583
|
+
handleUpdateSnapshotStackData($xeTable, undoStacks.pop());
|
|
12584
|
+
if (evnt) {
|
|
12585
|
+
$xeTable.dispatchEvent('undo', {}, evnt);
|
|
12586
|
+
}
|
|
12587
|
+
return $xeTable.$nextTick(() => {
|
|
12588
|
+
return { status: true };
|
|
12589
|
+
});
|
|
12590
|
+
}
|
|
12591
|
+
return Promise.resolve({ status: false });
|
|
12592
|
+
},
|
|
12593
|
+
handleRedoStackEvent(evnt) {
|
|
12594
|
+
const $xeTable = this;
|
|
12595
|
+
const internalData = $xeTable;
|
|
12596
|
+
const { stackHistoryStore } = internalData;
|
|
12597
|
+
const { undoStacks, redoStacks } = stackHistoryStore;
|
|
12598
|
+
if (redoStacks.length) {
|
|
12599
|
+
const stackObj = getSnapshotStackData($xeTable);
|
|
12600
|
+
undoStacks.push(stackObj);
|
|
12601
|
+
handleUpdateSnapshotStackData($xeTable, redoStacks.pop());
|
|
12602
|
+
if (evnt) {
|
|
12603
|
+
$xeTable.dispatchEvent('redo', {}, evnt);
|
|
12604
|
+
}
|
|
12605
|
+
return $xeTable.$nextTick(() => {
|
|
12606
|
+
return { status: true };
|
|
12607
|
+
});
|
|
12608
|
+
}
|
|
12609
|
+
return Promise.resolve({ status: false });
|
|
12610
|
+
},
|
|
12611
|
+
handleClearStack() {
|
|
12612
|
+
const $xeTable = this;
|
|
12613
|
+
const internalData = $xeTable;
|
|
12614
|
+
const { stackHistoryStore } = internalData;
|
|
12615
|
+
stackHistoryStore.undoStacks = [];
|
|
12616
|
+
stackHistoryStore.redoStacks = [];
|
|
12617
|
+
},
|
|
12437
12618
|
updateZindex() {
|
|
12438
|
-
|
|
12439
|
-
|
|
12619
|
+
const $xeTable = this;
|
|
12620
|
+
const props = $xeTable;
|
|
12621
|
+
const internalData = $xeTable;
|
|
12622
|
+
if (props.zIndex) {
|
|
12623
|
+
internalData.tZindex = props.zIndex;
|
|
12440
12624
|
}
|
|
12441
|
-
else if (
|
|
12442
|
-
|
|
12625
|
+
else if (internalData.tZindex < getLastZIndex()) {
|
|
12626
|
+
internalData.tZindex = nextZIndex();
|
|
12443
12627
|
}
|
|
12444
12628
|
},
|
|
12445
12629
|
updateCellAreas() {
|
|
@@ -12452,6 +12636,14 @@ const tableMethods = {
|
|
|
12452
12636
|
}
|
|
12453
12637
|
return $xeTable.$nextTick();
|
|
12454
12638
|
},
|
|
12639
|
+
undo() {
|
|
12640
|
+
const $xeTable = this;
|
|
12641
|
+
return $xeTable.handleUndoStackEvent(null);
|
|
12642
|
+
},
|
|
12643
|
+
redo() {
|
|
12644
|
+
const $xeTable = this;
|
|
12645
|
+
return $xeTable.handleRedoStackEvent(null);
|
|
12646
|
+
},
|
|
12455
12647
|
dispatchEvent(type, params, evnt) {
|
|
12456
12648
|
const $xeTable = this;
|
|
12457
12649
|
const $xeGrid = $xeTable.$xeGrid;
|
|
@@ -12464,19 +12656,24 @@ const tableMethods = {
|
|
|
12464
12656
|
$xeTable.dispatchEvent(type, params, evnt);
|
|
12465
12657
|
},
|
|
12466
12658
|
focus() {
|
|
12467
|
-
|
|
12468
|
-
|
|
12659
|
+
const $xeTable = this;
|
|
12660
|
+
const internalData = $xeTable;
|
|
12661
|
+
internalData.isActivated = true;
|
|
12662
|
+
return $xeTable.$nextTick();
|
|
12469
12663
|
},
|
|
12470
12664
|
blur() {
|
|
12471
|
-
|
|
12472
|
-
|
|
12665
|
+
const $xeTable = this;
|
|
12666
|
+
const internalData = $xeTable;
|
|
12667
|
+
internalData.isActivated = false;
|
|
12668
|
+
return $xeTable.$nextTick();
|
|
12473
12669
|
},
|
|
12474
12670
|
/**
|
|
12475
12671
|
* 已废弃,被 connectToolbar 替换
|
|
12476
12672
|
* @deprecated
|
|
12477
12673
|
*/
|
|
12478
12674
|
connect($toolbar) {
|
|
12479
|
-
|
|
12675
|
+
const $xeTable = this;
|
|
12676
|
+
return $xeTable.connectToolbar($toolbar);
|
|
12480
12677
|
},
|
|
12481
12678
|
/**
|
|
12482
12679
|
* 连接工具栏
|
|
@@ -12484,14 +12681,15 @@ const tableMethods = {
|
|
|
12484
12681
|
*/
|
|
12485
12682
|
connectToolbar($toolbar) {
|
|
12486
12683
|
const $xeTable = this;
|
|
12684
|
+
const internalData = $xeTable;
|
|
12487
12685
|
if ($toolbar && $toolbar.syncUpdate) {
|
|
12488
|
-
$toolbar.syncUpdate({ collectColumn:
|
|
12686
|
+
$toolbar.syncUpdate({ collectColumn: internalData.collectColumn, $table: $xeTable });
|
|
12489
12687
|
this.$toolbar = $toolbar;
|
|
12490
12688
|
}
|
|
12491
12689
|
else {
|
|
12492
12690
|
errLog('vxe.error.barUnableLink');
|
|
12493
12691
|
}
|
|
12494
|
-
return
|
|
12692
|
+
return $xeTable.$nextTick();
|
|
12495
12693
|
},
|
|
12496
12694
|
handleConnectGanttView($ganttView) {
|
|
12497
12695
|
const $xeTable = this;
|
|
@@ -12510,17 +12708,19 @@ const tableMethods = {
|
|
|
12510
12708
|
* @deprecated
|
|
12511
12709
|
*/
|
|
12512
12710
|
getCell(row, column) {
|
|
12513
|
-
|
|
12711
|
+
const $xeTable = this;
|
|
12712
|
+
return $xeTable.getCellElement(row, column);
|
|
12514
12713
|
},
|
|
12515
12714
|
findRowIndexOf(list, row) {
|
|
12516
12715
|
return row ? XEUtils.findIndexOf(list, item => this.eqRow(item, row)) : -1;
|
|
12517
12716
|
},
|
|
12518
12717
|
eqRow(row1, row2) {
|
|
12718
|
+
const $xeTable = this;
|
|
12519
12719
|
if (row1 && row2) {
|
|
12520
12720
|
if (row1 === row2) {
|
|
12521
12721
|
return true;
|
|
12522
12722
|
}
|
|
12523
|
-
return getRowid(
|
|
12723
|
+
return getRowid($xeTable, row1) === getRowid($xeTable, row2);
|
|
12524
12724
|
}
|
|
12525
12725
|
return false;
|
|
12526
12726
|
},
|