diff --git a/src/index.ts b/src/index.ts index b2e371b..73e088a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -348,6 +348,12 @@ function unsetFocusManagement(toolbar: MarkdownToolbarElement) { class MarkdownToolbarElement extends HTMLElement { static observedAttributes = ['data-no-focus'] + constructor() { + super() + this.addEventListener('keydown', keydown(applyFromToolbar)) + this.addEventListener('click', applyFromToolbar) + } + connectedCallback(): void { if (!this.hasAttribute('role')) { this.setAttribute('role', 'toolbar') @@ -355,8 +361,6 @@ class MarkdownToolbarElement extends HTMLElement { if (!this.hasAttribute('data-no-focus')) { setFocusManagement(this) } - this.addEventListener('keydown', keydown(applyFromToolbar)) - this.addEventListener('click', applyFromToolbar) } attributeChangedCallback(name: string, oldValue: string, newValue: string): void { diff --git a/test/test.js b/test/test.js index d27dc3d..944e174 100644 --- a/test/test.js +++ b/test/test.js @@ -921,6 +921,18 @@ describe('markdown-toolbar-element', function () { assert.equal('###### |title|', visualValue()) }) + + it('applies a data-md-button style once from the keyboard after the toolbar is moved', function () { + const headerElement = document.createElement('button') + headerElement.setAttribute('data-md-button', 'header-6') + const toolbar = document.querySelector('markdown-toolbar') + toolbar.appendChild(headerElement) + toolbar.parentElement.append(toolbar) + setVisualValue('|title|') + headerElement.dispatchEvent(new KeyboardEvent('keydown', {key: 'Enter', bubbles: true, cancelable: true})) + + assert.equal('###### |title|', visualValue()) + }) }) }) })