Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Root cause
MarkdownToolbarElement.connectedCallback()adds itskeydownandclicklisteners every time the element is connected. The click listener is the same function each time, so the browser ignores the duplicate, but the keydown listener is a newkeydown(applyFromToolbar)wrapper on every call. Each time the toolbar is moved in the DOM (disconnected and connected again) it gains one more keydown listener. Pressing Enter or Space on adata-md-buttonelement then applies the style more than once, and for toggling styles like headers or bold the second run undoes the first, so the key press seems to do nothing.Fix
Add the two listeners once in the constructor, the same way
MarkdownButtonElementalready does. They live on the element itself, so they do not need to be removed or added again on disconnect and reconnect.Test
Added a test that adds a
<button data-md-button="header-6">, moves the toolbar, and presses Enter on the button. Without the fix the textarea ends up as|title|(the header is added and then removed) and the test fails; with the fix it is###### |title|and the test passes.npm test(lint, build and the full Karma suite) passes: 144 tests.