BUG: Loading `component` and `styles` from `pageManager`
Question
GrapesJS version
- I confirm to use the latest version of GrapesJS
What browser are you using?
Chrome v117.0.5938.149
Reproducible demo link
https://jsfiddle.net/9oLrsvya/
Describe the bug
How to reproduce the bug?
- Please see the
pageManagerobject in the jsfiddle
What is the expected behavior? Looking at the following documentation: https://grapesjs.com/docs/api/pages.html#pages
It should load in the component and styles from the pageManager correctly into the editor.
What is the current behavior?
When you check the code via "view code" in the editor you'll notice neither the exact HTML neither the styles have correctly loaded. The body tag does not retain the ID tag that the editor adds when applying any kind of styling to it which means the styling won't work. And the CSS hasn't loaded in correctly at all.
If it is a confirmed bug, I'd be happy to attempt to fix it. It would be great to roughly know where the component and styles are being loaded from as I am not intimately familiar with the project files.
Code of Conduct
- I agree to follow this project's Code of Conduct
Answers (3)
One annoying thing is that the editor is prepending the below default styles which when saving the styles has numerous duplicates of it:
* {
box-sizing: border-box;
}
body {
margin: 0;
}
Edit: Looking at the docs I finally managed to find protectedCss and when set to empty stops the styles being prepended.
Hi @mapsmarketing currently GrapesJS is not able to properly import HTML documents as string, so the parser skips elements like html, head, body and returns only what is parsed inside the body, one workaround you could do right now is to pass component as object
component: {
attributes: { id: 'ignt' },
components: '<div class="my-el">Testing world!</div>',
},
Regarding the styles, it's the browser's default CSSOM parser issue, please refer to this plugin
Hi @artf ,
I've found a way to get the body attributes along with the styles saving correctly via the following method:
const pageManager = editor.Pages;
const page = pageManager.get('my-page-id').toJSON();
const component = pageManager.get('my-page-id').getMainComponent();
page.styles = editor.getCss({ component });
I noticed that your Page.toJSON outputs everything of the specified page. However, it doesn't seem to output the styles correctly (it's always set as undefined for me), so I retrieve the styles for the active page via the editor and override the ones in the JSON. I believe styles are not set due to the if (!props.frames) check you have in Page.ts
The below is an example of how I'm loading in the HTML. I am using frames since component doesn't work with the supplied structure. I am loading in the styles without the use of the parser plugin and it seems to be loading in without issues.
const pageJSON = {...}; // Contains the `frames` and `styles`
const editor = grapesjs.init({
pageManager: {
pages: [
{
id: 'my-page-id',
frames: pageJSON.frames,
styles: pageJSON.styles,
}
]
}
});
I also noticed that the PageManager.select function doesn't update styles when switching between the pages which forces me to run: editor.setStyle(pageJSON.styles);
Related Questions and Answers
Continue research with similar issue discussions.
Issue #4323
BUG: Performance issue while dragging component to canvas when you have 2k component on canvas
GrapesJS version[X] I confirm to use the latest version of GrapesJSWhat browser are you using? Google Chrome Version 101.0.4951.41 (Officia...
Issue #6458
BUG: sector.setName doesn't work
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Chrome Reproducible demo link https://jsfi...
Issue #5990
BUG: When you delete a component, duplicate classes between components will be deleted.
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome 126.0.6478.127(Windows) Reproducibl...
Issue #5982
BUG: Component styles such as md:flex-row(tailwind) are removed
GrapesJS version[x] I confirm to use the latest version of GrapesJSWhat browser are you using? Chrome 126.0.6478.127Reproducible demo link...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.