Skip to content

Commit e456c75

Browse files
authored
feat(cdk-experimental/listbox): add cdk-active class (#30932)
1 parent 44e9ccb commit e456c75

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

src/cdk-experimental/listbox/listbox.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ export class CdkListbox<V> implements AfterViewInit {
140140
host: {
141141
'role': 'option',
142142
'class': 'cdk-option',
143+
'[class.cdk-active]': 'pattern.active()',
143144
'[attr.tabindex]': 'pattern.tabindex()',
144145
'[attr.aria-selected]': 'pattern.selected()',
145146
'[attr.aria-disabled]': 'pattern.disabled()',

src/cdk-experimental/ui-patterns/listbox/option.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ export class OptionPattern<V> {
4848
.findIndex(i => i.id() === this.id()) ?? -1,
4949
);
5050

51+
/** Whether the option is active. */
52+
active = computed(() => this.listbox()?.focusManager.activeItem() === this);
53+
5154
/** Whether the option is selected. */
5255
selected = computed(() => this.listbox()?.selection.inputs.value().includes(this.value()));
5356

src/components-examples/cdk-experimental/listbox/cdk-listbox/cdk-listbox-example.css

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@
4646
border-radius: var(--mat-sys-corner-extra-small);
4747
}
4848

49-
.example-option[aria-disabled='false']:hover,
50-
.example-option[tabindex='0'] {
49+
.example-option.cdk-active,
50+
.example-option[aria-disabled='false']:hover {
5151
outline: 1px solid var(--mat-sys-outline);
5252
background: var(--mat-sys-surface-container);
5353
}
@@ -61,8 +61,8 @@
6161
background-color: var(--mat-sys-secondary-container);
6262
}
6363

64-
.example-option[aria-disabled='true']:focus-within,
65-
.example-option[aria-disabled='true'][tabindex='0'] {
64+
.example-option.cdk-active[aria-disabled='true'],
65+
.example-option[aria-disabled='true']:focus-within {
6666
outline: 2px solid var(--mat-sys-outline);
6767
}
6868

0 commit comments

Comments
 (0)