This repository was archived by the owner on Apr 12, 2024. It is now read-only.
fix(ngAria): handle custom elements with role="checkbox" #11321
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In d6eba21#diff-91e9129201746ba107348c9a0a7735edR218, we fixed some issues with checkboxes with string and integer models using ngTrueValue / ngFalseValue, but I did not take into consideration custom
role="checkbox"
elements (as in the ngAria docs). They are currently broken, because the new way of checking "checkedness" is by using ngModel.$isEmpty, which has a special implementation for checkboxes. Custom elements obviously lack this.My idea is to provide the checkbox $isEmpety implementation as a default to all elements that come with role="checkbox" in the preLink fn. It can then be overwritten by the custom implementation. (since ngAria is simply assuming that a custom checkbox will have a boolean checkstate, which might not be the case).
@marcysutton can you have a look at this?