import Modal from 'react-modal'; const customStyles = { content : { top : '50%', left : '50%', right : 'auto', bottom : 'auto', marginRight : '-50%', transform : 'translate(-50%, -50%)' } }; const ModalButton = React.createClass({ propTypes: { label: React.PropTypes.string.isRequired, className: React.PropTypes.string }, getInitialState: function() { return { modalIsOpen: false }; }, openModal: function(event) { event.preventDefault(); this.setState({modalIsOpen: true}); }, closeModal: function() { this.setState({modalIsOpen: false}); }, render() { // ({PostNewContainer} = Telescope.components); const Component = this.props.component; // see http://stackoverflow.com/a/32371612/649299 const childrenWithProps = React.Children.map(this.props.children, (child) => { // if child component already has a callback, create new callback // that both calls original callback and also closes modal let callback; if (child.props.callback) { callback = (document) => { child.props.callback(document); this.closeModal(); } } else { callback = this.closeModal; } return React.cloneElement(child, { successCallback: callback }); }); return (