'use strict'; const events = require('../events.js'); const misc = require('../util/misc.js'); const search = require('../util/search.js'); const views = require('../util/views.js'); const PoolAutoCompleteControl = require('../controls/pool_auto_complete_control.js'); const template = views.getTemplate('pools-header'); class PoolsHeaderView extends events.EventTarget { constructor(ctx) { super(); this._hostNode = ctx.hostNode; views.replaceContent(this._hostNode, template(ctx)); if (this._queryInputNode) { this._autoCompleteControl = new PoolAutoCompleteControl( this._queryInputNode, { confirm: pool => this._autoCompleteControl.replaceSelectedText( misc.escapeSearchTerm(pool.names[0]), true), }); } search.searchInputNodeFocusHelper(this._queryInputNode); this._formNode.addEventListener('submit', e => this._evtSubmit(e)); } get _formNode() { return this._hostNode.querySelector('form'); } get _queryInputNode() { return this._hostNode.querySelector('[name=search-text]'); } _evtSubmit(e) { e.preventDefault(); this._queryInputNode.blur(); this.dispatchEvent(new CustomEvent('navigate', {detail: {parameters: { query: this._queryInputNode.value, page: 1, }}})); } } module.exports = PoolsHeaderView;