@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
- customFields: [],
75
- selectedCustomFields: []
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 customFields = allFields.filter(function (field) {
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(state.selectedCustomFields));
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.selectedCustomFields]);
179
+ }, [fields, state.selectedCustomFieldKeys]);
161
180
 
162
181
  // 创建下拉菜单内容
163
182
  var getDropdownMenu = function getDropdownMenu() {
164
- var _state$customFields;
165
- // 使用 Map 来快速查找已选择的字段
166
- var selectedFieldsMap = new Map(state.selectedCustomFields.map(function (field) {
167
- return [field.field, field];
168
- }));
169
- var items = (_state$customFields = state.customFields) === null || _state$customFields === void 0 ? void 0 : _state$customFields.map(function (field) {
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
- // 使用 Map 来快速查找已选择的字段
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.selectedCustomFields = state.selectedCustomFields.filter(function (field) {
208
- return field.field !== fieldKey;
209
- });
218
+ state.selectedCustomFieldKeys.delete(fieldKey);
210
219
  } else {
211
220
  // 添加字段
212
- var fieldToAdd = customFieldsMap.get(fieldKey);
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.customFields.length > 0 && /*#__PURE__*/_jsx(Dropdown, {
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
@@ -49,6 +49,7 @@ export declare const proLocales: {
49
49
  "filter-form": {
50
50
  reset: string;
51
51
  search: string;
52
+ "custom-filters": string;
52
53
  };
53
54
  };
54
55
  };
@@ -19,7 +19,8 @@
19
19
  },
20
20
  "filter-form": {
21
21
  "reset": "Reset",
22
- "search": "Search"
22
+ "search": "Search",
23
+ "custom-filters": "Custom filters"
23
24
  }
24
25
  }
25
26
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamias/rex-pro",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "A react library developed with dumi",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",