mirror of
https://github.com/alibaba/anyproxy.git
synced 2025-04-24 16:51:29 +00:00
3 lines
3.9 KiB
JavaScript
Executable File
3 lines
3.9 KiB
JavaScript
Executable File
/*! UIkit 2.9.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
|
|
|
!function(a){var b;jQuery&&jQuery.UIkit&&(b=a(jQuery,jQuery.UIkit)),"function"==typeof define&&define.amd&&define("uikit-autocomplete",["uikit"],function(){return b||a(jQuery,jQuery.UIkit)})}(function(a,b){return b.component("autocomplete",{defaults:{minLength:3,param:"search",method:"post",delay:300,loadingClass:"uk-loading",flipDropdown:!1,skipClass:"uk-skip",hoverClass:"uk-active",source:null,renderer:null,template:'<ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results">{{~items}}<li data-value="{{$item.value}}"><a>{{$item.value}}</a></li>{{/items}}</ul>'},visible:!1,value:null,selected:null,init:function(){var c=this,d=!1,e=b.Utils.debounce(function(){return d?d=!1:void c.handle()},this.options.delay);this.dropdown=this.find(".uk-dropdown"),this.template=this.find('script[type="text/autocomplete"]').html(),this.template=b.Utils.template(this.template||this.options.template),this.input=this.find("input:first").attr("autocomplete","off"),this.dropdown.length||(this.dropdown=a('<div class="uk-dropdown"></div>').appendTo(this.element)),this.options.flipDropdown&&this.dropdown.addClass("uk-dropdown-flip"),this.input.on({keydown:function(a){if(a&&a.which&&!a.shiftKey)switch(a.which){case 13:d=!0,c.selected&&(a.preventDefault(),c.select());break;case 38:a.preventDefault(),c.pick("prev",!0);break;case 40:a.preventDefault(),c.pick("next",!0);break;case 27:case 9:c.hide()}},keyup:e,blur:function(){setTimeout(function(){c.hide()},200)}}),this.dropdown.on("click",".uk-autocomplete-results > *",function(){c.select()}),this.dropdown.on("mouseover",".uk-autocomplete-results > *",function(){c.pick(a(this))}),this.triggercomplete=e},handle:function(){var a=this,b=this.value;return this.value=this.input.val(),this.value.length<this.options.minLength?this.hide():(this.value!=b&&a.request(),this)},pick:function(a,b){var c=this,d=this.dropdown.find(".uk-autocomplete-results").children(":not(."+this.options.skipClass+")"),e=!1;if("string"==typeof a||a.hasClass(this.options.skipClass)){if("next"==a||"prev"==a)if(this.selected){var f=d.index(this.selected);e=d.eq("next"==a?f+1<d.length?f+1:0:0>f-1?d.length-1:f-1)}else e=d["next"==a?"first":"last"]()}else e=a;if(e&&e.length&&(this.selected=e,d.removeClass(this.options.hoverClass),this.selected.addClass(this.options.hoverClass),b)){var g=e.position().top,h=c.dropdown.scrollTop(),i=c.dropdown.height();(g>i||0>g)&&c.dropdown.scrollTop(h+g)}},select:function(){if(this.selected){var a=this.selected.data();this.trigger("autocomplete-select",[a,this]),a.value&&this.input.val(a.value),this.hide()}},show:function(){return this.visible?void 0:(this.visible=!0,this.element.addClass("uk-open"),this)},hide:function(){return this.visible?(this.visible=!1,this.element.removeClass("uk-open"),this):void 0},request:function(){var b=this,c=function(a){a&&b.render(a),b.element.removeClass(b.options.loadingClass)};if(this.element.addClass(this.options.loadingClass),this.options.source){var d=this.options.source;switch(typeof this.options.source){case"function":this.options.source.apply(this,[c]);break;case"object":if(d.length){var e=[];d.forEach(function(a){a.value&&-1!=a.value.toLowerCase().indexOf(b.value.toLowerCase())&&e.push(a)}),c(e)}break;case"string":var f={};f[this.options.param]=this.value,a.ajax({url:this.options.source,data:f,type:this.options.method,dataType:"json"}).done(function(a){c(a||[])});break;default:c(null)}}else this.element.removeClass(b.options.loadingClass)},render:function(a){return this.dropdown.empty(),this.selected=!1,this.options.renderer?this.options.renderer.apply(this,[a]):a&&a.length&&(this.dropdown.append(this.template({items:a})),this.show(),this.trigger("autocomplete-show")),this}}),b.$doc.on("focus.autocomplete.uikit","[data-uk-autocomplete]",function(){var c=a(this);if(!c.data("autocomplete")){b.autocomplete(c,b.Utils.options(c.attr("data-uk-autocomplete")))}}),b.autocomplete}); |