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

Side by Side Diff: ui/webui/resources/cr_elements/cr_search_field/cr_search_field.js

Issue 1613233003: MD Downloads: make Ctrl+f invoke in-page search (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dl-vulcanize
Patch Set: Created 4 years, 11 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 /** @interface */ 5 /** @interface */
6 var SearchFieldDelegate = function() {}; 6 var SearchFieldDelegate = function() {};
7 7
8 SearchFieldDelegate.prototype = { 8 SearchFieldDelegate.prototype = {
9 /** 9 /**
10 * @param {string} value 10 * @param {string} value
11 */ 11 */
12 onSearchTermSearch: assertNotReached, 12 onSearchTermSearch: assertNotReached,
13 }; 13 };
14 14
15 var SearchField = Polymer({ 15 var SearchField = Polymer({
16 is: 'cr-search-field', 16 is: 'cr-search-field',
17 17
18 properties: { 18 properties: {
19 label: { 19 label: {
20 type: String, 20 type: String,
21 value: '', 21 value: '',
22 }, 22 },
23 23
24 clearLabel: { 24 clearLabel: {
25 type: String, 25 type: String,
26 value: '', 26 value: '',
27 }, 27 },
28 28
29 showingSearch_: { 29 showingSearch: {
30 type: Boolean, 30 type: Boolean,
31 value: false, 31 value: false,
32 observer: 'showingSearchChanged_',
32 }, 33 },
33 }, 34 },
34 35
35 /** @param {SearchFieldDelegate} delegate */ 36 focus: function() {
36 setDelegate: function(delegate) { 37 this.$$('#search-input').focus();
37 this.delegate_ = delegate;
38 }, 38 },
39 39
40 /** 40 /**
41 * Returns the value of the search field. 41 * Returns the value of the search field.
42 * @return {string} 42 * @return {string}
43 */ 43 */
44 getValue: function() { 44 getValue: function() {
45 var searchInput = this.$$('#search-input'); 45 var searchInput = this.$$('#search-input');
46 return searchInput ? searchInput.value : ''; 46 return searchInput ? searchInput.value : '';
47 }, 47 },
48 48
49 /** @param {SearchFieldDelegate} delegate */
50 setDelegate: function(delegate) {
51 this.delegate_ = delegate;
52 },
53
49 /** @private */ 54 /** @private */
50 onSearchTermSearch_: function() { 55 onSearchTermSearch_: function() {
51 if (this.delegate_) 56 if (this.delegate_)
52 this.delegate_.onSearchTermSearch(this.getValue()); 57 this.delegate_.onSearchTermSearch(this.getValue());
53 }, 58 },
54 59
55 /** @private */ 60 /** @private */
56 onSearchTermKeydown_: function(e) { 61 onSearchTermKeydown_: function(e) {
57 assert(this.showingSearch_);
58 if (e.keyIdentifier == 'U+001B') // Escape. 62 if (e.keyIdentifier == 'U+001B') // Escape.
59 this.toggleShowingSearch_(); 63 this.showingSearch = false;
60 }, 64 },
61 65
62 /** @private */ 66 /** @private */
63 toggleShowingSearch_: function() { 67 showingSearchChanged_: function() {
64 this.showingSearch_ = !this.showingSearch_;
65 this.async(function() { 68 this.async(function() {
66 var searchInput = this.$$('#search-input'); 69 var searchInput = this.$$('#search-input');
67 if (this.showingSearch_) { 70
71 if (!searchInput)
72 return;
73
74 if (this.showingSearch) {
68 searchInput.focus(); 75 searchInput.focus();
Dan Beam 2016/01/21 22:14:46 ^ this is why the code was still working, but I al
michaelpg 2016/01/21 22:19:01 right. Maybe just do that in focus() though: this
69 } else { 76 } else {
70 searchInput.value = ''; 77 searchInput.value = '';
71 this.onSearchTermSearch_(); 78 this.onSearchTermSearch_();
72 } 79 }
73 }); 80 });
74 }, 81 },
82
83 /** @private */
84 toggleShowingSearch_: function() {
85 this.showingSearch = !this.showingSearch;
86 },
75 }); 87 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698