Browse Source

Improved keyboard navigation

sisyphus
JezerM 3 years ago
parent
commit
92ec156c25
No known key found for this signature in database
GPG Key ID: 66BBC5D01388C6B5
  1. 26
      themes/gruvbox/js/accounts.js
  2. 26
      themes/gruvbox/js/sessions.js

26
themes/gruvbox/js/accounts.js vendored

@ -54,19 +54,28 @@ class Accounts {
} }
} }
_setKeydown() {
var dropdown = this._accountsList.querySelector(".dropdown")
dropdown.addEventListener("keydown", (ev) => {
if (ev.keyCode == 27) {
dropdown.classList.add("hide")
this._accountsButton.focus()
}
})
}
_setButton() { _setButton() {
var dropdown = this._accountsList.querySelector(".dropdown") var dropdown = this._accountsList.querySelector(".dropdown")
this._accountsButton.addEventListener("click", (ev) => { document.querySelector("#screen").addEventListener("click", (ev) => {
ev.stopPropagation() if (ev.target == this._accountsButton || ev.target.parentElement == this._accountsButton) {
if (dropdown.classList.contains("hide")) { dropdown.classList.toggle("hide")
dropdown.classList.remove("hide") } else
} else { if (ev.target != this._accountsList && ev.target.closest(".dropdown") == null) {
dropdown.classList.add("hide") dropdown.classList.add("hide")
} }
}) })
var screen = document.querySelector("#screen") document.querySelector("#screen").addEventListener("focusin", (ev) => {
screen.addEventListener("click", (ev) => { if (!dropdown.contains(document.activeElement) && document.activeElement != this._accountsButton) {
if (ev.target != dropdown) {
dropdown.classList.add("hide") dropdown.classList.add("hide")
} }
}) })
@ -86,6 +95,7 @@ class Accounts {
this._updateOnStartup() this._updateOnStartup()
this._setAccountList() this._setAccountList()
this._setButton() this._setButton()
this._setKeydown()
} }
} }

26
themes/gruvbox/js/sessions.js vendored

@ -50,19 +50,28 @@ class Sessions {
} }
} }
_setKeydown() {
var dropdown = this._sessionList.querySelector(".dropdown")
dropdown.addEventListener("keydown", (ev) => {
if (ev.keyCode == 27) {
dropdown.classList.add("hide")
this._sessionsButton.focus()
}
})
}
_setButton() { _setButton() {
var dropdown = this._sessionList.querySelector(".dropdown") var dropdown = this._sessionList.querySelector(".dropdown")
this._sessionsButton.addEventListener("click", (ev) => { document.querySelector("#screen").addEventListener("click", (ev) => {
ev.stopPropagation() if (ev.target == this._sessionsButton || ev.target.parentElement == this._sessionsButton) {
if (dropdown.classList.contains("hide")) { dropdown.classList.toggle("hide")
dropdown.classList.remove("hide") } else
} else { if (ev.target != dropdown && ev.target.closest(".dropdown") == null) {
dropdown.classList.add("hide") dropdown.classList.add("hide")
} }
}) })
var screen = document.querySelector("#screen") document.querySelector("#screen").addEventListener("focusin", (ev) => {
screen.addEventListener("click", (ev) => { if (!dropdown.contains(document.activeElement) && document.activeElement != this._sessionsButton) {
if (ev.target != dropdown) {
dropdown.classList.add("hide") dropdown.classList.add("hide")
} }
}) })
@ -80,5 +89,6 @@ class Sessions {
this._updateOnStartup() this._updateOnStartup()
this._setSessionList() this._setSessionList()
this._setButton() this._setButton()
this._setKeydown()
} }
} }

Loading…
Cancel
Save