Commit 866fe7d
committed
[Bug Fix] Normalize selection after every input so replace-and-advance chains
After replacing a filled slot, the browser leaves a collapsed caret
right after the edited character. Since the value is at (or stays
at) maxlength, further typing with a collapsed caret and no
selection is a no-op — the user has to press an arrow key again
between every replacement.
Fix: after onInput, re-select the character at the new caret
position as a 1-char range whenever one exists there (i.e. we're
not in true insert-mode at the end of a not-yet-full value). This
mirrors the onKeydown/onPaste selection logic so typing keeps
replacing forward without needing arrow keys in between.1 parent 6c543b3 commit 866fe7d
2 files changed
Lines changed: 40 additions & 0 deletions
File tree
- docs/app/javascript/controllers/ruby_ui
- gem/lib/ruby_ui/input_otp
Lines changed: 20 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
73 | 74 | | |
74 | 75 | | |
75 | 76 | | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
76 | 96 | | |
77 | 97 | | |
78 | 98 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
73 | 74 | | |
74 | 75 | | |
75 | 76 | | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
76 | 96 | | |
77 | 97 | | |
78 | 98 | | |
| |||
0 commit comments