| Index: polymer_0.5.0/bower_components/core-focusable/core-focusable.js
|
| diff --git a/polymer_0.5.0/bower_components/core-focusable/core-focusable.js b/polymer_0.5.0/bower_components/core-focusable/core-focusable.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6633b5f9443737c40f92f9fa8fa6dc33db1aed2c
|
| --- /dev/null
|
| +++ b/polymer_0.5.0/bower_components/core-focusable/core-focusable.js
|
| @@ -0,0 +1,134 @@
|
| +/**
|
| + * @group Polymer Mixins
|
| + *
|
| + * `Polymer.CoreFocusable` is a mixin for elements that the user can interact with.
|
| + * Elements using this mixin will receive attributes reflecting the focus, pressed
|
| + * and disabled states.
|
| + *
|
| + * @element Polymer.CoreFocusable
|
| + * @status unstable
|
| + */
|
| +
|
| +Polymer.CoreFocusable = {
|
| +
|
| + mixinPublish: {
|
| +
|
| + /**
|
| + * If true, the element is currently active either because the
|
| + * user is touching it, 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 toggle
|
| + * @type boolean
|
| + * @default false
|
| + */
|
| + toggle: false
|
| +
|
| + },
|
| +
|
| + mixinDelegates: {
|
| + contextMenu: '_contextMenuAction',
|
| + down: '_downAction',
|
| + up: '_upAction',
|
| + focus: '_focusAction',
|
| + blur: '_blurAction'
|
| + },
|
| +
|
| + mixinObserve: {
|
| + disabled: '_disabledChanged'
|
| + },
|
| +
|
| + _disabledChanged: function() {
|
| + if (this.disabled) {
|
| + this.style.pointerEvents = 'none';
|
| + this.removeAttribute('tabindex');
|
| + this.setAttribute('aria-disabled', '');
|
| + } else {
|
| + this.style.pointerEvents = '';
|
| + this.setAttribute('tabindex', 0);
|
| + this.removeAttribute('aria-disabled');
|
| + }
|
| + },
|
| +
|
| + _downAction: function() {
|
| + this.pressed = true;
|
| +
|
| + if (this.toggle) {
|
| + 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.toggle) {
|
| + 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;
|
| + }
|
| +
|
| +}
|
|
|