2016-12-01 16:44:03 +01:00

46 lines
1.1 KiB
JavaScript

/*
*
* LanguageToggle
*
*/
import React from 'react';
import { connect } from 'react-redux';
import { selectLocale } from '../LanguageProvider/selectors';
import { changeLocale } from '../LanguageProvider/actions';
import { appLocales } from '../../i18n';
import { createSelector } from 'reselect';
import styles from './styles.scss';
import Toggle from 'components/Toggle';
export class LocaleToggle extends React.Component { // eslint-disable-line
render() {
const messages = {};
appLocales.forEach(locale => { messages[locale] = locale.toUpperCase(); });
return (
<div className={styles.localeToggle}>
<Toggle values={appLocales} messages={messages} onToggle={this.props.onLocaleToggle} />
</div>
);
}
}
LocaleToggle.propTypes = {
onLocaleToggle: React.PropTypes.func,
};
const mapStateToProps = createSelector(
selectLocale(),
(locale) => ({ locale })
);
export function mapDispatchToProps(dispatch) {
return {
onLocaleToggle: (evt) => dispatch(changeLocale(evt.target.value)),
dispatch,
};
}
export default connect(mapStateToProps, mapDispatchToProps)(LocaleToggle);