Index: sky/framework/sky-icon.sky |
diff --git a/sky/framework/sky-icon.sky b/sky/framework/sky-icon.sky |
index 5be01fea1526b0cb2bbd3af5829922d3249e7961..e526c8ca1df66b85318d3ecec94b1ee488b5988a 100644 |
--- a/sky/framework/sky-icon.sky |
+++ b/sky/framework/sky-icon.sky |
@@ -16,15 +16,37 @@ const String kAssetBase = '/sky/assets/material-design-icons'; |
@Tagname('sky-icon') |
class SkyIcon extends SkyElement { |
- void shadowRootReady() { |
- Element img = shadowRoot.firstElementChild; |
- int intSize = size.floor(); |
- img.style['height'] = '${intSize}px'; |
- img.style['width'] = '${intSize}px'; |
+ Element _img; |
+ |
+ void _setSize(int size) { |
+ _img.style['height'] = '${size}px'; |
+ _img.style['width'] = '${size}px'; |
+ } |
+ |
+ void _setSrc(String type, int size) { |
List<String> parts = type.split('/'); |
+ if (parts.length < 2) |
+ return; |
String category = parts[0]; |
String subtype = parts[1]; |
- img.src = '${kAssetBase}/${category}/2x_web/ic_${subtype}_${intSize}dp.png'; |
+ _img.src = '${kAssetBase}/${category}/2x_web/ic_${subtype}_${size}dp.png'; |
+ } |
+ |
+ void shadowRootReady() { |
+ _img = shadowRoot.firstElementChild; |
+ int size = this.size.floor(); |
+ _setSize(size); |
+ _setSrc(type, size); |
+ } |
+ |
+ void typeChanged(String oldValue, String newValue) { |
+ if (_img != null) |
+ _setSrc(newValue, size.floor()); |
+ } |
+ |
+ void sizeChanged(double oldValue, double newValue) { |
+ if (_img != null) |
+ _setSize(newValue.floor()); |
} |
} |