Semantic-UI-React icon indicating copy to clipboard operation
Semantic-UI-React copied to clipboard

Checkbox control always sets the "readonly" attribute, which disables form validation

Open ilmiont opened this issue 2 years ago • 2 comments

Bug Report

Steps

The Checkbox control is hardcoded to always set readOnly on its Input, even if you don't pass the readOnly prop.

This means the element is always in the readonly state, which causes HTML validation to always pass, even if the element is actually in an invalid state (e.g. being required).

Expected Result

It should be possible to use required with a Checkbox component and have form validation and methods such as checkValidity() work correctly.

Actual Result

Expected form validation does not occur because the element is in the readonly state. This allows a user to submit a form without checking a required value, even when you've set the required prop.

Version

2.1.3

Testcase

https://codesandbox.io/s/semantic-ui-react-checkbox-is-always-readonly-oyeow5

ilmiont avatar Dec 06 '22 08:12 ilmiont

👋 Thanks for opening your first issue here! If you're reporting a 🐞 bug, please make sure you've completed all the fields in the issue template so we can best help.

We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can.

welcome[bot] avatar Dec 06 '22 08:12 welcome[bot]

Would be great if that could be solved. Currently I'm working around the issue like this:

<Checkbox
  required
  name="termsAccepted"
  // @ts-ignore: remove readonly attribute to enable browser validation
  ref={(e) => e.inputRef.current?.removeAttribute('readonly')}
  // ...
/>

maltesa avatar Jun 21 '23 17:06 maltesa