magix-components
Version:
1 lines • 3.96 kB
JavaScript
define("mx-taginput/suggest",["magix","$","../mx-monitor/index"],function(_,e,t){var i=_("magix"),r=_("$"),o=_("../mx-monitor/index");i.applyStyle("F",".fj{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}.fk{padding:0 4px;cursor:pointer;margin:2px 0}.fl{color:#666;display:block;width:100%;padding:0 6px;height:29px;line-height:29px;border-radius:4px}.fm,.fl:active,.fl:focus,.fl:hover{color:#333;background-color:#f0f0f0}.fm{border-radius:4px;text-decoration:none;outline:0}"),t.exports=i.View.extend({tmpl:{html:'<ul mx-guid="g0" class="fj ah" style="width:<%=$$.width%>px" mx-mouseout="__dK()" mx-mousemove="__dL()" mx-contextmenu="__D()">1</ul>',subs:[{keys:["width","rList","list","viewId","textKey"],path:'ul[mx-guid="g0"]',tmpl:'<%if($$.rList){for(var a=0,b;a<$$.list.length;a++){b=$$.list[a]%><li class="fk"><a href="#" class="fl" 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(_){var e=this;e.__eP=_.scrollTop||0,e.__dz=_.list||[],e.__cr=0|(_.offsetLeft||0),o.__d(),e.on("destroy",function(){o.__f(e),o.__g(),e.__h.off("keyup paste input",e.__dA).off("focus",e.__dB)}),e.updater.set({viewId:e.id,width:_.width||340,textKey:_.textKey,valueKey:_.valueKey}),e.__eQ=-1,e.__eR=[e.id,"suggest_"+e.id],_.relateIds&&(e.__eR=e.__eR.concat(_.relateIds.split(",")))},__i:function(_){for(var e=this.__eR,t=0;t<e.length;t++)if(i.inside(_,e[t]))return!0;return!1},__eT:function(_,e){var t=this;e||(t.__dz=_),t.__eQ=-1,t.updater.digest({list:t.__eS=_}),t.__cp&&(_&&_.length?t.__cp.addClass("fj"):t.__cp.removeClass("fj"))},render:function(){var _=this,e=r("#"+_.id);_.__h=e,e.on("focus",_.__dB=r.proxy(_.__e,_)).on("keyup paste input",_.__dA=r.proxy(_.__dE,_));var t="suggest_"+_.id;r("<div />").attr("id",t).insertAfter(e),_.updater.to(t),_.__eT(_.__dz),_.__cp=r("#"+t+" ul"),_.__dz&&_.__dz.length||_.__cp.removeClass("fj"),setTimeout(_.wrapAsync(function(){_.__cp.prop("scrollTop",_.__eP)}),0)},__dE:function(_){var e=this;e.__j||e.__e();var t=e.__eS;if(40==_.keyCode)e.__dF(),e.__eQ++,e.__eQ>=t.length&&(e.__eQ=0),e.__dG();else if(38==_.keyCode)e.__dF(),e.__eQ--,e.__eQ<0&&(e.__eQ=t.length-1),e.__dG();else if(13==_.keyCode){if(e.__eQ>-1&&e.__eQ<e.__eS.length){var i=e.__eS[e.__eQ];e.__h.trigger({type:"pick",item:i}),e.__dF(),e.__eQ=-1,e.__a()}}else{var o=r.trim(_.target.value);if(o!=e.__bN)if(e.__bN=o,o){for(var s=[],d=e.__dz.slice(),a=e.updater.get("textKey"),l=0,n=void 0;l<d.length;l++)n=d[l],((a?n[a]:n)+"").indexOf(o)>=0&&s.push(n);e.__eT(s,!0)}else e.__eT(e.__dz,!0)}},__e:function(){var _=this,e=_.updater;if(!_.__j){_.__j=!0,e.get("rList")||e.digest({rList:!0}),o.__k(_);var t=_.__h.position();_.__cp.show().css({left:t.left+_.__cr,top:t.top+_.__h.outerHeight()+10}),_.__h.trigger("showlist")}},__dF:function(){var _=this;r("#sg_"+_.id+"_"+_.__eQ).removeClass("fm")},__dG:function(_){var e=this,t=r("#sg_"+e.id+"_"+e.__eQ);if(t.addClass("fm"),!_&&t.length){e.__dI=1;var i=t.outerHeight(),o=(e.__eQ+1)*i,s=e.__cp,d=s.height(),a=s.prop("scrollTop"),l=Math.ceil(d/i);o<a+i?s.prop("scrollTop",o-i):o>a+d&&s.prop("scrollTop",(e.__eQ+2-l)*i)}},__a:function(){var _=this;_.__j&&(_.__j=!1,o.__f(_),_.__cp.hide(),_.__h.trigger("hidelist"))},"__dJ<click>":function(_){_.preventDefault();var e=this,t=_.params.item;e.__h.trigger({type:"pick",item:t,scrollTop:e.__cp.prop("scrollTop")}),e.__a()},"__dK<mouseout>":function(_){if(!i.inside(_.relatedTarget,_.eventTarget)){var e=this;e.__dF(),e.__eQ=-1}},"__dL<mousemove>":function(_){var e=this;if(e.__dI)delete e.__dI;else{var t=r(_.target);if(t.is("li")){var i=t.data("idx");i!=e.__eQ&&(e.__dF(),e.__eQ=i,e.__dG(!0))}}},"__D<contextmenu>":function(_){_.preventDefault()}})});