mirror of
https://github.com/khairul169/garage-webui.git
synced 2025-04-28 06:49:32 +07:00
72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import Button from "@/components/ui/button";
|
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
import { Plus } from "lucide-react";
|
|
import { Modal } from "react-daisyui";
|
|
import { useForm } from "react-hook-form";
|
|
import { useDisclosure } from "@/hooks/useDisclosure";
|
|
import { createBucketSchema, CreateBucketSchema } from "../schema";
|
|
import { InputField } from "@/components/ui/input";
|
|
import { useCreateBucket } from "../hooks";
|
|
import { useQueryClient } from "@tanstack/react-query";
|
|
import { handleError } from "@/lib/utils";
|
|
import { toast } from "sonner";
|
|
import { useEffect } from "react";
|
|
|
|
const CreateBucketDialog = () => {
|
|
const { dialogRef, isOpen, onOpen, onClose } = useDisclosure();
|
|
const form = useForm<CreateBucketSchema>({
|
|
resolver: zodResolver(createBucketSchema),
|
|
defaultValues: { globalAlias: "" },
|
|
});
|
|
const queryClient = useQueryClient();
|
|
|
|
useEffect(() => {
|
|
if (isOpen) form.setFocus("globalAlias");
|
|
}, [isOpen]);
|
|
|
|
const createBucket = useCreateBucket({
|
|
onSuccess: () => {
|
|
onClose();
|
|
queryClient.invalidateQueries({ queryKey: ["buckets"] });
|
|
toast.success("Bucket created!");
|
|
},
|
|
onError: handleError,
|
|
});
|
|
|
|
const onSubmit = form.handleSubmit((values) => {
|
|
createBucket.mutate(values);
|
|
});
|
|
|
|
return (
|
|
<>
|
|
<Button icon={Plus} color="primary" onClick={onOpen}>
|
|
Create Bucket
|
|
</Button>
|
|
|
|
<Modal ref={dialogRef} backdrop open={isOpen}>
|
|
<Modal.Header className="mb-1">Create New Bucket</Modal.Header>
|
|
<Modal.Body>
|
|
<p>Enter the details of the bucket you wish to create.</p>
|
|
|
|
<form onSubmit={onSubmit}>
|
|
<InputField form={form} name="globalAlias" title="Bucket Name" />
|
|
</form>
|
|
</Modal.Body>
|
|
|
|
<Modal.Actions>
|
|
<Button onClick={onClose}>Cancel</Button>
|
|
<Button
|
|
color="primary"
|
|
disabled={createBucket.isPending}
|
|
onClick={onSubmit}
|
|
>
|
|
Submit
|
|
</Button>
|
|
</Modal.Actions>
|
|
</Modal>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default CreateBucketDialog;
|