import { Button } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { ScrollArea } from "@/components/ui/scroll-area" import { useForm } from "react-hook-form" import { z } from "zod" import { zodResolver } from "@hookform/resolvers/zod" import { ModelNotificationGroupResponseItem } from "@/types" import { useState } from "react" import { KeyedMutator } from "swr" import { IconButton } from "@/components/xui/icon-button" import { createNotificationGroup, updateNotificationGroup } from "@/api/notification-group" import { MultiSelect } from "@/components/xui/multi-select" import { useNotification } from "@/hooks/useNotfication" import { useTranslation } from "react-i18next"; interface NotificationGroupCardProps { data?: ModelNotificationGroupResponseItem; mutate: KeyedMutator; } const notificationGroupFormSchema = z.object({ name: z.string().min(1), notifications: z.array(z.number()), }); export const NotificationGroupCard: React.FC = ({ data, mutate }) => { const { t } = useTranslation(); const form = useForm>({ resolver: zodResolver(notificationGroupFormSchema), defaultValues: data ? { name: data.group.name, notifications: data.notifications, } : { name: "", notifications: [], }, resetOptions: { keepDefaultValues: false, } }) const [open, setOpen] = useState(false); const onSubmit = async (values: z.infer) => { data?.group.id ? await updateNotificationGroup(data.group.id, values) : await createNotificationGroup(values); setOpen(false); await mutate(); form.reset(); } const { notifiers } = useNotification(); const notifierList = notifiers?.map(n => ({ value: `${n.id}`, label: n.name, })) || [{ value: "", label: "" }]; return ( {data ? : }
{data ? t("EditNotifierGroup") : t("CreateNotifierGroup")}
( {t("Name")} )} /> ( {t("Notification")} { const arr = e.map(Number); field.onChange(arr); }} defaultValue={field.value?.map(String)} /> )} />
) }