View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0012041 | Taler | libeufin-bank webui | public | 2026-11-10 23:42 | 2026-11-10 23:43 |
| Reporter | bot-cg [agent] | Assigned To | Resolution deadline | ||
| Implementer | Reviewer | ||||
| Release signed by | Deployed by | ||||
| Verifier | Communicator | CM_7 | |||
| Data protection authority notification required | No | ||||
| CSIRT notification required | No | ||||
| Estimated effort (hours) | Actual effort (hours) | 0 | |||
| Fast-track | No | ||||
| Work package | none | ||||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | new | Resolution | open | ||
| Summary | 0012041: Bank (admin): 'New conversion rate class' does not focus the name, and its form would focus the description | ||||
| Description | What happens: NewConversionRateClass never passes `focus` to ConversionRateClassForm, so nothing is focused (measured: BODY). Passing it would not have been enough: the form puts `ref={focus ? doAutoFocus : undefined}` on both the Name and the Description input. Both 100 ms timers fire and the later one, Description, wins. Expected: 'Name' (the first, required field) focused. Where: - packages/libeufin-bank-webui/src/pages/NewConversionRateClass.tsx:100 - packages/libeufin-bank-webui/src/pages/admin/ConversionRateClassForm.tsx:218 Measured in headless Chromium (document.activeElement): before: BODY after: INPUT#class-name Proposed fix: NewConversionRateClass passes `focus`, and the duplicate doAutoFocus ref on Description is removed. Patch against taler-typescript-core master attached; the same change is committed on branch dev/bots/autofocus (durian). Screenshots attached (focused element outlined in red): 'before' is master, 'after' is with the patch. Verified: tsc ok; unit tests 94/94; Chromium screenshot | ||||
| Tags | No tags attached. | ||||
| Attached Files | bank--conversion-class-new.diff (1,653 bytes)
diff --git a/packages/libeufin-bank-webui/src/pages/NewConversionRateClass.tsx b/packages/libeufin-bank-webui/src/pages/NewConversionRateClass.tsx
index 46bf70b3b..e56b830cc 100644
--- a/packages/libeufin-bank-webui/src/pages/NewConversionRateClass.tsx
+++ b/packages/libeufin-bank-webui/src/pages/NewConversionRateClass.tsx
@@ -97,7 +97,7 @@ export function NewConversionRateClass({
</i18n.Translate>
</p>
- <ConversionRateClassForm onChange={setSubmitData}>
+ <ConversionRateClassForm focus onChange={setSubmitData}>
<div class="border-t border-onBackground/10 bg-background/60 px-5 py-4 sm:px-8">
<OperationError class="mb-4" />
<div class="flex items-center justify-between gap-x-6">
diff --git a/packages/libeufin-bank-webui/src/pages/admin/ConversionRateClassForm.tsx b/packages/libeufin-bank-webui/src/pages/admin/ConversionRateClassForm.tsx
index 92b26e412..eab51128a 100644
--- a/packages/libeufin-bank-webui/src/pages/admin/ConversionRateClassForm.tsx
+++ b/packages/libeufin-bank-webui/src/pages/admin/ConversionRateClassForm.tsx
@@ -249,7 +249,6 @@ export function ConversionRateClassForm(
</label>
<div class="mt-2">
<input
- ref={focus ? doAutoFocus : undefined}
type="text"
class="block w-full disabled:bg-gray-100 rounded-md border-0 py-1.5 text-onBackground shadow-sm ring-1 ring-inset ring-gray-300 data-[error=true]:ring-red-500 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-primary sm:text-sm sm:leading-6"
name="class-description"
| ||||
| child of | 0012024 | new | Web UIs (bank, wallet, exchange AML/KYC, challenger, auditor, web-util forms): dialogs and single-purpose forms open without keyboard focus on the obvious field |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-11-10 23:42 | bot-cg | New Issue | |
| 2026-11-10 23:42 | bot-cg | Relationship added | child of 0012024 |
| 2026-11-10 23:43 | bot-cg | File Added: bank--conversion-class-new.diff | |
| 2026-11-10 23:43 | bot-cg | File Added: bank--conversion-class-new--before.png | |
| 2026-11-10 23:43 | bot-cg | File Added: bank--conversion-class-new--after.png |