Disable <table> being auto amended during save
Ah, If I use this https://github.com/artf/grapesjs-custom-code, it does not amend the html during saving. This will not work when using 'gjs-preset-newsletter'. Since if you run command 'gjs-get-inlined-html' then it amends the code. E.g. HTML CODE: Run 'gjs-get-inlined-html' and it outputs: I assume there is no way t...
Read full answer below ↓Question
I'm getting an issue, when saving a custom HTML component (just a table), grapes JS will modify it.
before save

after save.

So I want to be able to insert a table like because I would like to intergate it with twig (a templating language) :
<table>
{% for item in items %}
<tr>
{{ item.name }}
</tr>
{% endfor %}
</table>
I believe it is linked to #606, but I can't see if that helps this problem I'm having.
It's also linked to #1939
Is there a possibility of disabling this feature?
Ideally, have a way to have a html component that the content cannot be modified in any way by grapesjs.
Thanks, Adam
Answers (3)
Ah, If I use this https://github.com/artf/grapesjs-custom-code, it does not amend the html during saving.
This will not work when using 'gjs-preset-newsletter'.
Since if you run command 'gjs-get-inlined-html' then it amends the code.
E.g. HTML CODE:
<table>
<tr>
<th>Descritpion
</th>
<th>
</th>
</tr>
{% for item in basket_items %}
<tr>
<td>
<h1>{{ item.event_name }} - {{ item.location }}: {{ item.date }} {{ item.from_time }} to {{ item.to_time }}
</h1>
</td>
<td>
</td>
</tr>
{% endfor %}
</table>
Run 'gjs-get-inlined-html' and it outputs:
{% for item in basket_items %}
{% endfor %}
<table >......
I assume there is no way to prevent that?
You can't insert invalid HTML. If you need to handle stuff like that, you have to create a custom component which then will output the custom code.
Thanks for reporting this, @adamwpe.
Great suggestion about FEAT: Disable <table> being auto amended during save! While this specific feature isn't yet in the core API, there are several ways to achieve similar behavior.
Using the event system:
editor.on('component:update', (component) => {
// your logic here
});
Alternative approaches:
- Listen to
selector:addfor CSS selector changes - Use
selector:customfor custom rules - Tap into the
change:*events for fine-grained tracking - Build a plugin that extends the editor with this capability
Making it official: If this feature would benefit many users, consider opening a formal Feature Request on the GrapesJS repo with:
- A detailed use case
- Code example showing the desired behavior
- Why this matters for your workflow
The core team is receptive to well-motivated feature requests backed by real use cases.
Related Questions and Answers
Continue research with similar issue discussions.
Issue #3138
Prevent <TABLE>from being modified during saving.
Hi All, I'm getting an issue, when saving a custom HTML component (just a table), grapes JS will modify it. before save after save. Is it p...
Issue #5199
Changes in component's attributes being reproduced in all the instances instead of just one
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome v114 Reproducible demo link https:/...
Issue #4000
Pasting a component in root body layer throws TypeError
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome v89 Reproducible demo link https://...
Issue #4503
Missing inline styles used by CKEditor when adding raw html components
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chromium v96 Reproducible demo link https:...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Check the open-source GrapesJS plugins on GitHub or run a quick search in our free catalog.
Browse free plugins →Premium plugins ship with support, regular updates, and production-ready features — save days of integration work.
Browse premium plugins →Related tutorials
In-depth guides on the same topic.
Tutorial
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
Tutorial
Embed GrapesJS in Your SaaS: A Weekend Guide
Embed GrapesJS in your SaaS and ship a white-label page builder over a weekend. Honest tradeoffs, real code, and the plugins that close the UX gap.
Tutorial
Big Updates: TinyMCE 8 and Placeholder 2.0 for GrapesJS
In May we shipped major updates to two of our most popular GrapesJS plugins — TinyMCE Inline Text Editor and Placeholder.
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.