Skip to content

feat(pat-validation): Support definition of minimum or maximum number of selections. #1249

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

thet
Copy link
Member

@thet thet commented May 9, 2025

Hi @cornae

we had the need to validate if at least one checkbox in a group of checkboxes was checked.
This was not yet supported by pat-validation nor by the HTML specficiation.

As a side note - required radio buttons are supported. A required attribute on one or all radio inputs in a group of radio inputs is supported by the HTML specification and validated by pat-validation.

We were in need to quickly support that in one of our projects and I did a implementation which we deployed but still can change if there is anything to improve - behavior wise, parameter naming or whatever.

These parameters were added:

Property Description Default Type
message-min-values The error message when the minimim number of checked, selected or filled-out fields has not been reached. You need to select at least %{count} item(s). String
message-max-values The error message when the maximum number of checked, selected or filled-out fields has not been reached. You need to select at most %{count} item(s). String
min-values Minimum number of checked, selected or filled out form elements. null Integer (or null)
max-values Maximum number of checked, selected or filled out form elements. null Integer (or null)

Note: this does not only work with checkboxes but with any kind of input.
I recognized that we can use the same name for any kind of input - any input, select or textarea. All of the values will be submitted to the server. Therefore this implementation is not only limited to checkboxes but any kind of input.

Along the way I did some other improvements:

  • The documentation is updated and extended.

  • pat-validation now fully supports input elements outside the form itself, e.g.:

<input name="outside" form="myform" required>
<form id="myform">
</form>
<button form="myform">submit</button>
  • pat-validation also fully supports dynamic forms without re-initalizing or sending a special "pat-update" event. You can add form elements even without pat-inject and it should immediately take part in validation.

  • And a important one:
    For multiple input elements with the same name the error message was shown wether immediately after the last input which the user interacted with or the the end of a fieldset.checkbox element.
    I have changed that, so that the error message is just shown after the last input with the same name.
    We needed that also for our project and I believe it's better because it works just out of the box and there is no need to add a fieldset.checkbox element.

@thet thet marked this pull request as draft May 9, 2025 14:18
@thet thet force-pushed the validation-min-max branch 5 times, most recently from 47b56d1 to 86ee675 Compare May 13, 2025 16:15
@thet thet force-pushed the validation-min-max branch from 86ee675 to 0e25a09 Compare May 13, 2025 22:01
@thet thet changed the title DRAFT: feat(pat-validation): Support definition of minimum or maximum number of selections. feat(pat-validation): Support definition of minimum or maximum number of selections. May 13, 2025
@thet thet requested a review from cornae May 13, 2025 22:23
Introduce event delegation and register input, change and focusout event
handlers on the document level.

This reduces the amount of registered event handlers which potentially
improves performance and also supports dynamic forms where form elements
can be added at any time.
@thet thet force-pushed the validation-min-max branch from 0e25a09 to 735ebda Compare May 13, 2025 22:26
@thet thet marked this pull request as ready for review May 13, 2025 22:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant