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

Unified Diff: chrome/browser/resources/md_bookmarks/folder_node.js

Issue 2735953002: MD Bookmarks: Integrate new data store with UI elements (Closed)
Patch Set: calamity@ review Created 3 years, 9 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/md_bookmarks/folder_node.js
diff --git a/chrome/browser/resources/md_bookmarks/folder_node.js b/chrome/browser/resources/md_bookmarks/folder_node.js
index 6793a5e06df6f6ecab0eb68d9c40f260c0c52cf2..b88183d0f1a61dbc75a4212b6403d92ba52908cd 100644
--- a/chrome/browser/resources/md_bookmarks/folder_node.js
+++ b/chrome/browser/resources/md_bookmarks/folder_node.js
@@ -5,23 +5,54 @@
Polymer({
is: 'bookmarks-folder-node',
+ behaviors: [
+ bookmarks.StoreClient,
+ ],
+
properties: {
- /** @type {BookmarkTreeNode} */
- item: Object,
+ itemId: {
+ type: String,
+ observer: 'updateFromStore',
+ },
+
+ /** @type {BookmarkNode} */
+ item_: Object,
+
+ /** @private */
+ isClosed_: Boolean,
- isSelectedFolder: {
+ /** @private */
+ selectedFolder_: String,
+
+ /** @private */
+ isSelectedFolder_: {
type: Boolean,
value: false,
reflectToAttribute: true,
+ computed: 'computeIsSelected_(itemId, selectedFolder_)'
},
},
+ attached: function() {
+ this.watch('item_', function(state) {
+ return state.nodes[this.itemId];
+ }.bind(this));
+ this.watch('isClosed_', function(state) {
+ return !!state.closedFolders[this.itemId];
+ }.bind(this));
+ this.watch('selectedFolder_', function(state) {
+ return state.selectedFolder;
+ });
+
+ this.updateFromStore();
+ },
+
/**
* @private
* @return {string}
*/
getFolderIcon_: function() {
- return this.isSelectedFolder ? 'bookmarks:folder-open' : 'cr:folder';
+ return this.isSelectedFolder_ ? 'bookmarks:folder-open' : 'cr:folder';
},
/**
@@ -29,12 +60,12 @@ Polymer({
* @return {string}
*/
getArrowIcon_: function() {
- return this.item.isOpen ? 'cr:arrow-drop-up' : 'cr:arrow-drop-down';
+ return this.isClosed_ ? 'cr:arrow-drop-down' : 'cr:arrow-drop-up';
},
/** @private */
selectFolder_: function() {
- this.fire('selected-folder-changed', this.item.id);
+ this.dispatch(bookmarks.actions.selectFolder(this.item_.id));
},
/**
@@ -42,10 +73,18 @@ Polymer({
* @private
*/
toggleFolder_: function() {
- this.fire('folder-open-changed', {
- id: this.item.id,
- open: !this.item.isOpen,
- });
+ this.dispatch(
+ bookmarks.actions.changeFolderOpen(this.item_.id, this.isClosed_));
+ },
+
+ /**
+ * @param {string} itemId
+ * @param {string} selectedFolder
+ * @return {boolean}
+ * @private
+ */
+ computeIsSelected_: function(itemId, selectedFolder) {
+ return itemId == selectedFolder;
},
/**
@@ -53,19 +92,19 @@ Polymer({
* @return {boolean}
*/
hasChildFolder_: function() {
- for (var i = 0; i < this.item.children.length; i++) {
- if (!this.item.children[i].url)
+ for (var i = 0; i < this.item_.children.length; i++) {
+ if (this.isFolder_(this.item_.children[i]))
return true;
}
return false;
},
/**
- * @param {BookmarkTreeNode} item
+ * @param {string} itemId
* @private
* @return {boolean}
*/
- isFolder_: function(item) {
- return !item.url;
+ isFolder_: function(itemId) {
+ return !this.getState().nodes[itemId].url;
}
});
« no previous file with comments | « chrome/browser/resources/md_bookmarks/folder_node.html ('k') | chrome/browser/resources/md_bookmarks/item.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698