Index: third_party/polymer/v1_0/components-chromium/iron-behaviors/iron-button-state-extracted.js |
diff --git a/third_party/polymer/v1_0/components-chromium/iron-behaviors/iron-button-state-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-behaviors/iron-button-state-extracted.js |
index f9b7f99b5355b26d0e6606fe3b1dfe80c650061a..ae97f5cd1395f7a827ac5674ba7d2271d9cf1d12 100644 |
--- a/third_party/polymer/v1_0/components-chromium/iron-behaviors/iron-button-state-extracted.js |
+++ b/third_party/polymer/v1_0/components-chromium/iron-behaviors/iron-button-state-extracted.js |
@@ -1,6 +1,4 @@ |
- |
- |
- /** |
+/** |
* @demo demo/index.html |
* @polymerBehavior Polymer.IronButtonState |
*/ |
@@ -36,8 +34,7 @@ |
type: Boolean, |
value: false, |
notify: true, |
- reflectToAttribute: true, |
- observer: '_activeChanged' |
+ reflectToAttribute: true |
}, |
/** |
@@ -58,6 +55,16 @@ |
receivedFocusFromKeyboard: { |
type: Boolean, |
readOnly: true |
+ }, |
+ |
+ /** |
+ * The aria attribute to be set if the button is a toggle and in the |
+ * active state. |
+ */ |
+ ariaActiveAttribute: { |
+ type: String, |
+ value: 'aria-pressed', |
+ observer: '_ariaActiveAttributeChanged' |
} |
}, |
@@ -68,7 +75,8 @@ |
}, |
observers: [ |
- '_detectKeyboardFocus(focused)' |
+ '_detectKeyboardFocus(focused)', |
+ '_activeChanged(active, ariaActiveAttribute)' |
], |
keyBindings: { |
@@ -95,8 +103,10 @@ |
// to emulate native checkbox, (de-)activations from a user interaction fire |
// 'change' events |
_userActivate: function(active) { |
- this.active = active; |
- this.fire('change'); |
+ if (this.active !== active) { |
+ this.active = active; |
+ this.fire('change'); |
+ } |
}, |
_eventSourceIsPrimaryInput: function(event) { |
@@ -164,11 +174,18 @@ |
this._changedButtonState(); |
}, |
- _activeChanged: function(active) { |
+ _ariaActiveAttributeChanged: function(value, oldValue) { |
+ if (oldValue && oldValue != value && this.hasAttribute(oldValue)) { |
+ this.removeAttribute(oldValue); |
+ } |
+ }, |
+ |
+ _activeChanged: function(active, ariaActiveAttribute) { |
if (this.toggles) { |
- this.setAttribute('aria-pressed', active ? 'true' : 'false'); |
+ this.setAttribute(this.ariaActiveAttribute, |
+ active ? 'true' : 'false'); |
} else { |
- this.removeAttribute('aria-pressed'); |
+ this.removeAttribute(this.ariaActiveAttribute); |
} |
this._changedButtonState(); |
}, |
@@ -195,5 +212,4 @@ |
Polymer.IronButtonState = [ |
Polymer.IronA11yKeysBehavior, |
Polymer.IronButtonStateImpl |
- ]; |
- |
+ ]; |