• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

coreui / coreui-pro / 37598297090
96%
main: 94%

Build:
Build:
LAST BUILD BRANCH: feat/section-input-validation-state-v6
DEFAULT BRANCH: main
Ran 07 Oct 2026 09:08AM UTC
Jobs 1
Files 81
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

07 Oct 2026 09:06AM UTC coverage: 95.846% (+0.01%) from 95.836%
37598297090

push

github

web-flow
fix(OTPInput): validate the code as one value and announce it on every slot (#1583)

* fix(OTPInput): validate the code as one value and announce it on every slot

The code lived in an <input type="hidden">, which the browser leaves out of
validation, and required went on every slot, so each empty slot was checked
on its own, a partial code that was not required went through, and nothing
linked the message to the slots. The stylesheet coloured a slot marked
invalid but never showed the message after the group.

The value now sits in a text input laid invisibly over the group, with
tabindex -1, aria-hidden, required and a pattern for the full length of the
code; focus the browser or the form plugin gives it moves to the first empty
slot. Once a validation reports it, every slot carries aria-invalid and the
message after the group, which getFeedbackIds() now finds for any control of
a .form-otp, until the code is complete or the form resets. The stylesheet
colours every slot and shows the message after the group when the group, its
value field or a slot is marked, or when the browser flags the value field.

* test(OTPInput): cover the label that points at the value input

* fix(OTPInput): keep the value field, its state and every instance's reset

setConfig() replaced the value field and lost the state the form plugin and
the browser had put on it, while the slots stayed marked invalid; it now
updates the field in place. Each instance listens for a reset of whatever
form it sits in when the reset happens, with its own handler, so dispose()
no longer drops the listeners of the other codes in the form and a field
moved into a form still resets. The slots carry aria-required, since the
value input that holds required is hidden from assistive technologies. The
success message after the group waits until nothing in it is invalid,
because the form plugin marks each slot valid on its own, and the slot and
group rules share one mixin.

* chore: raise the JavaSc... (continued)

7282 of 7850 branches covered (92.76%)

Branch coverage included in aggregate %.

98 of 98 new or added lines in 2 files covered. (100.0%)

12608 of 12902 relevant lines covered (97.72%)

1589.98 hits per line

Jobs
ID Job ID Ran Files Coverage
1 37598297090.1 07 Oct 2026 09:08AM UTC 81
95.85
GitHub Action Run
Source Files on build 37598297090
  • Tree
  • List 81
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #37598297090
  • cbfb38a5 on github
  • Prev Build on v6-dev (#37542198501)
  • Next Build on v6-dev (#37598510404)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc