Closed arachnosoft closed 5 years ago
Yeah, this is exactly how it works. I'll try to check if I'm able to merge the temporary state before getting the HTML data
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Hi @artf ,
I ran into a similar, if not the same issue as this one: #1327
While editing a text block, I click on an external button to get the contents of the canvas, without leaving the cursor from the canvas.
At this point, if I call getHtml() or runCommand("gjs-get-inlined-html") (my grapesjs being loaded with the Newsletter plugin), both commands return the contents of the canvas in its previous state (= before I started editing my block) and not in its "current" state (i.e. with the text I was currently typing).
I guess this is by-design; It can easily be reproduced on the online demo:
To ensure that grapesjs validates the content I was typing before calling getHtml() / runCommand("gjs-get-inlined-html"), just like when you click elsewhere on the canvas to trigger the component's blur event and update, I had to call disableEditing() explicitely, like this:
if (editor.getModel().isEditing()) editor.getSelected().view.disableEditing();
Based on https://github.com/artf/grapesjs/issues/319#issuecomment-331069138
Just to be sure, you could simply confirm that it's the right way to do so? And, if so, could you add this point on the getHtml() function documentation? It could avoid many misunderstandings, IMO.
FYI, I was already aware of such issues with CKEditor, on which you have to call myCkEditorInstance.updateElement() right before myCkEditorInstance.getData(). That's why I supposed it wasn't a bug ;)