Toolbox/static/jeasyui/plugins/jquery.sidemenu.js

246 lines
6.0 KiB
JavaScript

/**
* EasyUI for jQuery 1.9.14
*
* Copyright (c) 2009-2021 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($){
var _1=1;
function _2(_3){
$(_3).addClass("sidemenu");
};
function _4(_5,_6){
var _7=$(_5).sidemenu("options");
if(_6){
$.extend(_7,{width:_6.width,height:_6.height});
}
$(_5)._size(_7);
$(_5).find(".accordion").accordion("resize");
};
function _8(_9,_a,_b){
var _c=$(_9).sidemenu("options");
var tt=$("<ul class=\"sidemenu-tree\"></ul>").appendTo(_a);
tt.tree({data:_b,animate:_c.animate,onBeforeSelect:function(_d){
if(_d.children){
return false;
}
},onSelect:function(_e){
_12(_9,_e.id,true);
},onExpand:function(_f){
_25(_9,_f);
},onCollapse:function(_10){
_25(_9,_10);
},onClick:function(_11){
if(_11.children){
if(_11.state=="open"){
$(_11.target).addClass("tree-node-nonleaf-collapsed");
}else{
$(_11.target).removeClass("tree-node-nonleaf-collapsed");
}
$(this).tree("toggle",_11.target);
}
}});
tt._unbind(".sidemenu")._bind("mouseleave.sidemenu",function(){
$(_a).trigger("mouseleave");
});
_12(_9,_c.selectedItemId);
};
function _13(_14,_15,_16){
var _17=$(_14).sidemenu("options");
$(_15).tooltip({content:$("<div></div>"),position:_17.floatMenuPosition,valign:"top",data:_16,onUpdate:function(_18){
var _19=$(this).tooltip("options");
var _1a=_19.data;
_18.accordion({width:_17.floatMenuWidth,multiple:false}).accordion("add",{title:_1a.text,collapsed:false,collapsible:false});
_8(_14,_18.accordion("panels")[0],_1a.children);
},onShow:function(){
var t=$(this);
var tip=t.tooltip("tip").addClass("sidemenu-tooltip");
tip.children(".tooltip-content").addClass("sidemenu");
tip.find(".accordion").accordion("resize");
tip.add(tip.find("ul.tree"))._unbind(".sidemenu")._bind("mouseover.sidemenu",function(){
t.tooltip("show");
})._bind("mouseleave.sidemenu",function(){
t.tooltip("hide");
});
t.tooltip("reposition");
},onPosition:function(_1b,top){
var tip=$(this).tooltip("tip");
if(!_17.collapsed){
tip.css({left:-999999});
}else{
if(top+tip.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){
top=$(window)._outerHeight()+$(document).scrollTop()-tip.outerHeight();
tip.css("top",top);
}
}
}});
};
function _1c(_1d,_1e){
$(_1d).find(".sidemenu-tree").each(function(){
_1e($(this));
});
$(_1d).find(".tooltip-f").each(function(){
var tip=$(this).tooltip("tip");
if(tip){
tip.find(".sidemenu-tree").each(function(){
_1e($(this));
});
$(this).tooltip("reposition");
}
});
};
function _12(_1f,_20,_21){
var _22=null;
var _23=$(_1f).sidemenu("options");
_1c(_1f,function(t){
t.find("div.tree-node-selected").removeClass("tree-node-selected");
var _24=t.tree("find",_20);
if(_24){
$(_24.target).addClass("tree-node-selected");
_23.selectedItemId=_24.id;
t.trigger("mouseleave.sidemenu");
_22=_24;
}
});
if(_21&&_22){
_23.onSelect.call(_1f,_22);
}
};
function _25(_26,_27){
_1c(_26,function(t){
var _28=t.tree("find",_27.id);
if(_28){
var _29=t.tree("options");
var _2a=_29.animate;
_29.animate=false;
t.tree(_27.state=="open"?"expand":"collapse",_28.target);
_29.animate=_2a;
}
});
};
function _2b(_2c){
var _2d=$(_2c).sidemenu("options");
$(_2c).empty();
if(_2d.data){
$.easyui.forEach(_2d.data,true,function(_2e){
if(!_2e.id){
_2e.id="_easyui_sidemenu_"+(_1++);
}
if(!_2e.iconCls){
_2e.iconCls="sidemenu-default-icon";
}
if(_2e.children){
_2e.nodeCls="tree-node-nonleaf";
if(!_2e.state){
_2e.state="closed";
}
if(_2e.state=="open"){
_2e.nodeCls="tree-node-nonleaf";
}else{
_2e.nodeCls="tree-node-nonleaf tree-node-nonleaf-collapsed";
}
}
});
var acc=$("<div></div>").appendTo(_2c);
acc.accordion({fit:_2d.height=="auto"?false:true,border:_2d.border,multiple:_2d.multiple});
var _2f=_2d.data;
for(var i=0;i<_2f.length;i++){
acc.accordion("add",{title:_2f[i].text,selected:_2f[i].state=="open",iconCls:_2f[i].iconCls,onBeforeExpand:function(){
return !_2d.collapsed;
}});
var ap=acc.accordion("panels")[i];
_8(_2c,ap,_2f[i].children);
_13(_2c,ap.panel("header"),_2f[i]);
}
}
};
function _30(_31,_32){
var _33=$(_31).sidemenu("options");
_33.collapsed=_32;
var acc=$(_31).find(".accordion");
var _34=acc.accordion("panels");
acc.accordion("options").animate=false;
if(_33.collapsed){
$(_31).addClass("sidemenu-collapsed");
for(var i=0;i<_34.length;i++){
var _35=_34[i];
if(_35.panel("options").collapsed){
_33.data[i].state="closed";
}else{
_33.data[i].state="open";
acc.accordion("unselect",i);
}
var _36=_35.panel("header");
_36.find(".panel-title").html("");
_36.find(".panel-tool").hide();
}
}else{
$(_31).removeClass("sidemenu-collapsed");
for(var i=0;i<_34.length;i++){
var _35=_34[i];
if(_33.data[i].state=="open"){
acc.accordion("select",i);
}
var _36=_35.panel("header");
_36.find(".panel-title").html(_35.panel("options").title);
_36.find(".panel-tool").show();
}
}
acc.accordion("options").animate=_33.animate;
};
function _37(_38){
$(_38).find(".tooltip-f").each(function(){
$(this).tooltip("destroy");
});
$(_38).remove();
};
$.fn.sidemenu=function(_39,_3a){
if(typeof _39=="string"){
var _3b=$.fn.sidemenu.methods[_39];
return _3b(this,_3a);
}
_39=_39||{};
return this.each(function(){
var _3c=$.data(this,"sidemenu");
if(_3c){
$.extend(_3c.options,_39);
}else{
_3c=$.data(this,"sidemenu",{options:$.extend({},$.fn.sidemenu.defaults,$.fn.sidemenu.parseOptions(this),_39)});
_2(this);
}
_4(this);
_2b(this);
_30(this,_3c.options.collapsed);
});
};
$.fn.sidemenu.methods={options:function(jq){
return jq.data("sidemenu").options;
},resize:function(jq,_3d){
return jq.each(function(){
_4(this,_3d);
});
},collapse:function(jq){
return jq.each(function(){
_30(this,true);
});
},expand:function(jq){
return jq.each(function(){
_30(this,false);
});
},destroy:function(jq){
return jq.each(function(){
_37(this);
});
}};
$.fn.sidemenu.parseOptions=function(_3e){
var t=$(_3e);
return $.extend({},$.parser.parseOptions(_3e,["width","height"]));
};
$.fn.sidemenu.defaults={width:200,height:"auto",border:true,animate:true,multiple:true,collapsed:false,data:null,floatMenuWidth:200,floatMenuPosition:"right",onSelect:function(_3f){
}};
})(jQuery);