1 import React, { Component } from 'react'
2 import { supportedLangs } from '../shared/i18n'
3
4 const listStyle = {
5 listStyle: 'none'
6 }
7
8 type OptionProps = {
9 value: string
10 name: string
11 }
12
13 class LanguageOption extends Component<OptionProps> {
14
15 render() {
16 return (
17 <option value={this.props.value}>{this.props.name}</option>
18 )
19 }
20 }
21
22 type LanguageDropdownProps = {
23 onChangeLanguage: (language: string) => void
24 selectedLanguage: string
25 }
26
27 type LanguageDropdownState = {}
28
29 class LanguageDropdown extends Component<LanguageDropdownProps, LanguageDropdownState> {
30
31 getLanguageList(): OptionProps[] {
32 const languageList: OptionProps[] = supportedLangs.map((lang) => {
33 return {
34 value: lang.code,
35 name: lang.name
36 }
37 })
38
39 return languageList
40 }
41
42 render() {
43
44 var languageList = [];
45
46 for (let language of this.getLanguageList()) {
47 languageList.push(<LanguageOption name={language.name} value={language.value} key={language.value}/>);
48 }
49
50 return (
51 <div>
52 <select
53 style={listStyle}
54 onChange={ e => this.props.onChangeLanguage(e.currentTarget.value) }
55 value={this.props.selectedLanguage}
56 >
57 {languageList}
58 </select>
59 </div>
60 )
61 }
62 }
63
64 export default LanguageDropdown;