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 && +
+
+
+ + +
+
+
+ + ); + } +} + +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 %>