diff --git a/src/demo-app/a11y/a11y-module.ts b/src/demo-app/a11y/a11y-module.ts index 9d4bc213f48..610b80c10c2 100644 --- a/src/demo-app/a11y/a11y-module.ts +++ b/src/demo-app/a11y/a11y-module.ts @@ -4,7 +4,7 @@ import {FormsModule, ReactiveFormsModule} from '@angular/forms'; import {RouterModule} from '@angular/router'; import {ACCESSIBILITY_DEMO_ROUTES} from './routes'; import {DemoMaterialModule} from '../demo-material-module'; -import {AccessibilityHome, AccessibilityDemo} from './a11y'; +import {AccessibilityDemo, AccessibilityHome} from './a11y'; import {ButtonAccessibilityDemo} from './button/button-a11y'; import {ButtonToggleAccessibilityDemo} from './button-toggle/button-toggle-a11y'; import {CheckboxAccessibilityDemo} from './checkbox/checkbox-a11y'; @@ -12,6 +12,7 @@ import {ChipsAccessibilityDemo} from './chips/chips-a11y'; import {GridListAccessibilityDemo} from './grid-list/grid-list-a11y'; import {RadioAccessibilityDemo} from './radio/radio-a11y'; import {DatepickerAccessibilityDemo} from './datepicker/datepicker-a11y'; +import {InputAccessibilityDemo} from './input/input-a11y'; @NgModule({ imports: [ @@ -40,6 +41,7 @@ export class AccessibilityRoutingModule {} ChipsAccessibilityDemo, DatepickerAccessibilityDemo, GridListAccessibilityDemo, + InputAccessibilityDemo, RadioAccessibilityDemo, ] }) diff --git a/src/demo-app/a11y/a11y.ts b/src/demo-app/a11y/a11y.ts index 85cbd8805b8..ffa30d862af 100644 --- a/src/demo-app/a11y/a11y.ts +++ b/src/demo-app/a11y/a11y.ts @@ -23,6 +23,7 @@ export class AccessibilityDemo { {name: 'Chips', route: 'chips'}, {name: 'Datepicker', route: 'datepicker'}, {name: 'Grid list', route: 'grid-list'}, + {name: 'Input', route: 'input'}, {name: 'Radio buttons', route: 'radio'}, ]; } diff --git a/src/demo-app/a11y/input/input-a11y.html b/src/demo-app/a11y/input/input-a11y.html new file mode 100644 index 00000000000..41fd8320a7d --- /dev/null +++ b/src/demo-app/a11y/input/input-a11y.html @@ -0,0 +1,57 @@ +
+

Basic input box (e.g. name field)

+ + + + + + +
+ +
+

Input with hint (e.g. password field)

+ + + + Hint: favorite color + You must enter your password. + +
+ +
+

Input with error message (e.g. email field)

+ + + You must enter your email. + Not a valid email address. + +
+ +
+

Input with prefix & suffix (e.g. currency converter)

+ + + $ + + = + + + ‎¥‎ + + (as of 7/31/2017) +
+ +
+

Textarea input (e.g. comment box)

+ + + Leave us a comment! + {{commentCount}}/{{commentMax}} + +
diff --git a/src/demo-app/a11y/input/input-a11y.ts b/src/demo-app/a11y/input/input-a11y.ts new file mode 100644 index 00000000000..c1782d33bd9 --- /dev/null +++ b/src/demo-app/a11y/input/input-a11y.ts @@ -0,0 +1,30 @@ +import {Component} from '@angular/core'; + +const USD_TO_JPY = 110.29; + +@Component({ + moduleId: module.id, + selector: 'input-a11y', + templateUrl: 'input-a11y.html', +}) +export class InputAccessibilityDemo { + firstName: string; + lastName: string; + password: string; + showPassword = false; + email: string; + usd: number; + comment: string; + commentMax = 200; + + get passwordType() { return this.showPassword ? 'text' : 'password'; } + + get passwordToggleLabel() { return this.showPassword ? 'Hide password' : 'Reveal password'; } + + get passwordToggleIcon() { return this.showPassword ? 'visibility_off' : 'visibility'; } + + get jpy() { return this.usd ? this.usd * USD_TO_JPY : this.usd; } + set jpy(value) { this.usd = value ? value / USD_TO_JPY : value; } + + get commentCount() { return this.comment ? this.comment.length : 0; } +} diff --git a/src/demo-app/a11y/routes.ts b/src/demo-app/a11y/routes.ts index 862425d3927..70477338e79 100644 --- a/src/demo-app/a11y/routes.ts +++ b/src/demo-app/a11y/routes.ts @@ -7,6 +7,7 @@ import {GridListAccessibilityDemo} from './grid-list/grid-list-a11y'; import {RadioAccessibilityDemo} from './radio/radio-a11y'; import {AccessibilityHome} from './a11y'; import {DatepickerAccessibilityDemo} from './datepicker/datepicker-a11y'; +import {InputAccessibilityDemo} from './input/input-a11y'; export const ACCESSIBILITY_DEMO_ROUTES: Routes = [ {path: '', component: AccessibilityHome}, @@ -16,5 +17,6 @@ export const ACCESSIBILITY_DEMO_ROUTES: Routes = [ {path: 'chips', component: ChipsAccessibilityDemo}, {path: 'datepicker', component: DatepickerAccessibilityDemo}, {path: 'grid-list', component: GridListAccessibilityDemo}, + {path: 'input', component: InputAccessibilityDemo}, {path: 'radio', component: RadioAccessibilityDemo}, ];