import React, { PropTypes } from 'react'; import { Modal } from 'react-bootstrap'; import cx from 'classnames'; const propTypes = { triggerNode: PropTypes.node.isRequired, modalTitle: PropTypes.node.isRequired, modalBody: PropTypes.node, // not required because it can be generated by beforeOpen beforeOpen: PropTypes.func, onExit: PropTypes.func, isButton: PropTypes.bool, bsSize: PropTypes.string, className: PropTypes.string, }; const defaultProps = { beforeOpen: () => {}, onExit: () => {}, isButton: false, bsSize: null, className: '', }; export default class ModalTrigger extends React.Component { constructor(props) { super(props); this.state = { showModal: false, }; this.open = this.open.bind(this); this.close = this.close.bind(this); } close() { this.setState({ showModal: false }); } open(e) { e.preventDefault(); this.props.beforeOpen(); this.setState({ showModal: true }); } render() { const classNames = cx({ 'btn btn-default btn-sm': this.props.isButton, }); return ( {this.props.triggerNode} {this.props.modalTitle} {this.props.modalBody} ); } } ModalTrigger.propTypes = propTypes; ModalTrigger.defaultProps = defaultProps;