diff options
Diffstat (limited to 'webapp/components/delete_modal_trigger.jsx')
-rw-r--r-- | webapp/components/delete_modal_trigger.jsx | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/webapp/components/delete_modal_trigger.jsx b/webapp/components/delete_modal_trigger.jsx new file mode 100644 index 000000000..9ccbf33a2 --- /dev/null +++ b/webapp/components/delete_modal_trigger.jsx @@ -0,0 +1,62 @@ +import React from 'react'; + +import ConfirmModal from './confirm_modal.jsx'; + +export default class DeleteModalTrigger extends React.Component { + constructor(props) { + super(props); + if (this.constructor === DeleteModalTrigger) { + throw new TypeError('Can not construct abstract class.'); + } + this.handleConfirm = this.handleConfirm.bind(this); + this.handleCancel = this.handleCancel.bind(this); + this.handleOpenModal = this.handleOpenModal.bind(this); + + this.state = { + showDeleteModal: false + }; + } + + handleOpenModal(e) { + e.preventDefault(); + + this.setState({ + showDeleteModal: true + }); + } + + handleConfirm(e) { + this.props.onDelete(e); + } + + handleCancel() { + this.setState({ + showDeleteModal: false + }); + } + + render() { + return ( + <span> + <a + href='#' + onClick={this.handleOpenModal} + > + { this.triggerTitle } + </a> + <ConfirmModal + show={this.state.showDeleteModal} + title={this.modalTitle} + message={this.modalMessage} + confirmButton={this.modalConfirmButton} + onConfirm={this.handleConfirm} + onCancel={this.handleCancel} + /> + </span> + ); + } +} + +DeleteModalTrigger.propTypes = { + onDelete: React.PropTypes.func.isRequired +}; |