aurelia-bootstrap
Version:
Bootstrap components written in Aurelia.
55 lines (40 loc) • 2 kB
JavaScript
/* */
define(['exports', 'aurelia-binding'], function (exports, _aureliaBinding) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.UpdateTriggerBindingBehavior = undefined;
var _class, _temp;
var eventNamesRequired = 'The updateTrigger binding behavior requires at least one event name argument: eg <input value.bind="firstName & updateTrigger:\'blur\'">';
var notApplicableMessage = 'The updateTrigger binding behavior can only be applied to two-way bindings on input/select elements.';
var UpdateTriggerBindingBehavior = exports.UpdateTriggerBindingBehavior = (_temp = _class = function () {
function UpdateTriggerBindingBehavior(eventManager) {
this.eventManager = eventManager;
}
UpdateTriggerBindingBehavior.prototype.bind = function bind(binding, source) {
for (var _len = arguments.length, events = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
events[_key - 2] = arguments[_key];
}
if (events.length === 0) {
throw new Error(eventNamesRequired);
}
if (binding.mode !== _aureliaBinding.bindingMode.twoWay) {
throw new Error(notApplicableMessage);
}
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.eventManager.createElementHandler(events);
targetObserver.handler = handler;
};
UpdateTriggerBindingBehavior.prototype.unbind = function unbind(binding, source) {
binding.targetObserver.handler = binding.targetObserver.originalHandler;
binding.targetObserver.originalHandler = null;
};
return UpdateTriggerBindingBehavior;
}(), _class.inject = [_aureliaBinding.EventManager], _temp);
});