123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- * Copyright (c) 2015
- *
- * This file is licensed under the Affero General Public License version 3
- * or later.
- *
- * See the COPYING-README file.
- *
- */
- /* 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);
|