taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit bc9a76943de959b6a1f3b4387bd03d75733956c6
parent e9d4e40e1918014d686ffc74e1ad817d44b30661
Author: Sebastian <sebasjm@taler-systems.com>
Date:   Wed, 11 Mar 2026 14:45:21 -0300

fix #11233

Diffstat:
Mpackages/merchant-backoffice-ui/src/components/form/InputCode.tsx | 33++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/packages/merchant-backoffice-ui/src/components/form/InputCode.tsx b/packages/merchant-backoffice-ui/src/components/form/InputCode.tsx @@ -123,8 +123,8 @@ export function InputCode<T>({ if (content) { const cleared = content.replace(/[ -]/g, ""); if (cleared.match(/^[0-9]{8}$/)) { - elements.current.reduce( - (prev, cur, idx): Promise<void> => { + elements.current + .reduce((prev, cur, idx): Promise<void> => { if (!cur) return prev; return prev.then((d) => { return new Promise((res, rej) => { @@ -134,11 +134,10 @@ export function InputCode<T>({ }, 60); }); }); - }, - Promise.resolve(), - ).then(r => { - onChange(cleared as any) - }) + }, Promise.resolve()) + .then((r) => { + onChange(cleared as any); + }); } } }} @@ -165,6 +164,26 @@ export function InputCode<T>({ disabled={readonly} autoComplete={"off"} name={String(name)} + onKeyDown={(e) => { + if (e.key === "Backspace") { + if (idx > 0) { + elements.current[idx - 1]?.focus(); + e.currentTarget.value = "" + onChange(undefined as any) + e.preventDefault(); + } + } else if (e.key === "ArrowLeft") { + if (idx > 0) { + elements.current[idx - 1]?.focus(); + e.preventDefault(); + } + } else if (e.key === "ArrowRight") { + if (idx < elements.current.length) { + elements.current[idx + 1]?.focus(); + e.preventDefault(); + } + } + }} onFocus={(e) => { e.preventDefault(); e.currentTarget.select();