123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505 |
- /**
- * jQuery EasyUI 1.4.4
- *
- * Copyright (c) 2009-2015 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++){
- _8(_6[i]);
- }
- function _7(_9){
- var _a=[];
- _9.addClass("menu");
- _a.push(_9);
- if(!_9.hasClass("menu-content")){
- _9.children("div").each(function(){
- var _b=$(this).children("div");
- if(_b.length){
- _b.appendTo("body");
- this.submenu=_b;
- var mm=_7(_b);
- _a=_a.concat(mm);
- }
- });
- }
- return _a;
- };
- function _8(_c){
- var wh=$.parser.parseOptions(_c[0],["width","height"]);
- _c[0].originalHeight=wh.height||0;
- if(_c.hasClass("menu-content")){
- _c[0].originalWidth=wh.width||_c._outerWidth();
- }else{
- _c[0].originalWidth=wh.width||0;
- _c.children("div").each(function(){
- var _d=$(this);
- var _e=$.extend({},$.parser.parseOptions(this,["name","iconCls","href",{separator:"boolean"}]),{disabled:(_d.attr("disabled")?true:undefined)});
- if(_e.separator){
- _d.addClass("menu-sep");
- }
- if(!_d.hasClass("menu-sep")){
- _d[0].itemName=_e.name||"";
- _d[0].itemHref=_e.href||"";
- var _f=_d.addClass("menu-item").html();
- _d.empty().append($("<div class=\"menu-text\"></div>").html(_f));
- if(_e.iconCls){
- $("<div class=\"menu-icon\"></div>").addClass(_e.iconCls).appendTo(_d);
- }
- if(_e.disabled){
- _10(_3,_d[0],true);
- }
- if(_d[0].submenu){
- $("<div class=\"menu-rightarrow\"></div>").appendTo(_d);
- }
- _11(_3,_d);
- }
- });
- $("<div class=\"menu-line\"></div>").prependTo(_c);
- }
- _12(_3,_c);
- if(!_c.hasClass("menu-inline")){
- _c.hide();
- }
- _13(_3,_c);
- };
- };
- function _12(_14,_15){
- var _16=$.data(_14,"menu").options;
- var _17=_15.attr("style")||"";
- _15.css({display:"block",left:-10000,height:"auto",overflow:"hidden"});
- _15.find(".menu-item").each(function(){
- $(this)._outerHeight(_16.itemHeight);
- $(this).find(".menu-text").css({height:(_16.itemHeight-2)+"px",lineHeight:(_16.itemHeight-2)+"px"});
- });
- _15.removeClass("menu-noline").addClass(_16.noline?"menu-noline":"");
- var _18=_15[0].originalWidth||"auto";
- if(isNaN(parseInt(_18))){
- _18=0;
- _15.find("div.menu-text").each(function(){
- if(_18<$(this)._outerWidth()){
- _18=$(this)._outerWidth();
- }
- });
- _18+=40;
- }
- var _19=_15.outerHeight();
- var _1a=_15[0].originalHeight||"auto";
- if(isNaN(parseInt(_1a))){
- _1a=_19;
- if(_15.hasClass("menu-top")&&_16.alignTo){
- var at=$(_16.alignTo);
- var h1=at.offset().top-$(document).scrollTop();
- var h2=$(window)._outerHeight()+$(document).scrollTop()-at.offset().top-at._outerHeight();
- _1a=Math.min(_1a,Math.max(h1,h2));
- }else{
- if(_1a>$(window)._outerHeight()){
- _1a=$(window).height();
- }
- }
- }
- _15.attr("style",_17);
- _15._size({fit:(_15[0]==_14?_16.fit:false),width:_18,minWidth:_16.minWidth,height:_1a});
- _15.css("overflow",_15.outerHeight()<_19?"auto":"hidden");
- _15.children("div.menu-line")._outerHeight(_19-2);
- };
- function _13(_1b,_1c){
- if(_1c.hasClass("menu-inline")){
- return;
- }
- var _1d=$.data(_1b,"menu");
- _1c.unbind(".menu").bind("mouseenter.menu",function(){
- if(_1d.timer){
- clearTimeout(_1d.timer);
- _1d.timer=null;
- }
- }).bind("mouseleave.menu",function(){
- if(_1d.options.hideOnUnhover){
- _1d.timer=setTimeout(function(){
- _1e(_1b,$(_1b).hasClass("menu-inline"));
- },_1d.options.duration);
- }
- });
- };
- function _11(_1f,_20){
- if(!_20.hasClass("menu-item")){
- return;
- }
- _20.unbind(".menu");
- _20.bind("click.menu",function(){
- if($(this).hasClass("menu-item-disabled")){
- return;
- }
- if(!this.submenu){
- _1e(_1f,$(_1f).hasClass("menu-inline"));
- var _21=this.itemHref;
- if(_21){
- location.href=_21;
- }
- }
- $(this).trigger("mouseenter");
- var _22=$(_1f).menu("getItem",this);
- $.data(_1f,"menu").options.onClick.call(_1f,_22);
- }).bind("mouseenter.menu",function(e){
- _20.siblings().each(function(){
- if(this.submenu){
- _1(this.submenu);
- }
- $(this).removeClass("menu-active");
- });
- _20.addClass("menu-active");
- if($(this).hasClass("menu-item-disabled")){
- _20.addClass("menu-active-disabled");
- return;
- }
- var _23=_20[0].submenu;
- if(_23){
- $(_1f).menu("show",{menu:_23,parent:_20});
- }
- }).bind("mouseleave.menu",function(e){
- _20.removeClass("menu-active menu-active-disabled");
- var _24=_20[0].submenu;
- if(_24){
- if(e.pageX>=parseInt(_24.css("left"))){
- _20.addClass("menu-active");
- }else{
- _1(_24);
- }
- }else{
- _20.removeClass("menu-active");
- }
- });
- };
- function _1e(_25,_26){
- var _27=$.data(_25,"menu");
- if(_27){
- if($(_25).is(":visible")){
- _1($(_25));
- if(_26){
- $(_25).show();
- }else{
- _27.options.onHide.call(_25);
- }
- }
- }
- return false;
- };
- function _28(_29,_2a){
- var _2b,top;
- _2a=_2a||{};
- var _2c=$(_2a.menu||_29);
- $(_29).menu("resize",_2c[0]);
- if(_2c.hasClass("menu-top")){
- var _2d=$.data(_29,"menu").options;
- $.extend(_2d,_2a);
- _2b=_2d.left;
- top=_2d.top;
- if(_2d.alignTo){
- var at=$(_2d.alignTo);
- _2b=at.offset().left;
- top=at.offset().top+at._outerHeight();
- if(_2d.align=="right"){
- _2b+=at.outerWidth()-_2c.outerWidth();
- }
- }
- if(_2b+_2c.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){
- _2b=$(window)._outerWidth()+$(document).scrollLeft()-_2c.outerWidth()-5;
- }
- if(_2b<0){
- _2b=0;
- }
- top=_2e(top,_2d.alignTo);
- }else{
- var _2f=_2a.parent;
- _2b=_2f.offset().left+_2f.outerWidth()-2;
- if(_2b+_2c.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){
- _2b=_2f.offset().left-_2c.outerWidth()+2;
- }
- top=_2e(_2f.offset().top-3);
- }
- function _2e(top,_30){
- if(top+_2c.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){
- if(_30){
- top=$(_30).offset().top-_2c._outerHeight();
- }else{
- top=$(window)._outerHeight()+$(document).scrollTop()-_2c.outerHeight();
- }
- }
- if(top<0){
- top=0;
- }
- return top;
- };
- _2c.css({left:_2b,top:top});
- _2c.show(0,function(){
- if(!_2c[0].shadow){
- _2c[0].shadow=$("<div class=\"menu-shadow\"></div>").insertAfter(_2c);
- }
- _2c[0].shadow.css({display:(_2c.hasClass("menu-inline")?"none":"block"),zIndex:$.fn.menu.defaults.zIndex++,left:_2c.css("left"),top:_2c.css("top"),width:_2c.outerWidth(),height:_2c.outerHeight()});
- _2c.css("z-index",$.fn.menu.defaults.zIndex++);
- if(_2c.hasClass("menu-top")){
- $.data(_2c[0],"menu").options.onShow.call(_2c[0]);
- }
- });
- };
- function _1(_31){
- if(_31&&_31.length){
- _32(_31);
- _31.find("div.menu-item").each(function(){
- if(this.submenu){
- _1(this.submenu);
- }
- $(this).removeClass("menu-active");
- });
- }
- function _32(m){
- m.stop(true,true);
- if(m[0].shadow){
- m[0].shadow.hide();
- }
- m.hide();
- };
- };
- function _33(_34,_35){
- var _36=null;
- var tmp=$("<div></div>");
- function _37(_38){
- _38.children("div.menu-item").each(function(){
- var _39=$(_34).menu("getItem",this);
- var s=tmp.empty().html(_39.text).text();
- if(_35==$.trim(s)){
- _36=_39;
- }else{
- if(this.submenu&&!_36){
- _37(this.submenu);
- }
- }
- });
- };
- _37($(_34));
- tmp.remove();
- return _36;
- };
- function _10(_3a,_3b,_3c){
- var t=$(_3b);
- if(!t.hasClass("menu-item")){
- return;
- }
- if(_3c){
- t.addClass("menu-item-disabled");
- if(_3b.onclick){
- _3b.onclick1=_3b.onclick;
- _3b.onclick=null;
- }
- }else{
- t.removeClass("menu-item-disabled");
- if(_3b.onclick1){
- _3b.onclick=_3b.onclick1;
- _3b.onclick1=null;
- }
- }
- };
- function _3d(_3e,_3f){
- var _40=$.data(_3e,"menu").options;
- var _41=$(_3e);
- if(_3f.parent){
- if(!_3f.parent.submenu){
- var _42=$("<div class=\"menu\"><div class=\"menu-line\"></div></div>").appendTo("body");
- _42.hide();
- _3f.parent.submenu=_42;
- $("<div class=\"menu-rightarrow\"></div>").appendTo(_3f.parent);
- }
- _41=_3f.parent.submenu;
- }
- if(_3f.separator){
- var _43=$("<div class=\"menu-sep\"></div>").appendTo(_41);
- }else{
- var _43=$("<div class=\"menu-item\"></div>").appendTo(_41);
- $("<div class=\"menu-text\"></div>").html(_3f.text).appendTo(_43);
- }
- if(_3f.iconCls){
- $("<div class=\"menu-icon\"></div>").addClass(_3f.iconCls).appendTo(_43);
- }
- if(_3f.id){
- _43.attr("id",_3f.id);
- }
- if(_3f.name){
- _43[0].itemName=_3f.name;
- }
- if(_3f.href){
- _43[0].itemHref=_3f.href;
- }
- if(_3f.onclick){
- if(typeof _3f.onclick=="string"){
- _43.attr("onclick",_3f.onclick);
- }else{
- _43[0].onclick=eval(_3f.onclick);
- }
- }
- if(_3f.handler){
- _43[0].onclick=eval(_3f.handler);
- }
- if(_3f.disabled){
- _10(_3e,_43[0],true);
- }
- _11(_3e,_43);
- _13(_3e,_41);
- _12(_3e,_41);
- };
- function _44(_45,_46){
- function _47(el){
- if(el.submenu){
- el.submenu.children("div.menu-item").each(function(){
- _47(this);
- });
- var _48=el.submenu[0].shadow;
- if(_48){
- _48.remove();
- }
- el.submenu.remove();
- }
- $(el).remove();
- };
- var _49=$(_46).parent();
- _47(_46);
- _12(_45,_49);
- };
- function _4a(_4b,_4c,_4d){
- var _4e=$(_4c).parent();
- if(_4d){
- $(_4c).show();
- }else{
- $(_4c).hide();
- }
- _12(_4b,_4e);
- };
- function _4f(_50){
- $(_50).children("div.menu-item").each(function(){
- _44(_50,this);
- });
- if(_50.shadow){
- _50.shadow.remove();
- }
- $(_50).remove();
- };
- $.fn.menu=function(_51,_52){
- if(typeof _51=="string"){
- return $.fn.menu.methods[_51](this,_52);
- }
- _51=_51||{};
- return this.each(function(){
- var _53=$.data(this,"menu");
- if(_53){
- $.extend(_53.options,_51);
- }else{
- _53=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_51)});
- _2(this);
- }
- $(this).css({left:_53.options.left,top:_53.options.top});
- });
- };
- $.fn.menu.methods={options:function(jq){
- return $.data(jq[0],"menu").options;
- },show:function(jq,pos){
- return jq.each(function(){
- _28(this,pos);
- });
- },hide:function(jq){
- return jq.each(function(){
- _1e(this);
- });
- },destroy:function(jq){
- return jq.each(function(){
- _4f(this);
- });
- },setText:function(jq,_54){
- return jq.each(function(){
- $(_54.target).children("div.menu-text").html(_54.text);
- });
- },setIcon:function(jq,_55){
- return jq.each(function(){
- $(_55.target).children("div.menu-icon").remove();
- if(_55.iconCls){
- $("<div class=\"menu-icon\"></div>").addClass(_55.iconCls).appendTo(_55.target);
- }
- });
- },getItem:function(jq,_56){
- var t=$(_56);
- var _57={target:_56,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_56.itemName,href:_56.itemHref,onclick:_56.onclick};
- var _58=t.children("div.menu-icon");
- if(_58.length){
- var cc=[];
- var aa=_58.attr("class").split(" ");
- for(var i=0;i<aa.length;i++){
- if(aa[i]!="menu-icon"){
- cc.push(aa[i]);
- }
- }
- _57.iconCls=cc.join(" ");
- }
- return _57;
- },findItem:function(jq,_59){
- return _33(jq[0],_59);
- },appendItem:function(jq,_5a){
- return jq.each(function(){
- _3d(this,_5a);
- });
- },removeItem:function(jq,_5b){
- return jq.each(function(){
- _44(this,_5b);
- });
- },enableItem:function(jq,_5c){
- return jq.each(function(){
- _10(this,_5c,false);
- });
- },disableItem:function(jq,_5d){
- return jq.each(function(){
- _10(this,_5d,true);
- });
- },showItem:function(jq,_5e){
- return jq.each(function(){
- _4a(this,_5e,true);
- });
- },hideItem:function(jq,_5f){
- return jq.each(function(){
- _4a(this,_5f,false);
- });
- },resize:function(jq,_60){
- return jq.each(function(){
- _12(this,$(_60));
- });
- }};
- $.fn.menu.parseOptions=function(_61){
- return $.extend({},$.parser.parseOptions(_61,[{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:120,itemHeight:22,duration:100,hideOnUnhover:true,inline:false,fit:false,noline:false,onShow:function(){
- },onHide:function(){
- },onClick:function(_62){
- }};
- })(jQuery);
|