aurelia-kendoui-bridge
Version:
A set of Telerik KendoUI wrappers for Aurelia allowing developers to easily use KendoUI components in their Aurelia application.
60 lines (44 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NotifyBindingBehavior = undefined;
var _dec, _class;
var _aureliaBinding = require('aurelia-binding');
var _aureliaDependencyInjection = require('aurelia-dependency-injection');
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var NotifyBindingBehavior = exports.NotifyBindingBehavior = (_dec = (0, _aureliaDependencyInjection.inject)(_aureliaBinding.EventManager), _dec(_class = function () {
function NotifyBindingBehavior(eventManager) {
_classCallCheck(this, NotifyBindingBehavior);
this.eventManager = eventManager;
}
NotifyBindingBehavior.prototype.bind = function bind(binding, scope, target, fieldName) {
if (!binding.updateSource) return;
var targetObserver = binding.observerLocator.getObserver(binding.target, binding.targetProperty);
binding.targetObserver = targetObserver;
targetObserver.originalHandler = binding.targetObserver.handler;
var handler = this.eventManager.createElementHandler(['blur']);
targetObserver.handler = handler;
var observable = target || binding.source.bindingContext;
var field = fieldName || binding.sourceExpression.expression.name;
var intercept = binding.updateSource;
binding['intercepted-updateSource'] = intercept;
binding.updateSource = function (value) {
if (observable.set && observable.trigger) {
setTimeout(function () {
return observable.trigger.call(observable, 'change', { field: field });
}, 100);
if (observable.dirty === false) {
observable.dirty = true;
}
}
return intercept.call(binding, value);
};
};
NotifyBindingBehavior.prototype.unbind = function unbind(binding, scope) {
if (!binding['intercepted-updateSource']) return;
binding.updateSource = binding['intercepted-updateSource'];
binding['intercepted-updateSource'] = null;
};
return NotifyBindingBehavior;
}()) || _class);