From 76f0b05a096fcd06db15d505e7d1f8a7f37b7d6a Mon Sep 17 00:00:00 2001 From: buchmann Date: Wed, 11 Feb 2026 14:10:05 +0100 Subject: [PATCH 1/2] Autofocus for frequently used input fields Fixes #1157. - Focus `name` field on new part - Focus `amount` on add/withdraw modal - Focus first "number type" input on any newly added collectionType table row... (debatable) It would be even more favorable if the user could configure if they want to use autofocus and/or for which fields/dialogs it should be enabled. --- assets/controllers/elements/collection_type_controller.js | 4 ++++ assets/controllers/pages/part_withdraw_modal_controller.js | 5 +++++ src/Form/AdminPages/BaseEntityAdminForm.php | 1 + src/Form/Part/PartBaseType.php | 1 + 4 files changed, 11 insertions(+) diff --git a/assets/controllers/elements/collection_type_controller.js b/assets/controllers/elements/collection_type_controller.js index 14b683e0..19f5c531 100644 --- a/assets/controllers/elements/collection_type_controller.js +++ b/assets/controllers/elements/collection_type_controller.js @@ -79,9 +79,13 @@ export default class extends Controller { //Afterwards return the newly created row if(targetTable.tBodies[0]) { targetTable.tBodies[0].insertAdjacentHTML('beforeend', newElementStr); + var fields = targetTable.tBodies[0].querySelectorAll("input[type=number]"); + fields[fields.length - 1].focus(); return targetTable.tBodies[0].lastElementChild; } else { //Otherwise just insert it targetTable.insertAdjacentHTML('beforeend', newElementStr); + var fields = targetTable.querySelectorAll("input[type=number]"); + fields[fields.length - 1].focus(); return targetTable.lastElementChild; } } diff --git a/assets/controllers/pages/part_withdraw_modal_controller.js b/assets/controllers/pages/part_withdraw_modal_controller.js index 2d6742b4..0e5c0fc5 100644 --- a/assets/controllers/pages/part_withdraw_modal_controller.js +++ b/assets/controllers/pages/part_withdraw_modal_controller.js @@ -5,6 +5,7 @@ export default class extends Controller { connect() { this.element.addEventListener('show.bs.modal', event => this._handleModalOpen(event)); + this.element.addEventListener('shown.bs.modal', event => this._handleModalShown(event)); } _handleModalOpen(event) { @@ -61,4 +62,8 @@ export default class extends Controller amountInput.setAttribute('max', lotAmount); } } + + _handleModalShown(event) { + this.element.querySelector('input[name="amount"]').focus(); + } } \ No newline at end of file diff --git a/src/Form/AdminPages/BaseEntityAdminForm.php b/src/Form/AdminPages/BaseEntityAdminForm.php index 5a4ef5bc..64ccbdb9 100644 --- a/src/Form/AdminPages/BaseEntityAdminForm.php +++ b/src/Form/AdminPages/BaseEntityAdminForm.php @@ -71,6 +71,7 @@ class BaseEntityAdminForm extends AbstractType 'label' => 'name.label', 'attr' => [ 'placeholder' => 'part.name.placeholder', + 'autofocus' => true, ], 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), ]); diff --git a/src/Form/Part/PartBaseType.php b/src/Form/Part/PartBaseType.php index b8276589..0b69d477 100644 --- a/src/Form/Part/PartBaseType.php +++ b/src/Form/Part/PartBaseType.php @@ -115,6 +115,7 @@ class PartBaseType extends AbstractType 'label' => 'part.edit.name', 'attr' => [ 'placeholder' => 'part.edit.name.placeholder', + 'autofocus' => true, ], ]) ->add('description', RichTextEditorType::class, [ From 47c0d7898576bef007b8399cbf7ef0df7951d682 Mon Sep 17 00:00:00 2001 From: buchmann Date: Wed, 11 Feb 2026 14:26:36 +0100 Subject: [PATCH 2/2] only autofocus if new --- src/Form/AdminPages/BaseEntityAdminForm.php | 2 +- src/Form/Part/PartBaseType.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Form/AdminPages/BaseEntityAdminForm.php b/src/Form/AdminPages/BaseEntityAdminForm.php index 64ccbdb9..f4bf37f8 100644 --- a/src/Form/AdminPages/BaseEntityAdminForm.php +++ b/src/Form/AdminPages/BaseEntityAdminForm.php @@ -71,7 +71,7 @@ class BaseEntityAdminForm extends AbstractType 'label' => 'name.label', 'attr' => [ 'placeholder' => 'part.name.placeholder', - 'autofocus' => true, + 'autofocus' => $is_new, ], 'disabled' => !$this->security->isGranted($is_new ? 'create' : 'edit', $entity), ]); diff --git a/src/Form/Part/PartBaseType.php b/src/Form/Part/PartBaseType.php index 0b69d477..89787f60 100644 --- a/src/Form/Part/PartBaseType.php +++ b/src/Form/Part/PartBaseType.php @@ -115,7 +115,7 @@ class PartBaseType extends AbstractType 'label' => 'part.edit.name', 'attr' => [ 'placeholder' => 'part.edit.name.placeholder', - 'autofocus' => true, + 'autofocus' => $new_part, ], ]) ->add('description', RichTextEditorType::class, [