| Index: third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js
|
| diff --git a/third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js b/third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js
|
| index f7539fe644bc895da35f101d520f95c6d65cd516..67ef7b0ebc0a816869932da7939bd8fedcc72a20 100644
|
| --- a/third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js
|
| +++ b/third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js
|
| @@ -1,252 +1,273 @@
|
| (function() {
|
| - 'use strict';
|
| + 'use strict';
|
|
|
| - var PaperMenuButton = Polymer({
|
| - is: 'paper-menu-button',
|
| + var PaperMenuButton = Polymer({
|
| + is: 'paper-menu-button',
|
|
|
| - /**
|
| - * Fired when the dropdown opens.
|
| - *
|
| - * @event paper-dropdown-open
|
| - */
|
| + /**
|
| + * Fired when the dropdown opens.
|
| + *
|
| + * @event paper-dropdown-open
|
| + */
|
| +
|
| + /**
|
| + * Fired when the dropdown closes.
|
| + *
|
| + * @event paper-dropdown-close
|
| + */
|
|
|
| - /**
|
| - * Fired when the dropdown closes.
|
| - *
|
| - * @event paper-dropdown-close
|
| - */
|
| + behaviors: [
|
| + Polymer.IronA11yKeysBehavior,
|
| + Polymer.IronControlState
|
| + ],
|
|
|
| - behaviors: [
|
| - Polymer.IronA11yKeysBehavior,
|
| - Polymer.IronControlState
|
| - ],
|
| + properties: {
|
| + /**
|
| + * True if the content is currently displayed.
|
| + */
|
| + opened: {
|
| + type: Boolean,
|
| + value: false,
|
| + notify: true,
|
| + observer: '_openedChanged'
|
| + },
|
|
|
| - properties: {
|
| + /**
|
| + * The orientation against which to align the menu dropdown
|
| + * horizontally relative to the dropdown trigger.
|
| + */
|
| + horizontalAlign: {
|
| + type: String,
|
| + value: 'left',
|
| + reflectToAttribute: true
|
| + },
|
|
|
| - /**
|
| - * True if the content is currently displayed.
|
| - */
|
| - opened: {
|
| - type: Boolean,
|
| - value: false,
|
| - notify: true,
|
| - observer: '_openedChanged'
|
| + /**
|
| + * The orientation against which to align the menu dropdown
|
| + * vertically relative to the dropdown trigger.
|
| + */
|
| + verticalAlign: {
|
| + type: String,
|
| + value: 'top',
|
| + reflectToAttribute: true
|
| + },
|
| +
|
| + /**
|
| + * A pixel value that will be added to the position calculated for the
|
| + * given `horizontalAlign`. Use a negative value to offset to the
|
| + * left, or a positive value to offset to the right.
|
| + */
|
| + horizontalOffset: {
|
| + type: Number,
|
| + value: 0,
|
| + notify: true
|
| + },
|
| +
|
| + /**
|
| + * A pixel value that will be added to the position calculated for the
|
| + * given `verticalAlign`. Use a negative value to offset towards the
|
| + * top, or a positive value to offset towards the bottom.
|
| + */
|
| + verticalOffset: {
|
| + type: Number,
|
| + value: 0,
|
| + notify: true
|
| + },
|
| +
|
| + /**
|
| + * Set to true to disable animations when opening and closing the
|
| + * dropdown.
|
| + */
|
| + noAnimations: {
|
| + type: Boolean,
|
| + value: false
|
| + },
|
| +
|
| + /**
|
| + * Set to true to disable automatically closing the dropdown after
|
| + * a selection has been made.
|
| + */
|
| + ignoreSelect: {
|
| + type: Boolean,
|
| + value: false
|
| + },
|
| +
|
| + /**
|
| + * An animation config. If provided, this will be used to animate the
|
| + * opening of the dropdown.
|
| + */
|
| + openAnimationConfig: {
|
| + type: Object,
|
| + value: function() {
|
| + return [{
|
| + name: 'fade-in-animation',
|
| + timing: {
|
| + delay: 100,
|
| + duration: 200
|
| + }
|
| + }, {
|
| + name: 'paper-menu-grow-width-animation',
|
| + timing: {
|
| + delay: 100,
|
| + duration: 150,
|
| + easing: PaperMenuButton.ANIMATION_CUBIC_BEZIER
|
| + }
|
| + }, {
|
| + name: 'paper-menu-grow-height-animation',
|
| + timing: {
|
| + delay: 100,
|
| + duration: 275,
|
| + easing: PaperMenuButton.ANIMATION_CUBIC_BEZIER
|
| + }
|
| + }];
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * An animation config. If provided, this will be used to animate the
|
| + * closing of the dropdown.
|
| + */
|
| + closeAnimationConfig: {
|
| + type: Object,
|
| + value: function() {
|
| + return [{
|
| + name: 'fade-out-animation',
|
| + timing: {
|
| + duration: 150
|
| + }
|
| + }, {
|
| + name: 'paper-menu-shrink-width-animation',
|
| + timing: {
|
| + delay: 100,
|
| + duration: 50,
|
| + easing: PaperMenuButton.ANIMATION_CUBIC_BEZIER
|
| + }
|
| + }, {
|
| + name: 'paper-menu-shrink-height-animation',
|
| + timing: {
|
| + duration: 200,
|
| + easing: 'ease-in'
|
| + }
|
| + }];
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * This is the element intended to be bound as the focus target
|
| + * for the `iron-dropdown` contained by `paper-menu-button`.
|
| + */
|
| + _dropdownContent: {
|
| + type: Object
|
| + }
|
| },
|
|
|
| - /**
|
| - * The orientation against which to align the menu dropdown
|
| - * horizontally relative to the dropdown trigger.
|
| - */
|
| - horizontalAlign: {
|
| - type: String,
|
| - value: 'left',
|
| - reflectToAttribute: true
|
| + hostAttributes: {
|
| + role: 'group',
|
| + 'aria-haspopup': 'true'
|
| },
|
|
|
| - /**
|
| - * The orientation against which to align the menu dropdown
|
| - * vertically relative to the dropdown trigger.
|
| - */
|
| - verticalAlign: {
|
| - type: String,
|
| - value: 'top',
|
| - reflectToAttribute: true
|
| + listeners: {
|
| + 'iron-select': '_onIronSelect'
|
| },
|
|
|
| /**
|
| - * A pixel value that will be added to the position calculated for the
|
| - * given `horizontalAlign`. Use a negative value to offset to the
|
| - * left, or a positive value to offset to the right.
|
| + * The content element that is contained by the menu button, if any.
|
| */
|
| - horizontalOffset: {
|
| - type: Number,
|
| - value: 0,
|
| - notify: true
|
| + get contentElement() {
|
| + return Polymer.dom(this.$.content).getDistributedNodes()[0];
|
| },
|
|
|
| /**
|
| - * A pixel value that will be added to the position calculated for the
|
| - * given `verticalAlign`. Use a negative value to offset towards the
|
| - * top, or a positive value to offset towards the bottom.
|
| + * Toggles the drowpdown content between opened and closed.
|
| */
|
| - verticalOffset: {
|
| - type: Number,
|
| - value: 0,
|
| - notify: true
|
| + toggle: function() {
|
| + if (this.opened) {
|
| + this.close();
|
| + } else {
|
| + this.open();
|
| + }
|
| },
|
|
|
| /**
|
| - * Set to true to disable animations when opening and closing the
|
| - * dropdown.
|
| + * Make the dropdown content appear as an overlay positioned relative
|
| + * to the dropdown trigger.
|
| */
|
| - noAnimations: {
|
| - type: Boolean,
|
| - value: false
|
| + open: function() {
|
| + if (this.disabled) {
|
| + return;
|
| + }
|
| +
|
| + this.$.dropdown.open();
|
| },
|
|
|
| /**
|
| - * Set to true to disable automatically closing the dropdown after
|
| - * a selection has been made.
|
| + * Hide the dropdown content.
|
| */
|
| - ignoreSelect: {
|
| - type: Boolean,
|
| - value: false
|
| + close: function() {
|
| + this.$.dropdown.close();
|
| },
|
|
|
| /**
|
| - * An animation config. If provided, this will be used to animate the
|
| - * opening of the dropdown.
|
| + * When an `iron-select` event is received, the dropdown should
|
| + * automatically close on the assumption that a value has been chosen.
|
| + *
|
| + * @param {CustomEvent} event A CustomEvent instance with type
|
| + * set to `"iron-select"`.
|
| */
|
| - openAnimationConfig: {
|
| - type: Object,
|
| - value: function() {
|
| - return [{
|
| - name: 'fade-in-animation',
|
| - timing: {
|
| - delay: 100,
|
| - duration: 200
|
| - }
|
| - }, {
|
| - name: 'paper-menu-grow-width-animation',
|
| - timing: {
|
| - delay: 100,
|
| - duration: 150,
|
| - easing: PaperMenuButton.ANIMATION_CUBIC_BEZIER
|
| - }
|
| - }, {
|
| - name: 'paper-menu-grow-height-animation',
|
| - timing: {
|
| - delay: 100,
|
| - duration: 275,
|
| - easing: PaperMenuButton.ANIMATION_CUBIC_BEZIER
|
| - }
|
| - }];
|
| + _onIronSelect: function(event) {
|
| + if (!this.ignoreSelect) {
|
| + this.close();
|
| }
|
| },
|
|
|
| /**
|
| - * An animation config. If provided, this will be used to animate the
|
| - * closing of the dropdown.
|
| + * When the dropdown opens, the `paper-menu-button` fires `paper-open`.
|
| + * When the dropdown closes, the `paper-menu-button` fires `paper-close`.
|
| + *
|
| + * @param {boolean} opened True if the dropdown is opened, otherwise false.
|
| + * @param {boolean} oldOpened The previous value of `opened`.
|
| */
|
| - closeAnimationConfig: {
|
| - type: Object,
|
| - value: function() {
|
| - return [{
|
| - name: 'fade-out-animation',
|
| - timing: {
|
| - duration: 150
|
| - }
|
| - }, {
|
| - name: 'paper-menu-shrink-width-animation',
|
| - timing: {
|
| - delay: 100,
|
| - duration: 50,
|
| - easing: PaperMenuButton.ANIMATION_CUBIC_BEZIER
|
| - }
|
| - }, {
|
| - name: 'paper-menu-shrink-height-animation',
|
| - timing: {
|
| - duration: 200,
|
| - easing: 'ease-in'
|
| - }
|
| - }];
|
| + _openedChanged: function(opened, oldOpened) {
|
| + if (opened) {
|
| + // TODO(cdata): Update this when we can measure changes in distributed
|
| + // children in an idiomatic way.
|
| + // We poke this property in case the element has changed. This will
|
| + // cause the focus target for the `iron-dropdown` to be updated as
|
| + // necessary:
|
| + this._dropdownContent = this.contentElement;
|
| + this.fire('paper-dropdown-open');
|
| + } else if (oldOpened != null) {
|
| + this.fire('paper-dropdown-close');
|
| }
|
| },
|
|
|
| /**
|
| - * This is the element intended to be bound as the focus target
|
| - * for the `iron-dropdown` contained by `paper-menu-button`.
|
| + * If the dropdown is open when disabled becomes true, close the
|
| + * dropdown.
|
| + *
|
| + * @param {boolean} disabled True if disabled, otherwise false.
|
| */
|
| - _dropdownContent: {
|
| - type: Object
|
| - }
|
| - },
|
| -
|
| - hostAttributes: {
|
| - role: 'group',
|
| - 'aria-haspopup': 'true'
|
| - },
|
| -
|
| - listeners: {
|
| - 'iron-select': '_onIronSelect'
|
| - },
|
| -
|
| - /**
|
| - * The content element that is contained by the menu button, if any.
|
| - */
|
| - get contentElement() {
|
| - return Polymer.dom(this.$.content).getDistributedNodes()[0];
|
| - },
|
| -
|
| - /**
|
| - * Make the dropdown content appear as an overlay positioned relative
|
| - * to the dropdown trigger.
|
| - */
|
| - open: function() {
|
| - if (this.disabled) {
|
| - return;
|
| - }
|
| + _disabledChanged: function(disabled) {
|
| + Polymer.IronControlState._disabledChanged.apply(this, arguments);
|
| + if (disabled && this.opened) {
|
| + this.close();
|
| + }
|
| + },
|
|
|
| - this.$.dropdown.open();
|
| - },
|
| -
|
| - /**
|
| - * Hide the dropdown content.
|
| - */
|
| - close: function() {
|
| - this.$.dropdown.close();
|
| - },
|
| -
|
| - /**
|
| - * When an `iron-select` event is received, the dropdown should
|
| - * automatically close on the assumption that a value has been chosen.
|
| - *
|
| - * @param {CustomEvent} event A CustomEvent instance with type
|
| - * set to `"iron-select"`.
|
| - */
|
| - _onIronSelect: function(event) {
|
| - if (!this.ignoreSelect) {
|
| - this.close();
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * When the dropdown opens, the `paper-menu-button` fires `paper-open`.
|
| - * When the dropdown closes, the `paper-menu-button` fires `paper-close`.
|
| - *
|
| - * @param {boolean} opened True if the dropdown is opened, otherwise false.
|
| - * @param {boolean} oldOpened The previous value of `opened`.
|
| - */
|
| - _openedChanged: function(opened, oldOpened) {
|
| - if (opened) {
|
| - // TODO(cdata): Update this when we can measure changes in distributed
|
| - // children in an idiomatic way.
|
| - // We poke this property in case the element has changed. This will
|
| - // cause the focus target for the `iron-dropdown` to be updated as
|
| - // necessary:
|
| - this._dropdownContent = this.contentElement;
|
| - this.fire('paper-dropdown-open');
|
| - } else if (oldOpened != null) {
|
| - this.fire('paper-dropdown-close');
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * If the dropdown is open when disabled becomes true, close the
|
| - * dropdown.
|
| - *
|
| - * @param {boolean} disabled True if disabled, otherwise false.
|
| - */
|
| - _disabledChanged: function(disabled) {
|
| - Polymer.IronControlState._disabledChanged.apply(this, arguments);
|
| - if (disabled && this.opened) {
|
| - this.close();
|
| + __onIronOverlayCanceled: function(event) {
|
| + var uiEvent = event.detail;
|
| + var target = Polymer.dom(uiEvent).rootTarget;
|
| + var trigger = this.$.trigger;
|
| + var path = Polymer.dom(uiEvent).path;
|
| +
|
| + if (path.indexOf(trigger) > -1) {
|
| + event.preventDefault();
|
| + }
|
| }
|
| - }
|
| - });
|
| + });
|
|
|
| - PaperMenuButton.ANIMATION_CUBIC_BEZIER = 'cubic-bezier(.3,.95,.5,1)';
|
| - PaperMenuButton.MAX_ANIMATION_TIME_MS = 400;
|
| + PaperMenuButton.ANIMATION_CUBIC_BEZIER = 'cubic-bezier(.3,.95,.5,1)';
|
| + PaperMenuButton.MAX_ANIMATION_TIME_MS = 400;
|
|
|
| - Polymer.PaperMenuButton = PaperMenuButton;
|
| - })();
|
| + Polymer.PaperMenuButton = PaperMenuButton;
|
| + })();
|
|
|