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. 40
      themes/gruvbox/js/accounts.js
  2. 38
      themes/gruvbox/js/sessions.js

40
themes/gruvbox/js/accounts.js vendored

@ -54,22 +54,31 @@ 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") }
} })
})
} }
_updateDefaults(userObject) { _updateDefaults(userObject) {
@ -86,6 +95,7 @@ class Accounts {
this._updateOnStartup() this._updateOnStartup()
this._setAccountList() this._setAccountList()
this._setButton() this._setButton()
this._setKeydown()
} }
} }

38
themes/gruvbox/js/sessions.js vendored

@ -50,22 +50,31 @@ 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