Skip to content

Commit 2ef70a6

Browse files
Merge pull request primefaces#1737 from nhnb/accessability-treetable
added keyboard and screenreader support to TreeTable
2 parents b3540a0 + d899a67 commit 2ef70a6

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

components/treetable/treetable.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141
}
4242

4343
.ui-treetable .ui-treetable-toggler {
44-
display: inline-block;
44+
border: none;
45+
background: none;
4546
vertical-align: middle;
4647
cursor: pointer;
4748
}

components/treetable/treetable.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,18 @@ import {DomHandler} from '../dom/domhandler';
1010
template: `
1111
<div class="ui-treetable-row" [ngClass]="{'ui-state-highlight':isSelected(),'ui-treetable-row-selectable':treeTable.selectionMode}">
1212
<td *ngFor="let col of treeTable.columns; let i=index" [ngStyle]="col.style" [class]="col.styleClass" (click)="onRowClick($event)">
13-
<span *ngIf="i==0" class="ui-treetable-toggler fa fa-fw ui-c" [ngClass]="{'fa-caret-down':node.expanded,'fa-caret-right':!node.expanded}"
13+
<button *ngIf="i==0" class="ui-treetable-toggler fa fa-fw ui-c" [ngClass]="{'fa-caret-down':node.expanded,'fa-caret-right':!node.expanded}"
1414
[ngStyle]="{'margin-left':level*16 + 'px','visibility': isLeaf() ? 'hidden' : 'visible'}"
15-
(click)="toggle($event)"></span>
15+
(click)="toggle($event)"
16+
[title]="node.expanded ? labelCollapse : labelExpand"></button>
1617
<span *ngIf="!col.template">{{resolveFieldData(node.data,col.field)}}</span>
1718
<p-columnBodyTemplateLoader [column]="col" [rowData]="node" *ngIf="col.template"></p-columnBodyTemplateLoader>
1819
</td>
1920
</div>
2021
<div *ngIf="node.children && node.expanded" class="ui-treetable-row" style="display:table-row">
2122
<td [attr.colspan]="treeTable.columns.length" class="ui-treetable-child-table-container">
2223
<table>
23-
<tbody pTreeRow *ngFor="let childNode of node.children" [node]="childNode" [level]="level+1"></tbody>
24+
<tbody pTreeRow *ngFor="let childNode of node.children" [node]="childNode" [level]="level+1" [labelExpand]="labelExpand" [labelCollapse]="labelCollapse"></tbody>
2425
</table>
2526
</td>
2627
</div>
@@ -31,6 +32,10 @@ export class UITreeRow {
3132
@Input() node: TreeNode;
3233

3334
@Input() level: number = 0;
35+
36+
@Input() labelExpand: string = "Expand";
37+
38+
@Input() labelCollapse: string = "Collapse";
3439

3540
constructor(@Inject(forwardRef(() => TreeTable)) public treeTable:TreeTable) {}
3641

@@ -105,7 +110,7 @@ export class UITreeRow {
105110
</td>
106111
</tr>
107112
</tfoot>
108-
<tbody pTreeRow *ngFor="let node of value" [node]="node" [level]="0"></tbody>
113+
<tbody pTreeRow *ngFor="let node of value" [node]="node" [level]="0" [labelExpand]="labelExpand" [labelCollapse]="labelCollapse"></tbody>
109114
</table>
110115
</div>
111116
<div class="ui-treetable-footer ui-widget-header" *ngIf="footer">
@@ -135,6 +140,10 @@ export class TreeTable {
135140
@Input() style: any;
136141

137142
@Input() styleClass: string;
143+
144+
@Input() labelExpand: string = "Expand";
145+
146+
@Input() labelCollapse: string = "Collapse";
138147

139148
@ContentChild(Header) header: Header;
140149

showcase/demo/treetable/treetabledemo.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,18 @@ <h3>Attributes</h3>
566566
<td>array</td>
567567
<td>null</td>
568568
<td>An array of treenodes.</td>
569+
</tr>
570+
<tr>
571+
<td>labelExpand</td>
572+
<td>string</td>
573+
<td>Expand</td>
574+
<td>Tooltip and screenreader text for expand icon.</td>
575+
</tr>
576+
<tr>
577+
<td>labelCollapse</td>
578+
<td>string</td>
579+
<td>Collapse</td>
580+
<td>Tooltip and screenreader text for collapse icon.</td>
569581
</tr>
570582
<tr>
571583
<td>selectionMode</td>

0 commit comments

Comments
 (0)