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

Unified Diff: polymer_1.0.4/bower_components/iron-dropdown/iron-dropdown.html

Issue 1264073002: Update polymer 1.0 install to pick up newly added elements. (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Update bower file to match actual versions. Created 5 years, 5 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: polymer_1.0.4/bower_components/iron-dropdown/iron-dropdown.html
diff --git a/polymer_1.0.4/bower_components/iron-dropdown/iron-dropdown.html b/polymer_1.0.4/bower_components/iron-dropdown/iron-dropdown.html
new file mode 100644
index 0000000000000000000000000000000000000000..db1bb08fe65a578d59861232b73249d72324b34c
--- /dev/null
+++ b/polymer_1.0.4/bower_components/iron-dropdown/iron-dropdown.html
@@ -0,0 +1,345 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="../iron-resizable-behavior/iron-resizable-behavior.html">
+<link rel="import" href="../iron-a11y-keys-behavior/iron-a11y-keys-behavior.html">
+<link rel="import" href="../iron-behaviors/iron-control-state.html">
+<link rel="import" href="../iron-overlay-behavior/iron-overlay-behavior.html">
+<link rel="import" href="../neon-animation/neon-animation-runner-behavior.html">
+<link rel="import" href="../neon-animation/animations/opaque-animation.html">
+<link rel="import" href="iron-dropdown-scroll-manager.html">
+
+<!--
+`<iron-dropdown>` is a generalized element that is useful when you have
+hidden content (`.dropdown-content`) that is revealed due to some change in
+state that should cause it to do so.
+
+Note that this is a low-level element intended to be used as part of other
+composite elements that cause dropdowns to be revealed.
+
+Examples of elements that might be implemented using an `iron-dropdown`
+include comboboxes, menubuttons, selects. The list goes on.
+
+The `<iron-dropdown>` element exposes attributes that allow the position
+of the `.dropdown-content` relative to the `.dropdown-trigger` to be
+configured.
+
+ <iron-dropdown horizontal-align="right" vertical-align="top">
+ <div class="dropdown-content">Hello!</div>
+ </iron-dropdown>
+
+In the above example, the `<div>` with class `.dropdown-content` will be
+hidden until the dropdown element has `opened` set to true, or when the `open`
+method is called on the element.
+
+@demo demo/index.html
+-->
+
+<dom-module id="iron-dropdown">
+ <style>
+ :host {
+ position: fixed;
+ }
+
+ #contentWrapper ::content > * {
+ overflow: auto;
+ }
+
+ #contentWrapper.animating ::content > * {
+ overflow: hidden;
+ }
+ </style>
+ <template>
+ <div id="contentWrapper">
+ <content id="content" select=".dropdown-content"></content>
+ </div>
+ </template>
+
+ <script>
+ (function() {
+ 'use strict';
+
+ Polymer({
+ is: 'iron-dropdown',
+
+ behaviors: [
+ Polymer.IronControlState,
+ Polymer.IronA11yKeysBehavior,
+ Polymer.IronOverlayBehavior,
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+
+ properties: {
+ /**
+ * The orientation against which to align the dropdown content
+ * horizontally relative to the dropdown trigger.
+ */
+ horizontalAlign: {
+ type: String,
+ value: 'left',
+ reflectToAttribute: true
+ },
+
+ /**
+ * The orientation against which to align the dropdown content
+ * vertically relative to the dropdown trigger.
+ */
+ verticalAlign: {
+ type: String,
+ value: 'top',
+ reflectToAttribute: true
+ },
+
+ /**
+ * The element that should be used to position the dropdown when
+ * it is opened.
+ */
+ positionTarget: {
+ type: Object,
+ observer: '_positionTargetChanged'
+ },
+
+ /**
+ * An animation config. If provided, this will be used to animate the
+ * opening of the dropdown.
+ */
+ openAnimationConfig: {
+ type: Object
+ },
+
+ /**
+ * An animation config. If provided, this will be used to animate the
+ * closing of the dropdown.
+ */
+ closeAnimationConfig: {
+ type: Object
+ },
+
+ /**
+ * Set to true to disable animations when opening and closing the
+ * dropdown.
+ */
+ noAnimations: {
+ type: Boolean,
+ value: false
+ },
+
+ /**
+ * We memoize the positionTarget bounding rectangle so that we can
+ * limit the number of times it is queried per resize / relayout.
+ * @type {?Object}
+ */
+ _positionRectMemo: {
+ type: Object
+ }
+ },
+
+ listeners: {
+ 'neon-animation-finish': '_onNeonAnimationFinish'
+ },
+
+ observers: [
+ '_updateOverlayPosition(verticalAlign, horizontalAlign)'
+ ],
+
+ attached: function() {
+ if (this.positionTarget === undefined) {
+ this.positionTarget = this._defaultPositionTarget;
+ }
+ },
+
+ /**
+ * The element that is contained by the dropdown, if any.
+ */
+ get containedElement() {
+ return Polymer.dom(this.$.content).getDistributedNodes()[0];
+ },
+
+ get _defaultPositionTarget() {
+ var parent = Polymer.dom(this).parentNode;
+
+ if (parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
+ parent = parent.host;
+ }
+
+ return parent;
+ },
+
+ get _positionRect() {
+ if (!this._positionRectMemo && this.positionTarget) {
+ this._positionRectMemo = this.positionTarget.getBoundingClientRect();
+ }
+
+ return this._positionRectMemo;
+ },
+
+ get _horizontalAlignTargetValue() {
+ var target;
+
+ if (this.horizontalAlign === 'right') {
+ target = document.documentElement.clientWidth - this._positionRect.right;
+ } else {
+ target = this._positionRect.left;
+ }
+
+ return Math.max(target, 0);
+ },
+
+ get _verticalAlignTargetValue() {
+ var target;
+
+ if (this.verticalAlign === 'bottom') {
+ target = document.documentElement.clientHeight - this._positionRect.bottom;
+ } else {
+ target = this._positionRect.top;
+ }
+
+ return Math.max(target, 0);
+ },
+
+ _openedChanged: function(opened) {
+ if (opened && this.disabled) {
+ this.cancel();
+ } else {
+ this._cancelAnimations();
+ this._prepareDropdown();
+ Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this, arguments);
+ }
+ },
+
+ _renderOpened: function() {
+ Polymer.IronDropdownScrollManager.pushScrollLock(this);
+ if (!this.noAnimations && this.animationConfig && this.animationConfig.open) {
+ this.$.contentWrapper.classList.add('animating');
+ this.playAnimation('open');
+ } else {
+ this._focusContent();
+ Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this, arguments);
+ }
+ },
+
+ _renderClosed: function() {
+ Polymer.IronDropdownScrollManager.removeScrollLock(this);
+ if (!this.noAnimations && this.animationConfig && this.animationConfig.close) {
+ this.$.contentWrapper.classList.add('animating');
+ this.playAnimation('close');
+ } else {
+ Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this, arguments);
+ }
+ },
+
+ _onNeonAnimationFinish: function() {
+ this.$.contentWrapper.classList.remove('animating');
+ if (this.opened) {
+ Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this);
+ } else {
+ Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this);
+ }
+ },
+
+ _onIronResize: function() {
+ var containedElement = this.containedElement;
+ var scrollTop;
+ var scrollLeft;
+
+ if (containedElement) {
+ scrollTop = containedElement.scrollTop;
+ scrollLeft = containedElement.scrollLeft;
+ }
+
+ if (this.opened) {
+ this._updateOverlayPosition();
+ }
+
+ Polymer.IronOverlayBehaviorImpl._onIronResize.apply(this, arguments);
+
+ if (containedElement) {
+ containedElement.scrollTop = scrollTop;
+ containedElement.scrollLeft = scrollLeft;
+ }
+ },
+
+ _positionTargetChanged: function() {
+ this._updateOverlayPosition();
+ },
+
+ _cancelAnimations: function() {
+ this.cancelAnimation();
+ },
+
+ _updateAnimationConfig: function() {
+ var animationConfig = {};
+ var animations = [];
+
+ if (this.openAnimationConfig) {
+ // NOTE(cdata): When making `display:none` elements visible in Safari,
+ // the element will paint once in a fully visible state, causing the
+ // dropdown to flash before it fades in. We prepend an
+ // `opaque-animation` to fix this problem:
+ animationConfig.open = [{
+ name: 'opaque-animation',
+ }].concat(this.openAnimationConfig);
+ animations = animations.concat(animationConfig.open);
+ }
+
+ if (this.closeAnimationConfig) {
+ animationConfig.close = this.closeAnimationConfig;
+ animations = animations.concat(animationConfig.close);
+ }
+
+ animations.forEach(function(animation) {
+ animation.node = this.containedElement;
+ }, this);
+
+ this.animationConfig = animationConfig;
+ },
+
+ _prepareDropdown: function() {
+ this.sizingTarget = this.containedElement || this.sizingTarget;
+ this._updateAnimationConfig();
+ this._updateOverlayPosition();
+ },
+
+ _updateOverlayPosition: function() {
+ this._positionRectMemo = null;
+
+ if (!this.positionTarget) {
+ return;
+ }
+
+ this.style[this.horizontalAlign] =
+ this._horizontalAlignTargetValue + 'px';
+
+ this.style[this.verticalAlign] =
+ this._verticalAlignTargetValue + 'px';
+
+ // NOTE(cdata): We re-memoize inline styles here, otherwise
+ // calling `refit` from `IronFitBehavior` will reset inline styles
+ // to whatever they were when the dropdown first opened.
+ if (this._fitInfo) {
+ this._fitInfo.inlineStyle[this.horizontalAlign] =
+ this.style[this.horizontalAlign];
+
+ this._fitInfo.inlineStyle[this.verticalAlign] =
+ this.style[this.verticalAlign];
+ }
+ },
+
+ _focusContent: function() {
+ if (this.containedElement) {
+ this.containedElement.focus();
+ }
+ }
+ });
+ })();
+ </script>
+</dom-module>
+

Powered by Google App Engine
This is Rietveld 408576698