Index: third_party/polymer/components-chromium/paper-focusable/paper-focusable-extracted.js |
diff --git a/third_party/polymer/components-chromium/paper-focusable/paper-focusable-extracted.js b/third_party/polymer/components-chromium/paper-focusable/paper-focusable-extracted.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6b4173c596214d0f76bf650fa524b0d798649bc3 |
--- /dev/null |
+++ b/third_party/polymer/components-chromium/paper-focusable/paper-focusable-extracted.js |
@@ -0,0 +1,111 @@ |
+ |
+ Polymer('paper-focusable', { |
+ |
+ publish: { |
+ |
+ /** |
+ * If true, the button is currently active either because the |
+ * user is holding down the button, or the button is a toggle |
+ * and is currently in the active state. |
+ * |
+ * @attribute active |
+ * @type boolean |
+ * @default false |
+ */ |
+ active: {value: false, reflect: true}, |
+ |
+ /** |
+ * If true, the element currently has focus due to keyboard |
+ * navigation. |
+ * |
+ * @attribute focused |
+ * @type boolean |
+ * @default false |
+ */ |
+ focused: {value: false, reflect: true}, |
+ |
+ /** |
+ * If true, the user is currently holding down the button. |
+ * |
+ * @attribute pressed |
+ * @type boolean |
+ * @default false |
+ */ |
+ pressed: {value: false, reflect: true}, |
+ |
+ /** |
+ * If true, the user cannot interact with this element. |
+ * |
+ * @attribute disabled |
+ * @type boolean |
+ * @default false |
+ */ |
+ disabled: {value: false, reflect: true}, |
+ |
+ /** |
+ * If true, the button toggles the active state with each tap. |
+ * Otherwise, the button becomes active when the user is holding |
+ * it down. |
+ * |
+ * @attribute isToggle |
+ * @type boolean |
+ * @default false |
+ */ |
+ isToggle: {value: false, reflect: false} |
+ |
+ }, |
+ |
+ disabledChanged: function() { |
+ if (this.disabled) { |
+ this.removeAttribute('tabindex'); |
+ } else { |
+ this.setAttribute('tabindex', 0); |
+ } |
+ }, |
+ |
+ downAction: function() { |
+ this.pressed = true; |
+ this.focused = false; |
+ |
+ if (this.isToggle) { |
+ this.active = !this.active; |
+ } else { |
+ this.active = true; |
+ } |
+ }, |
+ |
+ // Pulling up the context menu for an item should focus it; but we need to |
+ // be careful about how we deal with down/up events surrounding context |
+ // menus. The up event typically does not fire until the context menu |
+ // closes: so we focus immediately. |
+ // |
+ // This fires _after_ downAction. |
+ contextMenuAction: function(e) { |
+ // Note that upAction may fire _again_ on the actual up event. |
+ this.upAction(e); |
+ this.focusAction(); |
+ }, |
+ |
+ upAction: function() { |
+ this.pressed = false; |
+ |
+ if (!this.isToggle) { |
+ this.active = false; |
+ } |
+ }, |
+ |
+ focusAction: function() { |
+ if (!this.pressed) { |
+ // Only render the "focused" state if the element gains focus due to |
+ // keyboard navigation. |
+ this.focused = true; |
+ } |
+ }, |
+ |
+ blurAction: function() { |
+ this.focused = false; |
+ } |
+ |
+ }); |
+ |
+ |