simple-kiosk/src/client/components/menu/AddMenuItem.tsx

89 lines
2.4 KiB
TypeScript

import { Button } from "@/components/ui/button";
import {
Drawer,
DrawerContent,
DrawerDescription,
DrawerFooter,
DrawerHeader,
DrawerTitle,
DrawerTrigger,
} from "@/components/ui/drawer";
import { Input } from "@/components/ui/input";
import { useAddMenuItem } from "@/hooks/useMenu";
import { useQueryClient } from "@tanstack/react-query";
import { useState } from "react";
import { MenuItemColumns } from "src/db";
import { MenuInput } from "./MenuInput.tsx";
export function AddMenuItem() {
const queryClient = useQueryClient();
const { mutate, isPending } = useAddMenuItem(queryClient);
const [drawerOpen, setDrawerOpen] = useState(false);
const [data, setData] = useState<MenuItemColumns>({
name: "",
category: "",
HOT: null,
COLD: null,
price: null,
});
return (
<Drawer open={drawerOpen} onOpenChange={setDrawerOpen}>
<DrawerTrigger asChild>
<div className="border p-4 hover:bg-accent flex items-center justify-center">
<h2 className="text-xl font-bold"> </h2>
</div>
</DrawerTrigger>
<DrawerContent>
<DrawerHeader>
<DrawerTitle> </DrawerTitle>
<DrawerDescription> .</DrawerDescription>
</DrawerHeader>
<div className="m-4">
<div className="mb-2">
<div className="text-muted-foreground"> </div>
<Input
value={data.name}
onChange={(e) =>
setData({
...data,
name: e.target.value,
})}
/>
</div>
<MenuInput
data={data}
onChange={(c) => {
setData({
...data,
...c,
});
}}
/>
</div>
<DrawerFooter>
<Button
variant="default"
disabled={isPending}
onClick={() => {
mutate(data, {
onSuccess: () => {
setData({
name: "",
category: "",
HOT: null,
COLD: null,
price: null,
});
setDrawerOpen(false);
},
});
}}
>
</Button>
</DrawerFooter>
</DrawerContent>
</Drawer>
);
}