Index: third_party/polymer/v0_8/components/iron-selector/iron-selection.html |
diff --git a/third_party/polymer/v0_8/components/iron-selector/iron-selection.html b/third_party/polymer/v0_8/components/iron-selector/iron-selection.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..01771995c4a5821cb72bf3fa1e726289d87ab10d |
--- /dev/null |
+++ b/third_party/polymer/v0_8/components/iron-selector/iron-selection.html |
@@ -0,0 +1,111 @@ |
+ |
+<!-- |
+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"> |
+ |
+<script> |
+ |
+ Polymer.IronSelection = function(selectCallback) { |
+ this.selection = []; |
+ this.selectCallback = selectCallback; |
+ }; |
+ |
+ Polymer.IronSelection.prototype = { |
+ |
+ /** |
+ * Retrieves the selected item(s). |
+ * |
+ * @method get |
+ * @returns Returns the selected item(s). If the multi property is true, |
+ * `get` will return an array, otherwise it will return |
+ * the selected item or undefined if there is no selection. |
+ */ |
+ get: function() { |
+ return this.multi ? this.selection : this.selection[0]; |
+ }, |
+ |
+ /** |
+ * Clears all the selection except the ones indicated. |
+ * |
+ * @method clear |
+ * @param {Array} excludes items to be excluded. |
+ */ |
+ clear: function(excludes) { |
+ this.selection.slice().forEach(function(item) { |
+ if (!excludes || excludes.indexOf(item) < 0) { |
+ this.setItemSelected(item, false); |
+ } |
+ }, this); |
+ }, |
+ |
+ /** |
+ * Indicates if a given item is selected. |
+ * |
+ * @method isSelected |
+ * @param {any} item The item whose selection state should be checked. |
+ * @returns Returns true if `item` is selected. |
+ */ |
+ isSelected: function(item) { |
+ return this.selection.indexOf(item) >= 0; |
+ }, |
+ |
+ /** |
+ * Sets the selection state for a given item to either selected or deselected. |
+ * |
+ * @method setItemSelected |
+ * @param {any} item The item to select. |
+ * @param {Boolean} isSelected True for selected, false for deselected. |
+ */ |
+ setItemSelected: function(item, isSelected) { |
+ if (item != null) { |
+ if (isSelected) { |
+ this.selection.push(item); |
+ } else { |
+ var i = this.selection.indexOf(item); |
+ if (i >= 0) { |
+ this.selection.splice(i, 1); |
+ } |
+ } |
+ if (this.selectCallback) { |
+ this.selectCallback(item, isSelected); |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * Sets the selection state for a given item. If the `multi` property |
+ * is true, then the selected state of `item` will be toggled; otherwise |
+ * the `item` will be selected. |
+ * |
+ * @method select |
+ * @param {any} item The item to select. |
+ */ |
+ select: function(item) { |
+ if (this.multi) { |
+ this.toggle(item); |
+ } else if (this.get() !== item) { |
+ this.setItemSelected(this.get(), false); |
+ this.setItemSelected(item, true); |
+ } |
+ }, |
+ |
+ /** |
+ * Toggles the selection state for `item`. |
+ * |
+ * @method toggle |
+ * @param {any} item The item to toggle. |
+ */ |
+ toggle: function(item) { |
+ this.setItemSelected(item, !this.isSelected(item)); |
+ } |
+ |
+ }; |
+ |
+</script> |