Index: pkg/polymer/lib/elements/polymer-ui-icon/polymer-ui-icon.html |
diff --git a/pkg/polymer/lib/elements/polymer-ui-icon/polymer-ui-icon.html b/pkg/polymer/lib/elements/polymer-ui-icon/polymer-ui-icon.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b5a051ad1db58126fdb583ea3f22992f75b938c4 |
--- /dev/null |
+++ b/pkg/polymer/lib/elements/polymer-ui-icon/polymer-ui-icon.html |
@@ -0,0 +1,114 @@ |
+<!-- |
+Copyright 2013 The Polymer Authors. All rights reserved. |
+Use of this source code is governed by a BSD-style |
+license that can be found in the LICENSE file. |
+--> |
+ |
+<!-- |
+/** |
+* Polymer UI Elements |
+* |
+* @module Polymer UI Elements |
+*/ |
+/** |
+ * polymer-ui-icon is a 24x24 glyph expressed as a background-image. |
+ * |
+ * Example: |
+ * |
+ * <polymer-ui-icon src="star.png"></polymer-ui-icon> |
+ * |
+ * Optionally can use other size like 32x32 by setting the attribute "size" to "32": |
+ * |
+ * <polymer-ui-icon src="big_star.png" size="32"></polymer-ui-icon> |
+ * |
+ * Polymer includes an icon set. The property "icon" can be used |
+ * to specify which icon to use. |
+ * |
+ * Example: |
+ * |
+ * <polymer-ui-icon icon="menu"></polymer-ui-icon> |
+ * |
+ * See <a href="polymer-ui-iconset.html">polymer-ui-iconset</a> on how to use |
+ * your own icon set. |
+ * |
+ * @class polymer-ui-icon |
+ */ |
+--> |
+<link rel="import" href="../polymer/polymer.html"> |
+<link rel="import" href="../polymer-ui-theme-aware/polymer-ui-theme-aware.html"> |
+<link rel="import" href="../polymer-ui-iconset/polymer-ui-iconset.html"> |
+<link rel="import" href="polymer-ui-icons.html"> |
+ |
+<polymer-element name="polymer-ui-icon" extends="polymer-ui-theme-aware" attributes="src size index icon"> |
+ <template> |
+ <link rel="stylesheet" href="polymer-ui-icon.css"> |
+ <polymer-ui-iconset id="meta"></polymer-ui-iconset> |
+ <content></content> |
+ </template> |
+ <script> |
+ Polymer('polymer-ui-icon', { |
+ /** |
+ * The URL of an image for the icon. |
+ * |
+ * @attribute src |
+ * @type string |
+ * @default '' |
+ */ |
+ src: '', |
+ /** |
+ * Specifies the size of the icon. |
+ * |
+ * @attribute size |
+ * @type string |
+ * @default 24 |
+ */ |
+ size: 24, |
+ /** |
+ * Specifies the icon from the icon set. |
+ * |
+ * @attribute icon |
+ * @type string |
+ * @default '' |
+ */ |
+ icon: '', |
+ defaultIconset: 'polymer-ui-icons', |
+ observe: { |
+ icon: 'updateIcon', |
+ activeTheme: 'updateIcon' |
+ }, |
+ ready: function() { |
+ this.sizeChanged(); |
+ }, |
+ sizeChanged: function() { |
+ this.style.width = this.style.height = this.size + 'px'; |
+ }, |
+ srcChanged: function() { |
+ this.style.backgroundImage = 'url(' + this.src + ')'; |
+ this.style.backgroundPosition = 'center'; |
+ this.style.backgroundSize = this.size + 'px ' + this.size + 'px'; |
+ }, |
+ getIconset: function(name) { |
+ return this.$.meta.byId(name || this.defaultIconset); |
+ }, |
+ updateIcon: function() { |
+ if (!this.icon) { |
+ return; |
+ } |
+ var a = this.icon.split(':'); |
+ var icon = a.pop(); |
+ var n = a.pop(); |
+ var s = this.getIconset(n); |
+ if (s) { |
+ var o = s.getOffset(icon, this.activeTheme); |
+ if (o) { |
+ var r = this.size / s.iconsize; |
+ this.style.backgroundImage = 'url(' + s.src + ')'; |
+ this.style.backgroundPosition = |
+ (-o.offsetx * r + 'px') + ' ' + (-o.offsety * r + 'px'); |
+ this.style.backgroundSize = r === 1 ? 'auto' : s.width * r + 'px'; |
+ } |
+ } |
+ } |
+ }); |
+ </script> |
+</polymer-element> |