ferngully-aurelia-tools
Version:
Ferngully Tools for Aurelia
60 lines • 3.13 kB
JavaScript
define(["require", "exports", "aurelia-binding"], function (require, exports, aurelia_binding_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var notApplicableMessage = 'The updateTrigger binding behavior can only be applied to two-way bindings on input/select elements.';
var updateTriggerOnKeyPressBindingBehavior = (function () {
function updateTriggerOnKeyPressBindingBehavior(eventManager) {
this.eventManager = eventManager;
}
updateTriggerOnKeyPressBindingBehavior.prototype.bind = function (binding, source) {
var keyCodes = [];
for (var _i = 2; _i < arguments.length; _i++) {
keyCodes[_i - 2] = arguments[_i];
}
if (binding.mode !== aurelia_binding_1.bindingMode.twoWay) {
throw new Error(notApplicableMessage);
}
if (keyCodes.length === 0) {
keyCodes = ["Enter"];
}
var targetObserver = binding.observerLocator.getObserver(binding.target, binding.targetProperty);
if (!targetObserver.handler) {
throw new Error(notApplicableMessage);
}
binding.targetObserver = targetObserver;
targetObserver.originalHandler = binding.targetObserver.handler;
var handler = this.createElementHandlerforKeyCodes(['keydown'], keyCodes);
targetObserver.handler = handler;
};
updateTriggerOnKeyPressBindingBehavior.prototype.unbind = function (binding, source) {
binding.targetObserver.handler = binding.targetObserver.originalHandler;
binding.targetObserver.originalHandler = null;
};
updateTriggerOnKeyPressBindingBehavior.prototype.createElementHandlerforKeyCodes = function (events, keyCodes) {
return {
subscribe: function (target, defaultBindingEventHandler) {
var checkKey = function (event) {
if (keyCodes.indexOf(event.key) !== -1) {
event.stopPropagation();
defaultBindingEventHandler(event);
return false;
}
return true;
};
events.forEach(function (changeEvent) {
target.addEventListener(changeEvent, checkKey, false);
});
return function () {
events.forEach(function (changeEvent) {
target.removeEventListener(changeEvent, checkKey);
});
};
}
};
};
updateTriggerOnKeyPressBindingBehavior.inject = [aurelia_binding_1.EventManager];
return updateTriggerOnKeyPressBindingBehavior;
}());
exports.updateTriggerOnKeyPressBindingBehavior = updateTriggerOnKeyPressBindingBehavior;
});
//# sourceMappingURL=updateTriggerOnKeyPress.js.map