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/theme/textmate'; import ControlHeader from '../ControlHeader'; import ModalTrigger from '../../../components/ModalTrigger'; import { t } from '../../../locales'; const propTypes = { name: PropTypes.string.isRequired, label: PropTypes.string, description: PropTypes.string, onChange: PropTypes.func, value: PropTypes.string, height: PropTypes.number, language: PropTypes.oneOf([null, 'json', 'html', 'sql', 'markdown']), }; const defaultProps = { label: null, description: null, onChange: () => {}, value: '', height: 250, }; 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 ( ); } render() { const controlHeader = ; return (
{controlHeader} {this.renderEditor()} {t('Edit')} {this.props.language} {t('in modal')} } modalBody={this.renderEditor(true)} />
); } } TextAreaControl.propTypes = propTypes; TextAreaControl.defaultProps = defaultProps;