import Collapse from "@/components/ui/Collapse"; import React, {ChangeEvent, useState} from "react"; import {LucideIcon, Trash2} from 'lucide-react'; import IconButton from "@/components/ui/IconButton"; import InputField from "@/components/form/InputField"; import TextInput from "@/components/form/TextInput"; import {Attribute, CharacterAttributeSection, CharacterProps} from "@/lib/types/character"; import {useTranslations} from '@/lib/i18n'; interface CharacterSectionElementProps { title: string; section: CharacterAttributeSection; placeholder: string; icon: LucideIcon; selectedCharacter: CharacterProps; setSelectedCharacter: (character: CharacterProps) => void; handleAddElement: (section: CharacterAttributeSection, element: Attribute) => void; handleRemoveElement: ( section: CharacterAttributeSection, index: number, attrId: string, ) => void; } export default function CharacterSectionElement( { title, section, placeholder, icon, selectedCharacter, setSelectedCharacter, handleAddElement, handleRemoveElement, }: CharacterSectionElementProps): React.JSX.Element { const t = useTranslations(); const [element, setElement] = useState(''); function handleAddNewElement(): void { handleAddElement(section, {id: '', name: element}); setElement(''); } return ( {selectedCharacter[section].map((item: Attribute, index: number): React.JSX.Element => (
): void => { const updatedSection: Attribute[] = [...selectedCharacter[section]]; updatedSection[index] = {...updatedSection[index], name: e.target.value}; setSelectedCharacter({ ...selectedCharacter, [section]: updatedSection, }); }} placeholder={placeholder} />
handleRemoveElement(section, index, item.id)} />
))}
): void => setElement(e.target.value)} placeholder={t("characterSectionElement.newItem", {item: title.toLowerCase()})} /> } addButtonCallBack={async (): Promise => handleAddNewElement()} />
) }