diff --git a/assets/css/src/modal.styl b/assets/css/src/modal.styl
index ed5b4c46fd..be40f80762 100644
--- a/assets/css/src/modal.styl
+++ b/assets/css/src/modal.styl
@@ -77,6 +77,9 @@ body.mailpoet_modal_opened
padding: 10px 10px 10px 10px
height: 92%
+ .button + .button
+ margin-left: 10px
+
// modal panel
.mailpoet_modal_overlay.mailpoet_panel_overlay
top: 32px
@@ -128,6 +131,8 @@ body.mailpoet_modal_opened
// modal button
.mailpoet_modal_close
background: url(../img/modal_close_button.png) 7px 7px no-repeat
+ border: 0
+ cursor: pointer
height: 30px
overflow: hidden
padding: 0
diff --git a/assets/js/src/common/confirm_alert.jsx b/assets/js/src/common/confirm_alert.jsx
new file mode 100644
index 0000000000..0a9b8cc1ec
--- /dev/null
+++ b/assets/js/src/common/confirm_alert.jsx
@@ -0,0 +1,72 @@
+import MailPoet from 'mailpoet';
+import PropTypes from 'prop-types';
+import React from 'react';
+import ReactDOM from 'react-dom';
+
+class ConfirmAlert extends React.Component {
+ static propTypes = {
+ title: PropTypes.string,
+ message: PropTypes.string.isRequired,
+ cancelLabel: PropTypes.string,
+ confirmLabel: PropTypes.string,
+ onConfirm: PropTypes.func.isRequired,
+ }
+
+ static defaultProps = {
+ title: MailPoet.I18n.t('confirmTitle'),
+ cancelLabel: MailPoet.I18n.t('cancelLabel'),
+ confirmLabel: MailPoet.I18n.t('confirmLabel'),
+ }
+
+ constructor(props) {
+ super(props);
+ this.state = { show: true };
+ }
+
+ componentWillUpdate = () => {
+ if (!this.state.show) {
+ this.setState({ show: true });
+ }
+ }
+
+ onClose = () => {
+ this.setState({ show: false });
+ }
+
+ onConfirm = () => {
+ this.onClose();
+ this.props.onConfirm();
+ }
+
+ render() {
+ const { title, message, confirmLabel, cancelLabel } = this.props;
+
+ return (this.state.show &&
+
+
+
+
+ {title &&
+
+
{title}
+
+ }
+
+
{message}
+
+
+
+
+
+
+ );
+ }
+}
+
+export default function confirmAlert(props) {
+ ReactDOM.render(, document.getElementById('mailpoet_confirm_alert_holder'));
+}
diff --git a/assets/js/src/newsletters/listings/standard.jsx b/assets/js/src/newsletters/listings/standard.jsx
index c09ba8f0fa..5b8637e511 100644
--- a/assets/js/src/newsletters/listings/standard.jsx
+++ b/assets/js/src/newsletters/listings/standard.jsx
@@ -1,11 +1,11 @@
import React from 'react';
import createReactClass from 'create-react-class';
-import { confirmAlert } from 'react-confirm-alert';
import classNames from 'classnames';
import MailPoet from 'mailpoet';
import Hooks from 'wp-js-hooks';
import PropTypes from 'prop-types';
+import confirmAlert from 'common/confirm_alert.jsx';
import Listing from 'listing/listing.jsx';
import ListingTabs from 'newsletters/listings/tabs.jsx';
import ListingHeading from 'newsletters/listings/heading.jsx';
@@ -113,10 +113,7 @@ const confirmEdit = (newsletter) => {
redirectToEditing();
} else {
confirmAlert({
- title: MailPoet.I18n.t('confirmTitle'),
message: MailPoet.I18n.t('confirmEdit'),
- confirmLabel: MailPoet.I18n.t('confirmLabel'),
- cancelLabel: MailPoet.I18n.t('cancelLabel'),
onConfirm: redirectToEditing,
});
}
diff --git a/assets/js/src/newsletters/templates/template_box.jsx b/assets/js/src/newsletters/templates/template_box.jsx
index d8032d2ea3..054bc11aec 100644
--- a/assets/js/src/newsletters/templates/template_box.jsx
+++ b/assets/js/src/newsletters/templates/template_box.jsx
@@ -1,8 +1,9 @@
import React from 'react';
import MailPoet from 'mailpoet';
-import { confirmAlert } from 'react-confirm-alert';
import PropTypes from 'prop-types';
+import confirmAlert from 'common/confirm_alert.jsx';
+
/**
* props = {
* index, id, newsletterId, name, description, thumbnail, readonly,
@@ -40,12 +41,8 @@ class TemplateBox extends React.Component {
});
};
confirmAlert({
- title: MailPoet.I18n.t('confirmTitle'),
message: MailPoet.I18n.t('confirmTemplateDeletion').replace('%$1s', name),
- confirmLabel: MailPoet.I18n.t('confirmLabel'),
- cancelLabel: MailPoet.I18n.t('cancelLabel'),
onConfirm,
- onCancel: () => {},
});
}
diff --git a/views/layout.html b/views/layout.html
index 55cf46b241..3301538dce 100644
--- a/views/layout.html
+++ b/views/layout.html
@@ -11,6 +11,7 @@ jQuery('.toplevel_page_mailpoet-newsletters.menu-top-last')
+
<% block templates %><% endblock %>