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

Unified Diff: third_party/WebKit/Source/devtools/front_end/ui/Toolbar.js

Issue 2662403002: [DevTools] Merge filter bar with the main toolbar (Closed)
Patch Set: [DevTools] Merge filter bar with the main toolbar Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/ui/Toolbar.js
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/Toolbar.js b/third_party/WebKit/Source/devtools/front_end/ui/Toolbar.js
index 08ef50bbef2df738949cd0d7ce0364edc52155df..e94ecae18a56ead408fa37321ba8917e6885521c 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui/Toolbar.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui/Toolbar.js
@@ -552,39 +552,73 @@ UI.ToolbarButton.Events = {
*/
UI.ToolbarInput = class extends UI.ToolbarItem {
/**
- * @param {string=} placeholder
+ * @param {string} placeholder
* @param {number=} growFactor
* @param {number=} shrinkFactor
+ * @param {boolean=} isSearchField
*/
- constructor(placeholder, growFactor, shrinkFactor) {
- super(createElementWithClass('input', 'toolbar-item'));
- this.element.addEventListener('input', this._onChangeCallback.bind(this), false);
+ constructor(placeholder, growFactor, shrinkFactor, isSearchField) {
+ super(createElementWithClass('div', 'toolbar-input'));
+
+ this.input = this.element.createChild('input');
+ this.input.addEventListener('focus', () => this.element.classList.add('focused'));
+ this.input.addEventListener('blur', () => this.element.classList.remove('focused'));
+ this.input.addEventListener('input', () => this._onChangeCallback(), false);
+ this._isSearchField = !!isSearchField;
if (growFactor)
this.element.style.flexGrow = growFactor;
if (shrinkFactor)
this.element.style.flexShrink = shrinkFactor;
if (placeholder)
- this.element.setAttribute('placeholder', placeholder);
- this._value = '';
+ this.input.setAttribute('placeholder', placeholder);
+
+ if (isSearchField)
+ this._setupSearchControls();
+ }
+
+ _setupSearchControls() {
+ var clearButton = this.element.createChild('div', 'toolbar-input-clear-button');
+ clearButton.appendChild(UI.Icon.create('smallicon-clear-input', 'search-cancel-button'));
+ clearButton.addEventListener('click', () => this._internalSetValue('', true));
+ this.input.addEventListener('keydown', event => this._onKeydownCallback(event));
}
/**
* @param {string} value
*/
setValue(value) {
- this._value = value;
- this.element.value = value;
+ this._internalSetValue(value, false);
+ }
+
+ /**
+ * @param {string} value
+ * @param {boolean} notify
+ */
+ _internalSetValue(value, notify) {
+ this.input.value = value;
+ if (notify)
+ this._onChangeCallback();
}
/**
* @return {string}
*/
value() {
- return this.element.value;
+ return this.input.value;
+ }
+
+ /**
+ * @param {!Event} event
+ */
+ _onKeydownCallback(event) {
+ if (this.isSearchField || !isEscKey(event) || !this.input.value)
+ return;
+ this._internalSetValue('', true);
+ event.consume(true);
}
_onChangeCallback() {
- this.dispatchEventToListeners(UI.ToolbarInput.Event.TextChanged, this.element.value);
+ this.dispatchEventToListeners(UI.ToolbarInput.Event.TextChanged, this.input.value);
}
};

Powered by Google App Engine
This is Rietveld 408576698