47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import { useRouter } from "next/navigation";
|
|
import { useForm } from "react-hook-form";
|
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
import { useMutation } from "@tanstack/react-query";
|
|
import { useAlertStore } from "@/shared/lib/use-alert-store";
|
|
import {
|
|
bannerFormSchema,
|
|
type BannerFormData,
|
|
} from "../model/banner-interface";
|
|
import { BannerApi } from "../api/banner-service";
|
|
import { BannerForm } from "./banner-form";
|
|
|
|
function CreatePage() {
|
|
const router = useRouter();
|
|
const { setMessage: alert } = useAlertStore((state) => state);
|
|
|
|
const { mutateAsync: createBanner } = useMutation({
|
|
mutationFn: (data: BannerFormData) => BannerApi.createBanner(data),
|
|
onSuccess: () => {
|
|
alert("등록되었습니다.", router.back);
|
|
},
|
|
});
|
|
|
|
const form = useForm<BannerFormData>({
|
|
resolver: zodResolver(bannerFormSchema),
|
|
defaultValues: {
|
|
newWndwYn: "N",
|
|
useYn: "Y",
|
|
},
|
|
});
|
|
|
|
console.log(form.formState.errors);
|
|
|
|
return (
|
|
<div className="card card-border !mt-6">
|
|
<div className="card-header">
|
|
<h3 className="text-2xl font-medium text-label">배너 등록</h3>
|
|
</div>
|
|
<BannerForm form={form} handleSave={createBanner} />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export { CreatePage };
|