-
john authored011e30bb
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Forked from
Coko Org / Products / ketty / editoria-app
475 commits behind the upstream repository.
AbstractModal.jsx 1.99 KiB
import React from 'react'
import { Modal } from 'react-bootstrap'
export class BookBuilderModal extends React.Component {
constructor (props) {
super(props)
this.performAction = this.performAction.bind(this)
}
performAction () {
const { successAction } = this.props
successAction()
}
renderHeader () {
const { title } = this.props
return (
<Modal.Header>
<Modal.Title>
{ title }
</Modal.Title>
</Modal.Header>
)
}
renderBody () {
const { body } = this.props
return (
<Modal.Body>
{ body }
</Modal.Body>
)
}
renderFooter () {
const { successAction, successText, toggle } = this.props
const successButton = (
<a
className='modal-button bb-modal-act'
onClick={this.performAction}>
{ successText }
</a>
)
const success = successAction ? successButton : null
return (
<Modal.Footer>
<div className='modal-buttons-container'>
<a className='modal-button modal-discard bb-modal-cancel'
onClick={toggle}>
Cancel
</a>
{ success }
</div>
</Modal.Footer>
)
}
render () {
const { container, size, show, toggle } = this.props
const header = this.renderHeader()
const body = this.renderBody()
const footer = this.renderFooter()
return (
<Modal
bsSize={size || null}
className='modal'
container={container}
onHide={toggle}
show={show}
>
{ header }
{ body }
{ footer }
</Modal>
)
}
}
BookBuilderModal.propTypes = {
body: React.PropTypes.object,
container: React.PropTypes.object.isRequired,
show: React.PropTypes.bool.isRequired,
size: React.PropTypes.string,
successAction: React.PropTypes.func,
successText: React.PropTypes.string,
title: React.PropTypes.string.isRequired,
toggle: React.PropTypes.func.isRequired
}
export default BookBuilderModal