"use client"; import Card from "@mui/material/Card"; import CardContent from "@mui/material/CardContent"; import Grid from "@mui/material/Grid"; import TextField from "@mui/material/TextField"; import Typography from "@mui/material/Typography"; import { useTranslation } from "react-i18next"; import TransferList from "../TransferList"; import Button from "@mui/material/Button"; import Check from "@mui/icons-material/Check"; import Close from "@mui/icons-material/Close"; import { useRouter } from "next/navigation"; import React from "react"; import Stack from "@mui/material/Stack"; import { Task } from "@/app/api/tasks"; import { NewTaskTemplateFormInputs, saveTaskTemplate, } from "@/app/api/tasks/actions"; import { SubmitHandler, useForm } from "react-hook-form"; interface Props { tasks: Task[]; } const CreateTaskTemplate: React.FC = ({ tasks }) => { const { t } = useTranslation(); const router = useRouter(); const handleCancel = () => { router.back(); }; const items = React.useMemo( () => tasks.map((task) => ({ id: task.id, label: task.name, group: task.taskGroup || undefined, })), [tasks], ); const [serverError, setServerError] = React.useState(""); const { register, handleSubmit, setValue, formState: { errors, isSubmitting }, } = useForm(); const onSubmit: SubmitHandler = React.useCallback( async (data) => { try { setServerError(""); await saveTaskTemplate(data); router.replace("/tasks"); } catch (e) { setServerError(t("An error has occurred. Please try again later.")); } }, [router, t], ); return ( {t("Task List Setup")} { setValue( "taskIds", selectedItems.map((item) => item.id), ); }} allItemsLabel={t("Task Pool")} selectedItemsLabel={t("Task List Template")} /> {serverError && ( {serverError} )} ); }; export default CreateTaskTemplate;