diff --git a/frontend/src/components/select-editor/select-editor.js b/frontend/src/components/select-editor/select-editor.js index cbed571cb6..cca2c9989d 100644 --- a/frontend/src/components/select-editor/select-editor.js +++ b/frontend/src/components/select-editor/select-editor.js @@ -1,7 +1,8 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Input } from 'reactstrap'; import { gettext } from '../../utils/constants'; +import Select from 'react-select'; +import '../../css/select-editor.css'; const propTypes = { isTextMode: PropTypes.bool.isRequired, // there will be two mode. first: text and select. second: just select @@ -9,6 +10,7 @@ const propTypes = { options: PropTypes.array.isRequired, currentOption: PropTypes.string.isRequired, translateOption: PropTypes.func.isRequired, + translateExplanation: PropTypes.func, onOptionChanged: PropTypes.func.isRequired, }; @@ -19,24 +21,36 @@ class SelectEditor extends React.Component { this.state = { isEditing: false, } + this.options = []; } componentDidMount() { document.addEventListener('click', this.onHideSelect); + this.setOptions(); + } + + setOptions = () => { + this.options = []; + const options = this.props.options; + for (let i = 0, length = options.length; i < length; i++) { + let option = {}; + option.value = options[i]; + option.label =
{this.props.translateOption(options[i])}{ this.props.translateExplanation &&
{this.props.translateExplanation(options[i])}
}
; + this.options.push(option); + } } componentWillUnmount() { document.removeEventListener('click', this.onHideSelect); } - onEidtPermission = (e) => { + onEditPermission = (e) => { e.nativeEvent.stopImmediatePropagation(); this.setState({isEditing: true}); } onOptionChanged = (e) => { - e.nativeEvent.stopImmediatePropagation(); - let permission = e.target.value; + let permission = e.value; if (permission !== this.props.currentOption) { this.props.onOptionChanged(permission); } @@ -56,23 +70,16 @@ class SelectEditor extends React.Component { // scence1: isTextMode (text)editor-icon --> select // scence2: !isTextMode select - let selectStyle = { - height: '1.5rem', - padding: 0 - }; - if (!isTextMode) { - selectStyle = {}; - } return ( -
+
{(!isTextMode || this.state.isEditing) && - - {options.map((item, index) => { - return ( - - ); - })} - +