Index: third_party/polymer/components/paper-menu-button/paper-menu-button-overlay.html |
diff --git a/third_party/polymer/components/paper-menu-button/paper-menu-button-overlay.html b/third_party/polymer/components/paper-menu-button/paper-menu-button-overlay.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b9591364c4a80a1d1ef5882751dda8977cd30ef4 |
--- /dev/null |
+++ b/third_party/polymer/components/paper-menu-button/paper-menu-button-overlay.html |
@@ -0,0 +1,87 @@ |
+<!-- |
+Copyright (c) 2014 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="../core-overlay/core-overlay.html"> |
+ |
+<!-- |
+ |
+`paper-menu-button-overlay` is a helper class to position an overlay relative to another |
+element, e.g. the button with a pulldown menu. |
+ |
+@group Paper Elements |
+@element paper-menu-button-overlay |
+@extends core-overlay |
+@homepage github.io |
+--> |
+ |
+<polymer-element name="paper-menu-button-overlay" extends="core-overlay" attributes="relatedTarget halign valign"> |
+ <script> |
+ Polymer('paper-menu-button-overlay', { |
+ |
+ publish: { |
+ |
+ /** |
+ * The `relatedTarget` is an element used to position the overlay, for example a |
+ * button the user taps to show a menu. |
+ * |
+ * @attribute relatedTarget |
+ * @type Element |
+ */ |
+ relatedTarget: null, |
+ |
+ /** |
+ * The horizontal alignment of the overlay relative to the `relatedTarget`. |
+ * |
+ * @attribute halign |
+ * @type 'left'|'right'|'center' |
+ * @default 'left' |
+ */ |
+ halign: 'left' |
+ |
+ }, |
+ |
+ updateTargetDimensions: function() { |
+ this.super(); |
+ |
+ var t = this.target; |
+ this.target.cachedSize = t.getBoundingClientRect(); |
+ }, |
+ |
+ positionTarget: function() { |
+ if (this.relatedTarget) { |
+ |
+ var rect = this.relatedTarget.getBoundingClientRect(); |
+ |
+ if (this.halign === 'left') { |
+ this.target.style.left = rect.left + 'px'; |
+ } else if (this.halign === 'right') { |
+ this.target.style.right = (window.innerWidth - rect.right) + 'px'; |
+ } else { |
+ this.target.style.left = (rect.left - (rect.width - this.target.cachedSize.width) / 2) + 'px'; |
+ } |
+ |
+ if (this.valign === 'top') { |
+ this.target.style.top = rect.top + 'px'; |
+ } else if (this.valign === 'bottom') { |
+ this.target.style.top = rect.bottom + 'px'; |
+ } else { |
+ this.target.style.top = rect.top + 'px'; |
+ } |
+ |
+ // this.target.style.top = rect.top + 'px'; |
+ |
+ } else { |
+ this.super(); |
+ } |
+ } |
+ |
+ }); |
+ </script> |
+</polymer-element> |