1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import { create } from "zustand";
import { SelectOption } from "../types/select";
import { SingleValue } from "react-select";
import { User } from "prisma/generated/client";
type State = {
form: {
location: SingleValue<SelectOption> | null;
product: SingleValue<SelectOption> | null;
quantity: string;
};
oldOpname: {
id: number;
quantity: number;
user: User;
} | null;
};
type Action = {
updateForm: (
name: keyof State["form"],
value: SingleValue<SelectOption> | string
) => void;
setOldOpname: (value: State["oldOpname"]) => void;
resetForm: () => void;
};
export const useStockOpnameStore = create<State & Action>((set) => ({
form: {
location: null,
product: null,
quantity: "",
},
oldOpname: null,
updateForm: (name, value) =>
set((state) => ({
form: {
...state.form,
[name]: value,
},
})),
setOldOpname: (value) => set(() => ({ oldOpname: value })),
resetForm: () =>
set((state) => ({
form: { ...state.form, product: null, quantity: "" },
oldOpname: null,
})),
}));
|