Index: third_party/polymer/components/core-range/core-range.html |
diff --git a/third_party/polymer/components/core-range/core-range.html b/third_party/polymer/components/core-range/core-range.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e16993c91b33b99dc0a12176c3e2fbb7180d0ea6 |
--- /dev/null |
+++ b/third_party/polymer/components/core-range/core-range.html |
@@ -0,0 +1,108 @@ |
+<!-- |
+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 |
+--> |
+ |
+<!-- |
+The `core-range` element is used for managing a numeric value within a given |
+range. It has no visual appearance and is typically used in conjunction with |
+another element. |
+ |
+One can build a progress bar using `core-range` like this: |
+ |
+ <core-range min="0" max="200" value="100" ratio="{{ratio}}"></core-range> |
+ <div class="progress-bar" style="width: {{ratio}}%;"></div> |
+ |
+@group Polymer Core Elements |
+@element core-range |
+@homepage github.io |
+ |
+--> |
+ |
+<link rel="import" href="../polymer/polymer.html"> |
+ |
+<polymer-element name="core-range" attributes="value min max step ratio"> |
+<script> |
+ |
+ Polymer('core-range', { |
+ |
+ /** |
+ * The number that represents the current value. |
+ * |
+ * @attribute value |
+ * @type number |
+ * @default 0 |
+ */ |
+ value: 0, |
+ |
+ /** |
+ * The number that indicates the minimum value of the range. |
+ * |
+ * @attribute min |
+ * @type number |
+ * @default 0 |
+ */ |
+ min: 0, |
+ |
+ /** |
+ * The number that indicates the maximum value of the range. |
+ * |
+ * @attribute max |
+ * @type number |
+ * @default 100 |
+ */ |
+ max: 100, |
+ |
+ /** |
+ * Specifies the value granularity of the range's value. |
+ * |
+ * @attribute step |
+ * @type number |
+ * @default 1 |
+ */ |
+ step: 1, |
+ |
+ /** |
+ * Returns the ratio of the value. |
+ * |
+ * @attribute ratio |
+ * @type number |
+ * @default 0 |
+ */ |
+ ratio: 0, |
+ |
+ observe: { |
+ 'value min max step': 'update' |
+ }, |
+ |
+ calcRatio: function(value) { |
+ return (this.clampValue(value) - this.min) / (this.max - this.min); |
+ }, |
+ |
+ clampValue: function(value) { |
+ return Math.min(this.max, Math.max(this.min, this.calcStep(value))); |
+ }, |
+ |
+ calcStep: function(value) { |
+ return this.step ? (Math.round(value / this.step) / (1 / this.step)) : value; |
+ }, |
+ |
+ validateValue: function() { |
+ var v = this.clampValue(this.value); |
+ this.value = this.oldValue = isNaN(v) ? this.oldValue : v; |
+ return this.value !== v; |
+ }, |
+ |
+ update: function() { |
+ this.validateValue(); |
+ this.ratio = this.calcRatio(this.value) * 100; |
+ } |
+ |
+ }); |
+ |
+</script> |
+</polymer-element> |