UNPKG

ferngully-aurelia-tools

Version:

Ferngully Tools for Aurelia

70 lines 3.82 kB
System.register(["aurelia-binding"], function (exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; var aurelia_binding_1, notApplicableMessage, updateTriggerOnKeyPressBindingBehavior; return { setters: [ function (aurelia_binding_1_1) { aurelia_binding_1 = aurelia_binding_1_1; } ], execute: function () { notApplicableMessage = 'The updateTrigger binding behavior can only be applied to two-way bindings on input/select elements.'; 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_1("updateTriggerOnKeyPressBindingBehavior", updateTriggerOnKeyPressBindingBehavior); } }; }); //# sourceMappingURL=updateTriggerOnKeyPress.js.map