| 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 |