Skip to content

Commit a0b5800

Browse files
authored
feat(aria/toolbar): adds skip disabled toolbar example to dev-app (#32127)
Updates component-examples to add a toolbar skip disabled example and adds it to the dev-app for accessibility testing.
1 parent ff37b65 commit a0b5800

File tree

5 files changed

+87
-1
lines changed

5 files changed

+87
-1
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export {ToolbarBasicHorizontalExample} from './toolbar-basic-horizontal/toolbar-basic-horizontal-example';
22
export {ToolbarConfigurableExample} from './toolbar-configurable/toolbar-configurable-example';
3+
export {ToolbarSkipDisabledExample} from './toolbar-skip-disabled/toolbar-skip-disabled-example';
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<div class="example-container">
2+
<div ngToolbar skipDisabled="true" class="example-toolbar" aria-label="Skip Disabled Toolbar Text Formatting Tools">
3+
<button
4+
ngToolbarWidget
5+
class="example-radio-button"
6+
(click)="format('bold')"
7+
(keydown.enter)="format('bold')">
8+
Bold
9+
</button>
10+
<button
11+
ngToolbarWidget
12+
class="example-radio-button"
13+
[disabled]="true"
14+
(click)="format('italic')"
15+
(keydown.enter)="format('italic')">
16+
Italic
17+
</button>
18+
<button
19+
ngToolbarWidget
20+
class="example-radio-button"
21+
(click)="format('underline')"
22+
(keydown.enter)="format('underline')">
23+
Underline
24+
</button>
25+
<ul
26+
ngRadioGroup
27+
class="example-radio-group"
28+
aria-label="Select text alignment"
29+
>
30+
@for (alignment of alignments; track alignment) {
31+
<li
32+
ngRadioButton
33+
[value]="alignment.value"
34+
[disabled]="disabledOptions.includes(alignment.value)"
35+
class="example-radio-button">
36+
<span class="example-radio-indicator"></span>
37+
<span>{{ alignment.label }}</span>
38+
</li>
39+
}
40+
</ul>
41+
<button
42+
ngToolbarWidget
43+
class="example-radio-button"
44+
[disabled]="true">
45+
Disabled Action
46+
</button>
47+
</div>
48+
</div>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import {Component} from '@angular/core';
2+
import {Toolbar, ToolbarWidget} from '@angular/aria/toolbar';
3+
import {RadioGroup, RadioButton} from '@angular/aria/radio-group';
4+
import {LiveAnnouncer} from '@angular/cdk/a11y';
5+
6+
/** @title Skip Disabled Toolbar Example */
7+
@Component({
8+
selector: 'toolbar-skip-disabled-example',
9+
templateUrl: 'toolbar-skip-disabled-example.html',
10+
styleUrl: '../toolbar-common.css',
11+
imports: [RadioButton, RadioGroup, Toolbar, ToolbarWidget],
12+
})
13+
export class ToolbarSkipDisabledExample {
14+
constructor(private _liveAnnouncer: LiveAnnouncer) {}
15+
alignments = [
16+
{value: 'left', label: 'Left'},
17+
{value: 'center', label: 'Center'},
18+
{value: 'right', label: 'Right'},
19+
];
20+
21+
// Control for which radio options are individually disabled
22+
disabledOptions: string[] = ['center'];
23+
24+
format(tool: string) {
25+
console.log(`Tool activated: ${tool}`);
26+
this._liveAnnouncer.announce(`${tool} applied`, 'polite');
27+
}
28+
test(action: string) {
29+
console.log(`Action triggered: ${action}`);
30+
this._liveAnnouncer.announce(`${action} button activated`, 'polite');
31+
}
32+
}

src/dev-app/aria-toolbar/toolbar-demo.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
<h2>Toolbar Basic Horizontal</h2>
55
<toolbar-basic-horizontal-example></toolbar-basic-horizontal-example>
66
</div>
7+
<div class="example-toolbar-container">
8+
<h2>Toolbar Skip Disabled</h2>
9+
<toolbar-skip-disabled-example></toolbar-skip-disabled-example>
10+
</div>
711
<div class="example-configurable-radio-container example-toolbar-container">
812
<h2>Configurable CDK Toolbar</h2>
913
<toolbar-configurable-example></toolbar-configurable-example>

src/dev-app/aria-toolbar/toolbar-demo.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/co
1010
import {
1111
ToolbarBasicHorizontalExample,
1212
ToolbarConfigurableExample,
13+
ToolbarSkipDisabledExample,
1314
} from '@angular/components-examples/aria/toolbar';
1415

1516
@Component({
1617
templateUrl: 'toolbar-demo.html',
17-
imports: [ToolbarBasicHorizontalExample, ToolbarConfigurableExample],
18+
imports: [ToolbarBasicHorizontalExample, ToolbarConfigurableExample, ToolbarSkipDisabledExample],
1819
styleUrl: './toolbar-demo.css',
1920
encapsulation: ViewEncapsulation.None,
2021
changeDetection: ChangeDetectionStrategy.OnPush,

0 commit comments

Comments
 (0)