app/components/search-input.js
import Component from '@ember/component';
import { get, set } from '@ember/object';
import { invokeAction } from 'ember-invoke-action';
import { task, timeout } from 'ember-concurrency';
export default Component.extend({
delay: 250,
dirtyText: undefined,
showIcon: true,
didReceiveAttrs() {
this._super(...arguments);
set(this, 'dirtyText', get(this, 'text'));
},
updateTask: task(function* (value) {
set(this, 'dirtyText', value);
yield timeout(get(this, 'delay'));
invokeAction(this, 'update', value);
}).restartable()
});