diff --git a/src/routes/AddNewVocabulary.tsx b/src/routes/AddNewVocabulary.tsx index 197e2ac..5a82c6c 100644 --- a/src/routes/AddNewVocabulary.tsx +++ b/src/routes/AddNewVocabulary.tsx @@ -1,7 +1,65 @@ import HeaderMenu from "../components/UI/HeaderMenu.tsx"; +import {useEffect, useState} from "react"; +import {LanguageEntity} from "../types/LanguageEntity.ts"; +import api from "../api.tsx"; const AddNewVocabulary = () => { - return <> + type SelectableLanguageEntity = LanguageEntity & { selectedAsPrimary: boolean, selectedAsSecondary: boolean }; + const [languages, setLanguages] = useState([]); + + useEffect(() => { + api.get('language').then(languages => { + setLanguages(languages.data.map(language => { return { ...language, selectedAsPrimary: false, selectedAsSecondary: false}})); + console.log(languages.data); + }) + },[]) + + function selectLanguage(type: 'primary'| 'secondary', languageId: string, ) { + setLanguages((languages) => { + return languages.map(language => { + if(language.id === languageId) { + return { + ...language, + selectedAsPrimary: type === 'primary', + selectedAsSecondary: type === 'secondary' + } + } else { + return { + ...language, + selectedAsPrimary: type === 'primary' ? false : language.selectedAsPrimary, + selectedAsSecondary: type === 'secondary' ? false : language.selectedAsSecondary + } + } + }) + }) + } + + return <> + + + + I know: + { languages.map(language => ( + selectLanguage('primary', language.id)} + disabled={language.selectedAsSecondary} + className={"w-full text-left p-2 m-2 hover:bg-slate-500 rounded cursor-pointer " + (language.selectedAsPrimary ? 'bg-indigo-600' : '')}> + { language.name} + + ))} + + + I'm learning + + { languages.map(language => ( + selectLanguage('secondary', language.id)} + disabled={language.selectedAsPrimary} + className={"w-full text-left p-2 m-2 hover:bg-slate-500 rounded disabled:cursor-not-allowed disabled:text-gray-50 " + + (language.selectedAsSecondary ? 'bg-indigo-600' : '')}>{ language.name} + ))} + + + > }