2023-11-20 14:05:42 +03:00

56 lines
1.2 KiB
TypeScript

import type { ResponseGetData } from '@/api/ius/types';
import { create } from 'zustand';
type Values = ResponseGetData;
type ElementValidation = {
message: string;
valid: boolean;
};
type FormState = {
defaultValues: Values;
init: (values: Values) => void;
reset: () => void;
setValidation: (input: { name: string } & ElementValidation) => void;
setValue: ({ name, value }: { name: string; value: Values[number] }) => void;
validation: Record<string, ElementValidation | undefined>;
values: Values;
};
export const useFormStore = create<FormState>((set) => ({
defaultValues: {},
init: (values) =>
set(() => ({
defaultValues: values,
values,
})),
reset: () => {
set((state) => ({
validation: {},
values: state.defaultValues,
}));
},
setValidation: ({ message, name, valid }) => {
set((state) => ({
validation: {
...state.validation,
[name]: { message, valid },
},
}));
},
setValue: ({ name, value }) =>
set((state) => ({
validation: {
...state.validation,
[name]: undefined,
},
values: {
...state.values,
[name]: value,
},
})),
validation: {},
values: {},
}));