2023-11-22 00:37:49 +03:00

27 lines
838 B
TypeScript

import type { PageUrlParams } from '@/utils/url';
import type { PropsWithChildren } from 'react';
import { createContext, useMemo, useState } from 'react';
type FormStatus = 'pending' | 'edit' | 'success';
type ContextType = {
readonly formStatus: FormStatus;
readonly pageUrlParams: PageUrlParams;
readonly setFormStatus: (status: FormStatus) => void;
};
export const FormContext = createContext<ContextType>({} as ContextType);
export function FormContextProvider({
children,
...initialData
}: PropsWithChildren & Pick<ContextType, 'pageUrlParams'>) {
const [formStatus, setFormStatus] = useState<FormStatus>('edit');
const value = useMemo(
() => ({ ...initialData, formStatus, setFormStatus }),
[formStatus, initialData]
);
return <FormContext.Provider value={value}>{children}</FormContext.Provider>;
}