"use client"; import Stack from "@mui/material/Stack"; import Box from "@mui/material/Box"; 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 { Controller, useFieldArray, useFormContext } from "react-hook-form"; import Link from "next/link"; import React, { SyntheticEvent, useCallback, useMemo, useState } from "react"; import MailField from "../MailField/MailField"; import { MailSave } from "@/app/api/mail/actions"; import { MailTemplate } from "@/app/api/mail"; import { isEmpty, keys } from "lodash"; import { Autocomplete, ListSubheader, MenuItem, UseAutocompleteProps } from "@mui/material"; interface Props { isActive: boolean; } interface OptionType { value: number, label: string, group: string, } type fieldKeys = keyof MailTemplate const TemplateDetails: React.FC = ({ isActive }) => { const { t } = useTranslation(); // const disabledFields: fieldKeys[] = [] // const requiredFields: fieldKeys[] = [] // const skipFields: fieldKeys[] = ["code", "subjectEng", "contentEng"] const [selectedIndex, setSelectedIndex] = useState(0) const { register, formState: { errors }, control, watch, getValues } = useFormContext(); const { fields, } = useFieldArray({ control, name: "templates" }) const options: OptionType[] = useMemo(() => ( fields.map((field, index) => { return { value: index, label: `${field.code} - ${field.description}`, group: field.type } as OptionType }) ), [fields]) const makeAutocompleteChangeHandler = useCallback(() => { return (e: SyntheticEvent, newValue: OptionType) => { setSelectedIndex(() => newValue.value); }; }, []); // const renderFieldsBySwitchCases = useCallback(() => { // const fieldNames = keys(fields[0]) as fieldKeys[]; // return fieldNames // .filter((name) => !skipFields.includes(name)) // .map((name: fieldKeys, index: number) => { // switch (name) { // case "contentCht": // return ( // // ( // // )} // rules={{ // required: requiredFields.includes(name), // }} // /> // // ) // default: // return ( // // // // ) // } // }) // }, [fields]) return ( {t("Template")} ( option.group && option.group.trim() !== '' ? option.group : 'Ungrouped' )} renderGroup={(params) => ( {params.group} {params.children} )} renderOption={( params: React.HTMLAttributes & { key?: React.Key }, option, { selected }, ) => { // eslint-disable-next-line @typescript-eslint/no-unused-vars const { key, ...rest } = params; return ( {option.label} ); }} renderInput={(params) => } /> {/* */} ( )} rules={{ required: "Mail Content is required!", }} /> ); }; export default TemplateDetails;