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

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

Issue 2869273011: [MD Bookmarks] Convert bookmark list to iron-list. (Closed)
Patch Set: address comments Created 3 years, 7 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
« no previous file with comments | « chrome/browser/resources/md_bookmarks/list.html ('k') | chrome/test/data/webui/md_bookmarks/list_test.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/md_bookmarks/list.js
diff --git a/chrome/browser/resources/md_bookmarks/list.js b/chrome/browser/resources/md_bookmarks/list.js
index 365487a55254e8aa6b0366b8384f00ed68f0fa64..386eb5c018670ce851f5d5185434d31023c04e39 100644
--- a/chrome/browser/resources/md_bookmarks/list.js
+++ b/chrome/browser/resources/md_bookmarks/list.js
@@ -10,7 +10,7 @@ Polymer({
],
properties: {
- /** @private {Array<string>} */
+ /** @private {Array<{id: string}>} */
displayedList_: {
type: Array,
value: function() {
@@ -20,6 +20,12 @@ Polymer({
},
},
+ /** @private {Array<string>} */
+ displayedIds_: {
+ type: Array,
+ observer: 'onDisplayedIdsChanged_',
+ },
+
/** @private */
searchTerm_: String,
},
@@ -29,7 +35,10 @@ Polymer({
},
attached: function() {
- this.watch('displayedList_', function(state) {
+ var list = /** @type {IronListElement} */ (this.$.bookmarksCard);
+ list.scrollTarget = this;
+
+ this.watch('displayedIds_', function(state) {
return bookmarks.util.getDisplayedList(state);
});
this.watch('searchTerm_', function(state) {
@@ -38,10 +47,39 @@ Polymer({
this.updateFromStore();
},
+ /** @return {HTMLElement} */
getDropTarget: function() {
return this.$.message;
},
+ /**
+ * Updates `displayedList_` using splices to be equivalent to `newValue`. This
+ * allows the iron-list to delete sublists of items which preserves scroll and
+ * focus on incremental update.
tsergeant 2017/05/17 03:43:59 I think you should also comment somewhere (here or
calamity 2017/05/17 05:33:53 Added to displayedList_ above.
tsergeant 2017/05/17 07:05:38 Great, thanks
+ * @param {Array<string>} newValue
+ * @param {Array<string>} oldValue
+ */
+ onDisplayedIdsChanged_: function(newValue, oldValue) {
+ if (!oldValue) {
+ this.displayedList_ = this.displayedIds_.map(function(id) {
+ return {id: id};
+ });
+ } else {
+ var splices = Polymer.ArraySplice.calculateSplices(newValue, oldValue);
+ splices.forEach(function(splice) {
+ // TODO(calamity): Could use notifySplices to improve performance here.
+ var additions =
+ newValue.slice(splice.index, splice.index + splice.addedCount)
+ .map(function(id) {
+ return {id: id};
+ });
+ this.splice.apply(this, [
+ 'displayedList_', splice.index, splice.removed.length
+ ].concat(additions));
+ }.bind(this));
+ }
+ },
+
/** @private */
emptyListMessage_: function() {
var emptyListMessage = this.searchTerm_ ? 'noSearchResults' : 'emptyList';
« no previous file with comments | « chrome/browser/resources/md_bookmarks/list.html ('k') | chrome/test/data/webui/md_bookmarks/list_test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698