| OLD | NEW |
| 1 <!-- | 1 <!-- |
| 2 Copyright (c) 2015 The Polymer Project Authors. All rights reserved. | 2 Copyright (c) 2015 The Polymer Project Authors. All rights reserved. |
| 3 This code may only be used under the BSD style license found at http://polymer.g
ithub.io/LICENSE.txt | 3 This code may only be used under the BSD style license found at http://polymer.g
ithub.io/LICENSE.txt |
| 4 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | 4 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
| 5 The complete set of contributors may be found at http://polymer.github.io/CONTRI
BUTORS.txt | 5 The complete set of contributors may be found at http://polymer.github.io/CONTRI
BUTORS.txt |
| 6 Code distributed by Google as part of the polymer project is also | 6 Code distributed by Google as part of the polymer project is also |
| 7 subject to an additional IP rights grant found at http://polymer.github.io/PATEN
TS.txt | 7 subject to an additional IP rights grant found at http://polymer.github.io/PATEN
TS.txt |
| 8 --> | 8 --> |
| 9 | 9 |
| 10 <link rel="import" href="../polymer/polymer.html"> | 10 <link rel="import" href="../polymer/polymer.html"> |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 * If you want to use the attribute value of an element for `selected` ins
tead of the index, | 49 * If you want to use the attribute value of an element for `selected` ins
tead of the index, |
| 50 * set this to the name of the attribute. | 50 * set this to the name of the attribute. |
| 51 */ | 51 */ |
| 52 attrForSelected: { | 52 attrForSelected: { |
| 53 type: String, | 53 type: String, |
| 54 value: null | 54 value: null |
| 55 }, | 55 }, |
| 56 | 56 |
| 57 /** | 57 /** |
| 58 * Gets or sets the selected element. The default is to use the index of t
he item. | 58 * Gets or sets the selected element. The default is to use the index of t
he item. |
| 59 * | |
| 60 * @type {string|number} | |
| 61 */ | 59 */ |
| 62 selected: { | 60 selected: { |
| 63 type: String, | 61 type: String, |
| 64 notify: true | 62 notify: true |
| 65 }, | 63 }, |
| 66 | 64 |
| 67 /** | 65 /** |
| 68 * Returns the currently selected item. | 66 * Returns the currently selected item. |
| 69 */ | 67 */ |
| 70 selectedItem: { | 68 selectedItem: { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 100 | 98 |
| 101 /** | 99 /** |
| 102 * The attribute to set on elements when selected. | 100 * The attribute to set on elements when selected. |
| 103 */ | 101 */ |
| 104 selectedAttribute: { | 102 selectedAttribute: { |
| 105 type: String, | 103 type: String, |
| 106 value: null | 104 value: null |
| 107 }, | 105 }, |
| 108 | 106 |
| 109 /** | 107 /** |
| 110 * The set of excluded elements where the key is the `localName` | 108 * The set of excluded elements where the key is the `localName` |
| 111 * of the element that will be ignored from the item list. | 109 * of the element that will be ignored from the item list. |
| 112 * | 110 * |
| 111 * @type {object} |
| 113 * @default {template: 1} | 112 * @default {template: 1} |
| 114 */ | 113 */ |
| 115 excludedLocalNames: { | 114 _excludedLocalNames: { |
| 116 type: Object, | 115 type: Object, |
| 117 value: function() { | 116 value: function() { |
| 118 return { | 117 return { |
| 119 'template': 1 | 118 'template': 1 |
| 120 }; | 119 }; |
| 121 } | 120 } |
| 122 } | 121 } |
| 123 }, | 122 }, |
| 124 | 123 |
| 125 observers: [ | 124 observers: [ |
| 126 '_updateSelected(attrForSelected, selected)' | 125 '_updateSelected(attrForSelected, selected)' |
| 127 ], | 126 ], |
| 128 | 127 |
| 129 created: function() { | 128 created: function() { |
| 130 this._bindFilterItem = this._filterItem.bind(this); | 129 this._bindFilterItem = this._filterItem.bind(this); |
| 131 this._selection = new Polymer.IronSelection(this._applySelection.bind(this
)); | 130 this._selection = new Polymer.IronSelection(this._applySelection.bind(this
)); |
| 131 // TODO(cdata): When polymer/polymer#2535 lands, we do not need to do this |
| 132 // book keeping anymore: |
| 133 this.__listeningForActivate = false; |
| 132 }, | 134 }, |
| 133 | 135 |
| 134 attached: function() { | 136 attached: function() { |
| 135 this._observer = this._observeItems(this); | 137 this._observer = this._observeItems(this); |
| 136 this._contentObserver = this._observeContent(this); | 138 this._contentObserver = this._observeContent(this); |
| 139 if (!this.selectedItem && this.selected) { |
| 140 this._updateSelected(this.attrForSelected,this.selected) |
| 141 } |
| 142 this._addListener(this.activateEvent); |
| 137 }, | 143 }, |
| 138 | 144 |
| 139 detached: function() { | 145 detached: function() { |
| 140 if (this._observer) { | 146 if (this._observer) { |
| 141 this._observer.disconnect(); | 147 this._observer.disconnect(); |
| 142 } | 148 } |
| 143 if (this._contentObserver) { | 149 if (this._contentObserver) { |
| 144 this._contentObserver.disconnect(); | 150 this._contentObserver.disconnect(); |
| 145 } | 151 } |
| 146 this._removeListener(this.activateEvent); | 152 this._removeListener(this.activateEvent); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 * Selects the next item. | 199 * Selects the next item. |
| 194 * | 200 * |
| 195 * @method selectNext | 201 * @method selectNext |
| 196 */ | 202 */ |
| 197 selectNext: function() { | 203 selectNext: function() { |
| 198 var index = (Number(this._valueToIndex(this.selected)) + 1) % this.items.l
ength; | 204 var index = (Number(this._valueToIndex(this.selected)) + 1) % this.items.l
ength; |
| 199 this.selected = this._indexToValue(index); | 205 this.selected = this._indexToValue(index); |
| 200 }, | 206 }, |
| 201 | 207 |
| 202 _addListener: function(eventName) { | 208 _addListener: function(eventName) { |
| 209 if (!this.isAttached || this.__listeningForActivate) { |
| 210 return; |
| 211 } |
| 212 |
| 213 this.__listeningForActivate = true; |
| 203 this.listen(this, eventName, '_activateHandler'); | 214 this.listen(this, eventName, '_activateHandler'); |
| 204 }, | 215 }, |
| 205 | 216 |
| 206 _removeListener: function(eventName) { | 217 _removeListener: function(eventName) { |
| 207 this.unlisten(this, eventName, '_activateHandler'); | 218 this.unlisten(this, eventName, '_activateHandler'); |
| 219 this.__listeningForActivate = false; |
| 208 }, | 220 }, |
| 209 | 221 |
| 210 _activateEventChanged: function(eventName, old) { | 222 _activateEventChanged: function(eventName, old) { |
| 211 this._removeListener(old); | 223 this._removeListener(old); |
| 212 this._addListener(eventName); | 224 this._addListener(eventName); |
| 213 }, | 225 }, |
| 214 | 226 |
| 215 _updateSelected: function() { | 227 _updateSelected: function() { |
| 216 this._selectSelected(this.selected); | 228 this._selectSelected(this.selected); |
| 217 }, | 229 }, |
| 218 | 230 |
| 219 _selectSelected: function(selected) { | 231 _selectSelected: function(selected) { |
| 220 this._selection.select(this._valueToItem(this.selected)); | 232 this._selection.select(this._valueToItem(this.selected)); |
| 221 }, | 233 }, |
| 222 | 234 |
| 223 _filterItem: function(node) { | 235 _filterItem: function(node) { |
| 224 return !this.excludedLocalNames[node.localName]; | 236 return !this._excludedLocalNames[node.localName]; |
| 225 }, | 237 }, |
| 226 | 238 |
| 227 _valueToItem: function(value) { | 239 _valueToItem: function(value) { |
| 228 return (value == null) ? null : this.items[this._valueToIndex(value)]; | 240 return (value == null) ? null : this.items[this._valueToIndex(value)]; |
| 229 }, | 241 }, |
| 230 | 242 |
| 231 _valueToIndex: function(value) { | 243 _valueToIndex: function(value) { |
| 232 if (this.attrForSelected) { | 244 if (this.attrForSelected) { |
| 233 for (var i = 0, item; item = this.items[i]; i++) { | 245 for (var i = 0, item; item = this.items[i]; i++) { |
| 234 if (this._valueForItem(item) == value) { | 246 if (this._valueForItem(item) == value) { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 _itemActivate: function(value, item) { | 329 _itemActivate: function(value, item) { |
| 318 if (!this.fire('iron-activate', | 330 if (!this.fire('iron-activate', |
| 319 {selected: value, item: item}, {cancelable: true}).defaultPrevented) { | 331 {selected: value, item: item}, {cancelable: true}).defaultPrevented) { |
| 320 this.select(value); | 332 this.select(value); |
| 321 } | 333 } |
| 322 } | 334 } |
| 323 | 335 |
| 324 }; | 336 }; |
| 325 | 337 |
| 326 </script> | 338 </script> |
| OLD | NEW |