Commit 03d7c7a5 authored by François Degros's avatar François Degros Committed by Commit Bot

[Files app] ES6 class for sort_menu_controller.js

Bug: 778674
Change-Id: If24284710325335dc9a33d61773fbf69a9167cc0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1642435
Auto-Submit: François Degros <fdegros@chromium.org>
Commit-Queue: Luciano Pacheco <lucmult@chromium.org>
Reviewed-by: default avatarLuciano Pacheco <lucmult@chromium.org>
Cr-Commit-Position: refs/heads/master@{#665835}
parent a04c8fd4
......@@ -2,70 +2,70 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @param {!cr.ui.MenuButton} sortButton
* @param {!FilesToggleRipple} toggleRipple
* @param {!FileListModel} fileListModel
* @constructor
* @struct
*/
function SortMenuController(sortButton, toggleRipple, fileListModel) {
/** @private {!FilesToggleRipple} */
this.toggleRipple_ = toggleRipple;
class SortMenuController {
/**
* @param {!cr.ui.MenuButton} sortButton
* @param {!FilesToggleRipple} toggleRipple
* @param {!FileListModel} fileListModel
*/
constructor(sortButton, toggleRipple, fileListModel) {
/** @private @const {!FilesToggleRipple} */
this.toggleRipple_ = toggleRipple;
/** @private {!FileListModel} */
this.fileListModel_ = fileListModel;
/** @private @const {!FileListModel} */
this.fileListModel_ = fileListModel;
/** @private {!HTMLElement} */
this.sortByNameButton_ =
queryRequiredElement('#sort-menu-sort-by-name', sortButton.menu);
/** @private {!HTMLElement} */
this.sortBySizeButton_ =
queryRequiredElement('#sort-menu-sort-by-size', sortButton.menu);
/** @private {!HTMLElement} */
this.sortByTypeButton_ =
queryRequiredElement('#sort-menu-sort-by-type', sortButton.menu);
/** @private {!HTMLElement} */
this.sortByDateButton_ =
queryRequiredElement('#sort-menu-sort-by-date', sortButton.menu);
/** @private @const {!HTMLElement} */
this.sortByNameButton_ =
queryRequiredElement('#sort-menu-sort-by-name', sortButton.menu);
/** @private @const {!HTMLElement} */
this.sortBySizeButton_ =
queryRequiredElement('#sort-menu-sort-by-size', sortButton.menu);
/** @private @const {!HTMLElement} */
this.sortByTypeButton_ =
queryRequiredElement('#sort-menu-sort-by-type', sortButton.menu);
/** @private @const {!HTMLElement} */
this.sortByDateButton_ =
queryRequiredElement('#sort-menu-sort-by-date', sortButton.menu);
sortButton.addEventListener('menushow', this.updateCheckmark_.bind(this));
sortButton.addEventListener('menuhide', this.onHideSortMenu_.bind(this));
}
sortButton.addEventListener('menushow', this.updateCheckmark_.bind(this));
sortButton.addEventListener('menuhide', this.onHideSortMenu_.bind(this));
}
/**
* Update checkmarks for each sort options.
* @private
*/
SortMenuController.prototype.updateCheckmark_ = function() {
this.toggleRipple_.activated = true;
const sortField = this.fileListModel_.sortStatus.field;
/**
* Update checkmarks for each sort options.
* @private
*/
updateCheckmark_() {
this.toggleRipple_.activated = true;
const sortField = this.fileListModel_.sortStatus.field;
this.setCheckStatus_(this.sortByNameButton_, sortField === 'name');
this.setCheckStatus_(this.sortBySizeButton_, sortField === 'size');
this.setCheckStatus_(this.sortByTypeButton_, sortField === 'type');
this.setCheckStatus_(
this.sortByDateButton_, sortField === 'modificationTime');
};
this.setCheckStatus_(this.sortByNameButton_, sortField === 'name');
this.setCheckStatus_(this.sortBySizeButton_, sortField === 'size');
this.setCheckStatus_(this.sortByTypeButton_, sortField === 'type');
this.setCheckStatus_(
this.sortByDateButton_, sortField === 'modificationTime');
}
/**
* Handle hide event of sort menu button.
* @private
*/
SortMenuController.prototype.onHideSortMenu_ = function() {
this.toggleRipple_.activated = false;
};
/**
* Handle hide event of sort menu button.
* @private
*/
onHideSortMenu_() {
this.toggleRipple_.activated = false;
}
/**
* Set attribute 'checked' for the menu item.
* @param {!HTMLElement} menuItem
* @param {boolean} checked True if the item should have 'checked' attribute.
* @private
*/
SortMenuController.prototype.setCheckStatus_ = (menuItem, checked) => {
if (checked) {
menuItem.setAttribute('checked', '');
} else {
menuItem.removeAttribute('checked');
/**
* Set attribute 'checked' for the menu item.
* @param {!HTMLElement} menuItem
* @param {boolean} checked True if the item should have 'checked' attribute.
* @private
*/
setCheckStatus_(menuItem, checked) {
if (checked) {
menuItem.setAttribute('checked', '');
} else {
menuItem.removeAttribute('checked');
}
}
};
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment