/** * SPDX-FileCopyrightText: 2016 ownCloud Inc. * SPDX-License-Identifier: AGPL-3.0-or-later */ /* global Select2 */ /** * Select2 extension for toggling values in a multi-select dropdown */ (function(Select2) { var Select2FindHighlightableChoices = Select2.class.multi.prototype.findHighlightableChoices; Select2.class.multi.prototype.findHighlightableChoices = function () { if (this.opts.toggleSelect) { return this.results.find('.select2-result-selectable:not(.select2-disabled)'); } return Select2FindHighlightableChoices.apply(this, arguments); }; 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 selectionEls = this.container.find('.select2-search-choice').filter(function() { return (self.id($(this).data('select2-data')) === val); }); 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); } }; })(Select2);