Skip to content

Commit f0d0d1a

Browse files
committed
docs(material/tree): fix keyboard issues with "Load more flat tree"
Fix keyboard navigation issues with the "Load more flat tree" demo. - "Load more" button will respond to Enter or Space keys - Expanding and collapsing using keyboard shortcuts will trigger loading.
1 parent 3665278 commit f0d0d1a

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/components-examples/material/tree/tree-loadmore/tree-loadmore-example.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
</mat-tree-node>
77

88
<!-- expandable node -->
9-
<mat-tree-node *matTreeNodeDef="let node; when: hasChild" matTreeNodePadding matTreeNodeToggle>
9+
<mat-tree-node *matTreeNodeDef="let node; when: hasChild" matTreeNodePadding matTreeNodeToggle
10+
(expandedChange)="loadChildren(node)">
1011
<button mat-icon-button
1112
[attr.aria-label]="'Toggle ' + node.item"
12-
(click)="loadChildren(node)"
1313
matTreeNodeToggle>
1414
<mat-icon class="mat-icon-rtl-mirror">
1515
{{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}
@@ -19,7 +19,8 @@
1919
</mat-tree-node>
2020

2121
<mat-tree-node *matTreeNodeDef="let node; when: isLoadMore" matTreeNodeToggle>
22-
<button mat-button (click)="loadMore(node.loadMoreParentItem)">
22+
<button mat-button (click)="loadMore(node.loadMoreParentItem)"
23+
(keydown)="loadMoreOnEnterOrSpace($event, node.loadMoreParentItem)">
2324
Load more...
2425
</button>
2526
</mat-tree-node>

src/components-examples/material/tree/tree-loadmore/tree-loadmore-example.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule} from '@angular/m
1111
import {BehaviorSubject, Observable} from 'rxjs';
1212
import {MatIconModule} from '@angular/material/icon';
1313
import {MatButtonModule} from '@angular/material/button';
14+
import {ENTER, SPACE} from '@angular/cdk/keycodes';
1415

1516
const LOAD_MORE = 'LOAD_MORE';
1617

@@ -162,6 +163,16 @@ export class TreeLoadmoreExample {
162163
this._database.loadMore(item);
163164
}
164165

166+
loadMoreOnEnterOrSpace(event: KeyboardEvent, item: string) {
167+
if (event.keyCode === ENTER || event.keyCode === SPACE) {
168+
this._database.loadMore(item);
169+
170+
// Prevent default behavior so that the tree node doesn't handle the keypress instead of this
171+
// button.
172+
event.preventDefault();
173+
}
174+
}
175+
165176
loadChildren(node: LoadmoreFlatNode) {
166177
this._database.loadMore(node.item, true);
167178
}

0 commit comments

Comments
 (0)