import { registerComponent } from 'meteor/vulcan:lib'; import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import Modal from 'react-bootstrap/lib/Modal' class ModalTrigger extends PureComponent { constructor() { super(); this.openModal = this.openModal.bind(this); this.closeModal = this.closeModal.bind(this); this.state = { modalIsOpen: false }; } openModal() { this.setState({modalIsOpen: true}); } closeModal() { this.setState({modalIsOpen: false}); } renderHeader() { return ( {this.props.title} ) } render() { const triggerComponent = this.props.component ? React.cloneElement(this.props.component, { onClick: this.openModal }) : {this.props.label}; const childrenComponent = React.cloneElement(this.props.children, {closeModal: this.closeModal}); return (
{triggerComponent} {this.props.title ? this.renderHeader() : null} {childrenComponent}
) } } ModalTrigger.propTypes = { className: PropTypes.string, label: PropTypes.string, component: PropTypes.object, size: PropTypes.string } ModalTrigger.defaultProps = { size: 'large' } registerComponent('ModalTrigger', ModalTrigger); export default ModalTrigger;