49 lines
1.4 KiB
JavaScript
Raw Normal View History

/**
*
* SelectOption
*
*/
import PropTypes from 'prop-types';
2017-08-08 09:42:32 +02:00
import getFlag, { formatLanguageLocale } from '../../utils/getFlag';
import styles from './styles.scss';
class SelectOptionLanguage extends React.Component { // eslint-disable-line react/prefer-stateless-function
/* eslint-disable jsx-a11y/no-static-element-interactions */
onSelect = (event) => {
event.preventDefault();
event.stopPropagation();
this.props.onSelect(this.props.option, event);
}
handleMouseEnter = (event) => {
this.props.onFocus(this.props.option, event);
}
handleMouseMove = (event) => {
if (this.props.isFocused) return;
this.props.onFocus(this.props.option, event);
}
render() {
2017-08-08 09:42:32 +02:00
const flagName = formatLanguageLocale(this.props.option.value);
const flag = getFlag(flagName);
return (
2017-08-16 09:40:29 +02:00
<div className={styles.selectOption} onMouseEnter={this.handleMouseEnter} onMouseMove={this.handleMouseMove} onFocus={this.props.onFocus} onClick={this.onSelect} id={this.props.option.value}>
<span className={`${styles.flagContainer} flag-icon flag-icon-${flag}`} />
<span className={styles.optionLabel}>{this.props.option.label}</span>
</div>
);
}
}
SelectOptionLanguage.propTypes = {
isFocused: PropTypes.bool.isRequired,
onFocus: PropTypes.func.isRequired,
onSelect: PropTypes.func.isRequired,
option: PropTypes.object.isRequired,
};
export default SelectOptionLanguage;