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

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

Issue 7607027: Options: Two fixes for Autofill lists. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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 | Annotate | Revision Log
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 cr.define('options', function() { 5 cr.define('options', function() {
6 const DeletableItem = options.DeletableItem; 6 const DeletableItem = options.DeletableItem;
7 const DeletableItemList = options.DeletableItemList; 7 const DeletableItemList = options.DeletableItemList;
8 8
9 /** 9 /**
10 * Creates a new list item with support for inline editing. 10 * Creates a new list item with support for inline editing.
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 var focusElement = this.editClickTarget_ || this.initialFocusElement; 135 var focusElement = this.editClickTarget_ || this.initialFocusElement;
136 this.editClickTarget_ = null; 136 this.editClickTarget_ = null;
137 137
138 // When this is called in response to the selectedChange event, 138 // When this is called in response to the selectedChange event,
139 // the list grabs focus immediately afterwards. Thus we must delay 139 // the list grabs focus immediately afterwards. Thus we must delay
140 // our focus grab. 140 // our focus grab.
141 var self = this; 141 var self = this;
142 if (focusElement) { 142 if (focusElement) {
143 window.setTimeout(function() { 143 window.setTimeout(function() {
144 // Make sure we are still in edit mode by the time we execute. 144 // Make sure we are still in edit mode by the time we execute.
145 if (self.editing) { 145 if (self.editing && self.focusPlaceholder) {
146 focusElement.focus(); 146 focusElement.focus();
147 focusElement.select(); 147 focusElement.select();
148 } 148 }
149 }, 50); 149 }, 50);
150 } 150 }
151 } else { 151 } else {
152 if (!this.editCancelled_ && this.hasBeenEdited && 152 if (!this.editCancelled_ && this.hasBeenEdited &&
153 this.currentInputIsValid) { 153 this.currentInputIsValid) {
154 if (this.isPlaceholder) 154 if (this.isPlaceholder)
155 this.parentNode.focusPlaceholder = true; 155 this.parentNode.focusPlaceholder = true;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 inputEl.setAttribute('displaymode', 'edit'); 246 inputEl.setAttribute('displaymode', 'edit');
247 inputEl.staticVersion = textEl; 247 inputEl.staticVersion = textEl;
248 } else { 248 } else {
249 // At this point |this| is not attached to the parent list yet, so give 249 // At this point |this| is not attached to the parent list yet, so give
250 // a short timeout in order for the attachment to occur. 250 // a short timeout in order for the attachment to occur.
251 var self = this; 251 var self = this;
252 window.setTimeout(function() { 252 window.setTimeout(function() {
253 var list = self.parentNode; 253 var list = self.parentNode;
254 if (list && list.focusPlaceholder) { 254 if (list && list.focusPlaceholder) {
255 list.focusPlaceholder = false; 255 list.focusPlaceholder = false;
256 inputEl.focus(); 256 if (list.shouldFocusPlaceholder())
257 inputEl.focus();
257 } 258 }
258 }, 50); 259 }, 50);
259 } 260 }
260 261
261 inputEl.addEventListener('focus', this.handleFocus_.bind(this)); 262 inputEl.addEventListener('focus', this.handleFocus_.bind(this));
262 container.appendChild(inputEl); 263 container.appendChild(inputEl);
263 this.editFields_.push(inputEl); 264 this.editFields_.push(inputEl);
264 265
265 return container; 266 return container;
266 }, 267 },
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 */ 401 */
401 handleListFocusChange_: function(e) { 402 handleListFocusChange_: function(e) {
402 var leadItem = this.getListItemByIndex(this.selectionModel.leadIndex); 403 var leadItem = this.getListItemByIndex(this.selectionModel.leadIndex);
403 if (leadItem) { 404 if (leadItem) {
404 if (e.newValue) 405 if (e.newValue)
405 leadItem.updateEditState(); 406 leadItem.updateEditState();
406 else 407 else
407 leadItem.editing = false; 408 leadItem.editing = false;
408 } 409 }
409 }, 410 },
411
412 /**
413 * May be overridden by subclasses to disable focusing the placeholder.
414 * @return true if the placeholder element should be focused on edit commit.
415 */
416 shouldFocusPlaceholder: function() {
417 return true;
418 },
410 }; 419 };
411 420
412 // Export 421 // Export
413 return { 422 return {
414 InlineEditableItem: InlineEditableItem, 423 InlineEditableItem: InlineEditableItem,
415 InlineEditableItemList: InlineEditableItemList, 424 InlineEditableItemList: InlineEditableItemList,
416 }; 425 };
417 }); 426 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698