From 5939c3aa79658569832465bea58122bc22043843 Mon Sep 17 00:00:00 2001 From: AlmeroSteyn Date: Wed, 30 Mar 2016 19:43:22 +0200 Subject: [PATCH 1/2] docs(cb-a11y): Initial check-in of the a11y doc --- public/docs/_examples/cb-a11y/ts/.gitignore | 11 + public/docs/_examples/cb-a11y/ts/a11y.css | 105 ++ .../cb-a11y/ts/app/a11y-index.component.html | 13 + .../cb-a11y/ts/app/a11y-index.component.ts | 11 + .../cb-a11y/ts/app/app.component.html | 6 + .../_examples/cb-a11y/ts/app/app.component.ts | 29 + .../a11y-component-roles.component.html | 47 + .../a11y-component-roles.component.ts | 35 + .../a11y-form-controls.component.html | 179 +++ .../a11y-form-controls.component.ts | 70 ++ .../a11y-input-wrapper.component.css | 27 + .../a11y-input-wrapper.component.html | 19 + .../a11y-input-wrapper.component.ts | 18 + public/docs/_examples/cb-a11y/ts/app/main.ts | 5 + .../a11y-error-demo.component.html | 18 + .../a11y-error-demo.component.ts | 19 + .../a11y-managing-focus.component.html | 94 ++ .../a11y-managing-focus.component.ts | 44 + .../ts/app/services/a11y-helper.service.ts | 111 ++ .../shared/a11y-custom-button.component.html | 3 + .../shared/a11y-custom-button.component.ts | 25 + .../shared/a11y-custom-control.component.css | 6 + .../shared/a11y-custom-control.component.html | 18 + .../shared/a11y-custom-control.component.ts | 68 ++ .../shared/a11y-value-helper.component.html | 5 + .../app/shared/a11y-value-helper.component.ts | 18 + .../_examples/cb-a11y/ts/example-config.json | 1 + public/docs/_examples/cb-a11y/ts/index.html | 42 + public/docs/_examples/cb-a11y/ts/plnkr.json | 8 + public/docs/dart/latest/cookbook/_data.json | 5 + public/docs/dart/latest/cookbook/a11y.jade | 2 + public/docs/js/latest/cookbook/_data.json | 8 +- public/docs/js/latest/cookbook/a11y.jade | 1 + public/docs/ts/latest/cookbook/_data.json | 6 + public/docs/ts/latest/cookbook/a11y.jade | 1080 +++++++++++++++++ .../cookbooks/a11y/custom-focus-outline.png | Bin 0 -> 3494 bytes .../images/cookbooks/a11y/focus-flow-bad.png | Bin 0 -> 22133 bytes .../cookbooks/a11y/focus-flow-clean.png | Bin 0 -> 15031 bytes .../images/cookbooks/a11y/focus-flow-good.png | Bin 0 -> 30208 bytes .../a11y/invisible-label-input-labeled.png | Bin 0 -> 97119 bytes .../invisible-label-input-not-labeled.png | Bin 0 -> 90123 bytes .../images/cookbooks/a11y/skiplinks.png | Bin 0 -> 5467 bytes .../cookbooks/a11y/standard-focus-outline.png | Bin 0 -> 2288 bytes 43 files changed, 2156 insertions(+), 1 deletion(-) create mode 100644 public/docs/_examples/cb-a11y/ts/.gitignore create mode 100644 public/docs/_examples/cb-a11y/ts/a11y.css create mode 100644 public/docs/_examples/cb-a11y/ts/app/a11y-index.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/a11y-index.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/app.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/app.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/component-roles/a11y-component-roles.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/component-roles/a11y-component-roles.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-form-controls.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-form-controls.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.css create mode 100644 public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/main.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-error-demo.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-error-demo.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/services/a11y-helper.service.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-button.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-button.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.css create mode 100644 public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/app/shared/a11y-value-helper.component.html create mode 100644 public/docs/_examples/cb-a11y/ts/app/shared/a11y-value-helper.component.ts create mode 100644 public/docs/_examples/cb-a11y/ts/example-config.json create mode 100644 public/docs/_examples/cb-a11y/ts/index.html create mode 100644 public/docs/_examples/cb-a11y/ts/plnkr.json create mode 100644 public/docs/dart/latest/cookbook/a11y.jade create mode 100644 public/docs/js/latest/cookbook/a11y.jade create mode 100644 public/docs/ts/latest/cookbook/a11y.jade create mode 100644 public/resources/images/cookbooks/a11y/custom-focus-outline.png create mode 100644 public/resources/images/cookbooks/a11y/focus-flow-bad.png create mode 100644 public/resources/images/cookbooks/a11y/focus-flow-clean.png create mode 100644 public/resources/images/cookbooks/a11y/focus-flow-good.png create mode 100644 public/resources/images/cookbooks/a11y/invisible-label-input-labeled.png create mode 100644 public/resources/images/cookbooks/a11y/invisible-label-input-not-labeled.png create mode 100644 public/resources/images/cookbooks/a11y/skiplinks.png create mode 100644 public/resources/images/cookbooks/a11y/standard-focus-outline.png diff --git a/public/docs/_examples/cb-a11y/ts/.gitignore b/public/docs/_examples/cb-a11y/ts/.gitignore new file mode 100644 index 0000000000..0390f46835 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/.gitignore @@ -0,0 +1,11 @@ +styles.css +typings +typings.json +*.js.map +package.json +karma.conf.js +karma-test-shim.js +tsconfig.json +npm-debug*. +**/protractor.config.js + diff --git a/public/docs/_examples/cb-a11y/ts/a11y.css b/public/docs/_examples/cb-a11y/ts/a11y.css new file mode 100644 index 0000000000..8541969447 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/a11y.css @@ -0,0 +1,105 @@ +label { + color: #424242; + width: 100%; +} + +hr { + border-top: 3px double #8c8b8b; +} + +h3 { + outline: 0; +} + +.hide-element { + display: none !important; +} + +.btn { + margin-bottom: 15px; +} + +.background-contrast { + background-color: #0143A3; + color: #fff; +} + +nav a:visited, a:link { + color: darkblue; +} + +.label-default { + background-color: #3F3F3F; +} + +.skiplink { + min-height: 20px; +} + +/* #docregion cb-a11y-managing-focus-skiplinks-style */ +.skiplink a { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + color: darkblue; +} + +.skiplink a:active, +.skiplink a:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} + +/* #enddocregion */ + +/* #docregion cb-a11y-managing-focus-custom-outline */ +.custom-outline:focus { + border-color: #7F0037; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(127, 0, 55, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(127, 0, 55, .6); +} + +/* #enddocregion */ + +/* #docregion cb-a11y-form-controls-visually-hidden-style*/ +.visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +/* #enddocregion */ + +.like-bootstrap { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} diff --git a/public/docs/_examples/cb-a11y/ts/app/a11y-index.component.html b/public/docs/_examples/cb-a11y/ts/app/a11y-index.component.html new file mode 100644 index 0000000000..b6ac43137d --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/a11y-index.component.html @@ -0,0 +1,13 @@ + diff --git a/public/docs/_examples/cb-a11y/ts/app/a11y-index.component.ts b/public/docs/_examples/cb-a11y/ts/app/a11y-index.component.ts new file mode 100644 index 0000000000..e4e76d7d2a --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/a11y-index.component.ts @@ -0,0 +1,11 @@ +import {Component} from "angular2/core"; +import {ROUTER_DIRECTIVES} from "angular2/router"; + +@Component({ + selector: 'a11y-index', + templateUrl: './app/a11y-index.component.html', + directives: [ROUTER_DIRECTIVES] +}) +export class A11yIndex{ + +} diff --git a/public/docs/_examples/cb-a11y/ts/app/app.component.html b/public/docs/_examples/cb-a11y/ts/app/app.component.html new file mode 100644 index 0000000000..f4c9d73c8d --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/app.component.html @@ -0,0 +1,6 @@ + +
+ +
diff --git a/public/docs/_examples/cb-a11y/ts/app/app.component.ts b/public/docs/_examples/cb-a11y/ts/app/app.component.ts new file mode 100644 index 0000000000..5c3f52453b --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/app.component.ts @@ -0,0 +1,29 @@ +import {Component} from "angular2/core"; +import {ROUTER_DIRECTIVES, RouteConfig, ROUTER_PROVIDERS} from "angular2/router"; +import {A11yFormControls} from "./form-controls/a11y-form-controls.component"; +import {A11yIndex} from "./a11y-index.component"; +import {A11yHelper} from "./services/a11y-helper.service"; +import {A11yManagingFocus} from "./managing-focus/a11y-managing-focus.component"; +import {A11yComponentRoles} from "./component-roles/a11y-component-roles.component"; + +@Component({ + selector: 'app', + templateUrl: 'app/app.component.html', + directives:[ + ROUTER_DIRECTIVES, + A11yIndex + ], + providers: [ + ROUTER_PROVIDERS, + A11yHelper + ] +}) +@RouteConfig([ + {path:'/', name: 'Index', component: A11yIndex}, + {path:'/form-controls', name: 'FormControls', component: A11yFormControls}, + {path:'/managing-focus', name: 'ManagingFocus', component: A11yManagingFocus}, + {path:'/component-roles', name: 'ComponentRoles', component: A11yComponentRoles} +]) +export class AppComponent { + +} diff --git a/public/docs/_examples/cb-a11y/ts/app/component-roles/a11y-component-roles.component.html b/public/docs/_examples/cb-a11y/ts/app/component-roles/a11y-component-roles.component.html new file mode 100644 index 0000000000..7b68ed2c83 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/component-roles/a11y-component-roles.component.html @@ -0,0 +1,47 @@ + + +
+
+

Roles for custom component widgets

+
+ +
+
+

Roles in the template

+
+
+ + + I set the role in my template: + + + + +
+ +
+
+

Roles of the host element

+
+
+ +
+
+ + Do something... + +
+
+ +
+
+ +
+
+ +
+ +
diff --git a/public/docs/_examples/cb-a11y/ts/app/component-roles/a11y-component-roles.component.ts b/public/docs/_examples/cb-a11y/ts/app/component-roles/a11y-component-roles.component.ts new file mode 100644 index 0000000000..247d991917 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/component-roles/a11y-component-roles.component.ts @@ -0,0 +1,35 @@ +import {Component} from "angular2/core"; +import {A11yHelper} from "../services/a11y-helper.service"; +import {A11yCustomControl} from "../shared/a11y-custom-control.component"; +import {A11yValueHelper} from "../shared/a11y-value-helper.component"; +import {A11yCustomButton} from "../shared/a11y-custom-button.component"; + +@Component({ + selector: 'a11y-component-roles', + templateUrl: './app/component-roles/a11y-component-roles.component.html', + directives: [ + A11yCustomControl, + A11yValueHelper, + A11yCustomButton + ] +}) +export class A11yComponentRoles { + + inputDivModel: string = ''; + buttonClicks: number = 0; + + constructor(private _a11yHelper: A11yHelper){} + + onClick():void { + this.buttonClicks++; + } + + generateSkiplink(hash:string){ + return this._a11yHelper.getInternalLink(hash, 'ComponentRoles'); + } + + generateButtonString(): string{ + return `Button has been clicked ${this.buttonClicks} times`; + } + +} diff --git a/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-form-controls.component.html b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-form-controls.component.html new file mode 100644 index 0000000000..480006d0d5 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-form-controls.component.html @@ -0,0 +1,179 @@ + + +
+
+

Accessible form control labels

+
+ +
+
+

Implicit labeling

+
+
+ + +
+ +
+ + + + + +
+ +
+ + + + + +
+ + What do you like most about Angular 2? + +
+ +
+
+ + + + + +
+ + Choose your favourite Angular 2 language: + +
+ +
+
+ + + + + +
+ +
+ + + +
+ +
+
+

Explicit labeling

+
+
+ + +
+ + +
+ + + + +
+ +
+
+

Hiding labels

+
+
+ + +
+ + +
+ + + + + +
+ +
+ + + + +
+ +
+
+

Labeling custom controls

+
+
+ + + + Write in this labeled div: + + + + + + + + Write in this wrapped input: + + + + + + +
+ Back to index... +
+ + diff --git a/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-form-controls.component.ts b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-form-controls.component.ts new file mode 100644 index 0000000000..fe6d87dc48 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-form-controls.component.ts @@ -0,0 +1,70 @@ +import {Component, OnInit} from "angular2/core"; +import {CORE_DIRECTIVES, FORM_DIRECTIVES} from "angular2/common"; +import {A11yHelper} from "../services/a11y-helper.service"; +import {ROUTER_DIRECTIVES} from "angular2/router"; +import {A11yInputWrapper} from "./a11y-input-wrapper.component"; +import {A11yValueHelper} from "../shared/a11y-value-helper.component"; +import {A11yCustomControl} from "../shared/a11y-custom-control.component"; + +@Component({ + selector: 'a11y-form-controls', + templateUrl: './app/form-controls/a11y-form-controls.component.html', + directives: [ + CORE_DIRECTIVES, + FORM_DIRECTIVES, + ROUTER_DIRECTIVES, + A11yCustomControl, + A11yInputWrapper, + A11yValueHelper + ] +}) +export class A11yFormControls implements OnInit { + + checkBoxes:any; + radioButtons:any; + selectOptions:any; + + inputModel:string; + inputExplicitModel: string; + inputWrappedModel: string; + inputWrappedSaveModel:string = ''; + inputDivModel: string = ''; + textModel:string; + selectModel: string = 'Curiosity'; + searchModel: string; + filterModel: string; + + radioModel:string = 'TypeScript'; + checkboxModel:Array = ["Observables", "Components"]; + + + constructor(private _a11yHelper:A11yHelper) { + } + + generateSkiplink(hash:string){ + return this._a11yHelper.getInternalLink(hash, 'FormControls'); + } + + isChecked(item:string):boolean { + return this._a11yHelper.isStringInArray(this.checkboxModel, item); + } + + toggleCheckbox(item:string):void { + this._a11yHelper.toggleItemInArray(this.checkboxModel, item); + } + + onSave(){ + this.inputWrappedSaveModel = this.inputWrappedModel; + } + + ngOnInit() { + this.checkBoxes = this._a11yHelper.getCheckboxModel(); + this.radioButtons = this._a11yHelper.getRadiobuttonsModel(); + this.selectOptions = this._a11yHelper.getSelectOptions(); + } + + updateSelect(value: string):void{ + this.selectModel = value; + } + +} diff --git a/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.css b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.css new file mode 100644 index 0000000000..14f209046a --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.css @@ -0,0 +1,27 @@ +/* #docregion */ +:host input { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} + +:host input:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +/* #enddocregion */ diff --git a/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.html b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.html new file mode 100644 index 0000000000..544ea235fc --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.html @@ -0,0 +1,19 @@ + +
+
+ +
+
+ diff --git a/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.ts b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.ts new file mode 100644 index 0000000000..5798b37660 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.ts @@ -0,0 +1,18 @@ +import {Component, Output, EventEmitter} from "angular2/core"; + +// #docregion +@Component({ + selector: 'a11y-input-wrapper', + templateUrl: './app/form-controls/a11y-input-wrapper.component.html', + styleUrls: ['./app/form-controls/a11y-input-wrapper.component.css'] +}) +export class A11yInputWrapper{ + + @Output() + onSave: EventEmitter = new EventEmitter(); + + save(){ + this.onSave.emit(null); + } +} +// #enddocregion diff --git a/public/docs/_examples/cb-a11y/ts/app/main.ts b/public/docs/_examples/cb-a11y/ts/app/main.ts new file mode 100644 index 0000000000..4dc919769e --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/main.ts @@ -0,0 +1,5 @@ +import {bootstrap} from 'angular2/platform/browser'; +import {AppComponent} from './app.component'; + + +bootstrap(AppComponent); \ No newline at end of file diff --git a/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-error-demo.component.html b/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-error-demo.component.html new file mode 100644 index 0000000000..52a6e22017 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-error-demo.component.html @@ -0,0 +1,18 @@ + + + + diff --git a/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-error-demo.component.ts b/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-error-demo.component.ts new file mode 100644 index 0000000000..4d1a80535f --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-error-demo.component.ts @@ -0,0 +1,19 @@ +import {Component} from "angular2/core"; + +// #docregion +@Component({ + selector: 'a11y-error-demo', + templateUrl: './app/managing-focus/a11y-error-demo.component.html' +}) +export class A11yErrorDemo { + + hideErrorConfirmation:boolean = true; + + setFocusOn(element: any) { + this.hideErrorConfirmation = false; + setTimeout(() => { + element.focus(); + }, 200); + } +} +// #enddocregion diff --git a/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.html b/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.html new file mode 100644 index 0000000000..9507810c3f --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.html @@ -0,0 +1,94 @@ + + + + +
+
+

Managing focus

+
+ +
+
+

The focus outline

+
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +

Focus flow

+ +
+
+ + +
+
+ +
+
+ +
+
+ + + +
+ +
+
+

Focusing custom controls

+
+
+ +
+
+ + Do something... + +
+
+ +
+
+ +
+
+
+ +
+
+

Internal focus in a component

+
+
+ + +
+ + Back to index... + +
+ diff --git a/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.ts b/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.ts new file mode 100644 index 0000000000..ca1d7846a8 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.ts @@ -0,0 +1,44 @@ +import {Component, OnInit} from "angular2/core"; +import {A11yHelper} from "../services/a11y-helper.service"; +import {CORE_DIRECTIVES} from "angular2/common"; +import {A11yErrorDemo} from "./a11y-error-demo.component"; +import {ROUTER_DIRECTIVES} from "angular2/router"; +import {A11yCustomButton} from "../shared/a11y-custom-button.component"; +import {A11yValueHelper} from "../shared/a11y-value-helper.component"; + +@Component({ + selector: 'a11y-managing-focus', + templateUrl: './app/managing-focus/a11y-managing-focus.component.html', + directives: [ + CORE_DIRECTIVES, + ROUTER_DIRECTIVES, + A11yCustomButton, + A11yValueHelper, + A11yErrorDemo + ] +}) +export class A11yManagingFocus implements OnInit{ + + countriesWorkedIn: Array; + buttonClicks: number = 0; + + constructor(private _a11yHelper:A11yHelper) { + } + + generateSkiplink(hash:string) { + return this._a11yHelper.getInternalLink(hash, 'ManagingFocus'); + } + + onClick():void { + this.buttonClicks++; + } + + generateButtonString(): string{ + return `Button has been clicked ${this.buttonClicks} times`; + } + + ngOnInit():void{ + this.countriesWorkedIn = this._a11yHelper.getCountriesWorkedIn() + } + +} diff --git a/public/docs/_examples/cb-a11y/ts/app/services/a11y-helper.service.ts b/public/docs/_examples/cb-a11y/ts/app/services/a11y-helper.service.ts new file mode 100644 index 0000000000..eab283b6c6 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/services/a11y-helper.service.ts @@ -0,0 +1,111 @@ +import {Injectable} from "angular2/core"; +import {Router} from "angular2/router"; + +@Injectable() +export class A11yHelper { + + constructor(private _router: Router){} + + getInternalLink(hash: string, instructionName: string): string{ + let instruction = this._router.generate([instructionName]); + let path = '/' + instruction.toUrlPath() + hash; + return path; + } + + generateUniqueIdString():string { + return (this.randomGuidSnippet() + + this.randomGuidSnippet() + "-" + + this.randomGuidSnippet() + "-4" + + this.randomGuidSnippet().substr(0, 3) + "-" + + this.randomGuidSnippet() + "-" + + this.randomGuidSnippet() + + this.randomGuidSnippet() + + this.randomGuidSnippet()).toLowerCase(); + } + + getCheckboxModel():any { + return [ + { + name: 'Template syntax', + value: 'Template syntax' + }, + { + name: 'Observables', + value: 'Observables' + }, + { + name: 'Components', + value: 'Components' + }, + { + name: 'Forms', + value: 'Forms' + } + ]; + } + + getRadiobuttonsModel():any { + return [ + { + name: 'TypeScript', + value: 'TypeScript' + }, + { + name: 'JavaScript', + value: 'JavaScript' + }, + { + name: 'ES6', + value: 'ES6' + }, + { + name: 'Dart', + value: 'Dart' + } + ]; + } + + getSelectOptions():any { + return [ + { + name: 'Curiosity', + value: 'Curiosity' + }, + { + name: 'Increased userbase', + value: 'Increased userbase' + }, + { + name: 'Legal reasons', + value: 'Legal reasons' + } + ]; + } + + getCountriesWorkedIn():Array{ + return ['The USA', 'The Netherlands', 'South Africa', 'Germany', 'The UK']; + } + + toggleItemInArray(stringArray:Array, item:string): void { + var entryIndex = stringArray.indexOf(item); + if (entryIndex != -1) { + stringArray.splice(entryIndex, 1); + } else { + stringArray.push(item); + } + } + + isStringInArray(stringArray: Array, item: string): boolean { + return stringArray.indexOf(item.toString()) != -1; + } + + removeHtmlStringBreaks(inputValue: string):string{ + return inputValue.replace(new RegExp('
', 'g'), '') + .replace(new RegExp('
', 'g'), '\n') + .replace(new RegExp('
', 'g'), '') + } + + private randomGuidSnippet():string { + return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); + } +} diff --git a/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-button.component.html b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-button.component.html new file mode 100644 index 0000000000..ceb79a69d3 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-button.component.html @@ -0,0 +1,3 @@ + + + diff --git a/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-button.component.ts b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-button.component.ts new file mode 100644 index 0000000000..0c03b7bf9b --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-button.component.ts @@ -0,0 +1,25 @@ +import {Component, EventEmitter, Output} from "angular2/core"; + +// #docregion +@Component({ + selector: 'a11y-custom-button', + templateUrl: './app/shared/a11y-custom-button.component.html', + host: { + 'role': 'button', + 'tabindex': '0', + 'class': 'btn btn-primary', + '(keydown.space)': 'onKeyDown()', + '(keydown.enter)': 'onKeyDown()' + } +}) +export class A11yCustomButton { + + @Output() + click:EventEmitter = new EventEmitter(); + + onKeyDown() { + this.click.emit(null); + } + +} +// #enddocregion diff --git a/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.css b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.css new file mode 100644 index 0000000000..85aa2a3e40 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.css @@ -0,0 +1,6 @@ +/* #docregion */ +div.edit-box{ + height: auto; + min-height: 50px; +} +/* #enddocregion */ diff --git a/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.html b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.html new file mode 100644 index 0000000000..21fdf24fbe --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.html @@ -0,0 +1,18 @@ + +
+
+ +
+
+
+ diff --git a/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.ts b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.ts new file mode 100644 index 0000000000..a62782d9ba --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-custom-control.component.ts @@ -0,0 +1,68 @@ +import {Component, OnInit, Provider, forwardRef,} from "angular2/core"; +import {A11yHelper} from "../services/a11y-helper.service"; +import {NG_VALUE_ACCESSOR, ControlValueAccessor} from "angular2/common"; + +// #docregion +const noop = () => { +}; + +const A11Y_CUSTOM_CONTROL_VALUE_ACCESSOR = new Provider( + NG_VALUE_ACCESSOR, { + useExisting: forwardRef(() => A11yCustomControl), + multi: true + }); + +@Component({ + selector: 'a11y-custom-control', + templateUrl: './app/shared/a11y-custom-control.component.html', + styleUrls: ['./app/shared/a11y-custom-control.component.css'], + providers: [A11Y_CUSTOM_CONTROL_VALUE_ACCESSOR] +}) +export class A11yCustomControl implements OnInit, ControlValueAccessor { + + uniqueId:string; + + private _innerValue:any = ''; + outerValue:string = ''; + + private _onTouchedCallback:() => void = noop; + private _onChangeCallback:(_:any) => void = noop; + + constructor(private _a11yHelper:A11yHelper) { + } + + onChange(event:any, value:string) { + if (event.keyCode == 13) { + event.preventDefault(); + } + else { + this._innerValue = this._a11yHelper.removeHtmlStringBreaks(value); + this._onChangeCallback(this._innerValue); + } + } + + onBlur(){ + this._onTouchedCallback(); + } + + writeValue(value:any) { + if (value != this._innerValue) { + this._innerValue = value; + this.outerValue = value; + } + } + + registerOnChange(fn:any) { + this._onChangeCallback = fn; + } + + registerOnTouched(fn:any) { + this._onTouchedCallback = fn; + } + + ngOnInit():void { + this.uniqueId = this._a11yHelper.generateUniqueIdString(); + } + +} +// #enddocregion diff --git a/public/docs/_examples/cb-a11y/ts/app/shared/a11y-value-helper.component.html b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-value-helper.component.html new file mode 100644 index 0000000000..bde42e27d4 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-value-helper.component.html @@ -0,0 +1,5 @@ + + Current value: {{displayValue}} + diff --git a/public/docs/_examples/cb-a11y/ts/app/shared/a11y-value-helper.component.ts b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-value-helper.component.ts new file mode 100644 index 0000000000..6443299ec6 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/app/shared/a11y-value-helper.component.ts @@ -0,0 +1,18 @@ +import {Component, Input} from "angular2/core"; + +@Component({ + selector: 'a11y-value-helper', + templateUrl: './app/shared/a11y-value-helper.component.html', + styles: [` + .value-label { + position:relative; + top: -15px; + } +`] +}) +export class A11yValueHelper { + + @Input() + displayValue: any; + +} diff --git a/public/docs/_examples/cb-a11y/ts/example-config.json b/public/docs/_examples/cb-a11y/ts/example-config.json new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/example-config.json @@ -0,0 +1 @@ + diff --git a/public/docs/_examples/cb-a11y/ts/index.html b/public/docs/_examples/cb-a11y/ts/index.html new file mode 100644 index 0000000000..e56cff83f3 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/index.html @@ -0,0 +1,42 @@ + + + + + A11y demonstration + + + + + + + + + + + + + + + + + + + + + + +loading... + + + diff --git a/public/docs/_examples/cb-a11y/ts/plnkr.json b/public/docs/_examples/cb-a11y/ts/plnkr.json new file mode 100644 index 0000000000..8e4e448188 --- /dev/null +++ b/public/docs/_examples/cb-a11y/ts/plnkr.json @@ -0,0 +1,8 @@ +{ + "description": "A11y Cookbook samples", + "files":[ + "!**/*.d.ts", + "!**/*.js" + ], + "tags":["cookbook", "a11y"] +} \ No newline at end of file diff --git a/public/docs/dart/latest/cookbook/_data.json b/public/docs/dart/latest/cookbook/_data.json index 2c28e02169..3604417c69 100644 --- a/public/docs/dart/latest/cookbook/_data.json +++ b/public/docs/dart/latest/cookbook/_data.json @@ -12,6 +12,11 @@ "hide": true }, + "a11y": { + "title": "Accessibility and ARIA reference", + "navTitle": "Accessibility and ARIA", + "intro": "Learn how to make your Angular 2 sites accessible for everyone" + }, "component-communication": { "title": "Component Interaction", "intro": "Share information between different directives and components" diff --git a/public/docs/dart/latest/cookbook/a11y.jade b/public/docs/dart/latest/cookbook/a11y.jade new file mode 100644 index 0000000000..e44128c6a2 --- /dev/null +++ b/public/docs/dart/latest/cookbook/a11y.jade @@ -0,0 +1,2 @@ +!= partial("../../../_includes/_ts-temp") + diff --git a/public/docs/js/latest/cookbook/_data.json b/public/docs/js/latest/cookbook/_data.json index f4f89de38c..6ce6585204 100644 --- a/public/docs/js/latest/cookbook/_data.json +++ b/public/docs/js/latest/cookbook/_data.json @@ -11,6 +11,12 @@ "intro": "Learn how Angular 1 concepts and techniques map to Angular 2" }, + "a11y": { + "title": "Accessibility and ARIA reference", + "navTitle": "Accessibility and ARIA", + "intro": "Learn how to make your Angular 2 sites accessible for everyone" + }, + "component-communication": { "title": "Component Interaction", "intro": "Share information between different directives and components" @@ -21,7 +27,7 @@ "intro": "Techniques for Dependency Injection" }, - "dynamic-form": { + "dynamic-forms": { "title": "Dynamic Form", "intro": "Render dynamic forms with NgFormModel" }, diff --git a/public/docs/js/latest/cookbook/a11y.jade b/public/docs/js/latest/cookbook/a11y.jade new file mode 100644 index 0000000000..6778b6af28 --- /dev/null +++ b/public/docs/js/latest/cookbook/a11y.jade @@ -0,0 +1 @@ +!= partial("../../../_includes/_ts-temp") diff --git a/public/docs/ts/latest/cookbook/_data.json b/public/docs/ts/latest/cookbook/_data.json index 211e12bfd4..d2a28725fb 100644 --- a/public/docs/ts/latest/cookbook/_data.json +++ b/public/docs/ts/latest/cookbook/_data.json @@ -11,6 +11,12 @@ "intro": "Learn how Angular 1 concepts and techniques map to Angular 2" }, + "a11y": { + "title": "Accessibility and ARIA reference", + "navTitle": "Accessibility and ARIA", + "intro": "Learn how to make your Angular 2 sites accessible for everyone" + }, + "component-communication": { "title": "Component Interaction", "intro": "Share information between different directives and components" diff --git a/public/docs/ts/latest/cookbook/a11y.jade b/public/docs/ts/latest/cookbook/a11y.jade new file mode 100644 index 0000000000..f021ac2381 --- /dev/null +++ b/public/docs/ts/latest/cookbook/a11y.jade @@ -0,0 +1,1080 @@ +include ../_util-fns + +:marked + ## Welcome to A11y! + + You are about to learn how to make your Angular 2 application accessible for + as many people as possible. This is no small goal as there is a large group of people out there who find it + very hard or even impossible to use applications that have not been built with these concepts in mind. + + We will show you how to integrate these concepts with little to no extra effort on your part, + provided you take them into account right from the design phase of your application. + + So page through this cookbook, apply these recipes and watch your user base grow. + + If you see the terms `Web Accessibility`, `ARIA` or `a11y` for the first time, you are at the start of an + incredible journey. For those who already enjoy the benefits of `Accessible Web Applications`, we will + show you how to use your knowledge in the new and exciting world of Angular 2. + +.l-main-section +:marked + ## A11y and ARIA in a nutshell + + `Accessibility` is often called `a11y`. This is because we want to say as lot while we write less. As + it has eleven letters, starts with an `a` and ends with a `y`, we shorten this word to `a11y`. We will + refer to `a11y` when we want to say `accessibility`. + +.l-sub-section + :marked + In short, `a11y` refers to creating web applications that everyone can use, making it accessible to everyone. + +:marked + If you are totally new to the term you may want to have a look at what the folks at the `W3C` have to say about + [a11y](https://www.w3.org/WAI/intro/accessibility.php), to put the rest of the article into perspective. + + What is that other word? + +.l-sub-section + :marked + `ARIA`, or `Accessible Rich Internet Applications` refers to a standard set of attributes for adding accessibility + information to `HTML` and `SVG`, which allows us to bring `a11y` concepts into + Internet applications like those we are building with Angular 2. + +:marked + You can also read what they say about [ARIA](https://www.w3.org/WAI/intro/aria) at the `W3C`. We will be right here + waiting for you when you come back. + +.callout.is-important + header ARIA terminology confusion alert! + :marked + In `ARIA` we refer to the `aria-...` attributes as `ARIA States` or `ARIA Properties`. The difference between + the two should become clear as you progress through this cookbook. However, `ARIA Properties` are not + real `HTML` element properties but decorating attributes referring to properties. When we refer to an + `ARIA Property` in the code you will **HAVE** to do + it with an Angular 2 attribute binding. This is simply a terminology clash. + +.l-main-section +:marked + ## Native elements vs. custom components + + Angular 2 gives you a lot of power at your fingertips to create extremely powerful components. Spare a + thought for the native `HTML` elements before you decide to build something new. + + The makers of the browsers have spent a lot of time thinking about the very same issue that brought + you to this page today and have provided you with a lot of functionality out-of-the-box when you make use of + native `HTML` elements. + + We would like to suggest the following rule of thumb when building your applications: + +.l-sub-section + :marked + If there is already a native element inside `HTML` providing the function that you need, use + that element instead of writing your own. + +:marked + So, if you want to accept user text input, use the `input` element instead of constructing something new. + + This way you have to think less about things like focus management, tabindex, etc. and have more time to think about + your code. + + We know this is not always possible, so this guide will also show you what you can do to make your own + components as accessible as possible. + + So without further ado, let us see how easy it is to get big `a11y` wins in our applications! + +.l-main-section +:marked + ## Important note on styling in this chapter + +.callout.is-important + header Angular Pages Do Not Require A Style Library + :marked + Where you see `CSS` classes in the example code, these classes are independent of Angular 2. It does not need + the styles of any external library. We are free to style our apps with any `CSS library`, our own `Custom CSS` or use no + `CSS` at all. + +:marked + Classes like `container`, `row`, `col-xs-12`, `checkbox`, `radio`, `form-group`, `form-control`, etc, + come from [Twitter Bootstrap](http://getbootstrap.com/css/). This is a purely cosmetic addition to prettify + the examples so that they are as visually appealing as they are accessible. + + Always remember, just because something looks good, it does not mean that it is accessible. + + The good news is, here we strive to do both! + +.l-main-section + +:marked + ## Table of contents + + [Accessible form control labels](#form-control-labels) + + [Managing focus](#managing-focus) + + [Roles for custom component widgets](#component-roles) + +.l-sub-section + :marked + In the example application code when we need unique element id's we will be generating `GUID's`to make sure that they are + unique. You can use your own method to do this, as long as every id on a page is unique. More on this later... + +:marked + **Feel free to follow along in this [live example](/resources/live-examples/cb-a11y/ts/plnkr.html)**. + +.l-main-section + +:marked + ## Accessible form control labels + + Whether we are using native interactive `HTML` elements or creating our own rich custom interactive components, + it is crucial to + label them. Imagine coming face-to-face with a customer detail page on your favourite online store, and + be greeted with a screen filled with unlabeled input fields! + + That would be a nightmare right? The users will leave so fast the bounce rate counter will be able to power a small town, it will be + spinning *THAT* fast. + + We can avoid this from ever happening by simply adding a label for each field. The challenge is that + many users of our website will not be able to see or recognize these labels without help. + + For this reason it is not only important to visually mark any form component, or `form controls` as they are sometimes called, + but to do so in a way that also exposes it to assistive technologies. + + We will discuss some ways to do this. + +.l-sub-section + :marked + You will see the `ng-content` tag making its appearance in some examples. This is because we are making use + of `Content Projection` to load content into the templates of our components. + +.l-sub-section + :marked + It is very important to note that a `label` element can describe one and only form input element. You cannot + label multiple form fields with one label. However, this is something we can do with `ARIA`. + +.l-sub-section + :marked + The label text position also matters. For `inputs`, `textareas` and `selects`, the label text precedes + the element and for `checkboxes` and `radiobuttons`, the text should follow the element in the flow. + +:marked + ### Implicit labeling + + Firstly we will look at the easiest, quickest way to give our form controls accessible labels, + and that is with a syntax called `implicit labeling`. + +.l-sub-section + :marked + Use this method to label your `form controls` when possible. As you will see later, the other methods of + labeling rely on generating unique id's for your elements. As we are often building reusable components + in Angular 2, you will need to make sure that every id you create is unique on a page, no matter how often you use + your component! Save yourself the trouble and label implicitly. + +:marked + We label implicitly like this: + +code-example(language="html" escape="html"). + + +:marked + Easy, isn't it? Of course, here we can substitute the `input` element with any native `HTML` form control. + + Let us now explore how we can use `implicit labeling` to decorate the commonly used native `HTML` form controls + in our Angular 2 components. + +:marked + #### Inputs and textareas + + Labeling an input: + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html','cb-a11y-form-controls-input-implicit') + +:marked + Labeling a textarea: + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html','cb-a11y-form-controls-textarea-implicit') + +:marked + #### Checkboxes and radiobuttons + +.l-sub-section + :marked + Because of the many `input` fields making up a `checkbox group` or `radiobutton group`, the usual rule applies + for each input but the entire group also needs labeling and we do this by using `fieldset` and `legend`. + +:marked + Labeling checkboxes: + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html','cb-a11y-form-controls-checkboxes-implicit') + +:marked + Labeling radiobuttons: + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html','cb-a11y-form-controls-radiobuttons-implicit') + +:marked + #### Select lists + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html','cb-a11y-form-controls-select-implicit') + +:marked + ### Explicit labeling + + There could be a number of reasons why you prefer not using the `implicit labeling` syntax described above. Maybe + you need to write the input outside the label for positioning or styling purposes, or maybe your elements are + already furnished with id's. + + As an alternative, you can also use the `explicit labeling` syntax. For this syntax + the `HTML` form element needs an `id`, which is then connected via a `for / id` pair *[The `for` attribute of the label has to + match the `id` of the element being labeled]* . + + As an example, we will only look at adding an `explicit label` to a `text input`. The examples under the `implicit labeling` + section can then easily be adjusted to use this syntax. + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html', 'cb-a11y-form-controls-input-explicit') + +:marked + ### Hidden labels + + Sometimes, the design of your page makes more sense without a visible label. Think about `search` fields. Do you have + to give a visual label for each one? + + The answer is no, but does that mean we get away with not labeling those fields at all? + + Again the answer is no. + + So how do we solve it? + + We can either use an `explicitly labeled` input and hide the label with style, or we can use `aria-label`, which + is an `ARIA Property`. + +.l-sub-section + :marked + We cannot hide the label using the `display` css property. Hidden fields are also hidden to assistive + technologies so we have to use some css magic to either place the label outside the visible page or + shrink it right down. We will not see it, but screen readers will still find it and read it while + still linking it to the correct input via the `for / id` linkup. The following example has such a + `visually hidden` style. + +:marked + Example of a good visually hidden css style: + ++makeExample('cb-a11y/ts/a11y.css', 'cb-a11y-form-controls-visually-hidden-style') + +:marked + Applying the style to a control to hide the label: + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html', 'cb-a11y-form-controls-hidden-label-explicit') + +:marked + Or the `aria-label` alternative: + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html','cb-a11y-form-controls-hidden-label-aria') + +:marked + This `aria-label` attribute serves the same `a11y` purpose as our `label` tags above and tells screen readers the label + of the field. + +.l-sub-section + :marked + So why not simply always use `aria-label`? This is because adding the `label` element not only provides the visual + label, but linking a `label` to a `native form control` also means that clicking on the `label` will select the + `form control` itself. This assists users with motor disabilities by providing a larger clickable area, thereby also + touching on another important area of `a11y`. + +:marked + Let's have a look at a quick comparison between and `input` with no label versus one labeled with `aria-label`. + + The following shows what happens if we have an `input` for filtering criteria that does not take any `a11y` into account. We will + use the accessibility tools in the newest development version of `Chrome`, although you can use one of a number of internal + and external web browser tools to test accessibility. + + Here we see the information that assistive technologies will use when reading our field out: + +figure.image-display + img(src="/resources/images/cookbooks/a11y/invisible-label-input-not-labeled.png" alt="Input with invisible label not labeled correctly") + +:marked + The only description a user with a screen reader will get is **Enter a value**. What value? + + Just imagine if there are more than one input on the same page with the same placeholder. Utter chaos! + + Now let's get some `a11y` going there and look at the same input again: + +figure.image-display + img(src="/resources/images/cookbooks/a11y/invisible-label-input-labeled.png" alt="Input with invisible label labeled correctly") + +:marked + Immediately it is clear what this `input` field is all about and what to do with it! + +:marked + ### Labeling custom form controls + + So you need to do something and try as you might you cannot construct it with native `HTML` elements + **OR** you need to give that legacy application an `a11y` makeover without the luxury of rewriting the + entire code base. + + How would you go about making these custom form controls accessible? + + Fear not, there is a way! We introduce the next addition to our `ARIA` toolkit, and that is `aria-labelledby`. + + Wait, why do we even need this? We just use the `for / id` binding of the `label` element, right? + + Wrong again! The `for / id` function of the `label` element is only recognized when used with + the native `HTML` form control elements such as `input` and `textarea`. To label anything else, like a `div` or a + `custom element` we need to create this link by using `aria-labelledby`. + + Let's illustrate this by recreating the native `input` element with a component that makes use of `div's`. + +.l-sub-section + :marked + Please note that creating an `input` out of `div's` is **NOT** recommended, but only serves as an illustration that + it is possible to make any form control accessible. Also note that as we are focusing on `a11y`, our component is not + production ready but only + implements the basics of functionality to make it function as an `input`, for example adding the machinery to make it play nicely + with `ngModel`. The full implementation would become + even larger and more complex before we can use it in an enterprise application. We hope that this illustrates + further why native `HTML` elements should preferably be used. + +:marked + Our component: + ++makeTabs('cb-a11y/ts/app/shared/a11y-custom-control.component.html,cb-a11y/ts/app/shared/a11y-custom-control.component.ts,cb-a11y/ts/app/shared/a11y-custom-control.component.css', +null, 'a11y-custom-control.component.html,a11y-custom-control.component.ts, a11y-custom-control.component.css') + +:marked + This can now be used in our `HTML` as follows: + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html','cb-a11y-form-controls-custom-control-usage') + +:marked + Let's have a look at what is rendered out. *For clarity sake, we omit the style attributes added by Angular 2 + for the component style.*: + +code-example(language="html" escape="html" format="linenums"). + +
+ +
+
+
+ +:marked + The first thing that we should note is the `role` attribute. This is also part of `ARIA` and we use these when we need + to tell assistive technologies that the semantic role of an `HTML` element has changed. The `div` element was certainly + never specified as a textbox! Here we are doing just that, so our custom control needs the role of + `textarea`. We will look at `ARIA Roles` in more detail later. + + Next we will look at the `aria-labelledby` attribute. As you can see, this has the `id` of the `label` field. This + is how we tell screen readers to use that specific `label` element to label our input control. + +.l-sub-section + :marked + Besides the need to generate unique `id's`, there is one more warning in using `aria-labelledby`. Even when using this + with an actual `label` element, clicking the label will **NOT** focus the input as it does when used with native + `HTML` form control elements. Therefore, this construct will always be slightly inferior to the native approach, as you lose the + accessibility gain the `label click` gives you. + +:marked + We also snuck in yet another `ARIA` property called `aria-multiline`. Yes folks, + we need to tell someone who is unable to see if our input accepts single or multiple lines of text. By using + `aria-multiline`, we are able to tell the screen reader whether it is single or multiline field. + + *That was certainly a mouthful! Aren't there ways where we can use the power of Angular 2, but keep the + built-in `a11y` wins the native `HTML` elements give us?* + + There certainly are and let's look at one such option that uses `Content Projection`. + +:marked + ### Labeling options with Content Projection + + One of the biggest wins in using Angular 2 components is that they are reusable. This means less code to write, + which makes everyone happy as it leads to a more maintainable code base and building + functionality quicker. + + The syntax patterns we suggested earlier in this section could, of course, work against this very strength. Duplicating + all the `HTML` for each well styled and functional form control is not what we are aiming for either. Neither + are we suggesting throwing out all the power of Angular 2. Hey, we built it after all! + + There are mechanisms inside Angular 2 which allows you to use what you have just learnt in clever ways to + gain the biggest wins with accessibility of your form controls, while also benefiting from using the framework. + + As an example of what you could do, we will be looking at using `Content Projection` and `Implicit Labeling` to build + a component that can decorate any input: + ++makeTabs('cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.html,cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.ts,cb-a11y/ts/app/form-controls/a11y-input-wrapper.component.css', +null, 'a11y-input-wrapper.component.html,a11y-input-wrapper.component.ts, a11y-input-wrapper.component.css') + +:marked + How do we use it? Like this: + ++makeExample('cb-a11y/ts/app/form-controls/a11y-form-controls.component.html','cb-a11y-form-controls-custom-control-wrapped-usage') + +:marked + Let's quickly dive into the code. + + We used `Content Projection` with `multiple projection slots` to project our `input` and the `label` content into our component's + template. This way we keep direct access to and direct control of the `label` content as well as the `input`. + + Our component gets to do all the hard work for us while we have got all the benefits of using the native `HTML input` + element directly! + + We did not have to add any of the extra code of the previous component and our resultant decorated `input` + control is fully accessible. + + With `a11y` in Angular 2 it truly seems that you can indeed have your cake.... and eat it! + +:marked + ### Section summary + + In this section we looked at how we can give accessible labels to our native, as well as custom, form controls. + + We looked at `implicit labeling` versus `explicit labeling` and how `implicit labeling` can often save you + a lot of extra lines of code and trouble. + + We also saw that even when a control does not need a visual label, it still needs a label for those who + cannot see it and we looked at ways to hide these labels in an accessible way. + + Finally, we looked at how we can label even the most inaccessible of controls with `ARIA` and how we could use + what lies in our Angular 2 toolbox in clever ways so that we could benefit from combining the raw power of + Angular 2 with the `a11y` implementations of native `HTML` elements. + + Keep reading for more on `a11y` in Angular 2 or [go back to the table of contents](#toc) + +.l-main-section + +:marked + ## Managing focus + + Often when developers think of `a11y`, they only think of people with visual disabilities and screen readers. + + While we do a lot to make sure that screen readers can properly consume and read our pages, `a11y` is + about much, much more. Visual disabilities is only one of the main groups of disabilities that hamper access to the web. + There is also a vast group of people out there who finds it difficult to use our websites due to `motor disabilities`. + + We need to spare a thought for those people out there who would love to use our shiny new Angular 2 application, but + simply cannot use a mouse due to a variety of reasons. Some people have no hands whilst others + are unable to use their hands temporarily, due to injury. Just like those with visual disabilities, this group also + relies strongly on the keyboard or other types of assistive technologies when they navigate the web. + +.l-sub-section + :marked + One of the most important aspects of `a11y` is called `keyboard accessibility`. This means that every page we make + **MUST** be navigable and operable through use of the keyboard alone. + +:marked + So how do `keyboard accessibility` relate to `managing focus`? + + For a user totally dependent on a screen reader and/or keyboard, his interaction with our site is completely based on + where the current focus of the application lies. + +.l-sub-section + :marked + Focus is broken down into `keyboard focus`, which refers to the area of the page that will next be affected by a + keyboard action and `reading focus`, which refers to where the screen reader will next start reading from. + +:marked + In this section we will be looking primarily at `keyboard focus`. By correctly managing `keyboard focus`, the + `reading focus` will usually also be correct. + +.l-sub-section + :marked + For those using keyboard only navigation, focus is typically set one focusable element forward using `Tab` + or one element backward using `Shift+Tab`. Why not try it now? Go to your favorite online shopping site and + see if you can order your next product using only `Tab` and `Shift+Tab` for navigation and `Enter` to select + actions. Walking a mile in the shoes of someone who cannot use a mouse can give us a lot of respect for why we + should make our websites accessible. + +:marked + ### Outline marks the spot + + We have all seen it, the blue box that web browsers draw around the currently focused `element`. This is rendered + through the `outline` style property. + +figure.image-display + img(src="/resources/images/cookbooks/a11y/standard-focus-outline.png" alt="Standard browser focus outline box") + +:marked + It clearly indicates where the current `keyboard focus` of the application lies. As it turns out, this is one + of the non-negotiables of `a11y`. We **HAVE** to visually show where the current `keyboard focus` lies. + Someone navigating a website with keyboard input alone cannot do so unless this is always clear. + + Unfortunately, the solid blue box does not meet everyone's approval in a world filled with opacities and box-shadows. + This leads to one of the most infamous of unforgivable sins of `a11y`. + +.callout.is-important + header Leave the focus outline intact! + :marked + **DO NOT** under any circumstances remove the focus outline for interactive elements. **NEVER** completely + remove this with the style commands `outline:0` or `outline:none`, unless you intend to implement your own. + You will instantly make your site unusable for any sighted user who uses the keyboard or related assistive + technologies. + +:marked + If you really hate the default implementation, please **DO** replace this with another style that shows up when + the interactive element receives focus. + + You could do something like this: + +figure.image-display + img(src="/resources/images/cookbooks/a11y/custom-focus-outline.png" alt="Standard browser focus outline box") + +:marked + We accomplish this with the following style by taking a cue from `Twitter Bootstrap`: + ++makeExample('cb-a11y/ts/a11y.css', 'cb-a11y-managing-focus-custom-outline') + +:marked + Here we use the forbidden `outline:0`, **BUT** we then immediately give it another visual focus style. + +:marked + ### Focus flow + + In Angular 2 we have unequaled power to create easily reusable components. Let us think for a moment + about the pages we put together with these components. + + If you tried out any `keyboard navigation` in the previous section, you would have noticed that the `keyboard focus` simply + moves from one element to the next on the page. Our page layouts should support this to create a natural flow. + + How much would you enjoy it if anyone forced you to scroll up and down on a page to find the next element you want to interact + with? Not at all much? Well, we should not force this on any user. We should design a logical flow of focus throughout every page + in our application. + +.l-sub-section + :marked + Unless modified through script, the `normal flow of focus` will jump one focusable element up or down in the order that they + appear in the `HTML DOM Tree`, regardless of visual page position. By ensuring that your `HTML` has a logical + structure, you make sure that all users can navigate your pages correctly. Where you place the elements + with `CSS` does not affect this order. We call this the `Separation of Content and Presentation`. + +:marked + We saw in the labeling section that we get a lot of standard `a11y` functionality out of the box when we use + `native form controls`, and here it is no different. **DO NOT** change the focus order with script unless + it is for a very specific functional reason you cannot solve with the default flow, like focusing + on an error message the user needs to see. + + Let's have a look at a basic example of separating content from presentation. We have a basic layout based on a list + of countries, asking for two pieces of information per country. It looks like this: + +figure.image-display + img(src="/resources/images/cookbooks/a11y/focus-flow-clean.png" alt="Collection of inputs based on country list separated into columns per information type") + +.l-sub-section + :marked + Note how we repeated the country name in both related `input labels`. Had we instead chosen for `How many months did you work + there`, we would have made yet another common `a11y` mistake. **DO NOT** rely on visual context alone + when labeling `HTML elements`. A person with a visual disability cannot see this context so you need to tell them, + through the screen reader, what the current element relates to. + +:marked + If we create this layout in the `HTML DOM Tree`, one column below the other, we end up with the following focus flow: + +figure.image-display + img(src="/resources/images/cookbooks/a11y/focus-flow-bad.png" alt="Incorrect focus flow grouping taborder into columns") + +:marked + The example's simplicity and the choice of labeling make this usable, but the flow is illogical. Generally, + the user would want to think about one country at a time. This flow could force a user to + think about each country twice. + + A far superior focus flow is: + +figure.image-display + img(src="/resources/images/cookbooks/a11y/focus-flow-good.png" alt="Correctly flowing focus by country") + +:marked + We do this by managing the focus flow through the `content` with `HTML` alone and changing the visual `presentation` with + `CSS`. Just like that we are able to create the required flow with absolutely no scripting! + + Here is the `HTML`: + ++makeExample('cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.html', 'cb-a11y-managing-focus-flow') + +:marked + ### Skiplinks + + We now know about `keyboard focus` and how it flows on the page. Let's zoom out a bit and look at the complete page. + For a sighted person who navigates the web using a mouse, it is very easy to skip sections of web pages. + This could be because they are returning to a website they know very well, or because they can immediately see and interact + with a specific section of interest. + + Now imagine being forced to click on **EVERY** menu and **EVERY** link and **EVERY** field and... You get the picture. + That is as much fun as watching the grass grow! Now what if we tell you that a person navigating the web + with his keyboard alone often gets forced into exactly this situation? + + If we force these users to repeatedly navigate through entire pages to find one area they want to interact with, it + adds a serious barrier. + + We can give quick links to subsections of our pages that remain completely hidden until focused through + `keyboard navigation`. These are called `skiplinks` and they (could) look like this: + +figure.image-display + img(src="/resources/images/cookbooks/a11y/skiplinks.png" alt="Correctly flowing focus by country") + +:marked + You can, of course, give any styling you like, but here is how we made ours: + ++makeExample('cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.html','cb-a11y-managing-focus-skiplinks-links') + +:marked + These links point to internal `id's` and we build them with a function leveraging the `router`. *Please refer to the + section on `routing` in the documentation for a more detailed explanation.* + + They are then rendered out as `internal links`: + +code-example(language="html" escape="html" format="linenums"). + Go directly to focus flow + +:marked + If the target of this link is not an interactive element, we can make that element focusable by adding + `tabindex="-1"`. If we do not, it will not work in all browsers! + +.l-sub-section + :marked + When we use `tabindex="-1"` we are allowing an element to + accept the current `keyboard focus`. However, this tells the browser to keep the element out of the normal + `keyboard navigation` flow. It can only accept focus via internal links, clicks or script. + +:marked + The `HTML` of the target now looks like this: + ++makeExample('cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.html','cb-a11y-managing-focus-skiplinks-destination') + +:marked + Finally we need some styling magic to make it all work by only showing focused links: + ++makeExample('cb-a11y/ts/a11y.css', 'cb-a11y-managing-focus-skiplinks-style') + +:marked + Quite easy, isn't it? Yet it is such an extremely powerful feature for a large group of users out there. + + Up to this point of this section, we have made very little use of Angular 2. Yes folks, + this is standard `HTML` functionality and we need to know about if we are to make accessible Angular 2 applications! + + Now that we know more about how browsers handle focus and what we can do to leverage it, it is time to look at what + we can do inside our custom Angular 2 components to keep them accessible. + +:marked + ### Interactive components should accept focus + + Unlike native interactive `HTML` elements, `custom interactive components` created with Angular 2 need our help + to accept focus within the normal focus flow of the page during `keyboard navigation`. + + This means that a native `button` element will accept focus, but a `button control` built as a + `custom element` from non interactive `HTML` elements won't. Not unless we do something about it. + + So let's go a bit crazy and do exactly that, but first, another word of warning. + +.l-sub-section + :marked + Again we need to stress that re-creating any `native HTML element` out of `custom elements` is **NOT** recommended, nor + do we make any promises about the production readiness of our example. Our focus remains on `a11y` and how + we have the tools to make the most stubbornly inaccessible component accessible. + +:marked + *So what doth a great button make?* + + A `button` should tell everyone that it is a button. And that includes people (whether they can or can't see), + browsers and assistive technologies like screen readers. It should look like a button, act like a buttons, and + click like a button. + + A `button` should accept focus, react to the mouse `click` event and react to the keyboard `enter` and `space` events. + *There is a set of rules governing which keyboard events should ideally be implemented per widget and you can read + about these [Common Widget Design Patterns](https://www.w3.org/WAI/intro/accessibility.php) at the `W3C`*. + + This is our mission, and we choose to accept it: + ++makeTabs('cb-a11y/ts/app/shared/a11y-custom-button.component.ts,cb-a11y/ts/app/shared/a11y-custom-button.component.html', +null, 'a11y-custom-button.component.ts,a11y-custom-button.component.html') + +:marked + We manipulate the `Host` element of our component and *Hey Presto*, it can now be used like the standard `button` element: + ++makeExample('cb-a11y/ts/app/managing-focus/a11y-managing-focus.component.html','cb-a11y-custom-button-usage') + +:marked + Looking at the generated `HTML` we see: + +code-example(language="html" escape="html" format="linenums"). + + Do something... + + +:marked + **Important**: Note the `role` and `tabindex`. + + The `ARIA role` of this element is `button`. It tells any assistive technologies that this element is + a button, regardless of the original design of the `HTML` element. More information on this later. + + Setting the `tabindex` to `0` inserts the element in the default flow of`keyboard navigation` focus. This means that our + element also becomes accessible via the keyboard! + +.l-sub-section + :marked + **DO NOT** use a `tabindex` value of `1` or greater as this will change the default keyboard navigation. + +:marked + ### Internal focus management for components + +.callout.is-important + header There be monsters here! + :marked + Let's kick of this topic with a warning. If our code changes focus in a way that the user does not expect, + it can **VERY EASILY** + break `a11y` in our application. We should set the focus programmatically very sparingly and only where + the default focus flow does not work. For example when opening a `modal window` we should make sure that we + set and contain the focus + in it, or when focusing the attention on an incorrect input so that the user can easily correct it. **DO NOT** use this + to navigate on the user's behalf. Everyone uses web pages in a personal way and enforcing **our way** on + our users can make our pages unusable and confusing. + +:marked + Usually, setting focus programmatically is only required in complex widgets. Often it is possible to solve + the problems in far less code using standard `HTML` or `ARIA` function. We would still like to show how you can + do it. + + As this is an `a11y` cookbook and not `Dial-A-Widget`, we are going to seriously trim down on functionality and + get down to the nuts and bolts of what we need to do. The concepts demonstrated in this code can easily be applied + in any component, regardless of the complexity. + + We have created a `button` that shows an `alert`, then sets focus on the `alert` and later allow the + user to close the error message with a `close button`. Extremely useful, we know... + ++makeTabs('cb-a11y/ts/app/managing-focus/a11y-error-demo.component.html,cb-a11y/ts/app/managing-focus/a11y-error-demo.component.ts', +null, 'a11y-error-demo.component.html,a11y-error-demo.component.ts') + +:marked + We are setting focus on an `alert` that starts out hidden. As `hidden` and `disabled` elements cannot accept focus, + we first need this element to become visible again. To give the browser time to apply this change we set our focus using + a `timeout` function. + + Also note how we are using the `local template variable` to easily set focus right inside our template code! + + We also use `ARIA` to apply the role of `alert` and manage the `aria-hidden` property. Yes, we even have something + in `ARIA` we can use to tell screen readers when an element is hidden or not. Pretty neat, hey? + +.l-sub-section + :marked + When you have to adjust the focus programatically, make sure that you test the result with a screen reader! The results + are often not what you expect. + +:marked + ### Section summary + + In this section we saw how important `keyboard focus` is to make sure that many of our users are able to + navigate our web pages. + + We looked at displaying the current `keyboard focus` and how to build our component templates with a + natural flow of focus in mind. + + Finally we looked at what we can do to make sure that our own `components` can accept `focus` and how to + programmatically manage `focus` in our components. + + Keep reading to further explore `a11y` in Angular 2 or [go back to the table of contents](#toc) + +.l-main-section + +:marked + ## Roles for custom component widgets + + Angular 2, and its predecessor, opens up web development to a large group of developers, including those who + are developing web interfaces for the first time. In fact, this `Web Development Platform` makes it so easy to + create web applications and manipulate the `DOM` that it is often easy to forget that `Web Development` should be founded on `HTML`. + + `HTML` is the only way to tell + the browsers what you would like them to show on-screen. Even when we manipulate the `DOM` with `script`, we are simply + manipulating a logical structure created from our `HTML`. + + Yes, we know that many of you already know this, but it is very important to realise that without an understanding + of `HTML`, and how browsers go about interpreting our `markup`, it is very hard to get a good understanding + of `a11y`. + + This is not as scary as it sounds, though. In the earlier sections we have already built up a solid understanding + of some key `HTML` concepts that support `a11y` and now we are about to give you the next weapon in your + `a11y` arsenal! + +:marked + ### Roles in HTML + +.l-sub-section + :marked + Throughout this cookbook, we have often looked at the benefits of using native `HTML` elements to + create the functionality we seek. The constant repetition is intentional and we will look at it again + as this remains such an important concept in building accessible web applications. + +:marked + Browsers are built to interpret our `HTML` according to the + [HTML 5 specification](https://www.w3.org/TR/html5/). Within this document we find each `HTML` element's definition. + +.l-sub-section + :marked + We assume the use of `HTML 5`. However, the `ARIA` concepts also work with `HTML 4`. + +:marked + We could say that each `HTML` element has a `Type` and that the browsers react based on this specific type + when encountering a specific element. + + This is one way of looking at `Roles` in `HTML`. Each element plays a specific `role` on the page based on the specification. + +.l-sub-section + :marked + Each browser knows what to do when it encounters an `input` or a `button` and in the wonderful world of `a11y` the + browsers pass this information through to screen readers and other assistive technologies through another + information tree called the [Accessibility Tree](https://www.w3.org/WAI/PF/aria-implementation/#intro_treetypes). + +:marked + With Angular 2 we can extend or change existing elements' functions, or we can create new `Custom Elements`. + + We can make a `div` act like an `input` or a `button`, or we can create a reusable widget + called `my-seriously-cool-widget`, which is in itself a collection of known `HTML` elements or other custom controls. + + However, browsers still expect the known elements to act according to the specification, + whilst they have no idea what our new custom elements do. This means that the `Accessibility Tree` will not be correct, + and this sends users who depend on assistive technologies on a wild goose chase. + + Fear not! We have all the tools we need at out fingertips to tell the browsers, and indirectly the screen readers, + what type of element we are creating! + +:marked + ### ARIA Roles to the rescue + + Within the realms of `ARIA`, we can apply roles to elements that either tell the browser to override the + current `role` of a known element, or give a familiar role to a totally new custom element. + + In this way we can give all the information that assistive technologies need, regardless of the `HTML` structure! + +.l-sub-section + :marked + It is important to note that applying an `ARIA Role` overrides the implicit role of native elements. Therefore, unless + you are changing the `role`, do not apply an `ARIA Role` to an element if the implicit role is correct. + + +:marked + ### How to apply an ARIA Role in Angular 2 + + We give an `ARIA Role` to an element by setting the value of the `role` attribute. When we write this directly in our `HTML` + it is as simple as: + +code-example(language="html" escape="html" format="linenums"). +

I am an alert.

+ +:marked + That was easy! After all the discussion at the start of the chapter you would be forgiven for expecting a very complex + implementation. This is really all there is to it. + + To see how we can use this in an Angular 2 template, we turn to an old friend from our `labeling` section: + ++makeExample('cb-a11y/ts/app/shared/a11y-custom-control.component.html') + +:marked + We will often need to apply a role directly to the custom elements we create with our components. So + how do we do that? + + In Angular 2 we refer to this new custom element as the `Host Element` of the component, because this is the element + in our `HTML` that hosts our component's implementation. + + Angular 2 gives us everything we need to manipulate our `Host Element` through the `Host Property` + of our component definition. Again a familiar example makes a repeat appearance: + ++makeExample('cb-a11y/ts/app/shared/a11y-custom-button.component.ts') + +:marked + You can see that we apply the `role` of `button` to the host element. We can even check and see that this is rendered into the resultant + `DOM` element: + +code-example(language="html" escape="html" format="linenums"). + + Do something... + + +:marked + Now our browser, and any attached assistive technologies, suddenly know that `a11y-custom-button` is a `button`! + + This is really super easy, but there is one more missing ingredient. We need to know which roles we can use, of course. + + Let's look at the two main sections of `roles` we can use to make our applications accessible. + +.l-sub-section + :marked + There are more roles available. You can read the full documentation at the `W3C`, but these two sections of roles + are what we really need when looking at the `structure` and `roles` of the applications and widgets we create. + +:marked + ### ARIA Roles: The landmark roles + + The first section of roles we look at is `Landmark Roles`. These refer to `navigational landmarks` or the regions of the + page the user may want quick access to. Screen readers are also aware of these regions and this helps to give the user + a clearer *picture* of the page layout. + + In a way these roles are the most difficult to master as they refer to the overall page structure and require us to think about + the layout of components on a page to create the `landmarks`. Therefore, these roles should usually be + used inside our `Smart Components` as they need some knowledge of the application structure and general layout. + + Visit the `W3C` to read more about the following [Landmark Roles](https://www.w3.org/TR/wai-aria/roles#landmark_roles): + + - application + - banner + - complementary + - contentinfo + - form + - main + - navigation + - search + +.callout.is-important + header Avoid role="application" + :marked + The `application` role exists to tell assistive technologies that it is about to enter a heavily scripted web application + and switch into `application mode`. However, if our `HTML` follows the rules we have discussed so far, this role does more + harm than good. Use this sparingly and avoid altogether unless you know when to use it and why you are using it for + the specific application. + +:marked + `HTML 5` provides native `semantic elements` that implicitly carry many of these roles and we recommend that you use these + when possible. + + Let's have a look at a high level `HTML` layout for a page using the `HTML 5 Semantic Elements`: + +code-example(language="html" escape="html" format="linenums"). +
+ +
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +.l-sub-section + :marked + *"But you just told us not to apply the `role` attribute to elements when they already imply the `role`! What gives?"* + This is true, but for these landmark elements we should also give the roles as some browsers do not implement + the native `semantic elements` properly. Don't worry you still get enough benefit from using them. + +.l-sub-section + :marked + There is another piece of technology that reads our web pages almost like a screen reader. And that is the `search engine`. + Yes, using a proper + document structure with `semantic elements` also helps search engine crawlers to read and index our websites more easily. + Talk about winning on three fronts! `Readability`, `a11y` and `Search Engine Optimization`. + +:marked + When it is totally impossible to use these elements, like when you need to support `HTML 4`, we can still + create this structure in our `HTML` using `ARIA Roles`: + +code-example(language="html" escape="html" format="linenums"). +
+ +
+
+ +
+
+ +
+ +
+
+ +
+
+
+ +
+
+ +
+ +.l-sub-section + :marked + In the previous section we looked at `skiplinks`. The `landmarks` are great skiplink destinations. Yet another + benefit of using a proper `HTML` layout to structure your page. It also becomes clearer for + you as well. + +:marked + ### ARIA Roles: The widget roles + + The other section of `ARIA Roles` we will briefly look at is `Widget Roles`. These roles are of particular + interest to us as Angular 2 developers, and because we often build highly functional widgets, it is important + to give them the appropriate role, where possible. + + Visit the `W3C` to read more about these [Widget Roles](https://www.w3.org/TR/wai-aria/roles#widget_roles): + + The following roles are for standalone widgets: + - alert + - alertdialog + - button + - checkbox + - dialog + - gridcell + - link + - log + - marquee + - menuitem + - menuitemcheckbox + - menuitemradio + - option + - progressbar + - radio + - scrollbar + - slider + - spinbutton + - status + - tab + - tabpanel + - textbox + - timer + - tooltip + - treeitem + + There is also a set of roles for `composite widgets`. Those are widgets built up from other widgets. + - combobox + - grid + - listbox + - menu + - menubar + - radiogroup + - tablist + - tree + - treegrid + + Wow, we have a role for every base type of widget! We have shown how easy it is to apply these roles to our templates + and components, so again we saw that writing accessible applications really does not take much extra effort once + the secrets of `a11y` have been demystified. + +.l-sub-section + :marked + The names of these widget roles are self-explanatory, so we will not dive into a further discussion. Visit the + `W3C` documentation, if in doubt. + +:marked + ### Section summary + + In this section we looked at how we tell the browser what type of `custom widget component` we are making. We also + saw how we can override the role of a native `HTML` element. + + We saw that Angular 2 makes applying a `role` to our `custom elements` easy by using + the `Host Element`. + + Finally, we had a look at the most interesting `ARIA Roles` for us as Angular 2 developers. + + [Go back to the table of contents](#toc) + diff --git a/public/resources/images/cookbooks/a11y/custom-focus-outline.png b/public/resources/images/cookbooks/a11y/custom-focus-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..664d2babbed6eddd6746e06628b37cd34e8f9f73 GIT binary patch literal 3494 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 D*bdbo literal 0 HcmV?d00001 diff --git a/public/resources/images/cookbooks/a11y/focus-flow-clean.png b/public/resources/images/cookbooks/a11y/focus-flow-clean.png new file mode 100644 index 0000000000000000000000000000000000000000..c4f702ff0c03d9a8c122f11872f24211afe794ab GIT binary patch literal 15031 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 literal 0 HcmV?d00001 diff --git a/public/resources/images/cookbooks/a11y/focus-flow-good.png b/public/resources/images/cookbooks/a11y/focus-flow-good.png new file mode 100644 index 0000000000000000000000000000000000000000..4bfa2ccbd0b45507f954d4686fe001533a6aea67 GIT binary patch literal 30208 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 literal 0 HcmV?d00001 diff --git a/public/resources/images/cookbooks/a11y/invisible-label-input-labeled.png b/public/resources/images/cookbooks/a11y/invisible-label-input-labeled.png new file mode 100644 index 0000000000000000000000000000000000000000..e41e4ca9149402e9c7c894bfca6cbfa8457fede4 GIT binary patch literal 97119 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

H6~DY@N=@f$KX%w)5|NpXd`C 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 W&AjL}IbY=Fz7~~!kt3}0{(k`n(jZs> literal 0 HcmV?d00001 diff --git a/public/resources/images/cookbooks/a11y/invisible-label-input-not-labeled.png b/public/resources/images/cookbooks/a11y/invisible-label-input-not-labeled.png new file mode 100644 index 0000000000000000000000000000000000000000..601c7c14a97cabef5b56cacd8c6cbb675f9d949a GIT binary patch literal 90123 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�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�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 literal 0 HcmV?d00001 diff --git a/public/resources/images/cookbooks/a11y/skiplinks.png b/public/resources/images/cookbooks/a11y/skiplinks.png new file mode 100644 index 0000000000000000000000000000000000000000..6b07bd4bdf680ca6274f41c14837c25e870cf679 GIT binary patch literal 5467 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 q9|(BO{-2KW{+$#$0C=ROuZdHC9{gYSM4A%- literal 0 HcmV?d00001 diff --git a/public/resources/images/cookbooks/a11y/standard-focus-outline.png b/public/resources/images/cookbooks/a11y/standard-focus-outline.png new file mode 100644 index 0000000000000000000000000000000000000000..ee72ad0f468f3abe78cf366701fb4a0a29ef04d0 GIT binary patch literal 2288 zcmchZdpy(oAIHBsr#i^|Tq~zWHJ3va%wZjyrO32P35$SAW3DEiu33iGfgU-Rv0RSUQdc$}3PAwU3 z>lq0EppNe$(HU0lzjJv2Ywdw`2@AyHeIo*Za9>m?RxdOFt9DxNq~4j3QwazF_{kS$ zb<35NrqsQ=iv{-A)t+=1|D55CdKg=uYE>m~_~WT2pC=Z6 z@O=4peif1d(ow{(6mBw1hnw1Y0s-tqo>;aQtUpVYbeW41Pnq-=#|1ZDI81xt*B9KC z>;P&GQiEoEk}O*eUPRPYwXkF7*9pxcCQGMN!@b+sDJ_x2fsZ!OX4^AgE!3%8*ver%yiHUqDva}Z(c~+3 zK{h3f=@qpq_Y_apz`vX33z8mxr7G>w^pf%DZ*1?^Q?%B9SzT2QwP#ct5r6Tk<^k?~bED3+Be*1B@4 z_SXVX{>r*D&;P-Gt&X}^XBM#oBr{Os3HSV49am7V{aP8c9wNe4tXcF@ag7*%8{--b!^JjS!}*^^N?& zo7YtpWSUF|?t@%g)gjk{DJ{$G@!s;E_-%E?SaDjia~)T;Vrd26Mt4kf7fOVP*0KB z0!0(9p9y9$m5YCZx*~x$$%Cu(t7sWB1kY*>4Zn zvghII>CL||A54izz2J6EnxJ(gTy_5*B%YppYB~ljJv9D4h`emB2kwcf)JMO}xt6oX zN3$z5{N)=}4g~7!Cb>}V z@ktO%Ck(?^@mf1R`qmh(tQ2^0)m(xY+i<2dVh!NTfs2>mps`^$yZq(U6`JiRxM za%3as%@>`U(jOsw;#x!VnnBZg0NQhJ-Zt`T5WRVWa4F%E5l=mAg*#W0wcg9}#-%Lv z;_OR_3NY(62{(opdOhKi56nbP#ddIBvm4~_4R-;c52pk3t zx5?9a`=?K5=~8_2ovSiN1UL4!a=rFG1oNbv-xlX)LKHK8^4^d~!HXyq&F`nVDH?k+`+8^B(~K zGx*;Eaak!r+|AQq#1BHesA7b6VQ=8{^t9@K6(@Y2-ZOigAwRqFaEK#Vp6JZl-UZYj zhL9mevshk8Zg?v=Q(YHM27r*gU6u62=w{T*F5Pm9EO2v1ZP@Ci1aR~_{`h-=m6XJ< z|1J{G@ru>};3J3x$3F=(vSYf Date: Thu, 21 Apr 2016 13:22:19 -0700 Subject: [PATCH 2/2] docs(a11y): copyedits from Naomi --- public/docs/dart/latest/cookbook/_data.json | 2 +- public/docs/ts/latest/cookbook/_data.json | 2 +- public/docs/ts/latest/cookbook/a11y.jade | 757 ++++++-------------- public/docs/ts/latest/glossary.jade | 7 + 4 files changed, 248 insertions(+), 520 deletions(-) diff --git a/public/docs/dart/latest/cookbook/_data.json b/public/docs/dart/latest/cookbook/_data.json index 3604417c69..bd5fd9d990 100644 --- a/public/docs/dart/latest/cookbook/_data.json +++ b/public/docs/dart/latest/cookbook/_data.json @@ -13,7 +13,7 @@ }, "a11y": { - "title": "Accessibility and ARIA reference", + "title": "Accessibility and ARIA Reference", "navTitle": "Accessibility and ARIA", "intro": "Learn how to make your Angular 2 sites accessible for everyone" }, diff --git a/public/docs/ts/latest/cookbook/_data.json b/public/docs/ts/latest/cookbook/_data.json index d2a28725fb..41b69fc89c 100644 --- a/public/docs/ts/latest/cookbook/_data.json +++ b/public/docs/ts/latest/cookbook/_data.json @@ -12,7 +12,7 @@ }, "a11y": { - "title": "Accessibility and ARIA reference", + "title": "Accessibility and ARIA Reference", "navTitle": "Accessibility and ARIA", "intro": "Learn how to make your Angular 2 sites accessible for everyone" }, diff --git a/public/docs/ts/latest/cookbook/a11y.jade b/public/docs/ts/latest/cookbook/a11y.jade index f021ac2381..00d4a690b5 100644 --- a/public/docs/ts/latest/cookbook/a11y.jade +++ b/public/docs/ts/latest/cookbook/a11y.jade @@ -1,107 +1,17 @@ include ../_util-fns :marked - ## Welcome to A11y! + Many people rely on assistive technologies to interact with the web, accessing visual + content via screen readers or braille displays. Some rely exclusively on the keyboard for + input, others adapt to motor impairment via pointing devices other than a mouse. - You are about to learn how to make your Angular 2 application accessible for - as many people as possible. This is no small goal as there is a large group of people out there who find it - very hard or even impossible to use applications that have not been built with these concepts in mind. + This guide will show you how to design Angular components and applications that work well + for all users. - We will show you how to integrate these concepts with little to no extra effort on your part, - provided you take them into account right from the design phase of your application. - - So page through this cookbook, apply these recipes and watch your user base grow. - - If you see the terms `Web Accessibility`, `ARIA` or `a11y` for the first time, you are at the start of an - incredible journey. For those who already enjoy the benefits of `Accessible Web Applications`, we will - show you how to use your knowledge in the new and exciting world of Angular 2. - -.l-main-section -:marked - ## A11y and ARIA in a nutshell - - `Accessibility` is often called `a11y`. This is because we want to say as lot while we write less. As - it has eleven letters, starts with an `a` and ends with a `y`, we shorten this word to `a11y`. We will - refer to `a11y` when we want to say `accessibility`. - -.l-sub-section - :marked - In short, `a11y` refers to creating web applications that everyone can use, making it accessible to everyone. - -:marked - If you are totally new to the term you may want to have a look at what the folks at the `W3C` have to say about - [a11y](https://www.w3.org/WAI/intro/accessibility.php), to put the rest of the article into perspective. - - What is that other word? - -.l-sub-section - :marked - `ARIA`, or `Accessible Rich Internet Applications` refers to a standard set of attributes for adding accessibility - information to `HTML` and `SVG`, which allows us to bring `a11y` concepts into - Internet applications like those we are building with Angular 2. - -:marked - You can also read what they say about [ARIA](https://www.w3.org/WAI/intro/aria) at the `W3C`. We will be right here - waiting for you when you come back. - -.callout.is-important - header ARIA terminology confusion alert! - :marked - In `ARIA` we refer to the `aria-...` attributes as `ARIA States` or `ARIA Properties`. The difference between - the two should become clear as you progress through this cookbook. However, `ARIA Properties` are not - real `HTML` element properties but decorating attributes referring to properties. When we refer to an - `ARIA Property` in the code you will **HAVE** to do - it with an Angular 2 attribute binding. This is simply a terminology clash. - -.l-main-section -:marked - ## Native elements vs. custom components - - Angular 2 gives you a lot of power at your fingertips to create extremely powerful components. Spare a - thought for the native `HTML` elements before you decide to build something new. - - The makers of the browsers have spent a lot of time thinking about the very same issue that brought - you to this page today and have provided you with a lot of functionality out-of-the-box when you make use of - native `HTML` elements. - - We would like to suggest the following rule of thumb when building your applications: - -.l-sub-section - :marked - If there is already a native element inside `HTML` providing the function that you need, use - that element instead of writing your own. - -:marked - So, if you want to accept user text input, use the `input` element instead of constructing something new. - - This way you have to think less about things like focus management, tabindex, etc. and have more time to think about - your code. - - We know this is not always possible, so this guide will also show you what you can do to make your own - components as accessible as possible. - - So without further ado, let us see how easy it is to get big `a11y` wins in our applications! - -.l-main-section -:marked - ## Important note on styling in this chapter - -.callout.is-important - header Angular Pages Do Not Require A Style Library - :marked - Where you see `CSS` classes in the example code, these classes are independent of Angular 2. It does not need - the styles of any external library. We are free to style our apps with any `CSS library`, our own `Custom CSS` or use no - `CSS` at all. - :marked - Classes like `container`, `row`, `col-xs-12`, `checkbox`, `radio`, `form-group`, `form-control`, etc, - come from [Twitter Bootstrap](http://getbootstrap.com/css/). This is a purely cosmetic addition to prettify - the examples so that they are as visually appealing as they are accessible. + **Follow along in this [live example](/resources/live-examples/cb-a11y/ts/plnkr.html)**. - Always remember, just because something looks good, it does not mean that it is accessible. - The good news is, here we strive to do both! - .l-main-section :marked @@ -112,66 +22,35 @@ include ../_util-fns [Managing focus](#managing-focus) [Roles for custom component widgets](#component-roles) - -.l-sub-section - :marked - In the example application code when we need unique element id's we will be generating `GUID's`to make sure that they are - unique. You can use your own method to do this, as long as every id on a page is unique. More on this later... -:marked - **Feel free to follow along in this [live example](/resources/live-examples/cb-a11y/ts/plnkr.html)**. .l-main-section :marked ## Accessible form control labels - Whether we are using native interactive `HTML` elements or creating our own rich custom interactive components, - it is crucial to - label them. Imagine coming face-to-face with a customer detail page on your favourite online store, and - be greeted with a screen filled with unlabeled input fields! - - That would be a nightmare right? The users will leave so fast the bounce rate counter will be able to power a small town, it will be - spinning *THAT* fast. - - We can avoid this from ever happening by simply adding a label for each field. The challenge is that - many users of our website will not be able to see or recognize these labels without help. - - For this reason it is not only important to visually mark any form component, or `form controls` as they are sometimes called, - but to do so in a way that also exposes it to assistive technologies. - - We will discuss some ways to do this. + Native HTML elements already have accessibility support via the browser. Because Angular extends + HTML and allows you to create your own elements, it's important to ensure that anything you add + also works in an accessible way. .l-sub-section :marked - You will see the `ng-content` tag making its appearance in some examples. This is because we are making use - of `Content Projection` to load content into the templates of our components. + If there is already an HTML element that provides the function that you need, use that element + instead of writing your own. You'll get all the built-in browser support for focus management, + tabindex, etc. and have more time to think about your code. If you want to accept user text + input, use the `input` element instead of constructing something new. -.l-sub-section - :marked - It is very important to note that a `label` element can describe one and only form input element. You cannot - label multiple form fields with one label. However, this is something we can do with `ARIA`. +:marked + Because assistive technologies can't rely on the visual appearance of a form component, + any form component, or `form control` must be explicitly labeled to ensure that it's clear what + its purpose is. -.l-sub-section - :marked - The label text position also matters. For `inputs`, `textareas` and `selects`, the label text precedes - the element and for `checkboxes` and `radiobuttons`, the text should follow the element in the flow. + We will discuss some ways to do this. -:marked ### Implicit labeling - Firstly we will look at the easiest, quickest way to give our form controls accessible labels, - and that is with a syntax called `implicit labeling`. - -.l-sub-section - :marked - Use this method to label your `form controls` when possible. As you will see later, the other methods of - labeling rely on generating unique id's for your elements. As we are often building reusable components - in Angular 2, you will need to make sure that every id you create is unique on a page, no matter how often you use - your component! Save yourself the trouble and label implicitly. - -:marked - We label implicitly like this: + The most direct way to assign an accessible label to a form control is by `implicit + labeling` with a `

I am an alert.

- + +.l-sub-section + :marked + Applying an `ARIA Role` overrides the implicit role of native elements. + :marked - That was easy! After all the discussion at the start of the chapter you would be forgiven for expecting a very complex - implementation. This is really all there is to it. - - To see how we can use this in an Angular 2 template, we turn to an old friend from our `labeling` section: + To see how we can use this in an Angular 2 template, we turn to an old friend from our `labeling` section: +makeExample('cb-a11y/ts/app/shared/a11y-custom-control.component.html') :marked - We will often need to apply a role directly to the custom elements we create with our components. So - how do we do that? - In Angular 2 we refer to this new custom element as the `Host Element` of the component, because this is the element - in our `HTML` that hosts our component's implementation. + in our HTML that hosts our component's implementation. - Angular 2 gives us everything we need to manipulate our `Host Element` through the `Host Property` - of our component definition. Again a familiar example makes a repeat appearance: + We can manipulate our `Host Element` through the `Host Property` of our component definition. +makeExample('cb-a11y/ts/app/shared/a11y-custom-button.component.ts') @@ -893,27 +641,19 @@ code-example(language="html" escape="html" format="linenums"). :marked - Now our browser, and any attached assistive technologies, suddenly know that `a11y-custom-button` is a `button`! - - This is really super easy, but there is one more missing ingredient. We need to know which roles we can use, of course. + Now our browser, and any attached assistive technologies, know that `a11y-custom-button` is a `button`! + Let's look at the two main sections of `roles` we can use to make our applications accessible. -.l-sub-section - :marked - There are more roles available. You can read the full documentation at the `W3C`, but these two sections of roles - are what we really need when looking at the `structure` and `roles` of the applications and widgets we create. - :marked - ### ARIA Roles: The landmark roles + ### ARIA landmark roles - The first section of roles we look at is `Landmark Roles`. These refer to `navigational landmarks` or the regions of the + `Landmark Roles` refer to `navigational landmarks` or the regions of the page the user may want quick access to. Screen readers are also aware of these regions and this helps to give the user a clearer *picture* of the page layout. - In a way these roles are the most difficult to master as they refer to the overall page structure and require us to think about - the layout of components on a page to create the `landmarks`. Therefore, these roles should usually be - used inside our `Smart Components` as they need some knowledge of the application structure and general layout. + These roles require some knowledge of the application structure and general layout. Visit the `W3C` to read more about the following [Landmark Roles](https://www.w3.org/TR/wai-aria/roles#landmark_roles): @@ -929,16 +669,16 @@ code-example(language="html" escape="html" format="linenums"). .callout.is-important header Avoid role="application" :marked - The `application` role exists to tell assistive technologies that it is about to enter a heavily scripted web application - and switch into `application mode`. However, if our `HTML` follows the rules we have discussed so far, this role does more - harm than good. Use this sparingly and avoid altogether unless you know when to use it and why you are using it for - the specific application. + The `application` role is often misused, and rarely necessary in an Angular app. It directs + assistive technologies to change to a dual navigation/input mode, and captures keystrokes to do + so. Unless you're building an especially complex interaction flow (e.g. a rich text document + editor), and you're familiar with this role and its pitfalls, you should avoid its use. :marked `HTML 5` provides native `semantic elements` that implicitly carry many of these roles and we recommend that you use these when possible. - Let's have a look at a high level `HTML` layout for a page using the `HTML 5 Semantic Elements`: + Let's have a look at a high level HTML layout for a page using the `HTML 5 Semantic Elements`: code-example(language="html" escape="html" format="linenums").
@@ -963,22 +703,12 @@ code-example(language="html" escape="html" format="linenums"). -.l-sub-section - :marked - *"But you just told us not to apply the `role` attribute to elements when they already imply the `role`! What gives?"* - This is true, but for these landmark elements we should also give the roles as some browsers do not implement - the native `semantic elements` properly. Don't worry you still get enough benefit from using them. - -.l-sub-section - :marked - There is another piece of technology that reads our web pages almost like a screen reader. And that is the `search engine`. - Yes, using a proper - document structure with `semantic elements` also helps search engine crawlers to read and index our websites more easily. - Talk about winning on three fronts! `Readability`, `a11y` and `Search Engine Optimization`. - :marked - When it is totally impossible to use these elements, like when you need to support `HTML 4`, we can still - create this structure in our `HTML` using `ARIA Roles`: + For landmark elements, we explicitly assign all roles (including native elements where a default + exists) as some browsers do not implement native `semantic elements` correctly. + + When it is totally impossible to use these elements, e.g. when you need to support `HTML 4`, + we can still create this structure in our HTML using `ARIA Roles`: code-example(language="html" escape="html" format="linenums").
@@ -1005,20 +735,15 @@ code-example(language="html" escape="html" format="linenums"). .l-sub-section :marked - In the previous section we looked at `skiplinks`. The `landmarks` are great skiplink destinations. Yet another - benefit of using a proper `HTML` layout to structure your page. It also becomes clearer for - you as well. + In the previous section we looked at `skiplinks`. These `landmarks` are great skiplink + destinations. :marked ### ARIA Roles: The widget roles - The other section of `ARIA Roles` we will briefly look at is `Widget Roles`. These roles are of particular - interest to us as Angular 2 developers, and because we often build highly functional widgets, it is important - to give them the appropriate role, where possible. + The other section of `ARIA Roles` we will briefly look at is `Widget Roles`. - Visit the `W3C` to read more about these [Widget Roles](https://www.w3.org/TR/wai-aria/roles#widget_roles): - - The following roles are for standalone widgets: + The following roles are useful for standalone widgets: - alert - alertdialog - button @@ -1045,7 +770,7 @@ code-example(language="html" escape="html" format="linenums"). - tooltip - treeitem - There is also a set of roles for `composite widgets`. Those are widgets built up from other widgets. + There is also a set of roles for `composite widgets`, i.e. widgets built from other widgets. - combobox - grid - listbox @@ -1055,21 +780,17 @@ code-example(language="html" escape="html" format="linenums"). - tablist - tree - treegrid - - Wow, we have a role for every base type of widget! We have shown how easy it is to apply these roles to our templates - and components, so again we saw that writing accessible applications really does not take much extra effort once - the secrets of `a11y` have been demystified. .l-sub-section :marked - The names of these widget roles are self-explanatory, so we will not dive into a further discussion. Visit the - `W3C` documentation, if in doubt. + The names of these widget roles are self-explanatory. Visit the `W3C` to read more about + [Widget Roles](https://www.w3.org/TR/wai-aria/roles#widget_roles) :marked ### Section summary In this section we looked at how we tell the browser what type of `custom widget component` we are making. We also - saw how we can override the role of a native `HTML` element. + saw how we can override the role of a native HTML element. We saw that Angular 2 makes applying a `role` to our `custom elements` easy by using the `Host Element`. diff --git a/public/docs/ts/latest/glossary.jade b/public/docs/ts/latest/glossary.jade index 4ad9d61e94..964ca39038 100644 --- a/public/docs/ts/latest/glossary.jade +++ b/public/docs/ts/latest/glossary.jade @@ -27,6 +27,13 @@ include _util-fns :marked In practice a synonym for [Decoration](#decorator). // #enddocregion a-1 +.l-sub-section + ## ARIA +.l-sub-section + :marked + `ARIA`, or `Accessible Rich Internet Applications` refers to a standard set of attributes for + adding accessibility information to `HTML` and `SVG`. For more, refer to + [ARIA](https://www.w3.org/WAI/intro/aria) at the `W3C`. // #docregion a-2 :marked ## Attribute Directive