diff --git a/assets/js/src/form_editor/components/editor.jsx b/assets/js/src/form_editor/components/editor.jsx index 633c96651f..ed963f17f5 100644 --- a/assets/js/src/form_editor/components/editor.jsx +++ b/assets/js/src/form_editor/components/editor.jsx @@ -6,6 +6,7 @@ import Header from './header.jsx'; import Sidebar from './sidebar.jsx'; import FormTitle from './form_title.jsx'; import Notices from './notices.jsx'; +import FormStyles from './form_styles.jsx'; /** * This component renders the form editor app. @@ -19,6 +20,7 @@ export default () => { (select) => select('mailpoet-form-editor').getSidebarOpened(), [] ); + const layoutClass = classnames('edit-post-layout', { 'is-sidebar-opened': sidebarOpened, }); @@ -29,7 +31,7 @@ export default () => {
-
+
@@ -39,6 +41,7 @@ export default () => {
+
); }; diff --git a/assets/js/src/form_editor/components/form_styles.jsx b/assets/js/src/form_editor/components/form_styles.jsx new file mode 100644 index 0000000000..e4d4ab0f6e --- /dev/null +++ b/assets/js/src/form_editor/components/form_styles.jsx @@ -0,0 +1,22 @@ +import ReactDOM from 'react-dom'; +import { useSelect } from '@wordpress/data'; +import { transformStyles } from '@wordpress/block-editor'; +import css from 'css'; + +export default () => { + const element = document.getElementById('mailpoet-form-editor-form-styles'); + + const formStyles = useSelect( + (select) => select('mailpoet-form-editor').getFormStyles(), + [] + ); + + try { + css.parse(formStyles); + } catch (e) { + return ReactDOM.createPortal(null, element); + } + + const transoformedStyles = transformStyles([{ css: formStyles }], '.editor-styles-wrapper'); + return ReactDOM.createPortal(transoformedStyles[0], element); +}; diff --git a/package-lock.json b/package-lock.json index 8874e90ed7..1518409e85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3155,8 +3155,7 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { "version": "9.4.10", @@ -4759,6 +4758,17 @@ "randomfill": "^1.0.3" } }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, "css-line-break": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz", @@ -4875,8 +4885,7 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "deep-eql": { "version": "0.1.3", @@ -11023,8 +11032,7 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "restore-cursor": { "version": "2.0.0", @@ -11808,7 +11816,6 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, "requires": { "atob": "^2.1.1", "decode-uri-component": "^0.2.0", @@ -11838,8 +11845,7 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "spdx-correct": { "version": "3.1.0", @@ -13448,8 +13454,7 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, "url": { "version": "0.11.0", diff --git a/package.json b/package.json index b204a35183..307db51db5 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "dependencies": { "@babel/runtime": "^7.4.5", "@babel/runtime-corejs3": "^7.5.5", + "@wordpress/block-editor": "^3.3.0", "@wordpress/components": "^8.4.0", "@wordpress/data": "^4.10.0", "@wordpress/edit-post": "^3.9.0", @@ -33,6 +34,7 @@ "blob-tmp": "^1.0.0", "classnames": "^2.1.3", "codemirror": "^5.37.0", + "css": "^2.2.4", "file-saver": "^1.3.8", "handlebars": "^4.5.3", "html2canvas": "^1.0.0-alpha.12", diff --git a/views/form/editor.html b/views/form/editor.html index e2478b9f28..97c25e4734 100644 --- a/views/form/editor.html +++ b/views/form/editor.html @@ -20,6 +20,8 @@ var mailpoet_form_pages = <%= json_encode(pages) %>; <% endautoescape %> + + <% endblock %> <% block translations %>