selectOnClose now properly works with closeOnSelect
Previously we hacked around the infinite loop between closeOnSelect and selectOnClose by attempting to detect what event was being triggered without knowing what event triggered it. Now we properly relay the Select2 event and the jQuery event that triggered the select or unselect This closes https://github.com/select2/select2/issues/4012
This commit is contained in:
parent
ad8447cc35
commit
481c43883e
5
src/js/select2/dropdown/closeOnSelect.js
vendored
5
src/js/select2/dropdown/closeOnSelect.js
vendored
@ -25,7 +25,10 @@ define([
|
||||
return;
|
||||
}
|
||||
|
||||
this.trigger('close', {});
|
||||
this.trigger('close', {
|
||||
originalEvent: originalEvent,
|
||||
originalSelect2Event: evt
|
||||
});
|
||||
};
|
||||
|
||||
return CloseOnSelect;
|
||||
|
16
src/js/select2/dropdown/selectOnClose.js
vendored
16
src/js/select2/dropdown/selectOnClose.js
vendored
@ -8,12 +8,22 @@ define([
|
||||
|
||||
decorated.call(this, container, $container);
|
||||
|
||||
container.on('close', function () {
|
||||
self._handleSelectOnClose();
|
||||
container.on('close', function (params) {
|
||||
self._handleSelectOnClose(params);
|
||||
});
|
||||
};
|
||||
|
||||
SelectOnClose.prototype._handleSelectOnClose = function () {
|
||||
SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
|
||||
if (params && params.originalSelect2Event != null) {
|
||||
var event = params.originalSelect2Event;
|
||||
|
||||
// Don't select an item if the close event was triggered from a select or
|
||||
// unselect event
|
||||
if (event._type === 'select' || event._type === 'unselect') {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var $highlightedResults = this.getHighlightedResults();
|
||||
|
||||
// Only select highlighted results
|
||||
|
Loading…
x
Reference in New Issue
Block a user