1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /**
- * 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) {
- if (!Select2) return;
- 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);
- }
- };
- })(window.Select2);
|