import React, {PureComponent, PropTypes} from 'react'; import autobind from 'autobind-decorator'; import VariableEditor from '../templating/variable-editor'; import TagEditor from '../templating/tag-editor'; import Modal from '../base/modal'; import ModalBody from '../base/modal-body'; import ModalHeader from '../base/modal-header'; import ModalFooter from '../base/modal-footer'; import {trackEvent} from '../../../analytics'; @autobind class NunjucksModal extends PureComponent { constructor (props) { super(props); this.state = { defaultTemplate: '' }; this._onDone = null; this._currentTemplate = null; } _setModalRef (n) { this.modal = n; } _handleTemplateChange (template) { this._currentTemplate = template; } show ({template, onDone}) { this._onDone = onDone; this.setState({ defaultTemplate: template }); trackEvent('Nunjucks', 'Editor', 'Show'); // NOTE: This must be called after setState() above because show() is going // to force refresh the modal this.modal.show(); } hide () { this.modal.hide(); trackEvent('Nunjucks', 'Editor', 'Hide'); } _handleSubmit (e) { e.preventDefault(); this._onDone && this._onDone(this._currentTemplate); this.hide(); } render () { const {handleRender} = this.props; const {defaultTemplate} = this.state; let editor = null; let title = ''; if (defaultTemplate.indexOf('{{') === 0) { title = 'Variable Reference'; editor = ( ); } else if (defaultTemplate.indexOf('{%') === 0) { title = 'Tag'; editor = ( ); } return (
Edit {title} {editor}
); } } NunjucksModal.propTypes = { handleRender: PropTypes.func.isRequired }; export default NunjucksModal;