blob: 3dd19e3f6b9d480283f20517e25dd43daab76621 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
Polymer({
is: 'bookmarks-toolbar',
behaviors: [
bookmarks.StoreClient,
],
properties: {
sidebarWidth: {
type: String,
observer: 'onSidebarWidthChanged_',
},
showSelectionOverlay: {
type: Boolean,
computed: 'shouldShowSelectionOverlay_(selectedItems_, globalCanEdit_)',
readOnly: true,
},
/** @private */
narrow_: {
type: Boolean,
reflectToAttribute: true,
},
/** @private */
searchTerm_: {
type: String,
observer: 'onSearchTermChanged_',
},
/** @private {!Set<string>} */
selectedItems_: Object,
/** @private */
globalCanEdit_: Boolean,
},
attached: function() {
this.watch('searchTerm_', function(state) {
return state.search.term;
});
this.watch('selectedItems_', function(state) {
return state.selection.items;
});
this.watch('globalCanEdit_', function(state) {
return state.prefs.canEdit;
});
this.updateFromStore();
},
/** @return {CrToolbarSearchFieldElement} */
get searchField() {
return /** @type {CrToolbarElement} */ (this.$$('cr-toolbar'))
.getSearchField();
},
/**
* @param {Event} e
* @private
*/
onMenuButtonOpenTap_: function(e) {
this.fire('open-command-menu', {
targetElement: e.target,
source: MenuSource.TOOLBAR,
});
},
/** @private */
onDeleteSelectionTap_: function() {
const selection = this.selectedItems_;
const commandManager = bookmarks.CommandManager.getInstance();
assert(commandManager.canExecute(Command.DELETE, selection));
commandManager.handle(Command.DELETE, selection);
},
/** @private */
onClearSelectionTap_: function() {
this.dispatch(bookmarks.actions.deselectItems());
},
/**
* @param {!CustomEvent<string>} e
* @private
*/
onSearchChanged_: function(e) {
if (e.detail != this.searchTerm_) {
this.dispatch(bookmarks.actions.setSearchTerm(e.detail));
}
},
/** @private */
onSidebarWidthChanged_: function() {
this.style.setProperty('--sidebar-width', this.sidebarWidth);
},
/** @private */
onSearchTermChanged_: function() {
this.searchField.setValue(this.searchTerm_ || '');
},
/**
* @return {boolean}
* @private
*/
shouldShowSelectionOverlay_: function() {
return this.selectedItems_.size > 1 && this.globalCanEdit_;
},
/**
* @return {boolean}
* @private
*/
canDeleteSelection_: function() {
return this.showSelectionOverlay &&
bookmarks.CommandManager.getInstance().canExecute(
Command.DELETE, this.selectedItems_);
},
/**
* @return {string}
* @private
*/
getItemsSelectedString_: function() {
return loadTimeData.getStringF('itemsSelected', this.selectedItems_.size);
},
});