vocabularies
This commit is contained in:
parent
911f5f06b8
commit
5a1b7cf17e
1 changed files with 59 additions and 1 deletions
|
|
@ -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 <><HeaderMenu />
|
||||
type SelectableLanguageEntity = LanguageEntity & { selectedAsPrimary: boolean, selectedAsSecondary: boolean };
|
||||
const [languages, setLanguages] = useState<SelectableLanguageEntity[]>([]);
|
||||
|
||||
useEffect(() => {
|
||||
api.get<LanguageEntity[]>('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 <>
|
||||
<HeaderMenu />
|
||||
<div className={"container m-1 flex"}>
|
||||
<div className={"basis-1/3"}>
|
||||
I know:
|
||||
{ languages.map(language => (
|
||||
<button key={language.id} onClick={() => 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}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
<div className={"basis-1/3"}>
|
||||
I'm learning
|
||||
<div className={"block"}>
|
||||
{ languages.map(language => (
|
||||
<button key={language.id}
|
||||
onClick={() => 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}</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue