diff --git a/app/javascript/controllers/wiki_toolbar_controller.js b/app/javascript/controllers/wiki_toolbar_controller.js index 8f92b8a..ff0c425 100644 --- a/app/javascript/controllers/wiki_toolbar_controller.js +++ b/app/javascript/controllers/wiki_toolbar_controller.js @@ -124,6 +124,12 @@ export default class extends Controller { // Menus + closeMenuWithKeyboard() { + const button = this.menuButton + this.closeMenu() + button?.focus() + } + toggleMenu({ currentTarget, params }) { const opened = this.menu?.dataset.name === params.menu this.closeMenu() @@ -132,6 +138,7 @@ export default class extends Controller { const template = this[`${params.menu}MenuTarget`] this.menu = template.content.firstElementChild.cloneNode(true) this.menu.dataset.name = params.menu + this.menuButton = currentTarget this.element.append(this.menu) this.positionMenu(currentTarget) diff --git a/lib/redmine/wiki_toolbar.rb b/lib/redmine/wiki_toolbar.rb index fef3321..8d613af 100644 --- a/lib/redmine/wiki_toolbar.rb +++ b/lib/redmine/wiki_toolbar.rb @@ -164,7 +164,7 @@ module Redmine def precode_menu tag.ul(class: 'jstMenu', role: 'menu', - data: {action: 'click->wiki-toolbar#closeMenu keydown.esc->wiki-toolbar#closeMenu'}) do + data: {action: 'click->wiki-toolbar#closeMenu keydown.esc->wiki-toolbar#closeMenuWithKeyboard'}) do @view.safe_join( code_languages.map do |lang| tag.li(role: 'none') do @@ -179,7 +179,7 @@ module Redmine def table_menu tag.table(class: 'table-generator', role: 'grid', data: { - action: 'click->wiki-toolbar#closeMenu keydown.esc->wiki-toolbar#closeMenu ' \ + action: 'click->wiki-toolbar#closeMenu keydown.esc->wiki-toolbar#closeMenuWithKeyboard ' \ 'mouseover->wiki-toolbar#highlightTable focusin->wiki-toolbar#highlightTable' }) do @view.safe_join(