| Index: third_party/polymer/v0_8/components/iron-a11y-announcer/iron-a11y-announcer.html
|
| diff --git a/third_party/polymer/v0_8/components/iron-a11y-announcer/iron-a11y-announcer.html b/third_party/polymer/v0_8/components/iron-a11y-announcer/iron-a11y-announcer.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..87e2be1ab0737ad8b367985890892ed5badbd7b2
|
| --- /dev/null
|
| +++ b/third_party/polymer/v0_8/components/iron-a11y-announcer/iron-a11y-announcer.html
|
| @@ -0,0 +1,125 @@
|
| +<!--
|
| +@license
|
| +Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
| +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
| +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
| +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
| +Code distributed by Google as part of the polymer project is also
|
| +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
| +-->
|
| +
|
| +<link rel="import" href="../polymer/polymer.html">
|
| +
|
| +<!--
|
| +`iron-a11y-announcer` is a singleton element that is intended to add a11y
|
| +to features that require on-demand announcement from screen readers. In
|
| +order to make use of the announcer, it is best to request its availability
|
| +in the announcing element.
|
| +
|
| +Example:
|
| +
|
| + Polymer({
|
| +
|
| + is: 'x-chatty',
|
| +
|
| + attached: function() {
|
| + // This will create the singlton element if it has not
|
| + // been created yet:
|
| + Polymer.IronA11yAnnouncer.requestAvailability();
|
| + }
|
| + });
|
| +
|
| +After the `iron-a11y-announcer` has been made available, elements can
|
| +make announces by firing bubbling `iron-announce` events.
|
| +
|
| +Example:
|
| +
|
| + this.fire('iron-announce', {
|
| + text: 'This is an announcement!'
|
| + }, { bubbles: true });
|
| +
|
| +Note: announcements are only audible if you have a screen reader enabled.
|
| +
|
| +@group Iron Elements
|
| +@demo demo/index.html
|
| +-->
|
| +
|
| +<dom-module id="iron-a11y-announcer">
|
| + <style>
|
| + :host {
|
| + display: inline-block;
|
| + position: fixed;
|
| + clip: rect(0px,0px,0px,0px);
|
| + }
|
| + </style>
|
| +
|
| + <template>
|
| + <span aria-live$="[[mode]]">[[_text]]</span>
|
| + </template>
|
| +
|
| + <script>
|
| +
|
| + (function() {
|
| + 'use strict';
|
| +
|
| + Polymer.IronA11yAnnouncer = Polymer({
|
| + is: 'iron-a11y-announcer',
|
| +
|
| + properties: {
|
| +
|
| + /**
|
| + * The value of mode is used to set the `aria-live` attribute
|
| + * for the element that will be announced. Valid values are: `off`,
|
| + * `polite` and `assertive`.
|
| + */
|
| + mode: {
|
| + type: String,
|
| + value: 'polite'
|
| + },
|
| +
|
| + _text: {
|
| + type: String,
|
| + value: ''
|
| + }
|
| + },
|
| +
|
| + created: function() {
|
| + if (!Polymer.IronA11yAnnouncer.instance) {
|
| + Polymer.IronA11yAnnouncer.instance = this;
|
| + }
|
| +
|
| + document.body.addEventListener('iron-announce', this._onIronAnnounce.bind(this));
|
| + },
|
| +
|
| + /**
|
| + * Cause a text string to be announced by screen readers.
|
| + *
|
| + * @param {string} text The text that should be announced.
|
| + */
|
| + announce: function(text) {
|
| + this._text = '';
|
| + this.async(function() {
|
| + this._text = text;
|
| + }, 100);
|
| + },
|
| +
|
| + _onIronAnnounce: function(event) {
|
| + if (event.detail && event.detail.text) {
|
| + this.announce(event.detail.text);
|
| + }
|
| + }
|
| + });
|
| +
|
| + Polymer.IronA11yAnnouncer.instance = null;
|
| +
|
| + Polymer.IronA11yAnnouncer.requestAvailability = function() {
|
| + if (!Polymer.IronA11yAnnouncer.instance) {
|
| + document.createElement('iron-a11y-announcer');
|
| + }
|
| +
|
| + document.body.appendChild(Polymer.IronA11yAnnouncer.instance);
|
| + };
|
| + })();
|
| +
|
| + </script>
|
| +</dom-module>
|
|
|