Focus forms properly on open and close

Closes #44
This commit is contained in:
2024-12-28 03:05:06 +01:00
parent 7759021ba1
commit bd40727231
3 changed files with 23 additions and 12 deletions

View File

@@ -34,6 +34,13 @@ Turbo.StreamActions.hide = function() {
Turbo.StreamActions.close_form = function() {
this.targetElements.forEach((e) => {
/* Move focus if there's no focus or focus inside form being closed */
const focused = document.activeElement
if (!focused || (focused == document.body) || e.contains(focused)) {
let nextForm = e.parentElement.querySelector(`#${e.id} ~ tr:has([autofocus])`)
nextForm ??= e.parentElement.querySelector("tr:has([autofocus])")
nextForm?.querySelector("[autofocus]").focus()
}
document.getElementById(e.getAttribute("data-form")).remove()
if (e.hasAttribute("data-link")) {
this.enableElement(document.getElementById(e.getAttribute("data-link")))