forked from loopj/jquery-tokeninput
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.autocomplete.min.js
More file actions
2 lines (2 loc) · 7.29 KB
/
jquery.autocomplete.min.js
File metadata and controls
2 lines (2 loc) · 7.29 KB
1
2
/*! jquery.autocomplete 2022-11-19 */
!function(t){var e={method:"GET",queryParam:"q",searchDelay:300,minChars:1,propertyToSearch:"name",dataPath:null,contentType:"json",hintText:"Type in a search term",noResultsText:"No results",searchingText:"Searching...",animateDropdown:!0,placeholder:null,theme:null,zindex:999,resultsLimit:null,enableHTML:!1,resultsFormatter:function(t){var e=t[this.propertyToSearch];return"<li>"+(this.enableHTML?e:o(e))+"</li>"},allowTabOut:!1,autoSelectFirstResult:!1,onResult:null,onCachedResult:null,onAutoComplete:null,onReady:null,disabled:!1},a={dropdown:"token-input-dropdown",dropdownItem:"token-input-dropdown-item",dropdownItem2:"token-input-dropdown-item2",selectedDropdownItem:"token-input-selected-dropdown-item",disabled:"token-input-disabled"},s={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,NUMPAD_ENTER:108,COMMA:188},n={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},i=/[&<>"'\/]/g;function o(t){var e;return String(null==(e=t)?"":e).replace(i,function(t){return n[t]})}var d={init:function(a,s){var n=t.extend({},e,s||{});return this.each(function(){t(this).data("settings",n),t(this).data("searchObject",new t.AutoCompleteSearch(this,a,n))})},clear:function(){return this.data("searchObject").clear(),this},toggleDisabled:function(t){return this.data("searchObject").toggleDisabled(t),this},setOptions:function(e){return t(this).data("settings",t.extend({},t(this).data("settings"),e||{})),this},destroy:function(){if(this.data("searchObject")){this.data("searchObject").clear();var t=this.parent();return t.empty(),this.show(),t.append(this),this}}};t.fn.autoComplete=function(t){return d[t]?d[t].apply(this,Array.prototype.slice.call(arguments,1)):d.init.apply(this,arguments)},t.AutoCompleteSearch=function(e,n,i){if("string"==typeof n||"function"==typeof n){t(e).data("settings").url=n;var d,l=w();void 0===t(e).data("settings").crossDomain&&"string"==typeof l&&(-1===l.indexOf("://")?t(e).data("settings").crossDomain=!1:t(e).data("settings").crossDomain=location.href.split(/\/+/g)[1]!==l.split(/\/+/g)[1])}else"object"==typeof n&&(t(e).data("settings").local_data=n);t(e).data("settings").classes?t(e).data("settings").classes=t.extend({},a,t(e).data("settings").classes):t(e).data("settings").theme?(t(e).data("settings").classes={},t.each(a,function(a,s){t(e).data("settings").classes[a]=s+"-"+t(e).data("settings").theme})):t(e).data("settings").classes=a;var r=new t.AutoCompleteSearch.Cache,c=t(e).attr("autocomplete","off").on("focus.autoComplete",function(){if(t(e).data("settings").disabled)return!1;t(e).data("settings").hintText&&(p.html("<p>"+h(t(e).data("settings").hintText)+"</p>"),T())}).on("blur.autoComplete",function(){m()}).on("keydown.autoComplete",function(a){switch(a.keyCode){case s.LEFT:case s.RIGHT:case s.UP:case s.DOWN:var n=null;a.keyCode===s.DOWN||a.keyCode===s.RIGHT?(n=t(p).find("li").first(),u&&(n=t(u).next())):(n=t(p).find("li").last(),u&&(n=t(u).prev())),b(n);break;case s.TAB:case s.ENTER:case s.NUMPAD_ENTER:case s.COMMA:if(u)g(t(u).data("tokeninput")),c.change();else{if(t(this).val(""),t(e).data("settings").allowTabOut)return!0;a.stopPropagation(),a.preventDefault()}return!1;case s.ESCAPE:return m(),!0;default:String.fromCharCode(a.which)&&setTimeout(function(){var a;a=c.val(),a&&a.length&&(a.length>=t(e).data("settings").minChars?(t(e).data("settings").searchingText&&(p.html("<p>"+h(t(e).data("settings").searchingText)+"</p>"),T()),clearTimeout(d),d=setTimeout(function(){(function a(s){var n=s+w(),o=r.get(n);if(o)t.isFunction(t(e).data("settings").onCachedResult)&&(o=t(e).data("settings").onCachedResult.call(c,o)),C(s,o);else if(t(e).data("settings").url){var d=w(),l={};if(l.data={},d.indexOf("?")>-1){var u=d.split("?");l.url=u[0];var p=u[1].split("&");t.each(p,function(t,e){var a=e.split("=");l.data[a[0]]=a[1]})}else l.url=d;l.data[t(e).data("settings").queryParam]=s,l.type=t(e).data("settings").method,l.dataType=t(e).data("settings").contentType,t(e).data("settings").crossDomain&&(l.dataType="jsonp"),l.success=function(a){var i,o,d,l=(i=a,o=t(e).data("settings").dataPath,d=i,o&&(o.constructor===Array?t.each(o,function(t,e){d=d[e]}):o.constructor===String&&(d=d[o])),d);r.add(n,l),t.isFunction(t(e).data("settings").onResult)&&(l=t(e).data("settings").onResult.call(c,l)),c.val()===s&&C(s,l)},i.onSend&&i.onSend(l),t.ajax(l)}else if(t(e).data("settings").local_data){var g=t.grep(t(e).data("settings").local_data,function(a){return a[t(e).data("settings").propertyToSearch].toLowerCase().indexOf(s.toLowerCase())>-1});r.add(n,g),t.isFunction(t(e).data("settings").onResult)&&(g=t(e).data("settings").onResult.call(c,g)),C(s,g)}})(a)},t(e).data("settings").searchDelay)):m())},5)}});i.placeholder&&c.attr("placeholder",i.placeholder);var u=null,p=t("<div/>").addClass(t(e).data("settings").classes.dropdown).appendTo("body").hide();function g(a,s={}){if(void 0!=a){var n=i.onAutoComplete;c.val(a.name),m(),t.isFunction(n)&&n.call(e,a)}}function h(a){return t(e).data("settings").enableHTML?a:o(a)}function f(a){"boolean"==typeof a?t(e).data("settings").disabled=a:t(e).data("settings").disabled=!t(e).data("settings").disabled,c.attr("disabled",t(e).data("settings").disabled)}function m(){p.hide().empty(),u=null}function T(){p.css({position:"absolute",top:c.offset().top+c.outerHeight(!0),left:c.offset().left,width:c.innerWidth(),"z-index":t(e).data("settings").zindex}).show()}t(e).data("settings").disabled&&f(!0),"function"==typeof t(e).data("settings").onReady&&t(e).data("settings").onReady.call(),this.add=function(t){g(t)},this.clear=function(){t(c).val("")},this.toggleDisabled=function(t){f(t)};var v=RegExp("[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\-]","g");function y(t){return t.replace(v,"\\$&")}function C(a,s){if(s&&s.length){p.empty();var n=t("<ul/>").appendTo(p).mouseover(function(e){b(t(e.target).closest("li"))}).mousedown(function(e){return g(t(e.target).closest("li").data("tokeninput")),c.change(),!1}).hide();t(e).data("settings").resultsLimit&&s.length>t(e).data("settings").resultsLimit&&(s=s.slice(0,t(e).data("settings").resultsLimit)),t.each(s,function(s,i){var o,d,l,r,c,u=t(e).data("settings").resultsFormatter(i);u=(o=u,d=i[t(e).data("settings").propertyToSearch],l=a,o.replace(RegExp("(?![^&;]+;)(?!<[^<>]*)("+y(d)+")(?![^<>]*>)(?![^&;]+;)","g"),(r=d,c=l,r.replace(RegExp("(?![^&;]+;)(?!<[^<>]*)("+y(c)+")(?![^<>]*>)(?![^&;]+;)","gi"),function(t,e){return"<b>"+h(e)+"</b>"})))),u=t(u).appendTo(n),s%2?u.addClass(t(e).data("settings").classes.dropdownItem):u.addClass(t(e).data("settings").classes.dropdownItem2),0===s&&t(e).data("settings").autoSelectFirstResult&&b(u),t.data(u.get(0),"tokeninput",i)}),T(),t(e).data("settings").animateDropdown?n.slideDown("fast"):n.show()}else t(e).data("settings").noResultsText&&(p.html("<p>"+h(t(e).data("settings").noResultsText)+"</p>"),T())}function b(a){var s;a&&(u&&(s=t(u),s.removeClass(t(e).data("settings").classes.selectedDropdownItem),u=null),a.addClass(t(e).data("settings").classes.selectedDropdownItem),u=a.get(0))}function w(){var a=t(e).data("settings");return"function"==typeof a.url?a.url.call(a):a.url}function x(t){setTimeout(function(){t.focus()},50)}},t.AutoCompleteSearch.Cache=function(e){var a,s,n={},i=0;a=t.extend({max_size:500},e),s=function(){n={},i=0},this.add=function(t,e){i>a.max_size&&s(),n[t]||(i+=1),n[t]=e},this.get=function(t){return n[t]}}}(jQuery);