| OLD | NEW |
| 1 /** @polymerBehavior */ | 1 /** @polymerBehavior */ |
| 2 Polymer.IronSelectableBehavior = { | 2 Polymer.IronSelectableBehavior = { |
| 3 | 3 |
| 4 /** | 4 /** |
| 5 * Fired when iron-selector is activated (selected or deselected). | 5 * Fired when iron-selector is activated (selected or deselected). |
| 6 * It is fired before the selected items are changed. | 6 * It is fired before the selected items are changed. |
| 7 * Cancel the event to abort selection. | 7 * Cancel the event to abort selection. |
| 8 * | 8 * |
| 9 * @event iron-activate | 9 * @event iron-activate |
| 10 */ | 10 */ |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 type: Object, | 115 type: Object, |
| 116 value: function() { | 116 value: function() { |
| 117 return { | 117 return { |
| 118 'template': 1 | 118 'template': 1 |
| 119 }; | 119 }; |
| 120 } | 120 } |
| 121 } | 121 } |
| 122 }, | 122 }, |
| 123 | 123 |
| 124 observers: [ | 124 observers: [ |
| 125 '_updateSelected(attrForSelected, selected)' | 125 '_updateAttrForSelected(attrForSelected)', |
| 126 '_updateSelected(selected)' |
| 126 ], | 127 ], |
| 127 | 128 |
| 128 created: function() { | 129 created: function() { |
| 129 this._bindFilterItem = this._filterItem.bind(this); | 130 this._bindFilterItem = this._filterItem.bind(this); |
| 130 this._selection = new Polymer.IronSelection(this._applySelection.bind(this
)); | 131 this._selection = new Polymer.IronSelection(this._applySelection.bind(this
)); |
| 131 }, | 132 }, |
| 132 | 133 |
| 133 attached: function() { | 134 attached: function() { |
| 134 this._observer = this._observeItems(this); | 135 this._observer = this._observeItems(this); |
| 135 this._updateItems(); | 136 this._updateItems(); |
| 136 if (!this._shouldUpdateSelection) { | 137 if (!this._shouldUpdateSelection) { |
| 137 this._updateSelected(this.attrForSelected,this.selected) | 138 this._updateSelected(); |
| 138 } | 139 } |
| 139 this._addListener(this.activateEvent); | 140 this._addListener(this.activateEvent); |
| 140 }, | 141 }, |
| 141 | 142 |
| 142 detached: function() { | 143 detached: function() { |
| 143 if (this._observer) { | 144 if (this._observer) { |
| 144 Polymer.dom(this).unobserveNodes(this._observer); | 145 Polymer.dom(this).unobserveNodes(this._observer); |
| 145 } | 146 } |
| 146 this._removeListener(this.activateEvent); | 147 this._removeListener(this.activateEvent); |
| 147 }, | 148 }, |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 this._removeListener(old); | 221 this._removeListener(old); |
| 221 this._addListener(eventName); | 222 this._addListener(eventName); |
| 222 }, | 223 }, |
| 223 | 224 |
| 224 _updateItems: function() { | 225 _updateItems: function() { |
| 225 var nodes = Polymer.dom(this).queryDistributedElements(this.selectable ||
'*'); | 226 var nodes = Polymer.dom(this).queryDistributedElements(this.selectable ||
'*'); |
| 226 nodes = Array.prototype.filter.call(nodes, this._bindFilterItem); | 227 nodes = Array.prototype.filter.call(nodes, this._bindFilterItem); |
| 227 this._setItems(nodes); | 228 this._setItems(nodes); |
| 228 }, | 229 }, |
| 229 | 230 |
| 231 _updateAttrForSelected: function() { |
| 232 if (this._shouldUpdateSelection) { |
| 233 this.selected = this._indexToValue(this.indexOf(this.selectedItem));
|
| 234 } |
| 235 }, |
| 236 |
| 230 _updateSelected: function() { | 237 _updateSelected: function() { |
| 231 this._selectSelected(this.selected); | 238 this._selectSelected(this.selected); |
| 232 }, | 239 }, |
| 233 | 240 |
| 234 _selectSelected: function(selected) { | 241 _selectSelected: function(selected) { |
| 235 this._selection.select(this._valueToItem(this.selected)); | 242 this._selection.select(this._valueToItem(this.selected)); |
| 236 }, | 243 }, |
| 237 | 244 |
| 238 _filterItem: function(node) { | 245 _filterItem: function(node) { |
| 239 return !this._excludedLocalNames[node.localName]; | 246 return !this._excludedLocalNames[node.localName]; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 // observe items change under the given node. | 296 // observe items change under the given node. |
| 290 _observeItems: function(node) { | 297 _observeItems: function(node) { |
| 291 return Polymer.dom(node).observeNodes(function(mutations) { | 298 return Polymer.dom(node).observeNodes(function(mutations) { |
| 292 this._updateItems(); | 299 this._updateItems(); |
| 293 | 300 |
| 294 if (this._shouldUpdateSelection) { | 301 if (this._shouldUpdateSelection) { |
| 295 this._updateSelected(); | 302 this._updateSelected(); |
| 296 } | 303 } |
| 297 | 304 |
| 298 // Let other interested parties know about the change so that | 305 // Let other interested parties know about the change so that |
| 299 // we don't have to recreate mutation observers everywher. | 306 // we don't have to recreate mutation observers everywhere. |
| 300 this.fire('iron-items-changed', mutations, { | 307 this.fire('iron-items-changed', mutations, { |
| 301 bubbles: false, | 308 bubbles: false, |
| 302 cancelable: false | 309 cancelable: false |
| 303 }); | 310 }); |
| 304 }); | 311 }); |
| 305 }, | 312 }, |
| 306 | 313 |
| 307 _activateHandler: function(e) { | 314 _activateHandler: function(e) { |
| 308 var t = e.target; | 315 var t = e.target; |
| 309 var items = this.items; | 316 var items = this.items; |
| 310 while (t && t != this) { | 317 while (t && t != this) { |
| 311 var i = items.indexOf(t); | 318 var i = items.indexOf(t); |
| 312 if (i >= 0) { | 319 if (i >= 0) { |
| 313 var value = this._indexToValue(i); | 320 var value = this._indexToValue(i); |
| 314 this._itemActivate(value, t); | 321 this._itemActivate(value, t); |
| 315 return; | 322 return; |
| 316 } | 323 } |
| 317 t = t.parentNode; | 324 t = t.parentNode; |
| 318 } | 325 } |
| 319 }, | 326 }, |
| 320 | 327 |
| 321 _itemActivate: function(value, item) { | 328 _itemActivate: function(value, item) { |
| 322 if (!this.fire('iron-activate', | 329 if (!this.fire('iron-activate', |
| 323 {selected: value, item: item}, {cancelable: true}).defaultPrevented) { | 330 {selected: value, item: item}, {cancelable: true}).defaultPrevented) { |
| 324 this.select(value); | 331 this.select(value); |
| 325 } | 332 } |
| 326 } | 333 } |
| 327 | 334 |
| 328 }; | 335 }; |
| OLD | NEW |