| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 * @param {number=} maxItemsHeight | 55 * @param {number=} maxItemsHeight |
| 56 * @param {boolean=} captureEnter | 56 * @param {boolean=} captureEnter |
| 57 */ | 57 */ |
| 58 constructor(suggestBoxDelegate, maxItemsHeight, captureEnter) { | 58 constructor(suggestBoxDelegate, maxItemsHeight, captureEnter) { |
| 59 this._suggestBoxDelegate = suggestBoxDelegate; | 59 this._suggestBoxDelegate = suggestBoxDelegate; |
| 60 this._maxItemsHeight = maxItemsHeight; | 60 this._maxItemsHeight = maxItemsHeight; |
| 61 this._maybeHideBound = this._maybeHide.bind(this); | 61 this._maybeHideBound = this._maybeHide.bind(this); |
| 62 this._container = createElementWithClass('div', 'suggest-box-container'); | 62 this._container = createElementWithClass('div', 'suggest-box-container'); |
| 63 this._rowHeight = 17; | 63 this._rowHeight = 17; |
| 64 /** @type {!UI.ListControl<!UI.SuggestBox.Suggestion>} */ | 64 /** @type {!UI.ListControl<!UI.SuggestBox.Suggestion>} */ |
| 65 this._list = new UI.ListControl(this); | 65 this._list = new UI.ListControl(this, UI.ListMode.ViewportFixedItems); |
| 66 this._element = this._list.element; | 66 this._element = this._list.element; |
| 67 this._element.classList.add('suggest-box'); | 67 this._element.classList.add('suggest-box'); |
| 68 this._container.appendChild(this._element); | 68 this._container.appendChild(this._element); |
| 69 this._element.addEventListener('mousedown', this._onBoxMouseDown.bind(this),
true); | 69 this._element.addEventListener('mousedown', this._onBoxMouseDown.bind(this),
true); |
| 70 this._detailsPopup = this._container.createChild('div', 'suggest-box details
-popup monospace'); | 70 this._detailsPopup = this._container.createChild('div', 'suggest-box details
-popup monospace'); |
| 71 this._detailsPopup.classList.add('hidden'); | 71 this._detailsPopup.classList.add('hidden'); |
| 72 this._asyncDetailsCallback = null; | 72 this._asyncDetailsCallback = null; |
| 73 /** @type {!Map<!UI.SuggestBox.Suggestion, !Promise<{detail: string, descrip
tion: string}>>} */ | 73 /** @type {!Map<!UI.SuggestBox.Suggestion, !Promise<{detail: string, descrip
tion: string}>>} */ |
| 74 this._asyncDetailsPromises = new Map(); | 74 this._asyncDetailsPromises = new Map(); |
| 75 this._userInteracted = false; | 75 this._userInteracted = false; |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 this._asyncDetailsPromises.clear(); | 378 this._asyncDetailsPromises.clear(); |
| 379 if (asyncDetails) | 379 if (asyncDetails) |
| 380 this._asyncDetailsCallback = item => asyncDetails(completions.indexOf(it
em)); | 380 this._asyncDetailsCallback = item => asyncDetails(completions.indexOf(it
em)); |
| 381 else | 381 else |
| 382 this._asyncDetailsCallback = null; | 382 this._asyncDetailsCallback = null; |
| 383 this._userEnteredText = userEnteredText; | 383 this._userEnteredText = userEnteredText; |
| 384 | 384 |
| 385 this._show(); | 385 this._show(); |
| 386 this._updateBoxPosition(anchorBox, completions.length); | 386 this._updateBoxPosition(anchorBox, completions.length); |
| 387 this._updateWidth(completions); | 387 this._updateWidth(completions); |
| 388 | 388 this._list.fixedHeightChanged(); |
| 389 this._list.setHeightMode(UI.ListHeightMode.Fixed); | |
| 390 this._list.replaceAllItems(completions); | 389 this._list.replaceAllItems(completions); |
| 391 | 390 |
| 392 var highestPriorityItem = -1; | 391 var highestPriorityItem = -1; |
| 393 if (selectHighestPriority) { | 392 if (selectHighestPriority) { |
| 394 var highestPriority = -Infinity; | 393 var highestPriority = -Infinity; |
| 395 for (var i = 0; i < completions.length; i++) { | 394 for (var i = 0; i < completions.length; i++) { |
| 396 var priority = completions[i].priority || 0; | 395 var priority = completions[i].priority || 0; |
| 397 if (highestPriority < priority) { | 396 if (highestPriority < priority) { |
| 398 highestPriority = priority; | 397 highestPriority = priority; |
| 399 highestPriorityItem = i; | 398 highestPriorityItem = i; |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 this.element.style.left = containerBox.x + 'px'; | 505 this.element.style.left = containerBox.x + 'px'; |
| 507 this.element.style.top = containerBox.y + 'px'; | 506 this.element.style.top = containerBox.y + 'px'; |
| 508 this.element.style.height = containerBox.height + 'px'; | 507 this.element.style.height = containerBox.height + 'px'; |
| 509 this.element.style.width = containerBox.width + 'px'; | 508 this.element.style.width = containerBox.width + 'px'; |
| 510 } | 509 } |
| 511 | 510 |
| 512 dispose() { | 511 dispose() { |
| 513 this.element.remove(); | 512 this.element.remove(); |
| 514 } | 513 } |
| 515 }; | 514 }; |
| OLD | NEW |