@teamias/rex-pro 0.0.10 → 0.0.11
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.
|
@@ -71,8 +71,9 @@ export var FilterForm = function FilterForm(_ref) {
|
|
|
71
71
|
fetchLoading: false,
|
|
72
72
|
fields: [],
|
|
73
73
|
currentInit: true,
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
allFields: [],
|
|
75
|
+
// 单一数据源
|
|
76
|
+
selectedCustomFieldKeys: new Set() // 使用 Set 存储选中的自定义字段 key
|
|
76
77
|
};
|
|
77
78
|
}),
|
|
78
79
|
state = _useStateData.state,
|
|
@@ -134,40 +135,57 @@ export var FilterForm = function FilterForm(_ref) {
|
|
|
134
135
|
useEffect(function () {
|
|
135
136
|
if (loading) return;
|
|
136
137
|
var allFields = cloneDeep(fields);
|
|
138
|
+
state.allFields = allFields;
|
|
137
139
|
|
|
138
|
-
//
|
|
139
|
-
var
|
|
140
|
+
// 清理已选择的自定义字段keys,移除那些不再是自定义字段的项
|
|
141
|
+
var currentCustomFieldKeys = new Set(allFields.filter(function (field) {
|
|
140
142
|
return field.isCustom;
|
|
141
|
-
})
|
|
143
|
+
}).map(function (field) {
|
|
144
|
+
return field.field;
|
|
145
|
+
}));
|
|
146
|
+
|
|
147
|
+
// 只保留仍然是自定义字段的选中项
|
|
148
|
+
var validSelectedKeys = new Set(_toConsumableArray(state.selectedCustomFieldKeys).filter(function (key) {
|
|
149
|
+
return currentCustomFieldKeys.has(key);
|
|
150
|
+
}));
|
|
151
|
+
|
|
152
|
+
// 如果选中的keys发生了变化,更新状态
|
|
153
|
+
if (validSelectedKeys.size !== state.selectedCustomFieldKeys.size) {
|
|
154
|
+
state.selectedCustomFieldKeys = validSelectedKeys;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// 筛选出普通字段(非自定义字段)
|
|
142
158
|
var normalFields = allFields.filter(function (field) {
|
|
143
159
|
return !field.isCustom;
|
|
144
160
|
});
|
|
145
161
|
|
|
162
|
+
// 筛选出已选择的自定义字段
|
|
163
|
+
var selectedCustomFields = allFields.filter(function (field) {
|
|
164
|
+
return field.isCustom && state.selectedCustomFieldKeys.has(field.field);
|
|
165
|
+
});
|
|
166
|
+
|
|
146
167
|
// 合并普通字段和已选择的自定义字段
|
|
147
|
-
var combinedFields = [].concat(_toConsumableArray(normalFields), _toConsumableArray(
|
|
168
|
+
var combinedFields = [].concat(_toConsumableArray(normalFields), _toConsumableArray(selectedCustomFields));
|
|
148
169
|
if (displayType === 'average') {
|
|
149
170
|
state.fields = combinedFields;
|
|
150
|
-
state.customFields = customFields;
|
|
151
171
|
state.currentInit = false;
|
|
152
172
|
update();
|
|
153
173
|
} else {
|
|
154
174
|
handlerSelectStyle(combinedFields);
|
|
155
175
|
state.fields = combinedFields;
|
|
156
|
-
state.customFields = customFields;
|
|
157
176
|
state.currentInit = false;
|
|
158
177
|
update();
|
|
159
178
|
}
|
|
160
|
-
}, [fields, state.
|
|
179
|
+
}, [fields, state.selectedCustomFieldKeys]);
|
|
161
180
|
|
|
162
181
|
// 创建下拉菜单内容
|
|
163
182
|
var getDropdownMenu = function getDropdownMenu() {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
var isSelected = selectedFieldsMap.has(field.field);
|
|
183
|
+
// 筛选出所有自定义字段
|
|
184
|
+
var customFields = state.allFields.filter(function (field) {
|
|
185
|
+
return field.isCustom;
|
|
186
|
+
});
|
|
187
|
+
var items = customFields.map(function (field) {
|
|
188
|
+
var isSelected = state.selectedCustomFieldKeys.has(field.field);
|
|
171
189
|
return {
|
|
172
190
|
key: field.field,
|
|
173
191
|
label: /*#__PURE__*/_jsx("div", {
|
|
@@ -194,26 +212,17 @@ export var FilterForm = function FilterForm(_ref) {
|
|
|
194
212
|
|
|
195
213
|
// 切换自定义字段的显示状态
|
|
196
214
|
var handleToggleCustomField = function handleToggleCustomField(fieldKey) {
|
|
197
|
-
|
|
198
|
-
var selectedFieldsMap = new Map(state.selectedCustomFields.map(function (field) {
|
|
199
|
-
return [field.field, field];
|
|
200
|
-
}));
|
|
201
|
-
var customFieldsMap = new Map(state.customFields.map(function (field) {
|
|
202
|
-
return [field.field, field];
|
|
203
|
-
}));
|
|
204
|
-
var isSelected = selectedFieldsMap.has(fieldKey);
|
|
215
|
+
var isSelected = state.selectedCustomFieldKeys.has(fieldKey);
|
|
205
216
|
if (isSelected) {
|
|
206
217
|
// 移除字段
|
|
207
|
-
state.
|
|
208
|
-
return field.field !== fieldKey;
|
|
209
|
-
});
|
|
218
|
+
state.selectedCustomFieldKeys.delete(fieldKey);
|
|
210
219
|
} else {
|
|
211
220
|
// 添加字段
|
|
212
|
-
|
|
213
|
-
if (fieldToAdd) {
|
|
214
|
-
state.selectedCustomFields = [].concat(_toConsumableArray(state.selectedCustomFields), [fieldToAdd]);
|
|
215
|
-
}
|
|
221
|
+
state.selectedCustomFieldKeys.add(fieldKey);
|
|
216
222
|
}
|
|
223
|
+
|
|
224
|
+
// 创建新的 Set 以触发状态更新
|
|
225
|
+
state.selectedCustomFieldKeys = new Set(state.selectedCustomFieldKeys);
|
|
217
226
|
update();
|
|
218
227
|
};
|
|
219
228
|
useImperativeHandle(actionRef, function () {
|
|
@@ -300,7 +309,9 @@ export var FilterForm = function FilterForm(_ref) {
|
|
|
300
309
|
id: 'pro.components.filter-form.search',
|
|
301
310
|
defaultMessage: '查询'
|
|
302
311
|
})
|
|
303
|
-
}), state.
|
|
312
|
+
}), state.allFields.filter(function (field) {
|
|
313
|
+
return field.isCustom;
|
|
314
|
+
}).length > 0 && /*#__PURE__*/_jsx(Dropdown, {
|
|
304
315
|
menu: getDropdownMenu(),
|
|
305
316
|
trigger: ['click'],
|
|
306
317
|
placement: "bottomLeft",
|
package/dist/index.d.ts
CHANGED
package/dist/locales/en-US.json
CHANGED