From 5a1b7cf17ee8d854ac552658214fa93418e67727 Mon Sep 17 00:00:00 2001 From: Kirill Ivlev Date: Thu, 19 Dec 2024 12:38:33 +0400 Subject: [PATCH] vocabularies --- src/routes/AddNewVocabulary.tsx | 60 ++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) 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 => ( + + ))} +
+
+ I'm learning +
+ { languages.map(language => ( + + ))} +
+
+
}