46 lines
1.1 KiB
Plaintext
46 lines
1.1 KiB
Plaintext
define([
|
|
'jquery'
|
|
], function ($) {
|
|
function EventRelay () { }
|
|
|
|
EventRelay.prototype.bind = function (decorated, container, $container) {
|
|
var self = this;
|
|
var relayEvents = [
|
|
'open', 'opening',
|
|
'close', 'closing',
|
|
'select', 'selecting',
|
|
'unselect', 'unselecting'
|
|
];
|
|
|
|
var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];
|
|
|
|
decorated.call(this, container, $container);
|
|
|
|
container.on('*', function (name, params) {
|
|
// Ignore events that should not be relayed
|
|
if ($.inArray(name, relayEvents) === -1) {
|
|
return;
|
|
}
|
|
|
|
// The parameters should always be an object
|
|
params = params || {};
|
|
|
|
// Generate the jQuery event for the Select2 event
|
|
var evt = $.Event('select2:' + name, {
|
|
params: params
|
|
});
|
|
|
|
self.$element.trigger(evt);
|
|
|
|
// Only handle preventable events if it was one
|
|
if ($.inArray(name, preventableEvents) === -1) {
|
|
return;
|
|
}
|
|
|
|
params.prevented = evt.isDefaultPrevented();
|
|
});
|
|
};
|
|
|
|
return EventRelay;
|
|
});
|