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

Side by Side Diff: chrome/browser/resources/options/intents_list.js

Issue 8608007: cr/ui/list.js: Support rows with variable heights. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Omit the custom lead item height Created 9 years 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // TODO(gbillock): refactor this together with CookiesList once we have 5 // TODO(gbillock): refactor this together with CookiesList once we have
6 // a better sense from UX design what it'll look like and so what'll be shared. 6 // a better sense from UX design what it'll look like and so what'll be shared.
7 cr.define('options', function() { 7 cr.define('options', function() {
8 const DeletableItemList = options.DeletableItemList; 8 const DeletableItemList = options.DeletableItemList;
9 const DeletableItem = options.DeletableItem; 9 const DeletableItem = options.DeletableItem;
10 const ArrayDataModel = cr.ui.ArrayDataModel; 10 const ArrayDataModel = cr.ui.ArrayDataModel;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 if (expanded) { 108 if (expanded) {
109 var oldExpanded = this.list.expandedItem; 109 var oldExpanded = this.list.expandedItem;
110 this.list.expandedItem = this; 110 this.list.expandedItem = this;
111 this.updateItems_(); 111 this.updateItems_();
112 if (oldExpanded) 112 if (oldExpanded)
113 oldExpanded.expanded = false; 113 oldExpanded.expanded = false;
114 this.classList.add('show-items'); 114 this.classList.add('show-items');
115 this.dataChild.hidden = true; 115 this.dataChild.hidden = true;
116 } else { 116 } else {
117 if (this.list.expandedItem == this) { 117 if (this.list.expandedItem == this) {
118 this.list.leadItemHeight = 0;
119 this.list.expandedItem = null; 118 this.list.expandedItem = null;
120 } 119 }
121 this.style.height = ''; 120 this.style.height = '';
122 this.itemsChild.style.height = ''; 121 this.itemsChild.style.height = '';
123 this.classList.remove('show-items'); 122 this.classList.remove('show-items');
124 this.dataChild.hidden = false; 123 this.dataChild.hidden = false;
125 } 124 }
126 }, 125 },
127 126
128 /** 127 /**
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 var itemsHeight = getItemHeight(this.itemsChild); 161 var itemsHeight = getItemHeight(this.itemsChild);
163 var fixedHeight = getItemHeight(this) + itemsHeight - this.itemsHeight_; 162 var fixedHeight = getItemHeight(this) + itemsHeight - this.itemsHeight_;
164 this.itemsChild.style.height = this.itemsHeight_ + 'px'; 163 this.itemsChild.style.height = this.itemsHeight_ + 'px';
165 // Force relayout before enabling animation, so that if we have 164 // Force relayout before enabling animation, so that if we have
166 // changed things since the last layout, they will not be animated 165 // changed things since the last layout, they will not be animated
167 // during subsequent layouts. 166 // during subsequent layouts.
168 this.itemsChild.offsetHeight; 167 this.itemsChild.offsetHeight;
169 this.classList.remove('measure-items'); 168 this.classList.remove('measure-items');
170 this.itemsChild.style.height = itemsHeight + 'px'; 169 this.itemsChild.style.height = itemsHeight + 'px';
171 this.style.height = fixedHeight + 'px'; 170 this.style.height = fixedHeight + 'px';
172 if (this.expanded)
173 this.list.leadItemHeight = fixedHeight;
174 }, 171 },
175 172
176 /** 173 /**
177 * Updates the origin summary to reflect changes in its items. 174 * Updates the origin summary to reflect changes in its items.
178 * Both IntentsListItem and IntentsTreeNode implement this API. 175 * Both IntentsListItem and IntentsTreeNode implement this API.
179 * This implementation scans the descendants to update the text. 176 * This implementation scans the descendants to update the text.
180 */ 177 */
181 updateOrigin: function() { 178 updateOrigin: function() {
182 var text = ''; 179 var text = '';
183 for (var i = 0; i < this.origin.children.length; ++i) { 180 for (var i = 0; i < this.origin.children.length; ++i) {
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 decorate: function() { 487 decorate: function() {
491 DeletableItemList.prototype.decorate.call(this); 488 DeletableItemList.prototype.decorate.call(this);
492 this.classList.add('intents-list'); 489 this.classList.add('intents-list');
493 this.data_ = []; 490 this.data_ = [];
494 this.dataModel = new ArrayDataModel(this.data_); 491 this.dataModel = new ArrayDataModel(this.data_);
495 this.addEventListener('keydown', this.handleKeyLeftRight_.bind(this)); 492 this.addEventListener('keydown', this.handleKeyLeftRight_.bind(this));
496 var sm = new ListSingleSelectionModel(); 493 var sm = new ListSingleSelectionModel();
497 sm.addEventListener('change', this.cookieSelectionChange_.bind(this)); 494 sm.addEventListener('change', this.cookieSelectionChange_.bind(this));
498 sm.addEventListener('leadIndexChange', this.cookieLeadChange_.bind(this)); 495 sm.addEventListener('leadIndexChange', this.cookieLeadChange_.bind(this));
499 this.selectionModel = sm; 496 this.selectionModel = sm;
497 this.fixedHeight = false;
500 }, 498 },
501 499
502 /** 500 /**
503 * Handles key down events and looks for left and right arrows, then 501 * Handles key down events and looks for left and right arrows, then
504 * dispatches to the currently expanded item, if any. 502 * dispatches to the currently expanded item, if any.
505 * @param {Event} e The keydown event. 503 * @param {Event} e The keydown event.
506 * @private 504 * @private
507 */ 505 */
508 handleKeyLeftRight_: function(e) { 506 handleKeyLeftRight_: function(e) {
509 var id = e.keyIdentifier; 507 var id = e.keyIdentifier;
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 parent.clear(); 698 parent.clear();
701 this.addByParent_(parent, 0, children); 699 this.addByParent_(parent, 0, children);
702 parent.endBatchUpdates(); 700 parent.endBatchUpdates();
703 }, 701 },
704 }; 702 };
705 703
706 return { 704 return {
707 IntentsList: IntentsList 705 IntentsList: IntentsList
708 }; 706 };
709 }); 707 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/options/cookies_list.js ('k') | chrome/browser/resources/shared/js/cr/ui/grid.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698