Index: ui/webui/resources/cr_elements/v1_0/cr_search_field/cr_search_field.js |
diff --git a/ui/webui/resources/cr_elements/v1_0/cr_search_field/cr_search_field.js b/ui/webui/resources/cr_elements/v1_0/cr_search_field/cr_search_field.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a9e8ad8aed43538f69c5620f2f5209361d194a95 |
--- /dev/null |
+++ b/ui/webui/resources/cr_elements/v1_0/cr_search_field/cr_search_field.js |
@@ -0,0 +1,65 @@ |
+// Copyright 2015 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. |
+ |
+/** @interface */ |
+var SearchFieldDelegate = function() {}; |
+ |
+SearchFieldDelegate.prototype = { |
+ /** |
+ * @param {string} value |
+ */ |
+ onSearchTermSearch: assertNotReached, |
+}; |
+ |
+var SearchField = Polymer({ |
+ is: 'cr-search-field', |
+ |
+ properties: { |
+ showingSearch_: { |
+ type: Boolean, |
+ value: false, |
+ }, |
+ }, |
+ |
+ /** @param {SearchFieldDelegate} delegate */ |
+ setDelegate: function(delegate) { |
+ this.delegate_ = delegate; |
+ }, |
+ |
+ /** |
+ * Returns the value of the search field. |
+ * @return {string} |
+ */ |
+ getValue: function() { |
+ var searchInput = this.$$('#search-input'); |
+ return searchInput ? searchInput.value : ''; |
+ }, |
+ |
+ /** @private */ |
+ onSearchTermSearch_: function() { |
+ if (this.delegate_) |
+ this.delegate_.onSearchTermSearch(this.getValue()); |
+ }, |
+ |
+ /** @private */ |
+ onSearchTermKeydown_: function(e) { |
+ assert(this.showingSearch_); |
+ if (e.keyIdentifier == 'U+001B') // Escape. |
+ this.toggleShowingSearch_(); |
+ }, |
+ |
+ /** @private */ |
+ toggleShowingSearch_: function() { |
+ this.showingSearch_ = !this.showingSearch_; |
+ this.async(function() { |
+ var searchInput = this.$$('#search-input'); |
+ if (this.showingSearch_) { |
+ searchInput.focus(); |
+ } else { |
+ searchInput.value = ''; |
+ this.onSearchTermSearch_(); |
+ } |
+ }); |
+ }, |
+}); |