# wpdirectorykit/1.3.6/public/js/wdk-select2.js

WP Directory Kit, version 1.3.6. 196 lines.

- Page: https://pluginprobe.com/plugins/wpdirectorykit/1.3.6/code/public/js/wdk-select2.js
- Raw: https://pluginprobe.com/plugins/wpdirectorykit/1.3.6/raw/public/js/wdk-select2.js
- Modified: 2024-07-09T15:04:24+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/wpdirectorykit/1.3.6/code/public/js/wdk-select2.js#L10-L20`.

```javascript
jQuery(document).ready(function($){
    wdk_select_init();
    /* elementor popup */
    jQuery( document ).on( 'elementor/popup/show', () => {
        $('.select2-hidden-accessible', '.elementor-popup-modal').each(function () { 
            $(this).removeClass('select2-hidden-accessible').next('.select2').remove();
        });
        
        wdk_select_init('.elementor-popup-modal');
    } );
});


const wdk_select_init = ($wrapper = 'body') => {
    var $ = jQuery;

    /* Start select2
    *  Site https://select2.org/
    */
    if (typeof $.fn.select2 == 'function') {
        //Set Dropdown with SearchBox via dropdownAdapter option (https://stackoverflow.com/questions/35799854/how-to-add-selectall-using-dropdownadapter-on-select2-v4)
        var Utils = $.fn.select2.amd.require('select2/utils');
        var Dropdown = $.fn.select2.amd.require('select2/dropdown');
        var DropdownSearch = $.fn.select2.amd.require('select2/dropdown/search');
        var CloseOnSelect = $.fn.select2.amd.require('select2/dropdown/closeOnSelect');
        var AttachBody = $.fn.select2.amd.require('select2/dropdown/attachBody');

        var dropdownAdapter = Utils.Decorate(Utils.Decorate(Utils.Decorate(Dropdown, DropdownSearch), CloseOnSelect), AttachBody);

        $('.select_ajax', $wrapper).each(function () { 
            var self = $(this);
            let ajax_url = $(this).attr('data-ajax');
            var data = {
                "action": 'wdk_public_action',
                "page": 'wdk_frontendajax',
                "function": 'select_2_ajax',
            }; 

            if(self.hasClass('select2-hidden-accessible')) return true;

            var $select = $(this).select2({
                language: {
                    errorLoading: function () {
                        return wdk_select2_script_parameters.text.errorLoading;
                    },
                    loadingMore: function () {
                        return wdk_select2_script_parameters.text.loadingMore;
                    },
                    noResults: function () {
                        return wdk_select2_script_parameters.text.noResults;
                    },
                    searching: function () {
                        return wdk_select2_script_parameters.text.searching;
                    },
                    removeAllItems: function () {
                        return wdk_select2_script_parameters.text.removeAllItems;
                    }
                },
                placeholder: $(this).attr('data-placeholder') || '',
                maximumSelectionLength: parseInt($(this).attr('data-limit')) || 10,
                dropdownAdapter: dropdownAdapter,
                minimumResultsForSearch: 1,
                ajax: {
                    url: ajax_url,
                    dataType: 'json',
                    data: data,
                    type: "POST",
                    quietMillis: 10,

                    data: function (term, page) { // page is the one-based page number tracked by Select2
                        return {
                            q: term, //search term
                            "page_result":  term.page || 1,
                            "action": 'wdk_public_action',
                            "page": 'wdk_frontendajax',
                            "function": 'select_2_ajax',
                            "table": $(this).attr('data-table') || '',
                        };
                    },
                    results: function (data, page) {
                        var more = (page * 30) < data.total_count; // whether or not there are more results available
        
                        // notice we return the value of more so Select2 knows if more results can be loaded
                        return { results: data.items, more: more };
                    }
                },
                templateResult: wdk_select_ajax_formatRepo,
                templateSelection: wdk_select_ajax_templateSelection
            });
            $select.data('select2').$dropdown.addClass('select_multi_dropdown_tree');
        }).on('select2:open', function (e) {
            // Do something
            $('.select_ajax').find('option[value=""]').remove();
        });
       

        $('.select_ajax_user', $wrapper).each(function () { 
            var self = $(this);
            let ajax_url = $(this).attr('data-ajax');
            var data = {
                "action": 'wdk_public_action',
                "page": 'wdk_frontendajax',
                "function": 'select_2_ajax_user',
            }; 

            if(self.hasClass('select2-hidden-accessible')) return true;

            var $select =  $(this).select2({
                multiple: true,
                placeholder: $(this).attr('data-placeholder') || '',
                maximumSelectionLength: 10,
                dropdownAdapter: dropdownAdapter,
                minimumResultsForSearch: 1,
                ajax: {
                    url: ajax_url,
                    dataType: 'json',
                    data: data,
                    type: "POST",
                    quietMillis: 10,
                 
                    data: function (term, page) { // page is the one-based page number tracked by Select2
                        return {
                            q: term, //search term
                            "page_result":  term.page || 1,
                            "action": 'wdk_public_action',
                            "page": 'wdk_frontendajax',
                            "function": 'select_2_ajax_user',
                        };
                    },
                    results: function (data, page) {
                        var more = (page * 30) < data.total_count; // whether or not there are more results available
        
                        // notice we return the value of more so Select2 knows if more results can be loaded
                        return { results: data.items, more: more };
                    }
                },
                templateResult: wdk_select_ajax_formatRepo,
                templateSelection: wdk_select_ajax_templateSelection
            }).on('select2:opening select2:closing', function (event) {
                //Disable original search (https://select2.org/searching#multi-select)
                var searchfield = $(this).parent().find('.select2-search__field');
                searchfield.prop('disabled', true);
            });

            $select.data('select2').$dropdown.addClass('select_multi_dropdown_users');
        });

        $('.select_multi', $wrapper).each(function () { 
            var self = $(this);
            if(self.hasClass('select2-hidden-accessible')) return true;

            var $select = $(this).select2({
                closeOnSelect:false,
                placeholder: $(this).attr('data-placeholder') || '',
                maximumSelectionLength: parseInt($(this).attr('data-limit')) || 10,
                dropdownAdapter: dropdownAdapter,
                minimumResultsForSearch: 1,
                maximumSelectionLength: +($(this).attr('data-maxselectlimit')) || 10,
                templateResult: wdk_select_ajax_formatRepo,
                templateSelection: wdk_select_ajax_templateSelection
            });

            $select.data('select2').$dropdown.addClass('select_multi_dropdown');
        });

    }

    function wdk_select_ajax_formatRepo (repo) {

        if (repo.loading) {
            return repo.text;
          }
        
          var $container = $(
            "<span>"+repo.text+"</span>"
          );
        
          return $container;
        
      }
    function wdk_select_ajax_templateSelection (repo) {

        if (repo.loading) {
            return repo.text;
          }
        
          var $container = $(
            "<span>"+repo.text+"</span>"
          );
        
          return $container;
        
      }
}


```
