import React from 'react'; import PropTypes from 'prop-types'; import { Button, FormGroup, FormControl } from 'react-bootstrap'; import AceEditor from 'react-ace'; import 'brace/mode/sql'; import 'brace/mode/json'; import 'brace/mode/html'; import 'brace/mode/markdown'; import 'brace/mode/javascript'; import 'brace/theme/textmate'; import ControlHeader from '../ControlHeader'; import ModalTrigger from '../../../components/ModalTrigger'; import { t } from '../../../locales'; const propTypes = { name: PropTypes.string.isRequired, onChange: PropTypes.func, value: PropTypes.string, height: PropTypes.number, minLines: PropTypes.number, maxLines: PropTypes.number, offerEditInModal: PropTypes.bool, language: PropTypes.oneOf([null, 'json', 'html', 'sql', 'markdown', 'javascript']), aboveEditorSection: PropTypes.node, }; const defaultProps = { onChange: () => {}, value: '', height: 250, minLines: 3, maxLines: 10, offerEditInModal: true, }; export default class TextAreaControl extends React.Component { onControlChange(event) { this.props.onChange(event.target.value); } onAceChange(value) { this.props.onChange(value); } renderEditor(inModal = false) { if (this.props.language) { return ( ); } return ( ); } renderModalBody() { return (
{this.props.aboveEditorSection}
{this.renderEditor(true)}
); } render() { const controlHeader = ; return (
{controlHeader} {this.renderEditor()} {this.props.offerEditInModal && {t('Edit')} {this.props.language} {t('in modal')} } modalBody={this.renderModalBody(true)} />}
); } } TextAreaControl.propTypes = propTypes; TextAreaControl.defaultProps = defaultProps;