Skip to content

Commit ba9f79b

Browse files
authored
feat(aria/toolbar): adds toolbar-basic-horizontal-example to dev-app (#32106)
* feat(aria/toolbar): adds toolbar-basic-horizontal-example to dev-app Adds toolbar-basic-horizontal-example to components-examples for aria and implements it onto the dev-app aria-toolbar toolbar-demo.html page. * refactor(aria/toolbar): consolidate imports in dev-app Updates toolbar-demo.ts to consolidate the imports from components-examples for toolbar. * feat(aria/toolbar): implement radiogroup in toolbar basic example Adds radiogroup UI into the toolbar basic horizontal example. Also attempts to improve accessibility by adding LiveAnnouncer on button activation. * refactor(aria/toolbar): fix lint error Updates to fix naming convention lint error.
1 parent f9d3cde commit ba9f79b

File tree

7 files changed

+89
-5
lines changed

7 files changed

+89
-5
lines changed

src/components-examples/aria/toolbar/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ ng_project(
1414
"//:node_modules/@angular/forms",
1515
"//src/aria/radio-group",
1616
"//src/aria/toolbar",
17+
"//src/cdk/a11y",
1718
"//src/material/checkbox",
1819
"//src/material/form-field",
1920
"//src/material/select",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
export {ToolbarBasicHorizontalExample} from './toolbar-basic-horizontal/toolbar-basic-horizontal-example';
12
export {ToolbarConfigurableExample} from './toolbar-configurable/toolbar-configurable-example';
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<div class="example-container">
2+
<div ngToolbar class="example-toolbar" aria-label="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+
(click)="format('italic')"
14+
(keydown.enter)="format('italic')">
15+
Italic
16+
</button>
17+
<button
18+
ngToolbarWidget
19+
class="example-radio-button"
20+
(click)="format('underline')"
21+
(keydown.enter)="format('underline')">
22+
Underline
23+
</button>
24+
<ul
25+
ngRadioGroup
26+
class="example-radio-group"
27+
aria-label="Select text alignment"
28+
>
29+
@for (alignment of alignments; track alignment) {
30+
<li ngRadioButton [value]="alignment.value" class="example-radio-button">
31+
<span class="example-radio-indicator"></span>
32+
<span>{{ alignment.label }}</span>
33+
</li>
34+
}
35+
</ul>
36+
<button
37+
ngToolbarWidget
38+
class="example-radio-button"
39+
[disabled]="true">
40+
Disabled Action
41+
</button>
42+
</div>
43+
</div>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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 Basic Horizontal Toolbar Example */
7+
@Component({
8+
selector: 'toolbar-basic-horizontal-example',
9+
templateUrl: 'toolbar-basic-horizontal-example.html',
10+
styleUrl: '../toolbar-common.css',
11+
imports: [RadioButton, RadioGroup, Toolbar, ToolbarWidget],
12+
})
13+
export class ToolbarBasicHorizontalExample {
14+
constructor(private _liveAnnouncer: LiveAnnouncer) {}
15+
alignments = [
16+
{value: 'left', label: 'Left'},
17+
{value: 'center', label: 'Center'},
18+
{value: 'right', label: 'Right'},
19+
];
20+
format(tool: string) {
21+
console.log(`Tool activated: ${tool}`);
22+
this._liveAnnouncer.announce(`${tool} applied`, 'polite');
23+
}
24+
test(action: string) {
25+
console.log(`Action triggered: ${action}`);
26+
this._liveAnnouncer.announce(`${action} button activated`, 'polite');
27+
}
28+
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.example-radio-grid {
22
display: grid;
3-
grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
3+
grid-template-columns: repeat(auto-fit, minmax(100%, 1fr));
44
gap: 20px;
55
}
66

@@ -18,3 +18,7 @@
1818
h4 {
1919
height: 36px;
2020
}
21+
22+
.example-toolbar-container {
23+
width: 100%;
24+
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<div>
22
<div class="example-radio-grid">
3-
<div class="example-configurable-radio-container">
4-
<h4>Configurable CDK Toolbar</h4>
3+
<div class="example-toolbar-container">
4+
<h2>Toolbar Basic Horizontal</h2>
5+
<toolbar-basic-horizontal-example></toolbar-basic-horizontal-example>
6+
</div>
7+
<div class="example-configurable-radio-container example-toolbar-container">
8+
<h2>Configurable CDK Toolbar</h2>
59
<toolbar-configurable-example></toolbar-configurable-example>
610
</div>
711
</div>

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@
77
*/
88

99
import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';
10-
import {ToolbarConfigurableExample} from '@angular/components-examples/aria/toolbar';
10+
import {
11+
ToolbarBasicHorizontalExample,
12+
ToolbarConfigurableExample,
13+
} from '@angular/components-examples/aria/toolbar';
1114

1215
@Component({
1316
templateUrl: 'toolbar-demo.html',
14-
imports: [ToolbarConfigurableExample],
17+
imports: [ToolbarBasicHorizontalExample, ToolbarConfigurableExample],
1518
styleUrl: './toolbar-demo.css',
1619
encapsulation: ViewEncapsulation.None,
1720
changeDetection: ChangeDetectionStrategy.OnPush,

0 commit comments

Comments
 (0)