forked from fixin.me/fixin.me
Fix autofocus on dynamically inserted forms, remove this.blur() handlers
form_controller.connect() now blurs the previously focused element and explicitly focuses the [autofocus] element when a form is inserted into the DOM (via Turbo Stream). Only runs when an [autofocus] element is present, so closing forms and other stream updates are unaffected. Remove all onclick='this.blur()' inline handlers from templates — they were a workaround for the same autofocus problem, now solved properly via the Stimulus lifecycle. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,14 @@
|
||||
import { Controller } from "@hotwired/stimulus"
|
||||
|
||||
export default class extends Controller {
|
||||
connect() {
|
||||
const autofocusEl = this.element.querySelector('[autofocus]')
|
||||
if (autofocusEl) {
|
||||
document.activeElement?.blur()
|
||||
autofocusEl.focus()
|
||||
}
|
||||
}
|
||||
|
||||
processKey(event) {
|
||||
switch (event.key) {
|
||||
case "Escape":
|
||||
|
||||
Reference in New Issue
Block a user