PATH:
home
/
lab2454c
/
equitablegold.com
/
wp-content
/
plugins
/
unlimited-elements-for-elementor
/
js
/
select2
(function($) { function getSortableUl($select) { var objParent = $select.parent(); var objUl = objParent.find(".select2-container ul"); return objUl; }; /** * get list items */ function getListItems(objUL){ var objItems = objUL.find("li.select2-selection__choice"); return(objItems); } /** * get list items values */ function getObjULValues(objUL){ var objItems = getListItems(objUL); var objValues = {}; jQuery.each(objItems,function(index, li){ var objItem = jQuery(li); var value = objItem.data("value"); objValues[value] = null; }); return(objValues); } /** * get list items values */ function getArrULValues(objUL){ var objItems = getListItems(objUL); var arrValues = []; jQuery.each(objItems,function(index, li){ var objItem = jQuery(li); var value = objItem.data("value"); var text = objItem.text(); text = text.substring(1); value = value.toString(); arrValues.push([value,text]); }); return(arrValues); } /** * get select from ul */ function getSelectFromUL(objUL){ var objContainer = objUL.parents(".select2-container"); var objSelectInput = objContainer.siblings("select"); return(objSelectInput); } /** * update values */ function updateLIValues(objUL, arrValues){ var objItems = getListItems(objUL); if(objItems.length != arrValues.length){ trace("num items not match!"); return(false); } jQuery.each(arrValues, function(index, value){ var objItem = jQuery(objItems[index]); objItem.attr("data-value",value); }); } /** * init sortable ul */ function initSortableUl($ul, options) { if($ul.length == 0){ trace("no url found"); return(false); } $ul.sortable({ forcePlaceholderSize: true, items: 'li.select2-selection__choice', placeholder : '<li> </li>', start:function(event){ var objUL = jQuery(event.target); var objSelect = getSelectFromUL(objUL); var arrValues = objSelect.val(); updateLIValues(objUL, arrValues); }, update:function(event){ var objUL = jQuery(event.target); var objSelectInput = getSelectFromUL(objUL); var arrInitIDs = []; var arrValues = getArrULValues(objUL); if(arrValues.length == 0) return(false); if(!arrValues[0]) return(false); objSelectInput.html(""); for(var index in arrValues){ var item = arrValues[index]; var value = item[0]; var text = item[1]; var option = new Option(text, value, true, true); objSelectInput.append(option); } objSelectInput.trigger("change"); } }); }; function trace(str){ console.log(str); } function initSelect2Sortable($select) { var observer, $ul; //$select.select2(); $ul = getSortableUl($select); if($ul.length == 0){ return(false); } observer = new MutationObserver(function(mutations) { initSortableUl($ul); observer.disconnect(); }); $select.on('select2-selecting', function() { observer.observe($ul.get(0), { subtree: false, childList: true, attributes: false }); }); initSortableUl($ul, { bindSortEvent: true, $select: $select }); $select.data('hasSelect2Sortable', true); }; function sortSelect2Sortable($select, val) { var $ul = getSortableUl($select), $lis = $ul.find('.select2-search-choice'); $.each(val, function(i, id) { $lis.each(function() { if (id == $(this).data('select2Data').id) { $(this).insertBefore($ul.find('.select2-search-field')); } }); }); $ul.trigger('sortupdate'); } $.fn.extend({ select2Sortable: function(val) { var objSelect = jQuery(this); var hasInit = objSelect.data('hasSelect2Sortable'); if(hasInit) return(this); initSelect2Sortable(objSelect); return this; } }); }(window.jQuery));
[+]
..
[-] select2.full.js
[edit]
[-] select2.full.min.js
[edit]
[-] select2.css
[edit]
[-] select2.sortable.js
[edit]
[-] select2.sortable.css
[edit]