Index: chrome/browser/resources/options/autofill_options_list.js |
=================================================================== |
--- chrome/browser/resources/options/autofill_options_list.js (revision 84868) |
+++ chrome/browser/resources/options/autofill_options_list.js (working copy) |
@@ -1,382 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-cr.define('options.autofillOptions', function() { |
- const DeletableItem = options.DeletableItem; |
- const DeletableItemList = options.DeletableItemList; |
- const InlineEditableItem = options.InlineEditableItem; |
- const InlineEditableItemList = options.InlineEditableItemList; |
- |
- /** |
- * Creates a new address list item. |
- * @param {Array} entry An array of the form [guid, label]. |
- * @constructor |
- * @extends {options.DeletableItem} |
- */ |
- function AddressListItem(entry) { |
- var el = cr.doc.createElement('div'); |
- el.guid = entry[0]; |
- el.label = entry[1]; |
- el.__proto__ = AddressListItem.prototype; |
- el.decorate(); |
- |
- return el; |
- } |
- |
- AddressListItem.prototype = { |
- __proto__: DeletableItem.prototype, |
- |
- /** @inheritDoc */ |
- decorate: function() { |
- DeletableItem.prototype.decorate.call(this); |
- |
- // The stored label. |
- var label = this.ownerDocument.createElement('div'); |
- label.className = 'autofill-list-item'; |
- label.textContent = this.label; |
- this.contentElement.appendChild(label); |
- }, |
- }; |
- |
- /** |
- * Creates a new credit card list item. |
- * @param {Array} entry An array of the form [guid, label, icon]. |
- * @constructor |
- * @extends {options.DeletableItem} |
- */ |
- function CreditCardListItem(entry) { |
- var el = cr.doc.createElement('div'); |
- el.guid = entry[0]; |
- el.label = entry[1]; |
- el.icon = entry[2]; |
- el.description = entry[3]; |
- el.__proto__ = CreditCardListItem.prototype; |
- el.decorate(); |
- |
- return el; |
- } |
- |
- CreditCardListItem.prototype = { |
- __proto__: DeletableItem.prototype, |
- |
- /** @inheritDoc */ |
- decorate: function() { |
- DeletableItem.prototype.decorate.call(this); |
- |
- // The stored label. |
- var label = this.ownerDocument.createElement('div'); |
- label.className = 'autofill-list-item'; |
- label.textContent = this.label; |
- this.contentElement.appendChild(label); |
- |
- // The credit card icon. |
- var icon = this.ownerDocument.createElement('image'); |
- icon.src = this.icon; |
- icon.alt = this.description; |
- this.contentElement.appendChild(icon); |
- }, |
- }; |
- |
- /** |
- * Creates a new value list item. |
- * @param {AutofillValuesList} list The parent list of this item. |
- * @param {String} entry A string value. |
- * @constructor |
- * @extends {options.InlineEditableItem} |
- */ |
- function ValuesListItem(list, entry) { |
- var el = cr.doc.createElement('div'); |
- el.list = list; |
- el.value = entry; |
- el.__proto__ = ValuesListItem.prototype; |
- el.decorate(); |
- |
- return el; |
- } |
- |
- ValuesListItem.prototype = { |
- __proto__: InlineEditableItem.prototype, |
- |
- /** @inheritDoc */ |
- decorate: function() { |
- InlineEditableItem.prototype.decorate.call(this); |
- |
- this.isPlaceholder = !this.value; |
- |
- // The stored value. |
- var cell = this.createEditableTextCell(this.value); |
- this.contentElement.appendChild(cell); |
- this.input = cell.querySelector('input'); |
- |
- this.addEventListener('commitedit', this.onEditCommitted_); |
- }, |
- |
- /** |
- * Called when committing an edit. |
- * @param {Event} e The end event. |
- * @private |
- */ |
- onEditCommitted_: function(e) { |
- var i = this.list.items.indexOf(this); |
- if (this.input.value == this.list.dataModel.item(i)) |
- return; |
- |
- if (this.input.value && |
- this.list.dataModel.indexOf(this.input.value) == -1) { |
- // Update with new value. |
- this.list.validateAndSave(i, 1, this.input.value); |
- } else { |
- // Reject empty values and duplicates. |
- this.list.dataModel.splice(i, 1); |
- } |
- }, |
- }; |
- |
- /** |
- * Creates a new list item for the Add New Item row, which doesn't represent |
- * an actual entry in the values list but allows the user to add new |
- * values. |
- * @param {AutofillValuesList} entry The parent list of this item. |
- * @constructor |
- * @extends {cr.ui.ValuesListItem} |
- */ |
- function ValuesAddRowListItem(list) { |
- var el = cr.doc.createElement('div'); |
- el.list = list; |
- el.__proto__ = ValuesAddRowListItem.prototype; |
- el.decorate(); |
- |
- return el; |
- } |
- |
- ValuesAddRowListItem.prototype = { |
- __proto__: ValuesListItem.prototype, |
- |
- decorate: function() { |
- ValuesListItem.prototype.decorate.call(this); |
- this.input.value = ''; |
- this.input.placeholder = this.list.getAttribute('placeholder'); |
- this.deletable = false; |
- }, |
- |
- /** |
- * Called when committing an edit. Committing a non-empty value adds it |
- * to the end of the values list, leaving this "AddRow" in place. |
- * @param {Event} e The end event. |
- * @extends {options.ValuesListItem} |
- * @private |
- */ |
- onEditCommitted_: function(e) { |
- var i = this.list.items.indexOf(this); |
- if (i < 0 || i >= this.list.dataModel.length) |
- return; |
- |
- if (this.input.value && |
- this.list.dataModel.indexOf(this.input.value) == -1) { |
- this.list.validateAndSave(i, 0, this.input.value); |
- } else { |
- this.input.value = ''; |
- this.list.dataModel.updateIndex(i); |
- } |
- }, |
- }; |
- |
- /** |
- * Create a new address list. |
- * @constructor |
- * @extends {options.DeletableItemList} |
- */ |
- var AutofillAddressList = cr.ui.define('list'); |
- |
- AutofillAddressList.prototype = { |
- __proto__: DeletableItemList.prototype, |
- |
- decorate: function() { |
- DeletableItemList.prototype.decorate.call(this); |
- |
- this.addEventListener('blur', this.onBlur_); |
- }, |
- |
- /** |
- * When the list loses focus, unselect all items in the list. |
- * @private |
- */ |
- onBlur_: function() { |
- this.selectionModel.unselectAll(); |
- }, |
- |
- /** @inheritDoc */ |
- createItem: function(entry) { |
- return new AddressListItem(entry); |
- }, |
- |
- /** @inheritDoc */ |
- activateItemAtIndex: function(index) { |
- AutofillOptions.loadAddressEditor(this.dataModel.item(index)[0]); |
- }, |
- |
- /** @inheritDoc */ |
- deleteItemAtIndex: function(index) { |
- AutofillOptions.removeAddress(this.dataModel.item(index)[0]); |
- }, |
- }; |
- |
- /** |
- * Create a new credit card list. |
- * @constructor |
- * @extends {options.DeletableItemList} |
- */ |
- var AutofillCreditCardList = cr.ui.define('list'); |
- |
- AutofillCreditCardList.prototype = { |
- __proto__: DeletableItemList.prototype, |
- |
- decorate: function() { |
- DeletableItemList.prototype.decorate.call(this); |
- |
- this.addEventListener('blur', this.onBlur_); |
- }, |
- |
- /** |
- * When the list loses focus, unselect all items in the list. |
- * @private |
- */ |
- onBlur_: function() { |
- this.selectionModel.unselectAll(); |
- }, |
- |
- /** @inheritDoc */ |
- createItem: function(entry) { |
- return new CreditCardListItem(entry); |
- }, |
- |
- /** @inheritDoc */ |
- activateItemAtIndex: function(index) { |
- AutofillOptions.loadCreditCardEditor(this.dataModel.item(index)[0]); |
- }, |
- |
- /** @inheritDoc */ |
- deleteItemAtIndex: function(index) { |
- AutofillOptions.removeCreditCard(this.dataModel.item(index)[0]); |
- }, |
- }; |
- |
- /** |
- * Create a new value list. |
- * @constructor |
- * @extends {options.InlineEditableItemList} |
- */ |
- var AutofillValuesList = cr.ui.define('list'); |
- |
- AutofillValuesList.prototype = { |
- __proto__: InlineEditableItemList.prototype, |
- |
- decorate: function() { |
- InlineEditableItemList.prototype.decorate.call(this); |
- |
- var self = this; |
- function handleBlur(e) { |
- // When the blur event happens we do not know who is getting focus so we |
- // delay this a bit until we know if the new focus node is outside the |
- // list. |
- var doc = e.target.ownerDocument; |
- window.setTimeout(function() { |
- var activeElement = doc.activeElement; |
- if (!self.contains(activeElement)) |
- self.selectionModel.unselectAll(); |
- }, 50); |
- } |
- |
- this.addEventListener('blur', handleBlur, true); |
- }, |
- |
- /** @inheritDoc */ |
- createItem: function(entry) { |
- if (entry != null) |
- return new ValuesListItem(this, entry); |
- else |
- return new ValuesAddRowListItem(this); |
- }, |
- |
- /** @inheritDoc */ |
- deleteItemAtIndex: function(index) { |
- this.dataModel.splice(index, 1); |
- }, |
- |
- /** |
- * Called when a new list item should be validated; subclasses are |
- * responsible for implementing if validation is required. |
- * @param {number} index The index of the item that was inserted or changed. |
- * @param {number} remove The number items to remove. |
- * @param {string} value The value of the item to insert. |
- */ |
- validateAndSave: function(index, remove, value) { |
- this.dataModel.splice(index, remove, value); |
- }, |
- }; |
- |
- /** |
- * Create a new value list for phone number validation. |
- * @constructor |
- * @extends {options.AutofillValuesList} |
- */ |
- var AutofillPhoneValuesList = cr.ui.define('list'); |
- |
- AutofillPhoneValuesList.prototype = { |
- __proto__: AutofillValuesList.prototype, |
- |
- decorate: function() { |
- AutofillValuesList.prototype.decorate.call(this); |
- }, |
- |
- /** @inheritDoc */ |
- validateAndSave: function(index, remove, value) { |
- var numbers = this.dataModel.slice(0, this.dataModel.length - 1); |
- numbers.splice(index, remove, value); |
- var info = new Array(); |
- info[0] = index; |
- info[1] = numbers; |
- info[2] = $('country').value; |
- chrome.send('validatePhoneNumbers', info); |
- }, |
- }; |
- |
- /** |
- * Create a new value list for fax number validation. |
- * @constructor |
- * @extends {options.AutofillValuesList} |
- */ |
- var AutofillFaxValuesList = cr.ui.define('list'); |
- |
- AutofillFaxValuesList.prototype = { |
- __proto__: AutofillValuesList.prototype, |
- |
- decorate: function() { |
- AutofillValuesList.prototype.decorate.call(this); |
- }, |
- |
- /** @inheritDoc */ |
- validateAndSave: function(index, remove, value) { |
- var numbers = this.dataModel.slice(0, this.dataModel.length - 1); |
- numbers.splice(index, remove, value); |
- var info = new Array(); |
- info[0] = index; |
- info[1] = numbers; |
- info[2] = $('country').value; |
- chrome.send('validateFaxNumbers', info); |
- }, |
- }; |
- |
- return { |
- AddressListItem: AddressListItem, |
- CreditCardListItem: CreditCardListItem, |
- ValuesListItem: ValuesListItem, |
- ValuesAddRowListItem: ValuesAddRowListItem, |
- AutofillAddressList: AutofillAddressList, |
- AutofillCreditCardList: AutofillCreditCardList, |
- AutofillValuesList: AutofillValuesList, |
- AutofillPhoneValuesList: AutofillPhoneValuesList, |
- AutofillFaxValuesList: AutofillFaxValuesList, |
- }; |
-}); |