commit bc9a76943de959b6a1f3b4387bd03d75733956c6
parent e9d4e40e1918014d686ffc74e1ad817d44b30661
Author: Sebastian <sebasjm@taler-systems.com>
Date: Wed, 11 Mar 2026 14:45:21 -0300
fix #11233
Diffstat:
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();