31 lines
864 B
JavaScript
31 lines
864 B
JavaScript
import { schedule } from '@ember/runloop';
|
|
import { on } from '@ember/object/evented';
|
|
import Mixin from '@ember/object/mixin';
|
|
|
|
export default Mixin.create({
|
|
// selector passed to `this.$()` to find the element to focus
|
|
// defaults to `'input'`
|
|
focusOnInsertSelector: null,
|
|
shouldFocus: true,
|
|
|
|
// uses Ember.on so that we don't have to worry about calling _super if
|
|
// didInsertElement is overridden
|
|
focusOnInsert: on('didInsertElement', function() {
|
|
schedule('afterRender', this, 'focusOnInsertFocus');
|
|
}),
|
|
|
|
focusOnInsertFocus() {
|
|
if (this.get('shouldFocus') === false) {
|
|
return;
|
|
}
|
|
this.forceFocus();
|
|
},
|
|
|
|
forceFocus() {
|
|
var $targ = this.element.querySelectorAll(this.get('focusOnInsertSelector') || 'input[type="text"]')[0];
|
|
if ($targ && $targ !== document.activeElement) {
|
|
$targ.focus();
|
|
}
|
|
},
|
|
});
|