| 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;
|
| }
|
| });
|
|
|