ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
31 lines (27 loc) • 1.11 kB
text/typescript
import { useEffect, useRef } from 'react';
import { useFormState, Control } from 'react-hook-form';
import { useNotify } from '../notification';
/**
* This hook display an error message on submit in Form and SaveButton.
*
* We can't do the form validity check in the form submit handler
* as the form state may not have been updated yet when onSubmit validation mode is enabled
* or when the form hasn't been touched at all.
*/
export const useNotifyIsFormInvalid = (control?: Control) => {
const { submitCount, errors } = useFormState(
control ? { control } : undefined
);
const submitCountRef = useRef(submitCount);
const notify = useNotify();
useEffect(() => {
// Checking the submit count allows us to only display the notification after users
// tried to submit
if (submitCount > submitCountRef.current) {
submitCountRef.current = submitCount;
if (Object.keys(errors).length > 0) {
notify('ra.message.invalid_form', { type: 'error' });
}
}
}, [errors, submitCount, notify]);
};