PageSourceSearch

https://fridmangallery.com/wp-content/plugins/wp-subscribe-form/in…/select2.multi-checkboxes.js?m=1790612520

js fridmangallery.com collected 2026-10-02 05:19:40 UTC 2,664 bytes, 80 lines download raw bytes

1/**
2 * jQuery Select2 Multi checkboxes
3 * - allow to select multi values via normal dropdown control
4 *
5 * author      : wasikuss
6 * repo        : https://github.com/wasikuss/select2-multi-checkboxes
7 * inspired by : https://github.com/select2/select2/issues/411
8 * License     : MIT
9 */
10(function($) {
11  var S2MultiCheckboxes = function(options, element) {
12    var self = this;
13    self.options = options;
14    self.$element = $(element);
15	var values = self.$element.val();
16    self.$element.removeAttr('multiple');
17    self.select2 = self.$element.select2({
18      allowClear: true,
19      minimumResultsForSearch: options.minimumResultsForSearch,
20      placeholder: options.placeholder,
21      closeOnSelect: false,
22      templateSelection: function() {
23        return self.options.templateSelection(self.$element.val() || [], $('option', self.$element).length);
24      },
25      templateResult: function(result) {
26        if (result.loading !== undefined)
27          return result.text;
28        return $('<div>').text(result.text).addClass(self.options.wrapClass);
29      },
30      matcher: function(params, data) {
31        var original_matcher = $.fn.select2.defaults.defaults.matcher;
32        var result = original_matcher(params, data);
33        if (result && self.options.searchMatchOptGroups && data.children && result.children && data.children.length != result.children.length) {
34          result.children = data.children;
35        }
36        return result;
37      }
38    }).data('select2');
39    self.select2.$results.off("mouseup").on("mouseup", ".select2-results__option[aria-selected]", (function(self) {
40      return function(evt) {
41        var $this = $(this);
42	
43	const Utils = $.fn.select2.amd.require('select2/utils')
44        var data = Utils.GetData(this, 'data');
45
46        if ($this.attr('aria-selected') === 'true') {
47          self.trigger('unselect', {
48            originalEvent: evt,
49            data: data
50          });
51          return;
52        }
53
54        self.trigger('select', {
55          originalEvent: evt,
56          data: data
57        });
58      }
59    })(self.select2));
60    self.$element.attr('multiple', 'multiple').val(values).trigger('change.select2');
61  }
62
63  $.fn.extend({
64    select2MultiCheckboxes: function() {
65      var options = $.extend({
66        placeholder: 'Choose elements',
67        templateSelection: function(selected, total) {
68          return selected.length + ' > ' + total + ' total';
69        },
70        wrapClass: 'wrap',
71        minimumResultsForSearch: -1,
72        searchMatchOptGroups: true
73      }, arguments[0]);
74
75      this.each(function() {
76        new S2MultiCheckboxes(options, this);
77      });
78    }
79  });
80})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.