UNPKG

aurelia-bootstrap

Version:
75 lines (60 loc) 2.19 kB
/* */ define(['exports', 'aurelia-templating', 'aurelia-binding', 'aurelia-dependency-injection', 'aurelia-task-queue', 'aurelia-pal'], function (exports, _aureliaTemplating, _aureliaBinding, _aureliaDependencyInjection, _aureliaTaskQueue, _aureliaPal) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Focus = undefined; var _dec, _dec2, _class; var Focus = exports.Focus = (_dec = (0, _aureliaTemplating.customAttribute)('focus', _aureliaBinding.bindingMode.twoWay), _dec2 = (0, _aureliaDependencyInjection.inject)(_aureliaPal.DOM.Element, _aureliaTaskQueue.TaskQueue), _dec(_class = _dec2(_class = function () { function Focus(element, taskQueue) { var _this = this; this.element = element; this.taskQueue = taskQueue; this.isAttached = false; this.needsApply = false; this.focusListener = function (e) { _this.value = true; }; this.blurListener = function (e) { if (_aureliaPal.DOM.activeElement !== _this.element) { _this.value = false; } }; } Focus.prototype.valueChanged = function valueChanged(newValue) { if (this.isAttached) { this._apply(); } else { this.needsApply = true; } }; Focus.prototype._apply = function _apply() { var _this2 = this; if (this.value) { this.taskQueue.queueMicroTask(function () { if (_this2.value) { _this2.element.focus(); } }); } else { this.element.blur(); } }; Focus.prototype.attached = function attached() { this.isAttached = true; if (this.needsApply) { this.needsApply = false; this._apply(); } this.element.addEventListener('focus', this.focusListener); this.element.addEventListener('blur', this.blurListener); }; Focus.prototype.detached = function detached() { this.isAttached = false; this.element.removeEventListener('focus', this.focusListener); this.element.removeEventListener('blur', this.blurListener); }; return Focus; }()) || _class) || _class); });