vxe-table 4.1.3 → 4.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +3 -3
- package/README.md +3 -3
- package/README.zh-TW.md +2 -3
- package/es/edit/src/hook.js +189 -69
- package/es/form/src/form.js +2 -2
- package/es/input/src/input.js +8 -2
- package/es/table/src/body.js +6 -3
- package/es/table/src/table.js +44 -34
- package/es/v-x-e-table/src/conf.js +1 -1
- package/es/validator/src/hook.js +3 -3
- package/lib/edit/src/hook.js +243 -70
- package/lib/edit/src/hook.min.js +1 -1
- package/lib/form/src/form.js +2 -2
- package/lib/form/src/form.min.js +1 -1
- package/lib/index.umd.js +772 -209
- package/lib/index.umd.min.js +2 -1
- package/lib/input/src/input.js +10 -2
- package/lib/input/src/input.min.js +1 -1
- package/lib/table/src/body.js +6 -3
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/table.js +46 -36
- package/lib/table/src/table.min.js +1 -1
- package/lib/v-x-e-table/src/conf.js +1 -1
- package/lib/v-x-e-table/src/conf.min.js +1 -1
- package/lib/validator/src/hook.js +3 -3
- package/lib/validator/src/hook.min.js +1 -1
- package/package.json +4 -27
- package/packages/edit/src/hook.ts +183 -69
- package/packages/form/src/form.ts +2 -2
- package/packages/input/src/input.ts +9 -2
- package/packages/table/src/body.ts +6 -3
- package/packages/table/src/table.ts +43 -32
- package/packages/v-x-e-table/src/conf.ts +1 -1
- package/packages/v-x-e-table/src/renderer.ts +1 -1
- package/packages/validator/src/hook.ts +3 -3
- package/types/edit.d.ts +6 -3
- package/types/index.d.ts +1 -1
- package/types/plugins/pro.d.ts +6 -6
- package/types/table.d.ts +5 -0
- package/types/v-x-e-table/renderer.d.ts +4 -2
package/es/table/src/table.js
CHANGED
|
@@ -2072,8 +2072,10 @@ export default defineComponent({
|
|
|
2072
2072
|
var treeFullData = internalData.treeFullData;
|
|
2073
2073
|
var treeOpts = computeTreeOpts.value;
|
|
2074
2074
|
var fullData = [];
|
|
2075
|
+
var expandMaps = new Map();
|
|
2075
2076
|
XEUtils.eachTree(treeFullData, function (row, index, items, path, parent) {
|
|
2076
|
-
if (!parent || $xetable.findRowIndexOf(treeExpandeds, parent) > -1) {
|
|
2077
|
+
if (!parent || (expandMaps.has(parent) && $xetable.findRowIndexOf(treeExpandeds, parent) > -1)) {
|
|
2078
|
+
expandMaps.set(row, 1);
|
|
2077
2079
|
fullData.push(row);
|
|
2078
2080
|
}
|
|
2079
2081
|
}, treeOpts);
|
|
@@ -2258,18 +2260,13 @@ export default defineComponent({
|
|
|
2258
2260
|
var oRow = tableSourceData[rowIndex];
|
|
2259
2261
|
if (oRow && row) {
|
|
2260
2262
|
if (field) {
|
|
2261
|
-
|
|
2263
|
+
var newValue = XEUtils.get(record || row, field);
|
|
2264
|
+
XEUtils.set(row, field, newValue);
|
|
2265
|
+
XEUtils.set(oRow, field, newValue);
|
|
2262
2266
|
}
|
|
2263
2267
|
else {
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
XEUtils.clear(row, undefined);
|
|
2267
|
-
Object.assign(row, tablePrivateMethods.defineField(Object.assign({}, record)));
|
|
2268
|
-
tablePrivateMethods.cacheRowMap(true);
|
|
2269
|
-
}
|
|
2270
|
-
else {
|
|
2271
|
-
XEUtils.destructuring(oRow, XEUtils.clone(row, true));
|
|
2272
|
-
}
|
|
2268
|
+
var newRecord = XEUtils.clone(__assign({}, record), true);
|
|
2269
|
+
XEUtils.destructuring(oRow, Object.assign(row, newRecord));
|
|
2273
2270
|
}
|
|
2274
2271
|
}
|
|
2275
2272
|
reactData.tableData = tableData.slice(0);
|
|
@@ -2289,8 +2286,8 @@ export default defineComponent({
|
|
|
2289
2286
|
var tableSourceData = internalData.tableSourceData, fullDataRowIdData = internalData.fullDataRowIdData, fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
2290
2287
|
var treeOpts = computeTreeOpts.value;
|
|
2291
2288
|
var children = treeOpts.children;
|
|
2292
|
-
var
|
|
2293
|
-
var parentLevel =
|
|
2289
|
+
var parentRest = fullAllDataRowIdData[getRowid($xetable, row)];
|
|
2290
|
+
var parentLevel = parentRest ? parentRest.level : 0;
|
|
2294
2291
|
return tableMethods.createData(childRecords).then(function (rows) {
|
|
2295
2292
|
if (keepSource) {
|
|
2296
2293
|
var rowid_1 = getRowid($xetable, row);
|
|
@@ -3057,6 +3054,17 @@ export default defineComponent({
|
|
|
3057
3054
|
var treeOpts = computeTreeOpts.value;
|
|
3058
3055
|
var reserveSelection = [];
|
|
3059
3056
|
if (checkboxOpts.reserve) {
|
|
3057
|
+
var afterFullIdMaps_1 = {};
|
|
3058
|
+
if (treeConfig) {
|
|
3059
|
+
XEUtils.eachTree(afterFullData, function (row) {
|
|
3060
|
+
afterFullIdMaps_1[getRowid($xetable, row)] = 1;
|
|
3061
|
+
}, treeOpts);
|
|
3062
|
+
}
|
|
3063
|
+
else {
|
|
3064
|
+
afterFullData.forEach(function (row) {
|
|
3065
|
+
afterFullIdMaps_1[getRowid($xetable, row)] = 1;
|
|
3066
|
+
});
|
|
3067
|
+
}
|
|
3060
3068
|
XEUtils.each(checkboxReserveRowMap, function (oldRow, oldRowid) {
|
|
3061
3069
|
if (oldRow) {
|
|
3062
3070
|
if (isFull) {
|
|
@@ -3065,15 +3073,8 @@ export default defineComponent({
|
|
|
3065
3073
|
}
|
|
3066
3074
|
}
|
|
3067
3075
|
else {
|
|
3068
|
-
if (
|
|
3069
|
-
|
|
3070
|
-
reserveSelection.push(oldRow);
|
|
3071
|
-
}
|
|
3072
|
-
}
|
|
3073
|
-
else {
|
|
3074
|
-
if (!afterFullData.some(function (row) { return getRowid($xetable, row) === oldRowid; })) {
|
|
3075
|
-
reserveSelection.push(oldRow);
|
|
3076
|
-
}
|
|
3076
|
+
if (!afterFullIdMaps_1[oldRowid]) {
|
|
3077
|
+
reserveSelection.push(oldRow);
|
|
3077
3078
|
}
|
|
3078
3079
|
}
|
|
3079
3080
|
}
|
|
@@ -3124,11 +3125,12 @@ export default defineComponent({
|
|
|
3124
3125
|
* @param {Row} row 行对象
|
|
3125
3126
|
*/
|
|
3126
3127
|
setCurrentRow: function (row) {
|
|
3128
|
+
var rowOpts = computeRowOpts.value;
|
|
3127
3129
|
var el = refElem.value;
|
|
3128
3130
|
tableMethods.clearCurrentRow();
|
|
3129
3131
|
tableMethods.clearCurrentColumn();
|
|
3130
3132
|
reactData.currentRow = row;
|
|
3131
|
-
if (props.highlightCurrentRow) {
|
|
3133
|
+
if (rowOpts.isCurrent || props.highlightCurrentRow) {
|
|
3132
3134
|
if (el) {
|
|
3133
3135
|
XEUtils.arrayEach(el.querySelectorAll("[rowid=\"" + getRowid($xetable, row) + "\"]"), function (elem) { return addClass(elem, 'row--current'); });
|
|
3134
3136
|
}
|
|
@@ -3174,7 +3176,8 @@ export default defineComponent({
|
|
|
3174
3176
|
* 用于当前行,获取当前行的数据
|
|
3175
3177
|
*/
|
|
3176
3178
|
getCurrentRecord: function () {
|
|
3177
|
-
|
|
3179
|
+
var rowOpts = computeRowOpts.value;
|
|
3180
|
+
return rowOpts.isCurrent || props.highlightCurrentRow ? reactData.currentRow : null;
|
|
3178
3181
|
},
|
|
3179
3182
|
/**
|
|
3180
3183
|
* 用于单选行,获取当已选中的数据
|
|
@@ -3209,7 +3212,8 @@ export default defineComponent({
|
|
|
3209
3212
|
return null;
|
|
3210
3213
|
},
|
|
3211
3214
|
getCurrentColumn: function () {
|
|
3212
|
-
|
|
3215
|
+
var columnOpts = computeColumnOpts.value;
|
|
3216
|
+
return columnOpts.isCurrent || props.highlightCurrentColumn ? reactData.currentColumn : null;
|
|
3213
3217
|
},
|
|
3214
3218
|
/**
|
|
3215
3219
|
* 用于当前列,设置某列行为高亮状态
|
|
@@ -4012,6 +4016,7 @@ export default defineComponent({
|
|
|
4012
4016
|
var editOpts = computeEditOpts.value;
|
|
4013
4017
|
var treeOpts = computeTreeOpts.value;
|
|
4014
4018
|
var menuList = computeMenuList.value;
|
|
4019
|
+
var rowOpts = computeRowOpts.value;
|
|
4015
4020
|
var selected = editStore.selected, actived = editStore.actived;
|
|
4016
4021
|
var keyCode = evnt.keyCode;
|
|
4017
4022
|
var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE);
|
|
@@ -4092,7 +4097,7 @@ export default defineComponent({
|
|
|
4092
4097
|
internalData._keyCtx = false;
|
|
4093
4098
|
}, 1000);
|
|
4094
4099
|
}
|
|
4095
|
-
else if (isEnter && !isAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && highlightCurrentRow && currentRow))) {
|
|
4100
|
+
else if (isEnter && !isAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow))) {
|
|
4096
4101
|
// 退出选中
|
|
4097
4102
|
if (hasCtrlKey) {
|
|
4098
4103
|
// 如果是激活编辑状态,则取消编辑
|
|
@@ -4126,7 +4131,7 @@ export default defineComponent({
|
|
|
4126
4131
|
}
|
|
4127
4132
|
}
|
|
4128
4133
|
}
|
|
4129
|
-
else if (treeConfig && highlightCurrentRow && currentRow) {
|
|
4134
|
+
else if (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow) {
|
|
4130
4135
|
// 如果是树形表格当前行回车移动到子节点
|
|
4131
4136
|
var childrens = currentRow[treeOpts.children];
|
|
4132
4137
|
if (childrens && childrens.length) {
|
|
@@ -4151,7 +4156,7 @@ export default defineComponent({
|
|
|
4151
4156
|
if (selected.row && selected.column) {
|
|
4152
4157
|
$xetable.moveSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
|
|
4153
4158
|
}
|
|
4154
|
-
else if ((isUpArrow || isDwArrow) && highlightCurrentRow) {
|
|
4159
|
+
else if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
|
|
4155
4160
|
// 当前行按键上下移动
|
|
4156
4161
|
$xetable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
|
|
4157
4162
|
}
|
|
@@ -4166,7 +4171,7 @@ export default defineComponent({
|
|
|
4166
4171
|
$xetable.moveTabSelected(actived.args, hasShiftKey, evnt);
|
|
4167
4172
|
}
|
|
4168
4173
|
}
|
|
4169
|
-
else if (keyboardConfig && isEnableConf(editConfig) && (isDel || (treeConfig && highlightCurrentRow && currentRow ? isBack && keyboardOpts.isArrow : isBack))) {
|
|
4174
|
+
else if (keyboardConfig && isEnableConf(editConfig) && (isDel || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow ? isBack && keyboardOpts.isArrow : isBack))) {
|
|
4170
4175
|
if (!isEditStatus) {
|
|
4171
4176
|
var delMethod = keyboardOpts.delMethod, backMethod = keyboardOpts.backMethod;
|
|
4172
4177
|
// 如果是删除键
|
|
@@ -4202,7 +4207,7 @@ export default defineComponent({
|
|
|
4202
4207
|
tableMethods.updateFooter();
|
|
4203
4208
|
}
|
|
4204
4209
|
}
|
|
4205
|
-
else if (isBack && keyboardOpts.isArrow && treeConfig && highlightCurrentRow && currentRow) {
|
|
4210
|
+
else if (isBack && keyboardOpts.isArrow && treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow) {
|
|
4206
4211
|
// 如果树形表格回退键关闭当前行返回父节点
|
|
4207
4212
|
var parentRow_1 = XEUtils.findTree(internalData.afterFullData, function (item) { return item === currentRow; }, treeOpts).parent;
|
|
4208
4213
|
if (parentRow_1) {
|
|
@@ -4843,6 +4848,7 @@ export default defineComponent({
|
|
|
4843
4848
|
triggerHeaderCellClickEvent: function (evnt, params) {
|
|
4844
4849
|
var _lastResizeTime = internalData._lastResizeTime;
|
|
4845
4850
|
var sortOpts = computeSortOpts.value;
|
|
4851
|
+
var columnOpts = computeColumnOpts.value;
|
|
4846
4852
|
var column = params.column;
|
|
4847
4853
|
var cell = evnt.currentTarget;
|
|
4848
4854
|
var triggerResizable = _lastResizeTime && _lastResizeTime > Date.now() - 300;
|
|
@@ -4852,7 +4858,7 @@ export default defineComponent({
|
|
|
4852
4858
|
tablePrivateMethods.triggerSortEvent(evnt, column, getNextSortOrder(column));
|
|
4853
4859
|
}
|
|
4854
4860
|
tableMethods.dispatchEvent('header-cell-click', Object.assign({ triggerResizable: triggerResizable, triggerSort: triggerSort, triggerFilter: triggerFilter, cell: cell }, params), evnt);
|
|
4855
|
-
if (props.highlightCurrentColumn) {
|
|
4861
|
+
if (columnOpts.isCurrent || props.highlightCurrentColumn) {
|
|
4856
4862
|
tableMethods.setCurrentColumn(column);
|
|
4857
4863
|
}
|
|
4858
4864
|
},
|
|
@@ -4872,6 +4878,7 @@ export default defineComponent({
|
|
|
4872
4878
|
var treeOpts = computeTreeOpts.value;
|
|
4873
4879
|
var radioOpts = computeRadioOpts.value;
|
|
4874
4880
|
var checkboxOpts = computeCheckboxOpts.value;
|
|
4881
|
+
var rowOpts = computeRowOpts.value;
|
|
4875
4882
|
var actived = editStore.actived;
|
|
4876
4883
|
var row = params.row, column = params.column;
|
|
4877
4884
|
var type = column.type, treeNode = column.treeNode;
|
|
@@ -4898,7 +4905,7 @@ export default defineComponent({
|
|
|
4898
4905
|
if (!triggerTreeNode) {
|
|
4899
4906
|
if (!triggerExpandNode) {
|
|
4900
4907
|
// 如果是高亮行
|
|
4901
|
-
if (highlightCurrentRow) {
|
|
4908
|
+
if (rowOpts.isCurrent || highlightCurrentRow) {
|
|
4902
4909
|
if (!triggerCheckbox && !triggerRadio) {
|
|
4903
4910
|
tablePrivateMethods.triggerCurrentRowEvent(evnt, params);
|
|
4904
4911
|
}
|
|
@@ -5212,6 +5219,7 @@ export default defineComponent({
|
|
|
5212
5219
|
tablePrivateMethods.handleTableData();
|
|
5213
5220
|
tablePrivateMethods.updateScrollYSpace();
|
|
5214
5221
|
},
|
|
5222
|
+
updateVirtualTreeData: updateVirtualTreeData,
|
|
5215
5223
|
/**
|
|
5216
5224
|
* 处理固定列的显示状态
|
|
5217
5225
|
*/
|
|
@@ -5679,6 +5687,8 @@ export default defineComponent({
|
|
|
5679
5687
|
var leftList = columnStore.leftList, rightList = columnStore.rightList;
|
|
5680
5688
|
var tooltipOpts = computeTooltipOpts.value;
|
|
5681
5689
|
var treeOpts = computeTreeOpts.value;
|
|
5690
|
+
var rowOpts = computeRowOpts.value;
|
|
5691
|
+
var columnOpts = computeColumnOpts.value;
|
|
5682
5692
|
var vSize = computeSize.value;
|
|
5683
5693
|
var tableBorder = computeTableBorder.value;
|
|
5684
5694
|
var mouseOpts = computeMouseOpts.value;
|
|
@@ -5693,8 +5703,8 @@ export default defineComponent({
|
|
|
5693
5703
|
_a['cell--highlight'] = highlightCell,
|
|
5694
5704
|
_a['cell--selected'] = mouseConfig && mouseOpts.selected,
|
|
5695
5705
|
_a['cell--area'] = mouseConfig && mouseOpts.area,
|
|
5696
|
-
_a['row--highlight'] = highlightHoverRow,
|
|
5697
|
-
_a['column--highlight'] = highlightHoverColumn,
|
|
5706
|
+
_a['row--highlight'] = rowOpts.isHover || highlightHoverRow,
|
|
5707
|
+
_a['column--highlight'] = columnOpts.isHover || highlightHoverColumn,
|
|
5698
5708
|
_a['is--header'] = showHeader,
|
|
5699
5709
|
_a['is--footer'] = showFooter,
|
|
5700
5710
|
_a['is--group'] = isGroup,
|
|
@@ -10,6 +10,7 @@ var GlobalConfig = {
|
|
|
10
10
|
showHeader: true,
|
|
11
11
|
animat: true,
|
|
12
12
|
delayHover: 250,
|
|
13
|
+
autoResize: true,
|
|
13
14
|
// keepSource: false,
|
|
14
15
|
// showOverflow: null,
|
|
15
16
|
// showHeaderOverflow: null,
|
|
@@ -17,7 +18,6 @@ var GlobalConfig = {
|
|
|
17
18
|
// resizeInterval: 500,
|
|
18
19
|
// size: null,
|
|
19
20
|
// zIndex: null,
|
|
20
|
-
// autoResize: false,
|
|
21
21
|
// stripe: false,
|
|
22
22
|
// border: false,
|
|
23
23
|
// round: false,
|
package/es/validator/src/hook.js
CHANGED
|
@@ -160,14 +160,14 @@ var validatorHook = {
|
|
|
160
160
|
var ruleProps = Object.keys(validRest);
|
|
161
161
|
return nextTick().then(function () {
|
|
162
162
|
if (ruleProps.length) {
|
|
163
|
-
return
|
|
163
|
+
return validRest[ruleProps[0]][0];
|
|
164
164
|
}
|
|
165
165
|
if (cb) {
|
|
166
166
|
cb();
|
|
167
167
|
}
|
|
168
168
|
});
|
|
169
169
|
}).catch(function (firstErrParams) {
|
|
170
|
-
return new Promise(function (resolve
|
|
170
|
+
return new Promise(function (resolve) {
|
|
171
171
|
var finish = function () {
|
|
172
172
|
nextTick(function () {
|
|
173
173
|
if (cb) {
|
|
@@ -175,7 +175,7 @@ var validatorHook = {
|
|
|
175
175
|
resolve();
|
|
176
176
|
}
|
|
177
177
|
else {
|
|
178
|
-
|
|
178
|
+
resolve(validRest);
|
|
179
179
|
}
|
|
180
180
|
});
|
|
181
181
|
};
|
package/lib/edit/src/hook.js
CHANGED
|
@@ -113,6 +113,69 @@ var editHook = {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
+
function insertTreeRow(newRecords, isAppend) {
|
|
117
|
+
var treeFullData = internalData.treeFullData,
|
|
118
|
+
afterFullData = internalData.afterFullData,
|
|
119
|
+
fullDataRowIdData = internalData.fullDataRowIdData,
|
|
120
|
+
fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
121
|
+
var treeOpts = computeTreeOpts.value;
|
|
122
|
+
var funcName = isAppend ? 'push' : 'unshift';
|
|
123
|
+
newRecords.forEach(function (item) {
|
|
124
|
+
var parentRowId = item[treeOpts.parentField];
|
|
125
|
+
var rowid = (0, _util.getRowid)($xetable, item);
|
|
126
|
+
var matchObj = parentRowId ? _xeUtils.default.findTree(treeFullData, function (item) {
|
|
127
|
+
return parentRowId === item[treeOpts.rowField];
|
|
128
|
+
}, treeOpts) : null;
|
|
129
|
+
|
|
130
|
+
if (matchObj) {
|
|
131
|
+
var parentRow = matchObj.item;
|
|
132
|
+
var parentRest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, parentRow)];
|
|
133
|
+
var parentLevel = parentRest ? parentRest.level : 0;
|
|
134
|
+
var parentChilds = parentRow[treeOpts.children];
|
|
135
|
+
|
|
136
|
+
if (!_xeUtils.default.isArray(parentChilds)) {
|
|
137
|
+
parentChilds = parentRow[treeOpts.children] = [];
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
parentChilds[funcName](item);
|
|
141
|
+
var rest = {
|
|
142
|
+
row: item,
|
|
143
|
+
rowid: rowid,
|
|
144
|
+
index: -1,
|
|
145
|
+
_index: -1,
|
|
146
|
+
$index: -1,
|
|
147
|
+
items: parentChilds,
|
|
148
|
+
parent: parent,
|
|
149
|
+
level: parentLevel + 1
|
|
150
|
+
};
|
|
151
|
+
fullDataRowIdData[rowid] = rest;
|
|
152
|
+
fullAllDataRowIdData[rowid] = rest;
|
|
153
|
+
} else {
|
|
154
|
+
if (process.env.NODE_ENV === 'development') {
|
|
155
|
+
if (parentRowId) {
|
|
156
|
+
(0, _utils.warnLog)('vxe.error.unableInsert');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
afterFullData[funcName](item);
|
|
161
|
+
treeFullData[funcName](item);
|
|
162
|
+
var rest = {
|
|
163
|
+
row: item,
|
|
164
|
+
rowid: rowid,
|
|
165
|
+
index: -1,
|
|
166
|
+
_index: -1,
|
|
167
|
+
$index: -1,
|
|
168
|
+
items: treeFullData,
|
|
169
|
+
parent: null,
|
|
170
|
+
level: 0
|
|
171
|
+
};
|
|
172
|
+
fullDataRowIdData[rowid] = rest;
|
|
173
|
+
fullAllDataRowIdData[rowid] = rest;
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
$xetable.updateVirtualTreeData();
|
|
177
|
+
}
|
|
178
|
+
|
|
116
179
|
editMethods = {
|
|
117
180
|
/**
|
|
118
181
|
* 往表格中插入临时数据
|
|
@@ -125,9 +188,9 @@ var editHook = {
|
|
|
125
188
|
|
|
126
189
|
/**
|
|
127
190
|
* 往表格指定行中插入临时数据
|
|
128
|
-
* 如果 row
|
|
129
|
-
* 如果 row 为 -1
|
|
130
|
-
* 如果 row
|
|
191
|
+
* 如果 row 为空则从插入到顶部,如果为树结构,则插入到目标节点顶部
|
|
192
|
+
* 如果 row 为 -1 则从插入到底部,如果为树结构,则插入到目标节点底部
|
|
193
|
+
* 如果 row 为有效行则插入到该行的位置,如果为树结构,则有插入到效的目标节点该行的位置
|
|
131
194
|
* @param {Object/Array} records 新的数据
|
|
132
195
|
* @param {Row} row 指定行
|
|
133
196
|
*/
|
|
@@ -138,9 +201,14 @@ var editHook = {
|
|
|
138
201
|
var mergeList = reactData.mergeList,
|
|
139
202
|
editStore = reactData.editStore,
|
|
140
203
|
scrollYLoad = reactData.scrollYLoad;
|
|
141
|
-
var
|
|
142
|
-
|
|
204
|
+
var treeFullData = internalData.treeFullData,
|
|
205
|
+
afterFullData = internalData.afterFullData,
|
|
206
|
+
tableFullData = internalData.tableFullData,
|
|
207
|
+
fullDataRowIdData = internalData.fullDataRowIdData,
|
|
208
|
+
fullAllDataRowIdData = internalData.fullAllDataRowIdData;
|
|
143
209
|
var sYOpts = computeSYOpts.value;
|
|
210
|
+
var treeOpts = computeTreeOpts.value;
|
|
211
|
+
var transform = treeOpts.transform;
|
|
144
212
|
|
|
145
213
|
if (!_xeUtils.default.isArray(records)) {
|
|
146
214
|
records = [records];
|
|
@@ -151,53 +219,113 @@ var editHook = {
|
|
|
151
219
|
});
|
|
152
220
|
|
|
153
221
|
if (!row) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
if (mergeRowIndex > 0) {
|
|
161
|
-
mergeItem.row = mergeRowIndex + newRecords.length;
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
} else {
|
|
165
|
-
if (row === -1) {
|
|
166
|
-
afterFullData.push.apply(afterFullData, newRecords);
|
|
167
|
-
tableFullData.push.apply(tableFullData, newRecords); // 刷新单元格合并
|
|
222
|
+
// 如果为虚拟树
|
|
223
|
+
if (treeConfig && transform) {
|
|
224
|
+
insertTreeRow(newRecords, false);
|
|
225
|
+
} else {
|
|
226
|
+
afterFullData.unshift.apply(afterFullData, newRecords);
|
|
227
|
+
tableFullData.unshift.apply(tableFullData, newRecords); // 刷新单元格合并
|
|
168
228
|
|
|
169
229
|
mergeList.forEach(function (mergeItem) {
|
|
170
|
-
var mergeRowIndex = mergeItem.row
|
|
171
|
-
mergeRowspan = mergeItem.rowspan;
|
|
230
|
+
var mergeRowIndex = mergeItem.row;
|
|
172
231
|
|
|
173
|
-
if (mergeRowIndex
|
|
174
|
-
mergeItem.
|
|
232
|
+
if (mergeRowIndex > 0) {
|
|
233
|
+
mergeItem.row = mergeRowIndex + newRecords.length;
|
|
175
234
|
}
|
|
176
235
|
});
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
236
|
+
}
|
|
237
|
+
} else {
|
|
238
|
+
if (row === -1) {
|
|
239
|
+
// 如果为虚拟树
|
|
240
|
+
if (treeConfig && transform) {
|
|
241
|
+
insertTreeRow(newRecords, true);
|
|
242
|
+
} else {
|
|
243
|
+
afterFullData.push.apply(afterFullData, newRecords);
|
|
244
|
+
tableFullData.push.apply(tableFullData, newRecords); // 刷新单元格合并
|
|
181
245
|
|
|
182
|
-
|
|
246
|
+
mergeList.forEach(function (mergeItem) {
|
|
247
|
+
var mergeRowIndex = mergeItem.row,
|
|
248
|
+
mergeRowspan = mergeItem.rowspan;
|
|
183
249
|
|
|
184
|
-
|
|
185
|
-
|
|
250
|
+
if (mergeRowIndex + mergeRowspan > afterFullData.length) {
|
|
251
|
+
mergeItem.rowspan = mergeRowspan + newRecords.length;
|
|
252
|
+
}
|
|
253
|
+
});
|
|
186
254
|
}
|
|
255
|
+
} else {
|
|
256
|
+
// 如果为虚拟树
|
|
257
|
+
if (treeConfig && transform) {
|
|
258
|
+
var matchObj_1 = _xeUtils.default.findTree(treeFullData, function (item) {
|
|
259
|
+
return row[treeOpts.rowField] === item[treeOpts.rowField];
|
|
260
|
+
}, treeOpts);
|
|
261
|
+
|
|
262
|
+
if (matchObj_1) {
|
|
263
|
+
var parentRow_1 = matchObj_1.parent;
|
|
264
|
+
var parentChilds_1 = matchObj_1.items;
|
|
265
|
+
var parentRest = fullAllDataRowIdData[(0, _util.getRowid)($xetable, parentRow_1)];
|
|
266
|
+
var parentLevel_1 = parentRest ? parentRest.level : 0;
|
|
267
|
+
newRecords.forEach(function (item, i) {
|
|
268
|
+
var rowid = (0, _util.getRowid)($xetable, item);
|
|
269
|
+
|
|
270
|
+
if (process.env.NODE_ENV === 'development') {
|
|
271
|
+
if (item[treeOpts.parentField]) {
|
|
272
|
+
if (parentRow_1 && item[treeOpts.parentField] !== parentRow_1[treeOpts.rowField]) {
|
|
273
|
+
(0, _utils.errLog)('vxe.error.errProp', [treeOpts.parentField + "=" + item[treeOpts.parentField], treeOpts.parentField + "=" + parentRow_1[treeOpts.rowField]]);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
if (parentRow_1) {
|
|
279
|
+
item[treeOpts.parentField] = parentRow_1[treeOpts.rowField];
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
parentChilds_1.splice(matchObj_1.index + i, 0, item);
|
|
283
|
+
var rest = {
|
|
284
|
+
row: item,
|
|
285
|
+
rowid: rowid,
|
|
286
|
+
index: -1,
|
|
287
|
+
_index: -1,
|
|
288
|
+
$index: -1,
|
|
289
|
+
items: parentChilds_1,
|
|
290
|
+
parent: parentRow_1,
|
|
291
|
+
level: parentLevel_1 + 1
|
|
292
|
+
};
|
|
293
|
+
fullDataRowIdData[rowid] = rest;
|
|
294
|
+
fullAllDataRowIdData[rowid] = rest;
|
|
295
|
+
});
|
|
296
|
+
$xetable.updateVirtualTreeData();
|
|
297
|
+
} else {
|
|
298
|
+
if (process.env.NODE_ENV === 'development') {
|
|
299
|
+
(0, _utils.warnLog)('vxe.error.unableInsert');
|
|
300
|
+
}
|
|
187
301
|
|
|
188
|
-
|
|
189
|
-
|
|
302
|
+
insertTreeRow(newRecords, true);
|
|
303
|
+
}
|
|
304
|
+
} else {
|
|
305
|
+
if (treeConfig) {
|
|
306
|
+
throw new Error((0, _utils.getLog)('vxe.error.noTree', ['insert']));
|
|
307
|
+
}
|
|
190
308
|
|
|
191
|
-
|
|
192
|
-
var mergeRowIndex = mergeItem.row,
|
|
193
|
-
mergeRowspan = mergeItem.rowspan;
|
|
309
|
+
var afIndex_1 = $xetable.findRowIndexOf(afterFullData, row);
|
|
194
310
|
|
|
195
|
-
if (
|
|
196
|
-
|
|
197
|
-
} else if (mergeRowIndex + mergeRowspan > afIndex_1) {
|
|
198
|
-
mergeItem.rowspan = mergeRowspan + newRecords.length;
|
|
311
|
+
if (afIndex_1 === -1) {
|
|
312
|
+
throw new Error((0, _utils.errLog)('vxe.error.unableInsert'));
|
|
199
313
|
}
|
|
200
|
-
|
|
314
|
+
|
|
315
|
+
afterFullData.splice.apply(afterFullData, __spreadArray([afIndex_1, 0], newRecords));
|
|
316
|
+
tableFullData.splice.apply(tableFullData, __spreadArray([$xetable.findRowIndexOf(tableFullData, row), 0], newRecords)); // 刷新单元格合并
|
|
317
|
+
|
|
318
|
+
mergeList.forEach(function (mergeItem) {
|
|
319
|
+
var mergeRowIndex = mergeItem.row,
|
|
320
|
+
mergeRowspan = mergeItem.rowspan;
|
|
321
|
+
|
|
322
|
+
if (mergeRowIndex > afIndex_1) {
|
|
323
|
+
mergeItem.row = mergeRowIndex + newRecords.length;
|
|
324
|
+
} else if (mergeRowIndex + mergeRowspan > afIndex_1) {
|
|
325
|
+
mergeItem.rowspan = mergeRowspan + newRecords.length;
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
}
|
|
201
329
|
}
|
|
202
330
|
}
|
|
203
331
|
|
|
@@ -206,7 +334,7 @@ var editHook = {
|
|
|
206
334
|
reactData.scrollYLoad = !treeConfig && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
|
|
207
335
|
$xetable.updateFooter();
|
|
208
336
|
$xetable.cacheRowMap();
|
|
209
|
-
$xetable.handleTableData();
|
|
337
|
+
$xetable.handleTableData(transform);
|
|
210
338
|
$xetable.updateAfterDataIndex();
|
|
211
339
|
$xetable.checkSelectionStatus();
|
|
212
340
|
|
|
@@ -237,10 +365,13 @@ var editHook = {
|
|
|
237
365
|
editStore = reactData.editStore,
|
|
238
366
|
selection = reactData.selection,
|
|
239
367
|
scrollYLoad = reactData.scrollYLoad;
|
|
240
|
-
var
|
|
368
|
+
var treeFullData = internalData.treeFullData,
|
|
369
|
+
afterFullData = internalData.afterFullData,
|
|
241
370
|
tableFullData = internalData.tableFullData;
|
|
242
371
|
var checkboxOpts = computeCheckboxOpts.value;
|
|
243
372
|
var sYOpts = computeSYOpts.value;
|
|
373
|
+
var treeOpts = computeTreeOpts.value;
|
|
374
|
+
var transform = treeOpts.transform;
|
|
244
375
|
var actived = editStore.actived,
|
|
245
376
|
removeList = editStore.removeList,
|
|
246
377
|
insertList = editStore.insertList;
|
|
@@ -277,31 +408,55 @@ var editHook = {
|
|
|
277
408
|
internalData.afterFullData = [];
|
|
278
409
|
$xetable.clearMergeCells();
|
|
279
410
|
} else {
|
|
280
|
-
|
|
281
|
-
|
|
411
|
+
// 如果为虚拟树
|
|
412
|
+
if (treeConfig && transform) {
|
|
413
|
+
rows.forEach(function (row) {
|
|
414
|
+
var rowid = (0, _util.getRowid)($xetable, row);
|
|
415
|
+
|
|
416
|
+
var matchObj = _xeUtils.default.findTree(treeFullData, function (item) {
|
|
417
|
+
return rowid === (0, _util.getRowid)($xetable, item);
|
|
418
|
+
}, treeOpts);
|
|
419
|
+
|
|
420
|
+
if (matchObj) {
|
|
421
|
+
var rItems = matchObj.items.splice(matchObj.index, 1);
|
|
422
|
+
rest.push(rItems[0]);
|
|
423
|
+
}
|
|
282
424
|
|
|
283
|
-
|
|
284
|
-
var rItems = tableFullData.splice(tfIndex, 1);
|
|
285
|
-
rest.push(rItems[0]);
|
|
286
|
-
}
|
|
425
|
+
var afIndex = $xetable.findRowIndexOf(afterFullData, row);
|
|
287
426
|
|
|
288
|
-
|
|
427
|
+
if (afIndex > -1) {
|
|
428
|
+
afterFullData.splice(afIndex, 1);
|
|
429
|
+
}
|
|
289
430
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
431
|
+
$xetable.updateVirtualTreeData();
|
|
432
|
+
});
|
|
433
|
+
} else {
|
|
434
|
+
rows.forEach(function (row) {
|
|
435
|
+
var tfIndex = $xetable.findRowIndexOf(tableFullData, row);
|
|
295
436
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
437
|
+
if (tfIndex > -1) {
|
|
438
|
+
var rItems = tableFullData.splice(tfIndex, 1);
|
|
439
|
+
rest.push(rItems[0]);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
var afIndex = $xetable.findRowIndexOf(afterFullData, row);
|
|
443
|
+
|
|
444
|
+
if (afIndex > -1) {
|
|
445
|
+
// 刷新单元格合并
|
|
446
|
+
mergeList.forEach(function (mergeItem) {
|
|
447
|
+
var mergeRowIndex = mergeItem.row,
|
|
448
|
+
mergeRowspan = mergeItem.rowspan;
|
|
449
|
+
|
|
450
|
+
if (mergeRowIndex > afIndex) {
|
|
451
|
+
mergeItem.row = mergeRowIndex - 1;
|
|
452
|
+
} else if (mergeRowIndex + mergeRowspan > afIndex) {
|
|
453
|
+
mergeItem.rowspan = mergeRowspan - 1;
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
afterFullData.splice(afIndex, 1);
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
}
|
|
305
460
|
} // 如果当前行被激活编辑,则清除激活状态
|
|
306
461
|
|
|
307
462
|
|
|
@@ -320,7 +475,7 @@ var editHook = {
|
|
|
320
475
|
reactData.scrollYLoad = !treeConfig && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
|
|
321
476
|
$xetable.updateFooter();
|
|
322
477
|
$xetable.cacheRowMap();
|
|
323
|
-
$xetable.handleTableData();
|
|
478
|
+
$xetable.handleTableData(transform);
|
|
324
479
|
$xetable.updateAfterDataIndex();
|
|
325
480
|
$xetable.checkSelectionStatus();
|
|
326
481
|
|
|
@@ -386,17 +541,35 @@ var editHook = {
|
|
|
386
541
|
* 获取新增的临时数据
|
|
387
542
|
*/
|
|
388
543
|
getInsertRecords: function getInsertRecords() {
|
|
544
|
+
var treeConfig = props.treeConfig;
|
|
389
545
|
var editStore = reactData.editStore;
|
|
390
|
-
var
|
|
546
|
+
var treeFullData = internalData.treeFullData,
|
|
547
|
+
tableFullData = internalData.tableFullData;
|
|
548
|
+
var treeOpts = computeTreeOpts.value;
|
|
391
549
|
var insertList = editStore.insertList;
|
|
392
550
|
var insertRecords = [];
|
|
393
551
|
|
|
394
552
|
if (insertList.length) {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
553
|
+
// 如果为虚拟树
|
|
554
|
+
if (treeConfig && treeOpts.transform) {
|
|
555
|
+
insertList.forEach(function (row) {
|
|
556
|
+
var rowid = (0, _util.getRowid)($xetable, row);
|
|
557
|
+
|
|
558
|
+
var matchObj = _xeUtils.default.findTree(treeFullData, function (item) {
|
|
559
|
+
return rowid === (0, _util.getRowid)($xetable, item);
|
|
560
|
+
}, treeOpts);
|
|
561
|
+
|
|
562
|
+
if (matchObj) {
|
|
563
|
+
insertRecords.push(row);
|
|
564
|
+
}
|
|
565
|
+
});
|
|
566
|
+
} else {
|
|
567
|
+
insertList.forEach(function (row) {
|
|
568
|
+
if ($xetable.findRowIndexOf(tableFullData, row) > -1) {
|
|
569
|
+
insertRecords.push(row);
|
|
570
|
+
}
|
|
571
|
+
});
|
|
572
|
+
}
|
|
400
573
|
}
|
|
401
574
|
|
|
402
575
|
return insertRecords;
|