Skip to content

Commit

Permalink
feat: move a11y, bidi, platform, rxjs, and portal to cdk (#5386)
Browse files Browse the repository at this point in the history
* feat: move a11y, bidi, platform, and portal to cdk

* lint

* Fix weird rxjs operator typing issue

* Workaround for ngc issue

* debug ie11

* debug ios

* Add directionaltiy reexport
  • Loading branch information
jelbourn authored and tinayuangao committed Jun 30, 2017
1 parent 2ff0433 commit fde35e4
Show file tree
Hide file tree
Showing 59 changed files with 2,312 additions and 1,798 deletions.
30 changes: 30 additions & 0 deletions src/cdk/a11y/README.md
@@ -0,0 +1,30 @@
# LiveAnnouncer
`LiveAnnouncer` is a service, which announces messages to several screenreaders.

### Methods

| Name | Description |
| --- | --- |
| `announce(message, politeness)` | This announces a text message to the supported screenreaders. <br><br>The politeness parameter sets the `aria-live` attribute on the announcer element |

### Examples
The service can be injected in a component.
```ts
@Component({
selector: 'my-component'
providers: [LiveAnnouncer]
})
export class MyComponent {

constructor(live: LiveAnnouncer) {
live.announce("Hey Google");
}

}
```

### Supported Screenreaders
- JAWS (Windows)
- NVDA (Windows)
- VoiceOver (OSX and iOS)
- TalkBack (Android)
41 changes: 41 additions & 0 deletions src/cdk/a11y/activedescendant-key-manager.ts
@@ -0,0 +1,41 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/

import {QueryList} from '@angular/core';
import {ListKeyManager, CanDisable} from './list-key-manager';

/**
* This is the interface for highlightable items (used by the ActiveDescendantKeyManager).
* Each item must know how to style itself as active or inactive and whether or not it is
* currently disabled.
*/
export interface Highlightable extends CanDisable {
setActiveStyles(): void;
setInactiveStyles(): void;
}

export class ActiveDescendantKeyManager extends ListKeyManager<Highlightable> {

/**
* This method sets the active item to the item at the specified index.
* It also adds active styles to the newly active item and removes active
* styles from the previously active item.
*/
setActiveItem(index: number): void {
Promise.resolve().then(() => {
if (this.activeItem) {
this.activeItem.setInactiveStyles();
}
super.setActiveItem(index);
if (this.activeItem) {
this.activeItem.setActiveStyles();
}
});
}

}
18 changes: 18 additions & 0 deletions src/cdk/a11y/fake-mousedown.ts
@@ -0,0 +1,18 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/

/**
* Screenreaders will often fire fake mousedown events when a focusable element
* is activated using the keyboard. We can typically distinguish between these faked
* mousedown events and real mousedown events using the "buttons" property. While
* real mousedowns will indicate the mouse button that was pressed (e.g. "1" for
* the left mouse button), faked mousedowns will usually set the property value to 0.
*/
export function isFakeMousedownFromScreenReader(event: MouseEvent): boolean {
return event.buttons === 0;
}
39 changes: 39 additions & 0 deletions src/cdk/a11y/focus-key-manager.ts
@@ -0,0 +1,39 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/

import {QueryList} from '@angular/core';
import {ListKeyManager, CanDisable} from './list-key-manager';

/**
* This is the interface for focusable items (used by the FocusKeyManager).
* Each item must know how to focus itself and whether or not it is currently disabled.
*/
export interface Focusable extends CanDisable {
focus(): void;
}


export class FocusKeyManager extends ListKeyManager<Focusable> {

constructor(items: QueryList<Focusable>) {
super(items);
}

/**
* This method sets the active item to the item at the specified index.
* It also adds focuses the newly active item.
*/
setActiveItem(index: number): void {
super.setActiveItem(index);

if (this.activeItem) {
this.activeItem.focus();
}
}

}
File renamed without changes.

0 comments on commit fde35e4

Please sign in to comment.