Skip to content

Commit b5e09fd

Browse files
committed
feat: add LanguageSelector
1 parent 7b25266 commit b5e09fd

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { action } from '@storybook/addon-actions';
2+
import { storiesOf } from '@storybook/react';
3+
import React from 'react';
4+
5+
import { LanguageSelector } from './LanguageSelector';
6+
7+
const stories = storiesOf('Components', module);
8+
9+
const languages = [{ code: 'en', name: 'English' }, { code: 'fr', name: 'Français' }];
10+
stories.add(
11+
'LanguageSelector',
12+
() => <LanguageSelector languages={languages} setActiveLanguage={action('setActiveLanguage')} />,
13+
{ info: { inline: true } },
14+
);
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import React, { FunctionComponent } from 'react';
2+
3+
export type Language = {
4+
/** Language name to display */
5+
name: string;
6+
/** Language code */
7+
code: string;
8+
};
9+
10+
export type LanguageSelectorProps = {
11+
/** Available languages */
12+
languages: Language[];
13+
/** Select language handler */
14+
setActiveLanguage: Function;
15+
};
16+
17+
/**
18+
* Language selector
19+
*/
20+
export const LanguageSelector: FunctionComponent<LanguageSelectorProps> = ({ languages, setActiveLanguage }) => (
21+
<ul className="selector">
22+
{languages.map(lang => (
23+
<li key={lang.code}>
24+
<button onClick={() => setActiveLanguage(lang.code)}>{lang.name}</button>
25+
</li>
26+
))}
27+
</ul>
28+
);

src/app/language-selector/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './LanguageSelector';

0 commit comments

Comments
 (0)