diff --git a/client/src/components/_test/test.component.jsx b/client/src/components/_test/test.component.jsx new file mode 100644 index 000000000..033f0ed3f --- /dev/null +++ b/client/src/components/_test/test.component.jsx @@ -0,0 +1,37 @@ +import React from "react"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { setEmailOptions } from "../../redux/email/email.actions"; +import T from "../../emails/parts-order/parts-order.email"; +import { REPORT_QUERY_PARTS_ORDER_BY_PK } from "../../emails/parts-order/parts-order.query"; + +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = dispatch => ({ + setEmailOptions: e => dispatch(setEmailOptions(e)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function Test({ setEmailOptions }) { + return ( + + ); +}); diff --git a/client/src/components/send-email-button/send-email-button.component.jsx b/client/src/components/email-overlay/email-overlay.component.jsx similarity index 75% rename from client/src/components/send-email-button/send-email-button.component.jsx rename to client/src/components/email-overlay/email-overlay.component.jsx index 86187363d..635a86e56 100644 --- a/client/src/components/send-email-button/send-email-button.component.jsx +++ b/client/src/components/email-overlay/email-overlay.component.jsx @@ -4,35 +4,34 @@ import CKEditor from "@ckeditor/ckeditor5-react"; import ClassicEditor from "@ckeditor/ckeditor5-build-classic"; export default function SendEmailButtonComponent({ - emailConfig, + messageOptions, handleConfigChange, handleHtmlChange }) { return (
- THis is where the text editing will happen To CC Subject { - // You can store the "editor" and use when it is needed. + //You can store the "editor" and use when it is needed. console.log("Editor is ready to use!", editor); }} onChange={(event, editor) => { diff --git a/client/src/components/email-overlay/email-overlay.container.jsx b/client/src/components/email-overlay/email-overlay.container.jsx new file mode 100644 index 000000000..9e758c0b8 --- /dev/null +++ b/client/src/components/email-overlay/email-overlay.container.jsx @@ -0,0 +1,100 @@ +import { Button, Modal } from "antd"; +import React, { useEffect, useState } from "react"; +import { useLazyQuery } from "react-apollo"; +import { renderEmail } from "react-html-email"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { + sendEmail, + toggleEmailOverlayVisible +} from "../../redux/email/email.actions"; +import { + selectEmailConfig, + selectEmailVisible +} from "../../redux/email/email.selectors.js"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; +import EmailOverlayComponent from "./email-overlay.component"; + +const mapStateToProps = createStructuredSelector({ + modalVisible: selectEmailVisible, + emailConfig: selectEmailConfig +}); +const mapDispatchToProps = dispatch => ({ + toggleEmailOverlayVisible: () => dispatch(toggleEmailOverlayVisible()), + sendEmail: email => dispatch(sendEmail(email)) +}); +export default connect( + mapStateToProps, + mapDispatchToProps +)(function SendEmail({ + emailConfig, + modalVisible, + sendEmail, + toggleEmailOverlayVisible +}) { + const [messageOptions, setMessageOptions] = useState( + emailConfig.messageOptions + ); + useEffect(() => { + setMessageOptions(emailConfig.messageOptions); + }, [setMessageOptions, emailConfig.messageOptions]); + + const [executeQuery, { called, loading, data }] = useLazyQuery( + emailConfig.queryConfig[0], + { + ...emailConfig.queryConfig[1], + fetchPolicy: "network-only" + } + ); + + if ( + emailConfig.queryConfig[0] && + emailConfig.queryConfig[1] && + modalVisible && + !called + ) { + executeQuery(); + } + + if (data && !messageOptions.html && emailConfig.template) { + //console.log(ReactDOMServer.renderToStaticMarkup(