mirror of
https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui.git
synced 2025-10-30 02:12:33 +00:00
31 lines
832 B
TypeScript
31 lines
832 B
TypeScript
import { Ref, useCallback, useMemo, useState } from 'react';
|
|
import { FormikProps } from 'formik';
|
|
import { FormType } from '../models/Form';
|
|
|
|
export const useFormRef = () => {
|
|
const [form, setForm] = useState<FormType>({
|
|
submitForm: () => {},
|
|
isSubmitting: false,
|
|
isValid: true,
|
|
dirty: false,
|
|
});
|
|
const formRef = useCallback(
|
|
(node: FormikProps<Record<string, unknown>> | undefined) => {
|
|
if (
|
|
node &&
|
|
(form.submitForm !== node.submitForm ||
|
|
form.isSubmitting !== node.isSubmitting ||
|
|
form.isValid !== node.isValid ||
|
|
form.dirty !== node.dirty)
|
|
) {
|
|
setForm(node);
|
|
}
|
|
},
|
|
[form],
|
|
) as Ref<FormikProps<Record<string, unknown>>> | undefined;
|
|
|
|
const toReturn = useMemo(() => ({ form, formRef }), [form]);
|
|
|
|
return toReturn;
|
|
};
|