summaryrefslogtreecommitdiffstats
path: root/core/js/select2-toggleselect.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/js/select2-toggleselect.js')
-rw-r--r--core/js/select2-toggleselect.js33
1 files changed, 14 insertions, 19 deletions
diff --git a/core/js/select2-toggleselect.js b/core/js/select2-toggleselect.js
index d38d4cc60b6..4fada592a3b 100644
--- a/core/js/select2-toggleselect.js
+++ b/core/js/select2-toggleselect.js
@@ -12,8 +12,6 @@
/**
* Select2 extension for toggling values in a multi-select dropdown
- *
- * Inspired by http://stackoverflow.com/a/27466159 and adjusted
*/
(function(Select2) {
@@ -28,28 +26,25 @@
var Select2TriggerSelect = Select2.class.multi.prototype.triggerSelect;
Select2.class.multi.prototype.triggerSelect = function (data) {
if (this.opts.toggleSelect && this.val().indexOf(this.id(data)) !== -1) {
-
+ var self = this;
var val = this.id(data);
- var evt = $.Event('select2-removing');
- evt.val = val;
- evt.choice = data;
- this.opts.element.trigger(evt);
- if (evt.isDefaultPrevented()) {
- return false;
- }
-
- var self = this;
- this.results.find('.select2-result.select2-selected').each(function () {
- var $this = $(this);
- if (self.id($this.data('select2-data')) === val) {
- $this.removeClass('select2-selected');
- }
+ var selectionEls = this.container.find('.select2-search-choice').filter(function() {
+ return (self.id($(this).data('select2-data')) === val);
});
- this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
- this.triggerChange({ removed: data });
+ if (this.unselect(selectionEls)) {
+ // also unselect in dropdown
+ this.results.find('.select2-result.select2-selected').each(function () {
+ var $this = $(this);
+ if (self.id($this.data('select2-data')) === val) {
+ $this.removeClass('select2-selected');
+ }
+ });
+ this.clearSearch();
+ }
+ return false;
} else {
return Select2TriggerSelect.apply(this, arguments);
}