Index: chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js |
diff --git a/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js b/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js |
index 0d3d1c7ab2f8c7e7bee5969e6297c92efa906882..7a7b50d6657b1b665c848afd87cff0843659ad04 100644 |
--- a/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js |
+++ b/chrome/browser/resources/chromeos/login/oobe_i18n_dropdown.js |
@@ -37,61 +37,27 @@ Polymer({ |
}, |
/** |
- * This flag prevents recursive calls of observers and callbacks. |
+ * Mapping from item id to item. |
*/ |
- observersDisabled_: false, |
+ id2Item_: [], |
michaelpg
2016/11/16 01:59:01
spell out numbers. and can you provide a more spec
Alexander Alekseev
2016/11/16 07:10:59
Done.
|
/** |
- * @param {!{detail: !{item: { item: {!I18nMenuItem}}}}} event |
+ * @param {string} value Option value. |
* @private |
*/ |
- onSelect_: function(event) { |
- if (this.observersDisabled_) |
- return; |
- |
- var selectedModel = this.$.domRepeat.modelForElement(event.detail.item); |
- if (!selectedModel.item) |
- return; |
- |
- selectedModel.set('item.selected', true); |
- this.fire('select-item', selectedModel.item); |
- }, |
- |
- onDeselect_: function(event) { |
- if (this.observersDisabled_) |
- return; |
- |
- var deSelectedModel = this.$.domRepeat.modelForElement(event.detail.item); |
- if (!deSelectedModel.item) |
- return; |
- |
- deSelectedModel.set('item.selected', false); |
+ onSelected_: function(value) { |
+ this.fire('select-item', this.id2Item_[value]); |
}, |
onItemsChanged_: function(items) { |
- if (this.observersDisabled_) |
- return; |
- |
- if (!items) |
- return; |
- |
- this.observersDisabled_ = true; |
- |
- var index = items.findIndex(function(item) { return item.selected; }); |
- if (index != -1) { |
- // This is needed for selectIndex() to pick up values from updated |
- // this.items (for example, translated into other language). |
- Polymer.dom.flush(); |
- |
- if (this.$.listboxDropdown.selected == index) { |
- // This is to force update real <input> element value even if selection |
- // index has not changed. |
- this.$.listboxDropdown.selectIndex(null); |
- } |
- this.$.listboxDropdown.selectIndex(index); |
+ this.id2Item_ = []; |
+ for (var i = 0; i < items.length; ++i) { |
+ var item = items[i]; |
+ this.id2Item_[item.value] = item; |
} |
- |
- this.observersDisabled_ = false; |
+ Oobe.setupSelect(this.$.select, |
+ items, |
+ this.onSelected_.bind(this)); |
}, |
}); |
})(); |