From 853def13f56778bc3a550682109f8016b0b588cc Mon Sep 17 00:00:00 2001 From: tomrehnstrom Date: Thu, 16 Jan 2025 17:52:52 +0100 Subject: [PATCH] fix: changed spreading order in form.resetDirty to make it behave correctly --- .../form/src/hooks/use-form-status/use-form-status.ts | 2 +- .../@mantine/form/src/tests/use-form/resetDirty.test.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/@mantine/form/src/hooks/use-form-status/use-form-status.ts b/packages/@mantine/form/src/hooks/use-form-status/use-form-status.ts index 81c6c1d1d36..ea87d04a6aa 100644 --- a/packages/@mantine/form/src/hooks/use-form-status/use-form-status.ts +++ b/packages/@mantine/form/src/hooks/use-form-status/use-form-status.ts @@ -81,7 +81,7 @@ export function useFormStatus>({ const resetDirty: ResetDirty = useCallback((values) => { const newSnapshot = values - ? { ...values, ...$values.refValues.current } + ? { ...$values.refValues.current, ...values } : $values.refValues.current; $values.setValuesSnapshot(newSnapshot); setDirty({}); diff --git a/packages/@mantine/form/src/tests/use-form/resetDirty.test.ts b/packages/@mantine/form/src/tests/use-form/resetDirty.test.ts index 7d9061fe8da..5c2cb72d407 100644 --- a/packages/@mantine/form/src/tests/use-form/resetDirty.test.ts +++ b/packages/@mantine/form/src/tests/use-form/resetDirty.test.ts @@ -34,6 +34,14 @@ function tests(mode: FormMode) { expect(hook.result.current.isDirty()).toBe(false); }); + + it('should handle reseting with new values', () => { + const hook = renderHook(() => useForm({ mode, initialValues: { a: 1, b: 2 } })); + expect(hook.result.current.isDirty()).toBe(false); + + act(() => hook.result.current.resetDirty({ a: 2, b: 2 })); + expect(hook.result.current.isDirty()).toBe(true); + }); } describe('@mantine/form/resetDirty-controlled', () => {