Skip to content

Commit 303458c

Browse files
committed
fix(manager): set touched on blur
1 parent 6f5af6c commit 303458c

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

packages/form-state-manager/src/tests/utils/manager-api.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,23 @@ describe('managerApi', () => {
671671
expect(managerApi().active).toBeUndefined();
672672
});
673673

674+
it('should set blured field as touched', () => {
675+
const managerApi = createManagerApi({});
676+
677+
managerApi().registerField({
678+
name: 'field',
679+
render: jest.fn(),
680+
internalId: 1
681+
});
682+
683+
expect(managerApi().fieldListeners.field.state.meta.touched).toEqual(false);
684+
685+
managerApi().focus('field');
686+
managerApi().blur('field');
687+
688+
expect(managerApi().fieldListeners.field.state.meta.touched).toEqual(true);
689+
});
690+
674691
describe('initializeOnMount', () => {
675692
// not testable here, because we need to compute value in useSubscription
676693
// TODO: make global storage for field states ?

packages/form-state-manager/src/utils/manager-api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ const createManagerApi: CreateManagerApi = ({
546546
if (state.active === name) {
547547
state.active = undefined;
548548

549-
setFieldState(name, (prevState) => ({ ...prevState, meta: { ...prevState.meta, active: false } }));
549+
setFieldState(name, (prevState) => ({ ...prevState, meta: { ...prevState.meta, active: false, touched: true } }));
550550
rerender(['active']);
551551
}
552552
}

0 commit comments

Comments
 (0)