-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjquery.min.js
executable file
·1 lines (1 loc) · 1.24 KB
/
jquery.min.js
1
!function(e){e.fn.fuzzy=function(t){var a=e.extend({minLength:3,dataset:{},searchkey:"title"},t);return this.each(function(){$el=e(this),$el.keyup(function(){var e,t=$el.val().trim().toLowerCase();if(t.length<a.minLength&&(void 0===$el.data("cleared")||!$el.data("cleared")))return 0==t.length&&$el.data("cleared",!0),void $el.trigger("fuzzy.clear");$el.data("cleared",!1);const n=[],r=[],i=[];for(e in a.dataset){const l=a.dataset[e][a.searchkey];if(null!=l){var s=new RegExp("(.*)("+t.split("").join(")(.*)(").replace(/n/i,"n|ñ|Ñ")+")(.*)","i"),o=l.trim().match(s);o&&(match=a.dataset[e],match.hlString='<div class="hltitle">'+$el.fuzzyHighlight(t,o)+"</div>",0===l.trim().toLowerCase().indexOf(t.toLowerCase())?n.push(match):l.trim().toLowerCase().indexOf(t.toLowerCase())>0?r.push(match):i.push(match))}}const l=(e,t)=>e.name===t.name?0:e.name.localeCompare(t.name);$el.trigger("fuzzy.search",[n.sort(l).concat(r.sort(l),i.sort(l))])})}),this},e.fn.fuzzyHighlight=function(e,t){var a,n,r,i,s="";for(t.shift(),a=0,n=e.length;a<n;a++){for(r=t.shift(),i=[e[a].toLowerCase()],"n"==e[a].toLowerCase()&&(i.push("ñ"),i.push("Ñ"));t.length>0&&-1===i.indexOf(r.toLowerCase());)s+=r,r=t.shift();s+='<span class="hl">'+r+"</span>"}return s+=t.join("")}}(jQuery);