summaryrefslogtreecommitdiffstats
path: root/webapp/components/delete_modal_trigger.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/delete_modal_trigger.jsx')
-rw-r--r--webapp/components/delete_modal_trigger.jsx62
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
+};