Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure that getHtml() / runCommand("gjs-get-inlined-html") returns the very latest contents of the canvas #1767

Closed
arachnosoft opened this issue Jan 30, 2019 · 2 comments

Comments

@arachnosoft
Copy link

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:

grapesjs not updating until blur

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 #319 (comment)

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 ;)

@arachnosoft arachnosoft changed the title Ensure that getHtml() / runCommand("gjs-get-inlined-html") return the very latest contents of the canvas Ensure that getHtml() / runCommand("gjs-get-inlined-html") returns the very latest contents of the canvas Jan 30, 2019
@artf
Copy link
Member

artf commented Feb 5, 2019

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

@artf artf added this to To do in Release v0.14.55 via automation Feb 5, 2019
@artf artf closed this as completed in 2ab410d Mar 9, 2019
Release v0.14.55 automation moved this from To do to Done Mar 9, 2019
@lock
Copy link

lock bot commented Mar 10, 2020

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.

@lock lock bot added the outdated label Mar 10, 2020
@lock lock bot locked as resolved and limited conversation to collaborators Mar 10, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
No open projects
Development

No branches or pull requests

2 participants