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

Side by Side 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, 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 Polymer({ 5 Polymer({
6 is: 'bookmarks-folder-node', 6 is: 'bookmarks-folder-node',
7 7
8 behaviors: [
9 bookmarks.StoreClient,
10 ],
11
8 properties: { 12 properties: {
9 /** @type {BookmarkTreeNode} */ 13 itemId: {
14 type: String,
15 observer: 'updateFromStore',
16 },
17
18 /** @type {BookmarkNode} */
10 item: Object, 19 item: Object,
11 20
21 isClosed: Boolean,
22
23 selectedFolder: String,
24
12 isSelectedFolder: { 25 isSelectedFolder: {
13 type: Boolean, 26 type: Boolean,
14 value: false, 27 value: false,
15 reflectToAttribute: true, 28 reflectToAttribute: true,
29 computed: 'computeIsSelected_(itemId, selectedFolder)'
16 }, 30 },
17 }, 31 },
18 32
33 attached: function() {
34 this.observe('item', function(state) {
35 return state.nodes[this.itemId];
36 }.bind(this));
37 this.observe('isClosed', function(state) {
38 return !!state.closedFolders[this.itemId];
39 }.bind(this));
40 this.observe('selectedFolder', function(state) {
41 return state.selectedFolder;
42 });
43
44 this.updateFromStore();
45 },
46
19 /** 47 /**
20 * @private 48 * @private
21 * @return {string} 49 * @return {string}
22 */ 50 */
23 getFolderIcon_: function() { 51 getFolderIcon_: function() {
24 return this.isSelectedFolder ? 'bookmarks:folder-open' : 'cr:folder'; 52 return this.isSelectedFolder ? 'bookmarks:folder-open' : 'cr:folder';
25 }, 53 },
26 54
27 /** 55 /**
28 * @private 56 * @private
29 * @return {string} 57 * @return {string}
30 */ 58 */
31 getArrowIcon_: function() { 59 getArrowIcon_: function() {
32 return this.item.isOpen ? 'cr:arrow-drop-up' : 'cr:arrow-drop-down'; 60 return this.isClosed ? 'cr:arrow-drop-down' : 'cr:arrow-drop-up';
33 }, 61 },
34 62
35 /** @private */ 63 /** @private */
36 selectFolder_: function() { 64 selectFolder_: function() {
37 this.fire('selected-folder-changed', this.item.id); 65 this.dispatch(bookmarks.actions.selectFolder(this.item.id));
38 }, 66 },
39 67
40 /** 68 /**
41 * Occurs when the drop down arrow is tapped. 69 * Occurs when the drop down arrow is tapped.
42 * @private 70 * @private
43 */ 71 */
44 toggleFolder_: function() { 72 toggleFolder_: function() {
45 this.fire('folder-open-changed', { 73 this.dispatch(
46 id: this.item.id, 74 bookmarks.actions.changeFolderOpen(this.item.id, this.isClosed));
47 open: !this.item.isOpen, 75 },
48 }); 76
77 computeIsSelected_: function(itemId, selectedFolder) {
78 return itemId == selectedFolder;
49 }, 79 },
50 80
51 /** 81 /**
52 * @private 82 * @private
53 * @return {boolean} 83 * @return {boolean}
54 */ 84 */
55 hasChildFolder_: function() { 85 hasChildFolder_: function() {
56 for (var i = 0; i < this.item.children.length; i++) { 86 for (var i = 0; i < this.item.children.length; i++) {
57 if (!this.item.children[i].url) 87 var child = this.getState().nodes[this.item.children[i]];
88 if (!child.url)
58 return true; 89 return true;
59 } 90 }
60 return false; 91 return false;
61 }, 92 },
62 93
63 /** 94 /**
64 * @param {BookmarkTreeNode} item 95 * @param {string} itemId
65 * @private 96 * @private
66 * @return {boolean} 97 * @return {boolean}
67 */ 98 */
68 isFolder_: function(item) { 99 isFolder_: function(itemId) {
69 return !item.url; 100 return !this.getState().nodes[itemId].url;
70 } 101 }
71 }); 102 });
OLDNEW
« 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