vxe-table 3.11.29 → 3.11.30-beta.1
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/custom/mixin.js +31 -19
- package/es/table/module/keyboard/mixin.js +2 -1
- package/es/table/src/methods.js +237 -272
- package/es/table/src/table.js +23 -9
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +329 -345
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/module/custom/mixin.js +36 -23
- package/lib/table/module/custom/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +2 -3
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/src/methods.js +264 -306
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +25 -9
- package/lib/table/src/table.min.js +1 -1
- package/lib/ui/index.js +1 -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/table/module/custom/mixin.ts +35 -19
- package/packages/table/module/keyboard/mixin.ts +3 -1
- package/packages/table/src/methods.ts +247 -262
- package/packages/table/src/table.ts +26 -9
- /package/es/{iconfont.1734067799153.ttf → iconfont.1734093222885.ttf} +0 -0
- /package/es/{iconfont.1734067799153.woff → iconfont.1734093222885.woff} +0 -0
- /package/es/{iconfont.1734067799153.woff2 → iconfont.1734093222885.woff2} +0 -0
- /package/lib/{iconfont.1734067799153.ttf → iconfont.1734093222885.ttf} +0 -0
- /package/lib/{iconfont.1734067799153.woff → iconfont.1734093222885.woff} +0 -0
- /package/lib/{iconfont.1734067799153.woff2 → iconfont.1734093222885.woff2} +0 -0
package/es/table/src/methods.js
CHANGED
|
@@ -892,6 +892,7 @@ const Methods = {
|
|
|
892
892
|
});
|
|
893
893
|
},
|
|
894
894
|
handleColumn(collectColumn) {
|
|
895
|
+
const $xeTable = this;
|
|
895
896
|
this.collectColumn = collectColumn;
|
|
896
897
|
const tableFullColumn = getColumnList(collectColumn);
|
|
897
898
|
this.tableFullColumn = tableFullColumn;
|
|
@@ -921,6 +922,9 @@ const Methods = {
|
|
|
921
922
|
$table: this
|
|
922
923
|
});
|
|
923
924
|
}
|
|
925
|
+
if ($xeTable.handleUpdateCustomColumn) {
|
|
926
|
+
$xeTable.handleUpdateCustomColumn();
|
|
927
|
+
}
|
|
924
928
|
return this.recalculate();
|
|
925
929
|
});
|
|
926
930
|
});
|
|
@@ -3982,11 +3986,12 @@ const Methods = {
|
|
|
3982
3986
|
}
|
|
3983
3987
|
},
|
|
3984
3988
|
handleCheckedCheckboxRow(rows, value, isForce) {
|
|
3989
|
+
const $xeTable = this;
|
|
3985
3990
|
if (rows && !XEUtils.isArray(rows)) {
|
|
3986
3991
|
rows = [rows];
|
|
3987
3992
|
}
|
|
3988
|
-
|
|
3989
|
-
|
|
3993
|
+
$xeTable.handleBatchSelectRows(rows, !!value, isForce);
|
|
3994
|
+
$xeTable.checkSelectionStatus();
|
|
3990
3995
|
return this.$nextTick();
|
|
3991
3996
|
},
|
|
3992
3997
|
/**
|
|
@@ -4013,230 +4018,96 @@ const Methods = {
|
|
|
4013
4018
|
return !!treeIndeterminateMaps[getRowid(this, row)] && !this.isCheckedByCheckboxRow(row);
|
|
4014
4019
|
},
|
|
4015
4020
|
/**
|
|
4016
|
-
*
|
|
4021
|
+
* 切换选中
|
|
4017
4022
|
* 多选,行选中事件
|
|
4018
|
-
* value 选中true 不选false 半选-1
|
|
4019
4023
|
*/
|
|
4020
|
-
handleBatchSelectRows(rows,
|
|
4024
|
+
handleBatchSelectRows(rows, checked, isForce) {
|
|
4021
4025
|
const $xeTable = this;
|
|
4022
|
-
const
|
|
4023
|
-
const
|
|
4026
|
+
const props = $xeTable;
|
|
4027
|
+
const reactData = $xeTable;
|
|
4028
|
+
const { treeConfig } = props;
|
|
4029
|
+
const { selectCheckboxMaps } = reactData;
|
|
4030
|
+
const selectRowMaps = Object.assign({}, selectCheckboxMaps);
|
|
4031
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
4032
|
+
const { transform, mapChildrenField } = treeOpts;
|
|
4033
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4034
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
4024
4035
|
const { checkField, checkStrictly, checkMethod } = checkboxOpts;
|
|
4036
|
+
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
4025
4037
|
if (checkField) {
|
|
4038
|
+
// 树结构
|
|
4026
4039
|
if (treeConfig && !checkStrictly) {
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
});
|
|
4030
|
-
}
|
|
4031
|
-
else {
|
|
4032
|
-
rows.forEach(row => {
|
|
4040
|
+
// 更新子节点状态
|
|
4041
|
+
XEUtils.eachTree(rows, (row) => {
|
|
4033
4042
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
4034
|
-
XEUtils.set(row, checkField,
|
|
4035
|
-
|
|
4043
|
+
XEUtils.set(row, checkField, checked);
|
|
4044
|
+
if (indeterminateField) {
|
|
4045
|
+
XEUtils.set(row, indeterminateField, false);
|
|
4046
|
+
}
|
|
4047
|
+
$xeTable.handleCheckboxReserveRow(row, checked);
|
|
4036
4048
|
}
|
|
4037
|
-
});
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
else {
|
|
4041
|
-
if (treeConfig && !checkStrictly) {
|
|
4042
|
-
rows.forEach(row => {
|
|
4043
|
-
this.handleSelectRow({ row }, value, isForce);
|
|
4044
|
-
});
|
|
4049
|
+
}, { children: transform ? mapChildrenField : childrenField });
|
|
4050
|
+
reactData.selectCheckboxMaps = selectRowMaps;
|
|
4051
|
+
return;
|
|
4045
4052
|
}
|
|
4046
4053
|
else {
|
|
4047
|
-
|
|
4054
|
+
// 列表
|
|
4048
4055
|
rows.forEach(row => {
|
|
4049
|
-
const rowid = getRowid($xeTable, row);
|
|
4050
4056
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
selectRowMaps[rowid] = row;
|
|
4054
|
-
}
|
|
4055
|
-
}
|
|
4056
|
-
else {
|
|
4057
|
-
if (selectRowMaps[rowid]) {
|
|
4058
|
-
delete selectRowMaps[rowid];
|
|
4059
|
-
}
|
|
4060
|
-
}
|
|
4061
|
-
this.handleCheckboxReserveRow(row, value);
|
|
4057
|
+
XEUtils.set(row, checkField, checked);
|
|
4058
|
+
$xeTable.handleCheckboxReserveRow(row, checked);
|
|
4062
4059
|
}
|
|
4063
4060
|
});
|
|
4064
|
-
this.selectCheckboxMaps = selectRowMaps;
|
|
4065
4061
|
}
|
|
4062
|
+
reactData.selectCheckboxMaps = selectRowMaps;
|
|
4063
|
+
return;
|
|
4066
4064
|
}
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
const selectRowMaps = Object.assign({}, selectCheckboxMaps);
|
|
4076
|
-
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4077
|
-
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
4078
|
-
const rowid = getRowid(this, row);
|
|
4079
|
-
if (checkField) {
|
|
4080
|
-
if (treeConfig && !checkStrictly) {
|
|
4081
|
-
if (value === -1) {
|
|
4082
|
-
if (!treeIndeterminateMaps[rowid]) {
|
|
4083
|
-
if (indeterminateField) {
|
|
4084
|
-
XEUtils.set(row, indeterminateField, true);
|
|
4085
|
-
}
|
|
4086
|
-
treeIndeterminateMaps[rowid] = row;
|
|
4087
|
-
}
|
|
4088
|
-
XEUtils.set(row, checkField, false);
|
|
4089
|
-
}
|
|
4090
|
-
else {
|
|
4091
|
-
// 更新子节点状态
|
|
4092
|
-
XEUtils.eachTree([row], (item) => {
|
|
4093
|
-
if (this.eqRow(item, row) || (isForce || (!checkMethod || checkMethod({ row: item })))) {
|
|
4094
|
-
XEUtils.set(item, checkField, value);
|
|
4095
|
-
if (indeterminateField) {
|
|
4096
|
-
XEUtils.set(row, indeterminateField, false);
|
|
4097
|
-
}
|
|
4098
|
-
delete treeIndeterminateMaps[getRowid(this, item)];
|
|
4099
|
-
this.handleCheckboxReserveRow(row, value);
|
|
4100
|
-
}
|
|
4101
|
-
}, { children: childrenField });
|
|
4102
|
-
}
|
|
4103
|
-
// 如果存在父节点,更新父节点状态
|
|
4104
|
-
const matchObj = XEUtils.findTree(afterFullData, item => this.eqRow(item, row), { children: childrenField });
|
|
4105
|
-
if (matchObj && matchObj.parent) {
|
|
4106
|
-
let parentStatus;
|
|
4107
|
-
const vItems = [];
|
|
4108
|
-
const vItemMaps = {};
|
|
4109
|
-
if (!isForce && checkMethod) {
|
|
4110
|
-
matchObj.items.forEach((item) => {
|
|
4111
|
-
if (checkMethod({ row: item })) {
|
|
4112
|
-
const itemRid = getRowid(this, item);
|
|
4113
|
-
vItemMaps[itemRid] = item;
|
|
4114
|
-
vItems.push(item);
|
|
4115
|
-
}
|
|
4116
|
-
});
|
|
4117
|
-
}
|
|
4118
|
-
else {
|
|
4119
|
-
matchObj.items.forEach(item => {
|
|
4120
|
-
const itemRid = getRowid(this, item);
|
|
4121
|
-
vItemMaps[itemRid] = item;
|
|
4122
|
-
vItems.push(item);
|
|
4123
|
-
});
|
|
4124
|
-
}
|
|
4125
|
-
const indeterminatesItem = XEUtils.find(matchObj.items, item => !!treeIndeterminateMaps[getRowid(this, item)]);
|
|
4126
|
-
if (indeterminatesItem) {
|
|
4127
|
-
parentStatus = -1;
|
|
4065
|
+
// 树结构
|
|
4066
|
+
if (treeConfig && !checkStrictly) {
|
|
4067
|
+
// 更新子节点状态
|
|
4068
|
+
XEUtils.eachTree(rows, (row) => {
|
|
4069
|
+
const rowid = getRowid($xeTable, row);
|
|
4070
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
4071
|
+
if (checked) {
|
|
4072
|
+
selectRowMaps[rowid] = row;
|
|
4128
4073
|
}
|
|
4129
4074
|
else {
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
selectItems.push(item);
|
|
4134
|
-
}
|
|
4135
|
-
});
|
|
4136
|
-
parentStatus = selectItems.filter(item => vItemMaps[getRowid(this, item)]).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false);
|
|
4075
|
+
if (selectRowMaps[rowid]) {
|
|
4076
|
+
delete selectRowMaps[rowid];
|
|
4077
|
+
}
|
|
4137
4078
|
}
|
|
4138
|
-
|
|
4139
|
-
return this.handleSelectRow({ row: matchObj.parent }, parentStatus, isForce);
|
|
4079
|
+
$xeTable.handleCheckboxReserveRow(row, checked);
|
|
4140
4080
|
}
|
|
4141
|
-
}
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
XEUtils.set(row, checkField, value);
|
|
4145
|
-
this.handleCheckboxReserveRow(row, value);
|
|
4146
|
-
}
|
|
4147
|
-
}
|
|
4081
|
+
}, { children: transform ? mapChildrenField : childrenField });
|
|
4082
|
+
reactData.selectCheckboxMaps = selectRowMaps;
|
|
4083
|
+
return;
|
|
4148
4084
|
}
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
treeIndeterminateMaps[rowid] = row;
|
|
4157
|
-
}
|
|
4158
|
-
if (selectRowMaps[rowid]) {
|
|
4159
|
-
delete selectRowMaps[rowid];
|
|
4085
|
+
// 列表
|
|
4086
|
+
rows.forEach(row => {
|
|
4087
|
+
const rowid = getRowid($xeTable, row);
|
|
4088
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
4089
|
+
if (checked) {
|
|
4090
|
+
if (!selectRowMaps[rowid]) {
|
|
4091
|
+
selectRowMaps[rowid] = row;
|
|
4160
4092
|
}
|
|
4161
4093
|
}
|
|
4162
4094
|
else {
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
const itemRid = getRowid(this, item);
|
|
4166
|
-
if (this.eqRow(item, row) || (isForce || (!checkMethod || checkMethod({ row: item })))) {
|
|
4167
|
-
if (value) {
|
|
4168
|
-
selectRowMaps[itemRid] = item;
|
|
4169
|
-
}
|
|
4170
|
-
else {
|
|
4171
|
-
if (selectRowMaps[itemRid]) {
|
|
4172
|
-
delete selectRowMaps[itemRid];
|
|
4173
|
-
}
|
|
4174
|
-
}
|
|
4175
|
-
if (indeterminateField) {
|
|
4176
|
-
XEUtils.set(row, indeterminateField, false);
|
|
4177
|
-
}
|
|
4178
|
-
delete treeIndeterminateMaps[getRowid(this, item)];
|
|
4179
|
-
this.handleCheckboxReserveRow(row, value);
|
|
4180
|
-
}
|
|
4181
|
-
}, { children: childrenField });
|
|
4182
|
-
}
|
|
4183
|
-
// 如果存在父节点,更新父节点状态
|
|
4184
|
-
const matchObj = XEUtils.findTree(afterFullData, item => this.eqRow(item, row), { children: childrenField });
|
|
4185
|
-
if (matchObj && matchObj.parent) {
|
|
4186
|
-
let parentStatus;
|
|
4187
|
-
const vItems = [];
|
|
4188
|
-
const vItemMaps = {};
|
|
4189
|
-
if (!isForce && checkMethod) {
|
|
4190
|
-
matchObj.items.forEach((item) => {
|
|
4191
|
-
if (checkMethod({ row: item })) {
|
|
4192
|
-
const itemRid = getRowid(this, item);
|
|
4193
|
-
vItemMaps[itemRid] = item;
|
|
4194
|
-
vItems.push(item);
|
|
4195
|
-
}
|
|
4196
|
-
});
|
|
4197
|
-
}
|
|
4198
|
-
else {
|
|
4199
|
-
matchObj.items.forEach(item => {
|
|
4200
|
-
const itemRid = getRowid(this, item);
|
|
4201
|
-
vItemMaps[itemRid] = item;
|
|
4202
|
-
vItems.push(item);
|
|
4203
|
-
});
|
|
4204
|
-
}
|
|
4205
|
-
const indeterminatesItem = XEUtils.find(matchObj.items, item => !!treeIndeterminateMaps[getRowid(this, item)]);
|
|
4206
|
-
if (indeterminatesItem) {
|
|
4207
|
-
parentStatus = -1;
|
|
4208
|
-
}
|
|
4209
|
-
else {
|
|
4210
|
-
const selectItems = [];
|
|
4211
|
-
matchObj.items.forEach(item => {
|
|
4212
|
-
const itemRid = getRowid(this, item);
|
|
4213
|
-
if (selectRowMaps[itemRid]) {
|
|
4214
|
-
selectItems.push(item);
|
|
4215
|
-
}
|
|
4216
|
-
});
|
|
4217
|
-
parentStatus = selectItems.filter(item => vItemMaps[getRowid(this, item)]).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false);
|
|
4218
|
-
}
|
|
4219
|
-
this.selectCheckboxMaps = selectRowMaps;
|
|
4220
|
-
return this.handleSelectRow({ row: matchObj.parent }, parentStatus, isForce);
|
|
4221
|
-
}
|
|
4222
|
-
}
|
|
4223
|
-
else {
|
|
4224
|
-
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
4225
|
-
if (value) {
|
|
4226
|
-
if (!selectRowMaps[rowid]) {
|
|
4227
|
-
selectRowMaps[rowid] = row;
|
|
4228
|
-
}
|
|
4229
|
-
}
|
|
4230
|
-
else {
|
|
4231
|
-
if (selectRowMaps[rowid]) {
|
|
4232
|
-
delete selectRowMaps[rowid];
|
|
4233
|
-
}
|
|
4095
|
+
if (selectRowMaps[rowid]) {
|
|
4096
|
+
delete selectRowMaps[rowid];
|
|
4234
4097
|
}
|
|
4235
|
-
this.handleCheckboxReserveRow(row, value);
|
|
4236
4098
|
}
|
|
4099
|
+
$xeTable.handleCheckboxReserveRow(row, checked);
|
|
4237
4100
|
}
|
|
4238
|
-
}
|
|
4239
|
-
|
|
4101
|
+
});
|
|
4102
|
+
reactData.selectCheckboxMaps = selectRowMaps;
|
|
4103
|
+
},
|
|
4104
|
+
/**
|
|
4105
|
+
* 即将移除
|
|
4106
|
+
* @deprecated
|
|
4107
|
+
*/
|
|
4108
|
+
handleSelectRow({ row }, checked, isForce) {
|
|
4109
|
+
const $xeTable = this;
|
|
4110
|
+
$xeTable.handleBatchSelectRows([row], checked, isForce);
|
|
4240
4111
|
},
|
|
4241
4112
|
handleToggleCheckRowEvent(evnt, params) {
|
|
4242
4113
|
const { selectCheckboxMaps, checkboxOpts } = this;
|
|
@@ -4245,22 +4116,22 @@ const Methods = {
|
|
|
4245
4116
|
if (trigger === 'manual') {
|
|
4246
4117
|
return;
|
|
4247
4118
|
}
|
|
4248
|
-
let
|
|
4119
|
+
let checked = false;
|
|
4249
4120
|
if (checkField) {
|
|
4250
|
-
|
|
4121
|
+
checked = !XEUtils.get(row, checkField);
|
|
4251
4122
|
}
|
|
4252
4123
|
else {
|
|
4253
|
-
|
|
4124
|
+
checked = !selectCheckboxMaps[getRowid(this, row)];
|
|
4254
4125
|
}
|
|
4255
4126
|
if (evnt) {
|
|
4256
|
-
this.triggerCheckRowEvent(evnt, params,
|
|
4127
|
+
this.triggerCheckRowEvent(evnt, params, checked);
|
|
4257
4128
|
}
|
|
4258
4129
|
else {
|
|
4259
|
-
this.handleSelectRow(params,
|
|
4130
|
+
this.handleSelectRow(params, checked);
|
|
4260
4131
|
this.checkSelectionStatus();
|
|
4261
4132
|
}
|
|
4262
4133
|
},
|
|
4263
|
-
triggerCheckRowEvent(evnt, params,
|
|
4134
|
+
triggerCheckRowEvent(evnt, params, checked) {
|
|
4264
4135
|
const { checkboxOpts, afterFullData } = this;
|
|
4265
4136
|
const { checkMethod, trigger } = checkboxOpts;
|
|
4266
4137
|
const { row } = params;
|
|
@@ -4284,13 +4155,13 @@ const Methods = {
|
|
|
4284
4155
|
}
|
|
4285
4156
|
}
|
|
4286
4157
|
if (!checkMethod || checkMethod({ row })) {
|
|
4287
|
-
this.handleSelectRow(params,
|
|
4158
|
+
this.handleSelectRow(params, checked);
|
|
4288
4159
|
this.checkSelectionStatus();
|
|
4289
4160
|
this.emitEvent('checkbox-change', Object.assign({
|
|
4290
4161
|
records: this.getCheckboxRecords(),
|
|
4291
4162
|
reserves: this.getCheckboxReserveRecords(),
|
|
4292
4163
|
indeterminates: this.getCheckboxIndeterminateRecords(),
|
|
4293
|
-
checked
|
|
4164
|
+
checked
|
|
4294
4165
|
}, params), evnt);
|
|
4295
4166
|
}
|
|
4296
4167
|
},
|
|
@@ -4298,14 +4169,17 @@ const Methods = {
|
|
|
4298
4169
|
* 多选,切换某一行的选中状态
|
|
4299
4170
|
*/
|
|
4300
4171
|
toggleCheckboxRow(row) {
|
|
4172
|
+
const $xeTable = this;
|
|
4301
4173
|
const { selectCheckboxMaps, checkboxOpts } = this;
|
|
4302
4174
|
const { checkField } = checkboxOpts;
|
|
4303
|
-
const
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
return
|
|
4175
|
+
const checked = checkField ? !XEUtils.get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)];
|
|
4176
|
+
$xeTable.handleBatchSelectRows([row], checked, true);
|
|
4177
|
+
$xeTable.checkSelectionStatus();
|
|
4178
|
+
return $xeTable.$nextTick();
|
|
4307
4179
|
},
|
|
4308
|
-
handleCheckedAllCheckboxRow(
|
|
4180
|
+
handleCheckedAllCheckboxRow(checked, isForce) {
|
|
4181
|
+
const $xeTable = this;
|
|
4182
|
+
const reactData = $xeTable;
|
|
4309
4183
|
const { afterFullData, treeConfig, treeOpts, selectCheckboxMaps, checkboxReserveRowMap, checkboxOpts, afterFullRowMaps } = this;
|
|
4310
4184
|
const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts;
|
|
4311
4185
|
const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
|
|
@@ -4321,7 +4195,7 @@ const Methods = {
|
|
|
4321
4195
|
}
|
|
4322
4196
|
// 疑惑!
|
|
4323
4197
|
if (checkStrictly) {
|
|
4324
|
-
this.isAllSelected =
|
|
4198
|
+
this.isAllSelected = checked;
|
|
4325
4199
|
}
|
|
4326
4200
|
else {
|
|
4327
4201
|
/**
|
|
@@ -4331,10 +4205,10 @@ const Methods = {
|
|
|
4331
4205
|
if (checkField) {
|
|
4332
4206
|
const checkValFn = (row) => {
|
|
4333
4207
|
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
4334
|
-
if (
|
|
4208
|
+
if (checked) {
|
|
4335
4209
|
selectRowMaps[getRowid(this, row)] = row;
|
|
4336
4210
|
}
|
|
4337
|
-
XEUtils.set(row, checkField,
|
|
4211
|
+
XEUtils.set(row, checkField, checked);
|
|
4338
4212
|
}
|
|
4339
4213
|
if (treeConfig && indeterminateField) {
|
|
4340
4214
|
XEUtils.set(row, indeterminateField, false);
|
|
@@ -4355,7 +4229,7 @@ const Methods = {
|
|
|
4355
4229
|
* 无需任何属性,直接绑定
|
|
4356
4230
|
*/
|
|
4357
4231
|
if (treeConfig) {
|
|
4358
|
-
if (
|
|
4232
|
+
if (checked) {
|
|
4359
4233
|
/**
|
|
4360
4234
|
* 如果是树勾选
|
|
4361
4235
|
* 如果方法成立,则添加到临时集合中
|
|
@@ -4382,7 +4256,7 @@ const Methods = {
|
|
|
4382
4256
|
}
|
|
4383
4257
|
}
|
|
4384
4258
|
else {
|
|
4385
|
-
if (
|
|
4259
|
+
if (checked) {
|
|
4386
4260
|
/**
|
|
4387
4261
|
* 如果是行勾选
|
|
4388
4262
|
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
@@ -4420,7 +4294,7 @@ const Methods = {
|
|
|
4420
4294
|
}
|
|
4421
4295
|
}
|
|
4422
4296
|
if (reserve) {
|
|
4423
|
-
if (
|
|
4297
|
+
if (checked) {
|
|
4424
4298
|
XEUtils.each(selectRowMaps, (row, rowid) => {
|
|
4425
4299
|
checkboxReserveRowMap[rowid] = row;
|
|
4426
4300
|
});
|
|
@@ -4431,6 +4305,8 @@ const Methods = {
|
|
|
4431
4305
|
}
|
|
4432
4306
|
this.selectCheckboxMaps = checkField ? {} : selectRowMaps;
|
|
4433
4307
|
}
|
|
4308
|
+
reactData.isAllSelected = checked;
|
|
4309
|
+
reactData.isIndeterminate = false;
|
|
4434
4310
|
this.treeIndeterminateMaps = {};
|
|
4435
4311
|
this.treeIndeterminateRowMaps = {};
|
|
4436
4312
|
this.checkSelectionStatus();
|
|
@@ -4443,76 +4319,165 @@ const Methods = {
|
|
|
4443
4319
|
setAllCheckboxRow(value) {
|
|
4444
4320
|
return this.handleCheckedAllCheckboxRow(value, true);
|
|
4445
4321
|
},
|
|
4446
|
-
|
|
4447
|
-
const
|
|
4322
|
+
updateCheckboxStatus() {
|
|
4323
|
+
const $xeTable = this;
|
|
4324
|
+
const props = $xeTable;
|
|
4325
|
+
const reactData = $xeTable;
|
|
4326
|
+
const internalData = $xeTable;
|
|
4327
|
+
const { treeConfig } = props;
|
|
4328
|
+
const { selectCheckboxMaps, treeIndeterminateMaps } = reactData;
|
|
4329
|
+
const selectRowMaps = Object.assign({}, selectCheckboxMaps);
|
|
4330
|
+
const halfRowMaps = Object.assign({}, treeIndeterminateMaps);
|
|
4331
|
+
const treeOpts = $xeTable.computeTreeOpts;
|
|
4332
|
+
const { transform, mapChildrenField } = treeOpts;
|
|
4333
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
4334
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
4448
4335
|
const { checkField, checkStrictly, checkMethod } = checkboxOpts;
|
|
4449
|
-
const
|
|
4450
|
-
if (
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4336
|
+
const { afterTreeFullData } = internalData;
|
|
4337
|
+
if (checkStrictly) {
|
|
4338
|
+
return;
|
|
4339
|
+
}
|
|
4340
|
+
// 树结构
|
|
4341
|
+
if (treeConfig) {
|
|
4342
|
+
const childRowMaps = {};
|
|
4343
|
+
const childRowList = [];
|
|
4344
|
+
XEUtils.eachTree(afterTreeFullData, (row) => {
|
|
4345
|
+
const rowid = getRowid($xeTable, row);
|
|
4346
|
+
const childList = row[transform ? mapChildrenField : childrenField];
|
|
4347
|
+
if (childList && childList.length && !childRowMaps[rowid]) {
|
|
4348
|
+
childRowMaps[rowid] = 1;
|
|
4349
|
+
childRowList.unshift([row, rowid, childList]);
|
|
4350
|
+
}
|
|
4351
|
+
}, { children: transform ? mapChildrenField : childrenField });
|
|
4352
|
+
childRowList.forEach(vals => {
|
|
4353
|
+
const row = vals[0];
|
|
4354
|
+
const rowid = vals[1];
|
|
4355
|
+
const childList = vals[2];
|
|
4356
|
+
let sLen = 0; // 已选
|
|
4357
|
+
let hLen = 0; // 半选
|
|
4358
|
+
let vLen = 0; // 有效行
|
|
4359
|
+
childList.forEach(checkMethod
|
|
4360
|
+
? (item) => {
|
|
4361
|
+
const childRowid = getRowid($xeTable, item);
|
|
4362
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectRowMaps[childRowid];
|
|
4363
|
+
if (checkMethod({ row: item })) {
|
|
4364
|
+
if (isSelect) {
|
|
4365
|
+
sLen++;
|
|
4366
|
+
}
|
|
4367
|
+
else if (halfRowMaps[childRowid]) {
|
|
4368
|
+
hLen++;
|
|
4369
|
+
}
|
|
4370
|
+
vLen++;
|
|
4462
4371
|
}
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4372
|
+
else {
|
|
4373
|
+
if (isSelect) {
|
|
4374
|
+
sLen++;
|
|
4375
|
+
}
|
|
4376
|
+
else if (halfRowMaps[childRowid]) {
|
|
4377
|
+
hLen++;
|
|
4378
|
+
}
|
|
4466
4379
|
}
|
|
4467
|
-
return false;
|
|
4468
4380
|
}
|
|
4469
|
-
:
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4381
|
+
: item => {
|
|
4382
|
+
const childRowid = getRowid($xeTable, item);
|
|
4383
|
+
const isSelect = checkField ? XEUtils.get(item, checkField) : selectRowMaps[childRowid];
|
|
4384
|
+
if (isSelect) {
|
|
4385
|
+
sLen++;
|
|
4386
|
+
}
|
|
4387
|
+
else if (halfRowMaps[childRowid]) {
|
|
4388
|
+
hLen++;
|
|
4389
|
+
}
|
|
4390
|
+
vLen++;
|
|
4391
|
+
});
|
|
4392
|
+
const isSelected = sLen >= vLen;
|
|
4393
|
+
const halfSelect = !isSelected && (sLen >= 1 || hLen >= 1);
|
|
4394
|
+
if (checkField) {
|
|
4395
|
+
XEUtils.get(row, checkField, isSelected);
|
|
4396
|
+
}
|
|
4397
|
+
if (isSelected) {
|
|
4398
|
+
if (!checkField) {
|
|
4399
|
+
selectRowMaps[rowid] = row;
|
|
4474
4400
|
}
|
|
4475
|
-
|
|
4476
|
-
|
|
4401
|
+
if (halfRowMaps[rowid]) {
|
|
4402
|
+
delete halfRowMaps[rowid];
|
|
4477
4403
|
}
|
|
4478
4404
|
}
|
|
4479
4405
|
else {
|
|
4480
|
-
if (
|
|
4481
|
-
|
|
4406
|
+
if (!checkField) {
|
|
4407
|
+
if (selectRowMaps[rowid]) {
|
|
4408
|
+
delete selectRowMaps[rowid];
|
|
4409
|
+
}
|
|
4482
4410
|
}
|
|
4483
|
-
|
|
4484
|
-
|
|
4411
|
+
if (halfSelect) {
|
|
4412
|
+
halfRowMaps[rowid] = row;
|
|
4485
4413
|
}
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
isAllResolve = afterFullData.every(checkMethod
|
|
4490
|
-
? (row) => {
|
|
4491
|
-
if (!checkMethod({ row })) {
|
|
4492
|
-
disableRows.push(row);
|
|
4493
|
-
return true;
|
|
4494
|
-
}
|
|
4495
|
-
if (selectCheckboxMaps[getRowid(this, row)]) {
|
|
4496
|
-
checkRows.push(row);
|
|
4497
|
-
return true;
|
|
4414
|
+
else {
|
|
4415
|
+
if (halfRowMaps[rowid]) {
|
|
4416
|
+
delete halfRowMaps[rowid];
|
|
4498
4417
|
}
|
|
4499
|
-
return false;
|
|
4500
4418
|
}
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
|
|
4419
|
+
}
|
|
4420
|
+
});
|
|
4421
|
+
}
|
|
4422
|
+
reactData.selectCheckboxMaps = selectRowMaps;
|
|
4423
|
+
reactData.treeIndeterminateMaps = halfRowMaps;
|
|
4424
|
+
},
|
|
4425
|
+
updateAllCheckboxStatus() {
|
|
4426
|
+
const $xeTable = this;
|
|
4427
|
+
const props = $xeTable;
|
|
4428
|
+
const reactData = $xeTable;
|
|
4429
|
+
const internalData = $xeTable;
|
|
4430
|
+
const { treeConfig } = props;
|
|
4431
|
+
const { selectCheckboxMaps, treeIndeterminateMaps } = reactData;
|
|
4432
|
+
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
4433
|
+
const { checkField, checkMethod } = checkboxOpts;
|
|
4434
|
+
const { afterFullData, afterTreeFullData } = internalData;
|
|
4435
|
+
let sLen = 0; // 已选
|
|
4436
|
+
let hLen = 0; // 半选
|
|
4437
|
+
let vLen = 0; // 有效行
|
|
4438
|
+
const rootList = (treeConfig ? afterTreeFullData : afterFullData);
|
|
4439
|
+
rootList.forEach(checkMethod
|
|
4440
|
+
? row => {
|
|
4441
|
+
const childRowid = getRowid($xeTable, row);
|
|
4442
|
+
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
|
|
4443
|
+
if (checkMethod({ row })) {
|
|
4444
|
+
if (selected) {
|
|
4445
|
+
sLen++;
|
|
4446
|
+
}
|
|
4447
|
+
else if (treeIndeterminateMaps[childRowid]) {
|
|
4448
|
+
hLen++;
|
|
4449
|
+
}
|
|
4450
|
+
vLen++;
|
|
4508
4451
|
}
|
|
4509
4452
|
else {
|
|
4510
|
-
|
|
4453
|
+
if (selected) {
|
|
4454
|
+
sLen++;
|
|
4455
|
+
}
|
|
4456
|
+
else if (treeIndeterminateMaps[childRowid]) {
|
|
4457
|
+
hLen++;
|
|
4458
|
+
}
|
|
4511
4459
|
}
|
|
4512
4460
|
}
|
|
4513
|
-
|
|
4514
|
-
|
|
4515
|
-
|
|
4461
|
+
: row => {
|
|
4462
|
+
const childRowid = getRowid($xeTable, row);
|
|
4463
|
+
const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
|
|
4464
|
+
if (selected) {
|
|
4465
|
+
sLen++;
|
|
4466
|
+
}
|
|
4467
|
+
else if (treeIndeterminateMaps[childRowid]) {
|
|
4468
|
+
hLen++;
|
|
4469
|
+
}
|
|
4470
|
+
vLen++;
|
|
4471
|
+
});
|
|
4472
|
+
const isSelected = sLen >= vLen;
|
|
4473
|
+
const halfSelect = !isSelected && (sLen >= 1 || hLen >= 1);
|
|
4474
|
+
reactData.isAllSelected = isSelected;
|
|
4475
|
+
reactData.isIndeterminate = halfSelect;
|
|
4476
|
+
},
|
|
4477
|
+
checkSelectionStatus() {
|
|
4478
|
+
const $xeTable = this;
|
|
4479
|
+
$xeTable.updateCheckboxStatus();
|
|
4480
|
+
$xeTable.updateAllCheckboxStatus();
|
|
4516
4481
|
},
|
|
4517
4482
|
// 还原展开、选中等相关状态
|
|
4518
4483
|
handleReserveStatus() {
|