/**
* Copyright 2017 Red Hat Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
import { connect } from 'react-redux';
import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import React from 'react';
import Dropdown from '../ui/dropdown/Dropdown';
import DropdownToggle from '../ui/dropdown/DropdownToggle';
import DropdownItem from '../ui/dropdown/DropdownItem';
import { getEnabledLanguages, getCurrentLanguage } from '../../selectors/i18n';
import I18nActions from '../../actions/I18nActions';
import { MESSAGES } from './messages';
const messages = defineMessages({
language: {
id: 'I18nDropdown.language',
defaultMessage: 'Language'
}
});
class I18nDropdown extends React.Component {
_renderDropdownItems() {
const { currentLanguage, languages } = this.props;
return languages
.map((langName, langKey) => {
const active = currentLanguage === langKey;
return MESSAGES[langKey] || langKey === 'en'
?
{langName}
: null;
})
.toList();
}
render() {
return (
{this._renderDropdownItems()}
);
}
}
I18nDropdown.propTypes = {
chooseLanguage: PropTypes.func.isRequired,
currentLanguage: PropTypes.string,
languages: ImmutablePropTypes.map.isRequired
};
const mapStateToProps = state => {
return {
languages: getEnabledLanguages(state),
currentLanguage: getCurrentLanguage(state)
};
};
const mapDispatchToProps = dispatch => {
return {
chooseLanguage: language => dispatch(I18nActions.chooseLanguage(language))
};
};
export default injectIntl(
connect(mapStateToProps, mapDispatchToProps)(I18nDropdown)
);