123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502 |
- /**
- * EasyUI for jQuery 1.6.10
- *
- * Copyright (c) 2009-2018 www.jeasyui.com. All rights reserved.
- *
- * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
- * To use it on other terms please contact us: info@jeasyui.com
- *
- */
- (function($){
- $(function(){
- $(document).unbind(".menu").bind("mousedown.menu",function(e){
- var m=$(e.target).closest("div.menu,div.combo-p");
- if(m.length){
- return;
- }
- $("body>div.menu-top:visible").not(".menu-inline").menu("hide");
- _1($("body>div.menu:visible").not(".menu-inline"));
- });
- });
- function _2(_3){
- var _4=$.data(_3,"menu").options;
- $(_3).addClass("menu-top");
- _4.inline?$(_3).addClass("menu-inline"):$(_3).appendTo("body");
- $(_3).bind("_resize",function(e,_5){
- if($(this).hasClass("easyui-fluid")||_5){
- $(_3).menu("resize",_3);
- }
- return false;
- });
- var _6=_7($(_3));
- for(var i=0;i<_6.length;i++){
- _b(_3,_6[i]);
- }
- function _7(_8){
- var _9=[];
- _8.addClass("menu");
- _9.push(_8);
- if(!_8.hasClass("menu-content")){
- _8.children("div").each(function(){
- var _a=$(this).children("div");
- if(_a.length){
- _a.appendTo("body");
- this.submenu=_a;
- var mm=_7(_a);
- _9=_9.concat(mm);
- }
- });
- }
- return _9;
- };
- };
- function _b(_c,_d){
- var _e=$(_d).addClass("menu");
- if(!_e.data("menu")){
- _e.data("menu",{options:$.parser.parseOptions(_e[0],["width","height"])});
- }
- if(!_e.hasClass("menu-content")){
- _e.children("div").each(function(){
- _f(_c,this);
- });
- $("<div class=\"menu-line\"></div>").prependTo(_e);
- }
- _10(_c,_e);
- if(!_e.hasClass("menu-inline")){
- _e.hide();
- }
- _11(_c,_e);
- };
- function _f(_12,div,_13){
- var _14=$(div);
- var _15=$.extend({},$.parser.parseOptions(_14[0],["id","name","iconCls","href",{separator:"boolean"}]),{disabled:(_14.attr("disabled")?true:undefined),text:$.trim(_14.html()),onclick:_14[0].onclick},_13||{});
- _15.onclick=_15.onclick||_15.handler||null;
- _14.data("menuitem",{options:_15});
- if(_15.separator){
- _14.addClass("menu-sep");
- }
- if(!_14.hasClass("menu-sep")){
- _14.addClass("menu-item");
- _14.empty().append($("<div class=\"menu-text\"></div>").html(_15.text));
- if(_15.iconCls){
- $("<div class=\"menu-icon\"></div>").addClass(_15.iconCls).appendTo(_14);
- }
- if(_15.id){
- _14.attr("id",_15.id);
- }
- if(_15.onclick){
- if(typeof _15.onclick=="string"){
- _14.attr("onclick",_15.onclick);
- }else{
- _14[0].onclick=eval(_15.onclick);
- }
- }
- if(_15.disabled){
- _16(_12,_14[0],true);
- }
- if(_14[0].submenu){
- $("<div class=\"menu-rightarrow\"></div>").appendTo(_14);
- }
- }
- };
- function _10(_17,_18){
- var _19=$.data(_17,"menu").options;
- var _1a=_18.attr("style")||"";
- var _1b=_18.is(":visible");
- _18.css({display:"block",left:-10000,height:"auto",overflow:"hidden"});
- _18.find(".menu-item").each(function(){
- $(this)._outerHeight(_19.itemHeight);
- $(this).find(".menu-text").css({height:(_19.itemHeight-2)+"px",lineHeight:(_19.itemHeight-2)+"px"});
- });
- _18.removeClass("menu-noline").addClass(_19.noline?"menu-noline":"");
- var _1c=_18.data("menu").options;
- var _1d=_1c.width;
- var _1e=_1c.height;
- if(isNaN(parseInt(_1d))){
- _1d=0;
- _18.find("div.menu-text").each(function(){
- if(_1d<$(this).outerWidth()){
- _1d=$(this).outerWidth();
- }
- });
- _1d=_1d?_1d+40:"";
- }
- var _1f=_18.outerHeight();
- if(isNaN(parseInt(_1e))){
- _1e=_1f;
- if(_18.hasClass("menu-top")&&_19.alignTo){
- var at=$(_19.alignTo);
- var h1=at.offset().top-$(document).scrollTop();
- var h2=$(window)._outerHeight()+$(document).scrollTop()-at.offset().top-at._outerHeight();
- _1e=Math.min(_1e,Math.max(h1,h2));
- }else{
- if(_1e>$(window)._outerHeight()){
- _1e=$(window).height();
- }
- }
- }
- _18.attr("style",_1a);
- _18.show();
- _18._size($.extend({},_1c,{width:_1d,height:_1e,minWidth:_1c.minWidth||_19.minWidth,maxWidth:_1c.maxWidth||_19.maxWidth}));
- _18.find(".easyui-fluid").triggerHandler("_resize",[true]);
- _18.css("overflow",_18.outerHeight()<_1f?"auto":"hidden");
- _18.children("div.menu-line")._outerHeight(_1f-2);
- if(!_1b){
- _18.hide();
- }
- };
- function _11(_20,_21){
- var _22=$.data(_20,"menu");
- var _23=_22.options;
- _21.unbind(".menu");
- for(var _24 in _23.events){
- _21.bind(_24+".menu",{target:_20},_23.events[_24]);
- }
- };
- function _25(e){
- var _26=e.data.target;
- var _27=$.data(_26,"menu");
- if(_27.timer){
- clearTimeout(_27.timer);
- _27.timer=null;
- }
- };
- function _28(e){
- var _29=e.data.target;
- var _2a=$.data(_29,"menu");
- if(_2a.options.hideOnUnhover){
- _2a.timer=setTimeout(function(){
- _2b(_29,$(_29).hasClass("menu-inline"));
- },_2a.options.duration);
- }
- };
- function _2c(e){
- var _2d=e.data.target;
- var _2e=$(e.target).closest(".menu-item");
- if(_2e.length){
- _2e.siblings().each(function(){
- if(this.submenu){
- _1(this.submenu);
- }
- $(this).removeClass("menu-active");
- });
- _2e.addClass("menu-active");
- if(_2e.hasClass("menu-item-disabled")){
- _2e.addClass("menu-active-disabled");
- return;
- }
- var _2f=_2e[0].submenu;
- if(_2f){
- $(_2d).menu("show",{menu:_2f,parent:_2e});
- }
- }
- };
- function _30(e){
- var _31=$(e.target).closest(".menu-item");
- if(_31.length){
- _31.removeClass("menu-active menu-active-disabled");
- var _32=_31[0].submenu;
- if(_32){
- if(e.pageX>=parseInt(_32.css("left"))){
- _31.addClass("menu-active");
- }else{
- _1(_32);
- }
- }else{
- _31.removeClass("menu-active");
- }
- }
- };
- function _33(e){
- var _34=e.data.target;
- var _35=$(e.target).closest(".menu-item");
- if(_35.length){
- var _36=$(_34).data("menu").options;
- var _37=_35.data("menuitem").options;
- if(_37.disabled){
- return;
- }
- if(!_35[0].submenu){
- _2b(_34,_36.inline);
- if(_37.href){
- location.href=_37.href;
- }
- }
- _35.trigger("mouseenter");
- _36.onClick.call(_34,$(_34).menu("getItem",_35[0]));
- }
- };
- function _2b(_38,_39){
- var _3a=$.data(_38,"menu");
- if(_3a){
- if($(_38).is(":visible")){
- _1($(_38));
- if(_39){
- $(_38).show();
- }else{
- _3a.options.onHide.call(_38);
- }
- }
- }
- return false;
- };
- function _3b(_3c,_3d){
- _3d=_3d||{};
- var _3e,top;
- var _3f=$.data(_3c,"menu").options;
- var _40=$(_3d.menu||_3c);
- $(_3c).menu("resize",_40[0]);
- if(_40.hasClass("menu-top")){
- $.extend(_3f,_3d);
- _3e=_3f.left;
- top=_3f.top;
- if(_3f.alignTo){
- var at=$(_3f.alignTo);
- _3e=at.offset().left;
- top=at.offset().top+at._outerHeight();
- if(_3f.align=="right"){
- _3e+=at.outerWidth()-_40.outerWidth();
- }
- }
- if(_3e+_40.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){
- _3e=$(window)._outerWidth()+$(document).scrollLeft()-_40.outerWidth()-5;
- }
- if(_3e<0){
- _3e=0;
- }
- top=_41(top,_3f.alignTo);
- }else{
- var _42=_3d.parent;
- _3e=_42.offset().left+_42.outerWidth()-2;
- if(_3e+_40.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){
- _3e=_42.offset().left-_40.outerWidth()+2;
- }
- top=_41(_42.offset().top-3);
- }
- function _41(top,_43){
- if(top+_40.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){
- if(_43){
- top=$(_43).offset().top-_40._outerHeight();
- }else{
- top=$(window)._outerHeight()+$(document).scrollTop()-_40.outerHeight();
- }
- }
- if(top<0){
- top=0;
- }
- return top;
- };
- _40.css(_3f.position.call(_3c,_40[0],_3e,top));
- _40.show(0,function(){
- if(!_40[0].shadow){
- _40[0].shadow=$("<div class=\"menu-shadow\"></div>").insertAfter(_40);
- }
- _40[0].shadow.css({display:(_40.hasClass("menu-inline")?"none":"block"),zIndex:$.fn.menu.defaults.zIndex++,left:_40.css("left"),top:_40.css("top"),width:_40.outerWidth(),height:_40.outerHeight()});
- _40.css("z-index",$.fn.menu.defaults.zIndex++);
- if(_40.hasClass("menu-top")){
- _3f.onShow.call(_3c);
- }
- });
- };
- function _1(_44){
- if(_44&&_44.length){
- _45(_44);
- _44.find("div.menu-item").each(function(){
- if(this.submenu){
- _1(this.submenu);
- }
- $(this).removeClass("menu-active");
- });
- }
- function _45(m){
- m.stop(true,true);
- if(m[0].shadow){
- m[0].shadow.hide();
- }
- m.hide();
- };
- };
- function _46(_47,_48){
- var _49=null;
- var fn=$.isFunction(_48)?_48:function(_4a){
- for(var p in _48){
- if(_4a[p]!=_48[p]){
- return false;
- }
- }
- return true;
- };
- function _4b(_4c){
- _4c.children("div.menu-item").each(function(){
- var _4d=$(this).data("menuitem").options;
- if(fn.call(_47,_4d)==true){
- _49=$(_47).menu("getItem",this);
- }else{
- if(this.submenu&&!_49){
- _4b(this.submenu);
- }
- }
- });
- };
- _4b($(_47));
- return _49;
- };
- function _16(_4e,_4f,_50){
- var t=$(_4f);
- if(t.hasClass("menu-item")){
- var _51=t.data("menuitem").options;
- _51.disabled=_50;
- if(_50){
- t.addClass("menu-item-disabled");
- t[0].onclick=null;
- }else{
- t.removeClass("menu-item-disabled");
- t[0].onclick=_51.onclick;
- }
- }
- };
- function _52(_53,_54){
- var _55=$.data(_53,"menu").options;
- var _56=$(_53);
- if(_54.parent){
- if(!_54.parent.submenu){
- var _57=$("<div></div>").appendTo("body");
- _54.parent.submenu=_57;
- $("<div class=\"menu-rightarrow\"></div>").appendTo(_54.parent);
- _b(_53,_57);
- }
- _56=_54.parent.submenu;
- }
- var div=$("<div></div>").appendTo(_56);
- _f(_53,div,_54);
- };
- function _58(_59,_5a){
- function _5b(el){
- if(el.submenu){
- el.submenu.children("div.menu-item").each(function(){
- _5b(this);
- });
- var _5c=el.submenu[0].shadow;
- if(_5c){
- _5c.remove();
- }
- el.submenu.remove();
- }
- $(el).remove();
- };
- _5b(_5a);
- };
- function _5d(_5e,_5f,_60){
- var _61=$(_5f).parent();
- if(_60){
- $(_5f).show();
- }else{
- $(_5f).hide();
- }
- _10(_5e,_61);
- };
- function _62(_63){
- $(_63).children("div.menu-item").each(function(){
- _58(_63,this);
- });
- if(_63.shadow){
- _63.shadow.remove();
- }
- $(_63).remove();
- };
- $.fn.menu=function(_64,_65){
- if(typeof _64=="string"){
- return $.fn.menu.methods[_64](this,_65);
- }
- _64=_64||{};
- return this.each(function(){
- var _66=$.data(this,"menu");
- if(_66){
- $.extend(_66.options,_64);
- }else{
- _66=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_64)});
- _2(this);
- }
- $(this).css({left:_66.options.left,top:_66.options.top});
- });
- };
- $.fn.menu.methods={options:function(jq){
- return $.data(jq[0],"menu").options;
- },show:function(jq,pos){
- return jq.each(function(){
- _3b(this,pos);
- });
- },hide:function(jq){
- return jq.each(function(){
- _2b(this);
- });
- },destroy:function(jq){
- return jq.each(function(){
- _62(this);
- });
- },setText:function(jq,_67){
- return jq.each(function(){
- var _68=$(_67.target).data("menuitem").options;
- _68.text=_67.text;
- $(_67.target).children("div.menu-text").html(_67.text);
- });
- },setIcon:function(jq,_69){
- return jq.each(function(){
- var _6a=$(_69.target).data("menuitem").options;
- _6a.iconCls=_69.iconCls;
- $(_69.target).children("div.menu-icon").remove();
- if(_69.iconCls){
- $("<div class=\"menu-icon\"></div>").addClass(_69.iconCls).appendTo(_69.target);
- }
- });
- },getItem:function(jq,_6b){
- var _6c=$(_6b).data("menuitem").options;
- return $.extend({},_6c,{target:$(_6b)[0]});
- },findItem:function(jq,_6d){
- if(typeof _6d=="string"){
- return _46(jq[0],function(_6e){
- return $("<div>"+_6e.text+"</div>").text()==_6d;
- });
- }else{
- return _46(jq[0],_6d);
- }
- },appendItem:function(jq,_6f){
- return jq.each(function(){
- _52(this,_6f);
- });
- },removeItem:function(jq,_70){
- return jq.each(function(){
- _58(this,_70);
- });
- },enableItem:function(jq,_71){
- return jq.each(function(){
- _16(this,_71,false);
- });
- },disableItem:function(jq,_72){
- return jq.each(function(){
- _16(this,_72,true);
- });
- },showItem:function(jq,_73){
- return jq.each(function(){
- _5d(this,_73,true);
- });
- },hideItem:function(jq,_74){
- return jq.each(function(){
- _5d(this,_74,false);
- });
- },resize:function(jq,_75){
- return jq.each(function(){
- _10(this,_75?$(_75):$(this));
- });
- }};
- $.fn.menu.parseOptions=function(_76){
- return $.extend({},$.parser.parseOptions(_76,[{minWidth:"number",itemHeight:"number",duration:"number",hideOnUnhover:"boolean"},{fit:"boolean",inline:"boolean",noline:"boolean"}]));
- };
- $.fn.menu.defaults={zIndex:110000,left:0,top:0,alignTo:null,align:"left",minWidth:150,itemHeight:32,duration:100,hideOnUnhover:true,inline:false,fit:false,noline:false,events:{mouseenter:_25,mouseleave:_28,mouseover:_2c,mouseout:_30,click:_33},position:function(_77,_78,top){
- return {left:_78,top:top};
- },onShow:function(){
- },onHide:function(){
- },onClick:function(_79){
- }};
- })(jQuery);
|