fix: incorrect default value for filter form (#10022)

This commit is contained in:
gchust
2026-07-08 08:21:44 +08:00
committed by GitHub
parent ad8cf0ccc5
commit c91c0d0045
2 changed files with 35 additions and 0 deletions
@@ -432,6 +432,7 @@ export class FilterFormBlockModel extends FilterBlockModel<{
private canApplyFormDefaultValue(name: string, current: any, force?: boolean) {
if (force) return true;
if (this.userEditedFieldNames.has(name)) return false;
if (isEmptyValue(current)) return true;
if (!this.lastDefaultValueByFieldName.has(name)) return false;
return isEqual(current, this.lastDefaultValueByFieldName.get(name));
@@ -301,6 +301,40 @@ describe('filter-form defaultValues wiring', () => {
expect(values.username_user).toBe('Manual');
});
it('does not reapply a filter form default value after user clears the field', async () => {
const { model, values } = createFilterFormDefaultValuesModel([
{
key: 'username-default',
enable: true,
targetPath: 'username',
mode: 'default',
value: 'admin',
},
]);
await FilterFormBlockModel.prototype.applyFormDefaultValues.call(model as any);
expect(values.username_user).toBe('admin');
values.username_user = undefined;
(model as any).handleFilterFormValuesChange({ username_user: undefined }, { username_user: undefined });
await waitFor(() => {
expect(model.dispatchEvent).toHaveBeenCalledWith(
'formValuesChange',
{
changedValues: {
username_user: undefined,
},
allValues: {
username_user: undefined,
},
},
{ debounce: true },
);
});
expect(values.username_user).toBeUndefined();
});
it('applies fixed values even when the target filter field already has a value', async () => {
const { model, values } = createFilterFormDefaultValuesModel(
[