mirror of
https://github.com/nocobase/nocobase.git
synced 2026-09-21 13:52:17 +08:00
fix: incorrect default value for filter form (#10022)
This commit is contained in:
@@ -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));
|
||||
|
||||
+34
@@ -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(
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user