diff --git a/src/utils/form.ts b/src/utils/form.ts index 7031929..6748100 100644 --- a/src/utils/form.ts +++ b/src/utils/form.ts @@ -109,3 +109,25 @@ export function schemaToFieldValidator( } } } + +// Checking if individual fields are dirty is not currently supported. +// https://github.com/jaredpalmer/formik/issues/1421 +export function getDirty< + Values extends Record, + Names extends Array, +>( + values: Values, + initialValues: Values, + names: Names, +): Record { + return Object.fromEntries( + names.map(name => [name, isDirty(values, initialValues, name)]), + ) as Record +} + +export function isDirty< + Values extends Record, + Name extends keyof Values, +>(values: Values, initialValues: Values, name: Name): boolean { + return values[name] !== initialValues[name] +}