When rendering <tr> tags inside <template> tags, tags are trimmed off and only string content is remained.
Question
GrapesJS version
- I confirm to use the latest version of GrapesJS
What browser are you using?
Chrome v121
Reproducible demo link
https://jsfiddle.net/L27powtg/30/ (the fix it also there, commented out)
Describe the bug
How to reproduce the bug?
- Create a custom GJS component for template tags as explained here: https://github.com/GrapesJS/grapesjs/issues/244#issuecomment-324449748
- Add a template component that has a table row as a child. eg:
<template><tr><td>Cell content</td></tr></template>
- check the result of editor.toHTML().
What is the expected behavior? The result of toHTML should not trim of the tr, td tags.
What is the current behavior? resulting html string is missing the tr, td tags.
If is necessary to execute some code in order to reproduce the bug, paste it here below:
let comp = editor.DomComponents.addComponent('<template><tr><td>Cell content </td></tr></template>')
alert(comp.toHTML())
I've implemented a fix for this as a custom parserHtml function. This can be integrated in BrowserParserHtml.ts file if that makes sense.
Actually DOMParser is trimming of the tags as it considers a tr tag invalid as a root tag.
Wrapping the content in a template tag makes it a valid HTML again and no trimming happens. This would probably fix most if not all similar issues:
parserHtml(input, options) {
const template = document.createElement('template');
template.innerHTML = input;
return template.content;
}
Thanks for this great tool by the way!
Code of Conduct
- I agree to follow this project's Code of Conduct
Answers (0)
No answers yet.
Related Questions and Answers
Continue research with similar issue discussions.
Issue #4148
BUG: 0.18.2 / 0.18.3 removes all on... HTML attributes when block is drag-dropped in the builder
GrapesJS version[X] I confirm to use the latest version of GrapesJSWhat browser are you using? Chrome v99Reproducible demo link https://jsf...
Issue #3779
BUG: editor.getSelected().toHTML() encodes inline javascript
GrapesJS version[X] I confirm to use the latest version of GrapesJSWhat browser are you using? latest (chrome)Reproducible demo link https:...
Issue #4572
BUG: Page update event doesn't fire
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? chrome Reproducible demo link https://jsfi...
Issue #6318
BUG: Unable to use transparent fill in Block media svg
GrapesJS version[X] I confirm to use the latest version of [email protected] when this issue was filedWhat browser are you using? Fir...
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.