Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Unified Diff: third_party/polymer/v0_8/components-chromium/polymer/src/lib/template/x-array-selector-extracted.js

Issue 1082403004: Import Polymer 0.8 and several key elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Also remove polymer/explainer Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/polymer/v0_8/components-chromium/polymer/src/lib/template/x-array-selector-extracted.js
diff --git a/third_party/polymer/v0_8/components-chromium/polymer/src/lib/template/x-array-selector-extracted.js b/third_party/polymer/v0_8/components-chromium/polymer/src/lib/template/x-array-selector-extracted.js
new file mode 100644
index 0000000000000000000000000000000000000000..c794f644166ac469eab1017923c9ca6d17573f0c
--- /dev/null
+++ b/third_party/polymer/v0_8/components-chromium/polymer/src/lib/template/x-array-selector-extracted.js
@@ -0,0 +1,113 @@
+
+
+ Polymer({
+ is: 'x-array-selector',
+
+ properties: {
+
+ /**
+ * An array containing items from which selection will be made.
+ */
+ items: {
+ type: Array,
+ observer: '_itemsChanged'
+ },
+
+ /**
+ * When `multi` is true, this is an array that contains any selected.
+ * When `multi` is false, this is the currently selected item, or `null`
+ * if no item is selected.
+ */
+ selected: {
+ type: Object,
+ notify: true
+ },
+
+ /**
+ * When `true`, calling `select` on an item that is already selected
+ * will deselect the item.
+ */
+ toggle: Boolean,
+
+ /**
+ * When `true`, multiple items may be selected at once (in this case,
+ * `selected` is an array of currently selected items). When `false`,
+ * only one item may be selected at a time.
+ */
+ multi: Boolean
+ },
+
+ _itemsChanged: function() {
+ // Unbind previous selection
+ if (Array.isArray(this.selected)) {
+ for (var i=0; i<this.selected.length; i++) {
+ this.unbindPaths('selected.' + i);
+ }
+ } else {
+ this.unbindPaths('selected');
+ }
+ // Initialize selection
+ if (this.multi) {
+ this.selected = [];
+ } else {
+ this.selected = null;
+ }
+ },
+
+ /**
+ * Deselects the given item if it is already selected.
+ */
+ deselect: function(item) {
+ if (this.multi) {
+ var scol = Polymer.Collection.get(this.selected);
+ // var skey = scol.getKey(item);
+ // if (skey >= 0) {
+ var sidx = this.selected.indexOf(item);
+ if (sidx >= 0) {
+ var skey = scol.getKey(item);
+ this.selected.splice(sidx, 1);
+ // scol.remove(item);
+ this.unbindPaths('selected.' + skey);
+ return true;
+ }
+ } else {
+ this.selected = null;
+ this.unbindPaths('selected');
+ }
+ },
+
+ /**
+ * Selects the given item. When `toggle` is true, this will automatically
+ * deselect the item if already selected.
+ */
+ select: function(item) {
+ var icol = Polymer.Collection.get(this.items);
+ var key = icol.getKey(item);
+ if (this.multi) {
+ // var sidx = this.selected.indexOf(item);
+ // if (sidx < 0) {
+ var scol = Polymer.Collection.get(this.selected);
+ var skey = scol.getKey(item);
+ if (skey >= 0) {
+ this.deselect(item);
+ } else if (this.toggle) {
+ this.selected.push(item);
+ // this.bindPaths('selected.' + sidx, 'items.' + skey);
+ // skey = Polymer.Collection.get(this.selected).add(item);
+ this.async(function() {
+ skey = scol.getKey(item);
+ this.bindPaths('selected.' + skey, 'items.' + key);
+ });
+ }
+ } else {
+ if (this.toggle && item == this.selected) {
+ this.deselect();
+ } else {
+ this.bindPaths('selected', 'items.' + key);
+ this.selected = item;
+ }
+ }
+ }
+
+ });
+

Powered by Google App Engine
This is Rietveld 408576698