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

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

Issue 2704983002: MD Bookmarks: Proof-of-concept reimplementation of data storage/binding layer (Closed)
Patch Set: Add doc comments Created 3 years, 10 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..cb1ea0b46cfd9703b60f3ca75eb92236ad649fce 100644
--- a/chrome/browser/resources/md_bookmarks/folder_node.js
+++ b/chrome/browser/resources/md_bookmarks/folder_node.js
@@ -5,17 +5,45 @@
Polymer({
is: 'bookmarks-folder-node',
+ behaviors: [
+ bookmarks.StoreClient,
+ ],
+
properties: {
- /** @type {BookmarkTreeNode} */
+ itemId: {
+ type: String,
+ observer: 'updateFromStore',
+ },
+
+ /** @type {BookmarkNode} */
item: Object,
+ isClosed: Boolean,
+
+ selectedFolder: String,
+
isSelectedFolder: {
type: Boolean,
value: false,
reflectToAttribute: true,
+ computed: 'computeIsSelected_(itemId, selectedFolder)'
},
},
+ attached: function() {
+ this.observe('item', function(state) {
+ return state.nodes[this.itemId];
+ }.bind(this));
+ this.observe('isClosed', function(state) {
+ return !!state.closedFolders[this.itemId];
+ }.bind(this));
+ this.observe('selectedFolder', function(state) {
+ return state.selectedFolder;
+ });
+
+ this.updateFromStore();
+ },
+
/**
* @private
* @return {string}
@@ -29,12 +57,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 +70,12 @@ 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));
+ },
+
+ computeIsSelected_: function(itemId, selectedFolder) {
+ return itemId == selectedFolder;
},
/**
@@ -54,18 +84,19 @@ Polymer({
*/
hasChildFolder_: function() {
for (var i = 0; i < this.item.children.length; i++) {
- if (!this.item.children[i].url)
+ var child = this.getState().nodes[this.item.children[i]];
+ if (!child.url)
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