Currently when we announce a message, we leave the element in place, however this can cause the element to be read out again when the user continues navigating using the arrow keys. These changes add an API where the consumer can clear the element manually or after a duration. Doing this automatically is tricky, because we'd have to make a lot of assumptions that might not be correct in all cases or may break some screen readers. These are some alternatives that were considered: * Removing the element from the a11y tree via `aria-hidden` after the screen reader has started announcing it. This works, but because of the politeness, we can't know exactly when the screen reader will announce the text, which could end up hiding it too early. * Clearing the element on the next `keydown`/`click`/`focus`. This could be flaky and might end up interrupting the screen reader when it doesn't have to (e.g. clicking on a non-focusable element). * Moving the element to a different place in the DOM (e.g. prepending it to the `body` instead of appending). This works, but we'd have to keep moving the element based on the focus direction. Fixes #11991.
Material Design for Angular
This is the home for the Angular team's Material Design components built for and with Angular.
Quick links
Documentation, demos, and guides | Google group | Contributing | Plunker Template | StackBlitz Template
Getting started
See our Getting Started Guide if you're building your first project with Angular Material.
Check out our directory of design documents for more insight into our process.
If you'd like to contribute, you must follow our contributing guidelines.
You can look through the issues (which should be up-to-date on who is working on which features
and which pieces are blocked) and make a comment.
Also see our help wanted
label.
High level stuff planned for Q4 2018 (October - Dec):
- Improve our own build and automation tooling
- Fix bugs and reduce some technical debt inside Google
- Working on long-term plans on how to collaborate with the MDC Web team
- Designs for advanced table improvements (column resize, selection directives, inline-edit)
Available features
| Feature | Notes | Docs |
|---|---|---|
| autocomplete | Docs | |
| badge | Docs | |
| bottom-sheet | Docs | |
| button | Docs | |
| button-toggle | Docs | |
| cards | Docs | |
| checkbox | Docs | |
| chips | Docs | |
| data-table | Docs | |
| datepicker | Docs | |
| dialog | Docs | |
| divider | Docs | |
| drag-drop | Landing in v7 | |
| expansion-panel | Docs | |
| grid-list | Docs | |
| icon | Docs | |
| input | Docs | |
| list | Docs | |
| menu | Docs | |
| paginator | Docs | |
| progress-bar | Docs | |
| progress-spinner | Docs | |
| radio | Docs | |
| ripples | Docs | |
| select | Docs | |
| sidenav | Docs | |
| slide-toggle | Docs | |
| slider | Docs | |
| snackbar / toast | Docs | |
| sort-header | Docs | |
| stepper | Docs | |
| tabs | Docs | |
| textarea | Docs | |
| toolbar | Docs | |
| tooltip | Docs | |
| tree | Docs | |
| virtual-scroll | Landing in v7 | |
| ---------------- | ------------------------------------------------------ | ------------ |
| theming | Guide | |
| typography | Guide | |
| layout | See angular/flex-layout | Wiki |
| cdk | Docs |
In progress, planned, and non-planned features
| Feature | Status | Docs | Issue |
|---|---|---|---|
| fab speed-dial | Not started, not planned | - | #860 |
| fab toolbar | Not started, not planned | - | - |
| bottom-nav | Not started, not planned | - | #408 |
The goal of Angular Material
Our goal is to build a set of high-quality UI components built with Angular and TypeScript, following the Material Design spec. These components will serve as an example of how to write Angular code following best practices.
What do we mean by "high-quality"?
- Internationalized and accessible so that all users can use them.
- Straightforward APIs that don't confuse developers.
- Behave as expected across a wide variety of use-cases without bugs.
- Behavior is well-tested with both unit and integration tests.
- Customizable within the bounds of the Material Design specification.
- Performance cost is minimized.
- Code is clean and well-documented to serve as an example for Angular devs.
Browser and screen reader support
Angular Material supports the most recent two versions of all major browsers: Chrome (including Android), Firefox, Safari (including iOS), and IE11 / Edge
We also aim for great user experience with the following screen readers:
- NVDA and JAWS with IE / FF / Chrome (on Windows).
- VoiceOver with Safari on iOS and Safari / Chrome on OSX.
- TalkBack with Chrome on Android.