Skip to content

Commit bee09cd

Browse files
feat: add "checked" state to <md-checkbox> via CustomStateSet
PiperOrigin-RevId: 692246916
1 parent 1bdcbd3 commit bee09cd

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

checkbox/internal/checkbox.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ import {
2323
getValidityAnchor,
2424
mixinConstraintValidation,
2525
} from '../../labs/behaviors/constraint-validation.js';
26-
import {mixinElementInternals} from '../../labs/behaviors/element-internals.js';
26+
import {
27+
internals,
28+
mixinElementInternals,
29+
} from '../../labs/behaviors/element-internals.js';
2730
import {
2831
getFormState,
2932
getFormValue,
@@ -111,6 +114,12 @@ export class Checkbox extends checkboxBaseClass {
111114
this.prevDisabled = changed.get('disabled') ?? this.disabled;
112115
this.prevIndeterminate =
113116
changed.get('indeterminate') ?? this.indeterminate;
117+
118+
if (this.checked) {
119+
this[internals].states.add('checked');
120+
} else {
121+
this[internals].states.delete('checked');
122+
}
114123
}
115124

116125
super.update(changed);

checkbox/internal/checkbox_test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,15 @@ describe('checkbox', () => {
5050
expect(harness.element.indeterminate).toEqual(false);
5151
expect(harness.element.disabled).toEqual(false);
5252
expect(harness.element.value).toEqual('on');
53+
expect(harness.element.matches(':state(checked)')).toEqual(false);
5354
});
5455

5556
it('user input updates checked state', async () => {
5657
const {harness} = await setupTest();
5758
await harness.clickWithMouse();
5859
await env.waitForStability();
5960
expect(harness.element.checked).toEqual(true);
61+
expect(harness.element.matches(':state(checked)')).toEqual(true);
6062
});
6163

6264
it('should trigger changed event when checkbox is selected', async () => {

docs/components/checkbox.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,3 +209,9 @@ Token | Default value
209209
<!-- mdformat on(autogenerated might break rendering in catalog) -->
210210

211211
<!-- auto-generated API docs end -->
212+
213+
#### States
214+
215+
| State | Description |
216+
| --- | --- |
217+
| `checked` | Set if this checkbox is checked. |

0 commit comments

Comments
 (0)