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

Unified Diff: polymer_1.2.3/bower_components/iron-selector/iron-selectable.html

Issue 1581713003: [third_party] add polymer 1.2.3 (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: 1.2.3 Created 4 years, 11 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: polymer_1.2.3/bower_components/iron-selector/iron-selectable.html
diff --git a/polymer_1.0.4/bower_components/iron-selector/iron-selectable.html b/polymer_1.2.3/bower_components/iron-selector/iron-selectable.html
similarity index 72%
copy from polymer_1.0.4/bower_components/iron-selector/iron-selectable.html
copy to polymer_1.2.3/bower_components/iron-selector/iron-selectable.html
index f0506d58d9b5fab5a1701e5c4437f7e10f1b4f91..403a7596363fd007ca49f9303c447320cd6d6a15 100644
--- a/polymer_1.0.4/bower_components/iron-selector/iron-selectable.html
+++ b/polymer_1.2.3/bower_components/iron-selector/iron-selectable.html
@@ -15,14 +15,39 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
/** @polymerBehavior */
Polymer.IronSelectableBehavior = {
+ /**
+ * Fired when iron-selector is activated (selected or deselected).
+ * It is fired before the selected items are changed.
+ * Cancel the event to abort selection.
+ *
+ * @event iron-activate
+ */
+
+ /**
+ * Fired when an item is selected
+ *
+ * @event iron-select
+ */
+
+ /**
+ * Fired when an item is deselected
+ *
+ * @event iron-deselect
+ */
+
+ /**
+ * Fired when the list of selectable items changes (e.g., items are
+ * added or removed). The detail of the event is a list of mutation
+ * records that describe what changed.
+ *
+ * @event iron-items-changed
+ */
+
properties: {
/**
* If you want to use the attribute value of an element for `selected` instead of the index,
* set this to the name of the attribute.
- *
- * @attribute attrForSelected
- * @type {string}
*/
attrForSelected: {
type: String,
@@ -31,9 +56,6 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
/**
* Gets or sets the selected element. The default is to use the index of the item.
- *
- * @attribute selected
- * @type {string}
*/
selected: {
type: String,
@@ -43,8 +65,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
/**
* Returns the currently selected item.
*
- * @attribute selectedItem
- * @type {Object}
+ * @type {?Object}
*/
selectedItem: {
type: Object,
@@ -56,10 +77,6 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
* The event that fires from items when they are selected. Selectable
* will listen for this event from items and update the selection state.
* Set to empty string to listen to no events.
- *
- * @attribute activateEvent
- * @type {string}
- * @default 'tap'
*/
activateEvent: {
type: String,
@@ -68,19 +85,13 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
},
/**
- * This is a CSS selector sting. If this is set, only items that matches the CSS selector
+ * This is a CSS selector string. If this is set, only items that match the CSS selector
* are selectable.
- *
- * @attribute selectable
- * @type {string}
*/
selectable: String,
/**
* The class to set on elements when selected.
- *
- * @attribute selectedClass
- * @type {string}
*/
selectedClass: {
type: String,
@@ -89,25 +100,43 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
/**
* The attribute to set on elements when selected.
- *
- * @attribute selectedAttribute
- * @type {string}
*/
selectedAttribute: {
type: String,
value: null
- }
+ },
+ /**
+ * The list of items from which a selection can be made.
+ */
+ items: {
+ type: Array,
+ readOnly: true,
+ value: function() {
+ return [];
+ }
+ },
+
+ /**
+ * The set of excluded elements where the key is the `localName`
+ * of the element that will be ignored from the item list.
+ *
+ * @default {template: 1}
+ */
+ _excludedLocalNames: {
+ type: Object,
+ value: function() {
+ return {
+ 'template': 1
+ };
+ }
+ }
},
observers: [
'_updateSelected(attrForSelected, selected)'
],
- excludedLocalNames: {
- 'template': 1
- },
-
created: function() {
this._bindFilterItem = this._filterItem.bind(this);
this._selection = new Polymer.IronSelection(this._applySelection.bind(this));
@@ -115,31 +144,21 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
attached: function() {
this._observer = this._observeItems(this);
- this._contentObserver = this._observeContent(this);
+ this._updateItems();
+ if (!this._shouldUpdateSelection) {
+ this._updateSelected(this.attrForSelected,this.selected)
+ }
+ this._addListener(this.activateEvent);
},
detached: function() {
if (this._observer) {
- this._observer.disconnect();
- }
- if (this._contentObserver) {
- this._contentObserver.disconnect();
+ Polymer.dom(this).unobserveNodes(this._observer);
}
this._removeListener(this.activateEvent);
},
/**
- * Returns an array of selectable items.
- *
- * @property items
- * @type Array
- */
- get items() {
- var nodes = Polymer.dom(this).queryDistributedElements(this.selectable || '*');
- return Array.prototype.filter.call(nodes, this._bindFilterItem);
- },
-
- /**
* Returns the index of the given item.
*
* @method indexOf
@@ -181,14 +200,16 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
this.selected = this._indexToValue(index);
},
+ get _shouldUpdateSelection() {
+ return this.selected != null;
+ },
+
_addListener: function(eventName) {
this.listen(this, eventName, '_activateHandler');
},
_removeListener: function(eventName) {
- // There is no unlisten yet...
- // https://github.com/Polymer/polymer/issues/1639
- //this.removeEventListener(eventName, this._bindActivateHandler);
+ this.unlisten(this, eventName, '_activateHandler');
},
_activateEventChanged: function(eventName, old) {
@@ -196,6 +217,12 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
this._addListener(eventName);
},
+ _updateItems: function() {
+ var nodes = Polymer.dom(this).queryDistributedElements(this.selectable || '*');
+ nodes = Array.prototype.filter.call(nodes, this._bindFilterItem);
+ this._setItems(nodes);
+ },
+
_updateSelected: function() {
this._selectSelected(this.selected);
},
@@ -205,7 +232,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
},
_filterItem: function(node) {
- return !this.excludedLocalNames[node.localName];
+ return !this._excludedLocalNames[node.localName];
},
_valueToItem: function(value) {
@@ -254,34 +281,25 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
this._setSelectedItem(this._selection.get());
},
- // observe content changes under the given node.
- _observeContent: function(node) {
- var content = node.querySelector('content');
- if (content && content.parentElement === node) {
- return this._observeItems(node.domHost);
- }
- },
-
// observe items change under the given node.
_observeItems: function(node) {
- var observer = new MutationObserver(function() {
- if (this.selected != null) {
+ return Polymer.dom(node).observeNodes(function(mutations) {
+ // Let other interested parties know about the change so that
+ // we don't have to recreate mutation observers everywher.
+ this.fire('iron-items-changed', mutations, {
+ bubbles: false,
+ cancelable: false
+ });
+
+ this._updateItems();
+
+ if (this._shouldUpdateSelection) {
this._updateSelected();
}
- }.bind(this));
- observer.observe(node, {
- childList: true,
- subtree: true
});
- return observer;
},
_activateHandler: function(e) {
- // TODO: remove this when https://github.com/Polymer/polymer/issues/1639 is fixed so we
- // can just remove the old event listener.
- if (e.type !== this.activateEvent) {
- return;
- }
var t = e.target;
var items = this.items;
while (t && t != this) {

Powered by Google App Engine
This is Rietveld 408576698