Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Unified Diff: third_party/polymer/v0_8/components-chromium/iron-behaviors/iron-button-state-extracted.js

Issue 1162563004: Upgrade to 1.0 and switch clients to dom-repeat where needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a layout import and remove the gzipped webanimation in reproduce.sh Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/polymer/v0_8/components-chromium/iron-behaviors/iron-button-state-extracted.js
diff --git a/third_party/polymer/v0_8/components-chromium/iron-behaviors/iron-button-state-extracted.js b/third_party/polymer/v0_8/components-chromium/iron-behaviors/iron-button-state-extracted.js
index dd8057d25f922e39293a78a0455b1aef3ecf95a5..b27ec61cca91aa5108aa90dc96c927ebe4be9205 100644
--- a/third_party/polymer/v0_8/components-chromium/iron-behaviors/iron-button-state-extracted.js
+++ b/third_party/polymer/v0_8/components-chromium/iron-behaviors/iron-button-state-extracted.js
@@ -1,6 +1,7 @@
- Polymer.IronButtonState = {
+ /** @polymerBehavior Polymer.IronButtonState */
+ Polymer.IronButtonStateImpl = {
properties: {
@@ -14,6 +15,7 @@
pressed: {
type: Boolean,
readOnly: true,
+ value: false,
reflectToAttribute: true,
observer: '_pressedChanged'
},
@@ -28,6 +30,7 @@
*/
toggles: {
type: Boolean,
+ value: false,
reflectToAttribute: true
},
@@ -40,21 +43,49 @@
*/
active: {
type: Boolean,
+ value: false,
notify: true,
reflectToAttribute: true,
observer: '_activeChanged'
- }
+ },
+
+ /**
+ * True if the element is currently being pressed by a "pointer," which
+ * is loosely defined as mouse or touch input (but specifically excluding
+ * keyboard input).
+ */
+ pointerDown: {
+ type: Boolean,
+ readOnly: true,
+ value: false
+ },
+ /**
+ * True if the input device that caused the element to receive focus
+ * was a keyboard.
+ */
+ receivedFocusFromKeyboard: {
+ type: Boolean,
+ readOnly: true
+ }
},
listeners: {
- mousedown: '_downHandler',
- mouseup: '_upHandler',
- keydown: '_keyDownHandler',
- keyup: '_keyUpHandler',
+ down: '_downHandler',
+ up: '_upHandler',
tap: '_tapHandler'
},
+ observers: [
+ '_detectKeyboardFocus(focused)'
+ ],
+
+ keyBindings: {
+ 'enter:keydown': '_asyncClick',
+ 'space:keydown': '_spaceKeyDownHandler',
+ 'space:keyup': '_spaceKeyUpHandler',
+ },
+
_tapHandler: function() {
if (this.toggles) {
// a tap is needed to toggle the active state
@@ -64,6 +95,10 @@
}
},
+ _detectKeyboardFocus: function(focused) {
+ this._setReceivedFocusFromKeyboard(!this.pointerDown && focused);
+ },
+
// to emulate native checkbox, (de-)activations from a user interaction fire
// 'change' events
_userActivate: function(active) {
@@ -72,33 +107,28 @@
},
_downHandler: function() {
+ this._setPointerDown(true);
this._setPressed(true);
+ this._setReceivedFocusFromKeyboard(false);
},
- _upHandler: function(e) {
+ _upHandler: function() {
+ this._setPointerDown(false);
this._setPressed(false);
},
- _keyDownHandler: function(e) {
- switch(e.keyCode) {
- case this.keyCodes.ENTER_KEY:
- this._asyncClick();
- break;
-
- case this.keyCodes.SPACE:
- this._setPressed(true);
- break;
-
- }
+ _spaceKeyDownHandler: function(event) {
+ var keyboardEvent = event.detail.keyboardEvent;
+ keyboardEvent.preventDefault();
+ keyboardEvent.stopImmediatePropagation();
+ this._setPressed(true);
},
- _keyUpHandler: function(e) {
- if (e.keyCode == this.keyCodes.SPACE) {
- if (this.pressed) {
- this._asyncClick();
- }
- this._setPressed(false);
+ _spaceKeyUpHandler: function() {
+ if (this.pressed) {
+ this._asyncClick();
}
+ this._setPressed(false);
},
// trigger click asynchronously, the asynchrony is useful to allow one
@@ -116,14 +146,17 @@
},
_activeChanged: function(active) {
- this.setAttribute('aria-pressed', active ? 'true' : 'false');
+ if (this.toggles) {
+ this.setAttribute('aria-pressed', active ? 'true' : 'false');
+ } else {
+ this.removeAttribute('aria-pressed');
+ }
this._changedButtonState();
},
_controlStateChanged: function() {
if (this.disabled) {
this._setPressed(false);
- this.active = false;
} else {
this._changedButtonState();
}
@@ -139,3 +172,9 @@
};
+ /** @polymerBehavior Polymer.IronButtonState */
+ Polymer.IronButtonState = [
+ Polymer.IronA11yKeysBehavior,
+ Polymer.IronButtonStateImpl
+ ];
+

Powered by Google App Engine
This is Rietveld 408576698