1(function ($) { 2 3 $.fn.vitalex_multiselect = function (options){ 4 5 var settings = $.extend({ 6 multiselect: false, 7 values: false, 8 }, options); 9 10 11 $(this).each(function(i,e){ 12 13 var select = $(e); 14 var parent = $(e).parent(); 15 var selected = $(e).find("option[selected]"); 16 var opts = $(e).find("option"); 17 var id = $(e).attr("id"); 18 19 var main_div = $("<div id='vbm-"+id+"' class='vbm-main'></div>"); 20 var wrapper = $("<div class='vbm-wrapper'></div>"); 21 22 if(settings.multiselect){ 23 var value = $(e).data("name"); 24 select.prop("disabled", true); 25 $(e).removeClass("vitalex-multiselect"); 26 } 27 else{ 28 var value = (selected.length == 0) ? opts.eq(0).text() : selected.eq(0).text(); 29 $(e).removeClass("vitalex-select"); 30 } 31 32 var value_text = $("<div class='vbm-text'>"+value+"</div>"); 33 34 35 var arrow = $("<div class='vbm-arrow-element'><div class='vmb-arrow'></div>"); 36 wrapper.appendTo(main_div); 37 value_text.appendTo(wrapper); 38 arrow.appendTo(wrapper); 39 parent.append(main_div); 40 $(e).hide(); 41 42 var list_main = $("<div class='vbm-list hidden'></div>"); 43 main_div.append(list_main); 44 45 opts.each(function(i,e){ 46 if(!settings.multiselect){ 47 var active = ($(e).is(":selected")) ? "active" : ""; 48 var option_div = $("<div data-id='"+id+"' data-value='"+$(e).attr("value")+"' class='vbm-option "+active+"'>"+$(e).text()+"</div>"); 49 list_main.append(option_div); 50 } 51 else{ 52 var active = ($(e).is(":selected")) ? "active" : ""; 53 var checked = ($(e).is(":selected")) ? "checked" : ""; 54 var ms = (settings.multiselect) ? "multiselect" : ""; 55 var option_div = $("<div data-lock='"+$(e).data("lock")+"' class='custom-control custom-checkbox vbm-option "+active+" "+ms+"' data-id='"+id+"' data-value='"+$(e).attr("value")+"'></div>"); 56 if(!settings.values){ 57 var input = $("<input name='"+select.attr("name")+"["+$(e).attr("value")+"]' type='checkbox' "+checked+" class='custom-control-input vbm-option-input' id='vbm-option-"+i+"'>"); 58 } 59 else{ 60 var input = $("<input name='"+select.attr("name")+"["+$(e).attr("value")+"]' type='checkbox' "+checked+" class='custom-control-input vbm-option-input' id='vbm-option-"+i+"' value='"+$(e).attr("value")+"'>"); 61 } 62 var label = $("<label class='custom-control-label' for='vbm-option-"+i+"'>"+$(e).text()+"</label>"); 63 option_div.append(input); 64 option_div.append(label); 65 list_main.append(option_div); 66 } 67 }); 68 69 wrapper.click(function(){ 70 list_main.toggle(); 71 var height = list_main.outerHeight(); 72 var top = list_main.offset().top; 73 if(top>0){ 74 var bottom = top+height; 75 if(bottom > window.innerHeight){ 76 list_main.css("margin-top", "-"+(height+main_div.outerHeight())+"px") 77 } 78 } 79 else{ 80 list_main.css("margin-top", "0px") 81 } 82 }); 83 84 var locker = $("#vbm-"+id+" .vbm-option[data-lock=true]"); 85 if(locker.length>0){ 86 var input = locker.find("input"); 87 if(input.is(":checked")){ 88 $("#vbm-"+id+" .vbm-option").addClass("disabled"); 89 locker.removeClass("disabled"); 90 $("#vbm-"+id+" .vbm-option input").attr("disabled", true); 91 input.attr("disabled", false); 92 } 93 } 94 95 $("#vbm-"+id+" .vbm-option").click(function(){ 96 97 if(!settings.multiselect){ 98 99 var id = $(this).data("id"); 100 101 $("#"+id+"").val($(this).data("value")).change(); 102 $("#vbm-"+id+" .vbm-text").text($(this).text()); 103 $("#vbm-"+id+" .vbm-option").removeClass("active"); 104 $(this).parent().hide(); 105 $(this).addClass("active"); 106 107 } 108 else if(!$(this).hasClass("disabled")){ 109 var id = $(this).data("id"); 110 var input = $(this).find("input"); 111 112 input.trigger("change"); 113 //input.trigger("cl"); 114 115 input.prop("checked", !input.prop("checked")); 116 if($(this).data("lock")==true){ 117 if(input.is(":checked")){ 118 $("#vbm-"+id+" .vbm-option").addClass("disabled"); 119 $(this).removeClass("disabled"); 120 $("#vbm-"+id+" .vbm-option input").attr("disabled", true); 121 input.attr("disabled", false); 122 } 123 else{ 124 $("#vbm-"+id+" .vbm-option").removeClass("disabled"); 125 $("#vbm-"+id+" .vbm-option input").attr("disabled", false); 126 } 127 } 128 129 $(this).toggleClass("active"); 130 131 } 132 133 }); 134 135 $("#vbm-"+id+" .vbm-option input").click(function(e){ 136 e.preventDefault(); 137 }); 138 139 $("#vbm-"+id+" .vbm-option label").click(function(e){ 140 e.preventDefault(); 141 }); 142 143 }); 144 145 }; 146 147 } (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.