From 02f7726774096e2fb8cd6e8a60424e90d377de53 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Wed, 15 Apr 2020 18:07:51 +0200 Subject: [PATCH] Add form type selection and spinner for iframe [MAILPOET-2743] --- .../src/components-form-editor/_preview.scss | 18 +++++++ .../js/src/form_editor/components/preview.jsx | 54 +++++++++++++++---- views/form/editor.html | 1 + 3 files changed, 64 insertions(+), 9 deletions(-) diff --git a/assets/css/src/components-form-editor/_preview.scss b/assets/css/src/components-form-editor/_preview.scss index 8b2636a082..850de4d6e1 100644 --- a/assets/css/src/components-form-editor/_preview.scss +++ b/assets/css/src/components-form-editor/_preview.scss @@ -13,6 +13,14 @@ margin: 0; min-height: 100%; min-width: 100%; + + .mailpoet_form_preview_type_select { + position: absolute; + top: 20px; + left: 40px; + z-index: 11; + } + .mailpoet-modal-header { height: 26px; margin-bottom: 0; @@ -33,12 +41,22 @@ height: 100%; display: flex; flex-direction: column; + + .mailpoet_spinner_wrapper { + left: 0; + position: absolute; + top: 0; + } } .mailpoet_browser_preview_container { height: 100%; } + .mailpoet_browser_preview_border { + position: relative; + } + .mailpoet_form_preview_iframe { height: 100%; max-height: 100%; diff --git a/assets/js/src/form_editor/components/preview.jsx b/assets/js/src/form_editor/components/preview.jsx index ae24544494..c873842a48 100644 --- a/assets/js/src/form_editor/components/preview.jsx +++ b/assets/js/src/form_editor/components/preview.jsx @@ -10,9 +10,13 @@ import { useDispatch, useSelect } from '@wordpress/data'; import Preview from '../../common/preview/preview.jsx'; import Modal from '../../common/modal/modal.jsx'; import { blocksToFormBodyFactory } from '../store/blocks_to_form_body.jsx'; +import { onChange } from '../../common/functions'; const FormPreview = () => { const [form, setForm] = useState(null); + const [iframeLoaded, setIframeLoaded] = useState(false); + const [formType, setFormType] = useState(false); + const [previewType, setPreviewType] = useState('desktop'); const formBlocks = useSelect( (select) => select('mailpoet-form-editor').getFormBlocks(), @@ -60,6 +64,7 @@ const FormPreview = () => { if (isPreview) { loadFormPreviewFromServer(); } + setIframeLoaded(false); }, [isPreview, loadFormPreviewFromServer]); @@ -72,11 +77,15 @@ const FormPreview = () => { const urlData = { id: formData.id, + form_type: formType, }; - const iframeSrc = `${window.mailpoet_form_preview_page}&data=${btoa(JSON.stringify(urlData))}`; + let iframeSrc = `${window.mailpoet_form_preview_page}&data=${btoa(JSON.stringify(urlData))}`; + // Add anchor to scroll to certain types of form + if (['below_post'].includes(formType)) { + iframeSrc += `#mailpoet_form_preview_${formData.id}`; + } return ( { )} {form !== null && ( - -