magix-components
Version:
1 lines • 3.98 kB
JavaScript
define("mx-suggest/index",["magix","$","../mx-monitor/index"],function(e,_,t){var i=e("magix"),d=e("$"),r=e("../mx-monitor/index");i.applyStyle("B",".eL{position:absolute;border:1px solid #e6e6e6;font-size:14px;max-height:260px;overflow:auto;list-style:none;border-radius:4px;background-color:#fff;display:none;z-index:10;padding:3px 0;line-height:1.8}.eM{padding:0 4px;cursor:pointer;margin:2px 0}.eN{color:#666;display:block;width:100%;padding:0 6px;height:29px;line-height:29px;border-radius:4px}.eO,.eN:active,.eN:focus,.eN:hover{color:#333;background-color:#f0f0f0}.eO{border-radius:4px;text-decoration:none;outline:0}"),t.exports=i.View.extend({tmpl:{html:'<ul mx-guid="g0" class="eL ah" style="width:<%=$$.width%>px" mx-mouseout="__dK()" mx-mousemove="__dL()" mx-contextmenu="__bA()">1</ul>',subs:[{keys:["width","rList","list","textKey","viewId"],path:'ul[mx-guid="g0"]',tmpl:'<%if($$.rList){for(var a=0,b;a<$$.list.length;a++){b=$$.list[a]%><li class="eM" title="<%=$$.textKey?b[$$.textKey]:b%>"><a href="#" class="eN aj" data-idx="<%!a%>" mx-click="__dJ({item:\'<%@b%>\'})" id="sg_<%!$$.viewId%>_<%!a%>"><%=$$.textKey?b[$$.textKey]:b%></a></li><%}}%>',s:"1",attr:'style="width:<%=$$.width%>px"',attrs:[{n:"style"}],mask:"21111"}]},init:function(e){var _=this;_.__dz=e.list||[],r.__d(),_.on("destroy",function(){r.__f(_),r.__g(),_.__h.off("keyup paste input",_.__dA).off("focus",_.__dB)}),_.updater.set({viewId:_.id,textKey:e.textKey,valueKey:e.valueKey}),_.__dC=-1},__i:function(e){return i.inside(e,this.id)||i.inside(e,"suggest_"+this.id)},update:function(e,_){var t=this;_||(t.__dz=e),t.__dC=-1,t.updater.digest({list:t.__dD=e}),t.__cV&&(e&&e.length?t.__cV.addClass("eL"):t.__cV.removeClass("eL"))},render:function(){var e=this,_=d("#"+e.id);e.__h=_,_.on("focus",e.__dB=d.proxy(e.show,e)).on("keyup paste input",e.__dA=d.proxy(e.__dE,e));var t="suggest_"+e.id;d("<div />").attr("id",t).insertAfter(_),e.updater.to(t),e.updater.set({width:_.outerWidth()}),e.update(e.__dz),e.__cV=d("#"+t+" ul"),e.__dz&&e.__dz.length||e.__cV.removeClass("eL")},__dE:function(e){var _=this;_.__j||_.__e();var t=_.__dD;if(40==e.keyCode)_.__dF(),_.__dC++,_.__dC>=t.length&&(_.__dC=0),_.__dG();else if(38==e.keyCode)_.__dF(),_.__dC--,_.__dC<0&&(_.__dC=t.length-1),_.__dG();else if(13==e.keyCode){if(_.__dC>-1&&_.__dC<_.__dD.length){var i=_.__dD[_.__dC];_.__h.trigger({type:"pick",item:i});var r=_.updater.get("textKey");r&&(i=i[r]),_.__h.val(i).trigger("change"),_.__dE({target:_.__h[0]}),_.__dF(),_.__dC=-1,_.__a()}}else{var a=d.trim(e.target.value);if(a!=_.__dH)if(_.__dH=a,a){for(var s=[],o=_.__dz.slice(),n=_.updater.get("textKey"),l=0,u=void 0;l<o.length;l++)u=o[l],((n?u[n]:u)+"").indexOf(a)>=0&&s.push(u);_.update(s,!0)}else _.update(_.__dz,!0)}},__e:function(){var e=this,_=e.updater;if(!e.__j){e.__j=!0,_.get("rList")||_.digest({rList:!0}),r.__k(e);var t=e.__h.position();e.__cV.css({display:"block",left:t.left+e.$offsetLeft,top:t.top+e.__h.outerHeight()+10}),e.__h.trigger("showlist")}},__dF:function(){var e=this;d("#sg_"+e.id+"_"+e.__dC).removeClass("eO")},__dG:function(e){var _=this,t=d("#sg_"+_.id+"_"+_.__dC);if(t.addClass("eO"),!e&&t.length){_.__dI=1;var i=t.outerHeight(),r=(_.__dC+1)*i,a=_.__cV,s=a.height(),o=a.prop("scrollTop"),n=Math.ceil(s/i);r<o+i?a.prop("scrollTop",r-i):r>o+s&&a.prop("scrollTop",(_.__dC+2-n)*i)}},__a:function(){var e=this;e.__j&&(e.__j=!1,r.__f(e),e.__cV.hide(),e.__h.trigger("hidelist"))},"__dJ<click>":function(e){e.preventDefault();var _=this,t=e.params.item;_.__h.trigger({type:"pick",item:t});var i=_.updater.get("textKey");i&&(t=t[i]),_.__h.val(t).trigger("change"),_.__dE({target:_.__h[0]}),_.__a()},"__dK<mouseout>":function(e){if(!i.inside(e.relatedTarget,e.eventTarget)){var _=this;_.__dF(),_.__dC=-1}},"__dL<mousemove>":function(e){var _=this;if(_.__dI)delete _.__dI;else{var t=d(e.target);if(t.is("li")){var i=t.data("idx");i!=_.__dC&&(_.__dF(),_.__dC=i,_.__dG(!0))}}},"__bA<contextmenu>":function(e){e.preventDefault()}})});