Feature #43259 » 0003-wiki-toolbar-return-focus-after-escape.patch
| app/javascript/controllers/wiki_toolbar_controller.js | ||
|---|---|---|
| 124 | 124 | |
| 125 | 125 |
// Menus |
| 126 | 126 | |
| 127 |
closeMenuWithKeyboard() {
|
|
| 128 |
const button = this.menuButton |
|
| 129 |
this.closeMenu() |
|
| 130 |
button?.focus() |
|
| 131 |
} |
|
| 132 | ||
| 127 | 133 |
toggleMenu({ currentTarget, params }) {
|
| 128 | 134 |
const opened = this.menu?.dataset.name === params.menu |
| 129 | 135 |
this.closeMenu() |
| ... | ... | |
| 132 | 138 |
const template = this[`${params.menu}MenuTarget`]
|
| 133 | 139 |
this.menu = template.content.firstElementChild.cloneNode(true) |
| 134 | 140 |
this.menu.dataset.name = params.menu |
| 141 |
this.menuButton = currentTarget |
|
| 135 | 142 |
this.element.append(this.menu) |
| 136 | 143 |
this.positionMenu(currentTarget) |
| 137 | 144 | |
| lib/redmine/wiki_toolbar.rb | ||
|---|---|---|
| 164 | 164 | |
| 165 | 165 |
def precode_menu |
| 166 | 166 |
tag.ul(class: 'jstMenu', role: 'menu', |
| 167 |
data: {action: 'click->wiki-toolbar#closeMenu keydown.esc->wiki-toolbar#closeMenu'}) do
|
|
| 167 |
data: {action: 'click->wiki-toolbar#closeMenu keydown.esc->wiki-toolbar#closeMenuWithKeyboard'}) do
|
|
| 168 | 168 |
@view.safe_join( |
| 169 | 169 |
code_languages.map do |lang| |
| 170 | 170 |
tag.li(role: 'none') do |
| ... | ... | |
| 179 | 179 |
def table_menu |
| 180 | 180 |
tag.table(class: 'table-generator', role: 'grid', |
| 181 | 181 |
data: {
|
| 182 |
action: 'click->wiki-toolbar#closeMenu keydown.esc->wiki-toolbar#closeMenu ' \ |
|
| 182 |
action: 'click->wiki-toolbar#closeMenu keydown.esc->wiki-toolbar#closeMenuWithKeyboard ' \
|
|
| 183 | 183 |
'mouseover->wiki-toolbar#highlightTable focusin->wiki-toolbar#highlightTable' |
| 184 | 184 |
}) do |
| 185 | 185 |
@view.safe_join( |