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

Unified Diff: chrome/browser/resources/settings/languages_page/languages_page.js

Issue 2277633003: Use one instance of language settings detail menu for all languages (Closed)
Patch Set: Created 4 years, 4 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: chrome/browser/resources/settings/languages_page/languages_page.js
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.js b/chrome/browser/resources/settings/languages_page/languages_page.js
index 5168f03669f61214e91bf9cc520c1c286002332c..00de1b579dc7c3422404321ea4a9392f30c13cbf 100644
--- a/chrome/browser/resources/settings/languages_page/languages_page.js
+++ b/chrome/browser/resources/settings/languages_page/languages_page.js
@@ -51,6 +51,10 @@ Polymer({
showAddLanguagesDialog_: Boolean,
},
+ ready: function() {
+ this.menu_ = /** @type {CrSharedMenuElement} */(this.$$('cr-shared-menu'));
+ },
+
/**
* Handler for clicking a language on the main page, which selects the
* language as the prospective UI language on Chrome OS and Windows.
@@ -68,16 +72,6 @@ Polymer({
},
/**
- * Stops tap events on the language options menu, its trigger, or its items
- * from bubbling up to the language itself. Tap events on the language are
- * handled in onLanguageTap_.
- * @param {!Event} e The tap event.
- */
- stopPropagationHandler_: function(e) {
- e.stopPropagation();
- },
-
- /**
* Handler for enabling or disabling spell check.
* @param {!{target: Element, model: !{item: !LanguageState}}} e
*/
@@ -107,25 +101,21 @@ Polymer({
},
/**
- * @param {number} index Index of the language in the list of languages.
- * @param {!Object} change Polymer change object for languages.enabled.*.
- * @return {boolean} True if the given language is the first one in the list
- * of languages.
+ * @return {boolean} True if |language| is first in the list of enabled
+ * languages. Used to hide the "Move up" option.
* @private
*/
- isFirstLanguage_: function(index, change) {
- return index == 0;
+ isFirstLanguage_: function(language) {
stevenjb 2016/08/25 16:36:57 @param for language
michaelpg 2016/08/26 22:16:21 Done.
+ return language == this.languages.enabled[0];
},
/**
- * @param {number} index Index of the language in the list of languages.
- * @param {!Object} change Polymer change object for languages.enabled.*.
- * @return {boolean} True if the given language is the last one in the list of
- * languages.
+ * @return {boolean} True if |language| is last in the list of enabled
+ * languages. Used to hide the "Move down" option.
* @private
*/
- isLastLanguage_: function(index, change) {
- return index == this.languages.enabled.length - 1;
+ isLastLanguage_: function(language) {
stevenjb 2016/08/25 16:36:57 ditto
michaelpg 2016/08/26 22:16:20 Done.
+ return language == this.languages.enabled.slice(-1)[0];
stevenjb 2016/08/25 16:36:57 eww, but I guess that's JS for you. (I did a sear
michaelpg 2016/08/26 22:16:20 pretty sure creating a 1-length array containing a
},
/**
@@ -138,38 +128,37 @@ Polymer({
/**
* Moves the language up in the list.
- * @param {!{model: !{item: !LanguageState}}} e
* @private
*/
onMoveUpTap_: function(e) {
stevenjb 2016/08/25 16:36:57 elim (e) if unused
michaelpg 2016/08/26 22:16:20 Done.
- this.languageHelper.moveLanguage(e.model.item.language.code, -1);
+ this.menu_.closeMenu();
+ this.languageHelper.moveLanguage(this.detailLanguage_.language.code, -1);
},
/**
* Moves the language down in the list.
- * @param {!{model: !{item: !LanguageState}}} e
* @private
*/
onMoveDownTap_: function(e) {
- this.languageHelper.moveLanguage(e.model.item.language.code, 1);
+ this.menu_.closeMenu();
+ this.languageHelper.moveLanguage(this.detailLanguage_.language.code, 1);
},
/**
* Disables the language.
- * @param {!{model: !{item: !LanguageState}}} e
* @private
*/
onRemoveLanguageTap_: function(e) {
- this.languageHelper.disableLanguage(e.model.item.language.code);
+ this.menu_.closeMenu();
+ this.languageHelper.disableLanguage(this.detailLanguage_.language.code);
},
/**
* Opens the Language Detail page for the language.
- * @param {!{model: !{item: !LanguageState}}} e
* @private
*/
- onShowLanguageDetailTap_: function(e) {
- this.detailLanguage_ = e.model.item;
+ onShowLanguageDetailTap_: function() {
+ this.menu_.closeMenu();
settings.navigateTo(settings.Route.LANGUAGES_DETAIL);
},
@@ -348,5 +337,12 @@ Polymer({
forceRenderList_: function(tagName) {
this.$$(tagName).$$('iron-list').fire('iron-resize');
},
+
+ toggleMenu_: function(e) {
stevenjb 2016/08/25 16:36:57 @param for e
michaelpg 2016/08/26 22:16:20 Done.
+ e.stopPropagation(); // Prevent the tap event from closing the menu.
+
+ this.detailLanguage_ = e.model.item;
+ this.menu_.toggleMenu(e.target, e.model.item);
+ },
});
})();

Powered by Google App Engine
This is Rietveld 408576698