open-nomad/ui/app/components/search-box.js
Buck Doyle 89136cbf6a Add massaged results of class codemod
Manual interventions:
• decorators on the same line for service and controller
  injections and most computed property macros
• preserving import order when possible, both per-line
  and intra-line
• moving new imports to the bottom
• removal of classic decorator for trivial cases
• conversion of init to constructor when appropriate
2020-06-10 16:18:42 -05:00

41 lines
1,019 B
JavaScript

import { reads } from '@ember/object/computed';
import Component from '@ember/component';
import { action } from '@ember/object';
import { run } from '@ember/runloop';
import { classNames } from '@ember-decorators/component';
import classic from 'ember-classic-decorator';
@classic
@classNames('search-box', 'field', 'has-addons')
export default class SearchBox extends Component {
// Passed to the component (mutable)
searchTerm = null;
// Used as a debounce buffer
@reads('searchTerm') _searchTerm;
// Used to throttle sets to searchTerm
debounce = 150;
// A hook that's called when the search value changes
onChange() {}
@action
setSearchTerm(e) {
this.set('_searchTerm', e.target.value);
run.debounce(this, updateSearch, this.debounce);
}
@action
clear() {
this.set('_searchTerm', '');
run.debounce(this, updateSearch, this.debounce);
}
}
function updateSearch() {
const newTerm = this._searchTerm;
this.onChange(newTerm);
this.set('searchTerm', newTerm);
}