jquery.sidemenu.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. /**
  2. * EasyUI for jQuery 1.6.10
  3. *
  4. * Copyright (c) 2009-2018 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. var _1=1;
  12. function _2(_3){
  13. $(_3).addClass("sidemenu");
  14. };
  15. function _4(_5,_6){
  16. var _7=$(_5).sidemenu("options");
  17. if(_6){
  18. $.extend(_7,{width:_6.width,height:_6.height});
  19. }
  20. $(_5)._size(_7);
  21. $(_5).find(".accordion").accordion("resize");
  22. };
  23. function _8(_9,_a,_b){
  24. var _c=$(_9).sidemenu("options");
  25. var tt=$("<ul class=\"sidemenu-tree\"></ul>").appendTo(_a);
  26. tt.tree({data:_b,animate:_c.animate,onBeforeSelect:function(_d){
  27. if(_d.children){
  28. return false;
  29. }
  30. },onSelect:function(_e){
  31. _12(_9,_e.id,true);
  32. },onExpand:function(_f){
  33. _25(_9,_f);
  34. },onCollapse:function(_10){
  35. _25(_9,_10);
  36. },onClick:function(_11){
  37. if(_11.children){
  38. if(_11.state=="open"){
  39. $(_11.target).addClass("tree-node-nonleaf-collapsed");
  40. }else{
  41. $(_11.target).removeClass("tree-node-nonleaf-collapsed");
  42. }
  43. $(this).tree("toggle",_11.target);
  44. }
  45. }});
  46. tt.unbind(".sidemenu").bind("mouseleave.sidemenu",function(){
  47. $(_a).trigger("mouseleave");
  48. });
  49. _12(_9,_c.selectedItemId);
  50. };
  51. function _13(_14,_15,_16){
  52. var _17=$(_14).sidemenu("options");
  53. $(_15).tooltip({content:$("<div></div>"),position:_17.floatMenuPosition,valign:"top",data:_16,onUpdate:function(_18){
  54. var _19=$(this).tooltip("options");
  55. var _1a=_19.data;
  56. _18.accordion({width:_17.floatMenuWidth,multiple:false}).accordion("add",{title:_1a.text,collapsed:false,collapsible:false});
  57. _8(_14,_18.accordion("panels")[0],_1a.children);
  58. },onShow:function(){
  59. var t=$(this);
  60. var tip=t.tooltip("tip").addClass("sidemenu-tooltip");
  61. tip.children(".tooltip-content").addClass("sidemenu");
  62. tip.find(".accordion").accordion("resize");
  63. tip.add(tip.find("ul.tree")).unbind(".sidemenu").bind("mouseover.sidemenu",function(){
  64. t.tooltip("show");
  65. }).bind("mouseleave.sidemenu",function(){
  66. t.tooltip("hide");
  67. });
  68. t.tooltip("reposition");
  69. },onPosition:function(_1b,top){
  70. var tip=$(this).tooltip("tip");
  71. if(!_17.collapsed){
  72. tip.css({left:-999999});
  73. }else{
  74. if(top+tip.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){
  75. top=$(window)._outerHeight()+$(document).scrollTop()-tip.outerHeight();
  76. tip.css("top",top);
  77. }
  78. }
  79. }});
  80. };
  81. function _1c(_1d,_1e){
  82. $(_1d).find(".sidemenu-tree").each(function(){
  83. _1e($(this));
  84. });
  85. $(_1d).find(".tooltip-f").each(function(){
  86. var tip=$(this).tooltip("tip");
  87. if(tip){
  88. tip.find(".sidemenu-tree").each(function(){
  89. _1e($(this));
  90. });
  91. $(this).tooltip("reposition");
  92. }
  93. });
  94. };
  95. function _12(_1f,_20,_21){
  96. var _22=null;
  97. var _23=$(_1f).sidemenu("options");
  98. _1c(_1f,function(t){
  99. t.find("div.tree-node-selected").removeClass("tree-node-selected");
  100. var _24=t.tree("find",_20);
  101. if(_24){
  102. $(_24.target).addClass("tree-node-selected");
  103. _23.selectedItemId=_24.id;
  104. t.trigger("mouseleave.sidemenu");
  105. _22=_24;
  106. }
  107. });
  108. if(_21&&_22){
  109. _23.onSelect.call(_1f,_22);
  110. }
  111. };
  112. function _25(_26,_27){
  113. _1c(_26,function(t){
  114. var _28=t.tree("find",_27.id);
  115. if(_28){
  116. var _29=t.tree("options");
  117. var _2a=_29.animate;
  118. _29.animate=false;
  119. t.tree(_27.state=="open"?"expand":"collapse",_28.target);
  120. _29.animate=_2a;
  121. }
  122. });
  123. };
  124. function _2b(_2c){
  125. var _2d=$(_2c).sidemenu("options");
  126. $(_2c).empty();
  127. if(_2d.data){
  128. $.easyui.forEach(_2d.data,true,function(_2e){
  129. if(!_2e.id){
  130. _2e.id="_easyui_sidemenu_"+(_1++);
  131. }
  132. if(!_2e.iconCls){
  133. _2e.iconCls="sidemenu-default-icon";
  134. }
  135. if(_2e.children){
  136. _2e.nodeCls="tree-node-nonleaf";
  137. if(!_2e.state){
  138. _2e.state="closed";
  139. }
  140. if(_2e.state=="open"){
  141. _2e.nodeCls="tree-node-nonleaf";
  142. }else{
  143. _2e.nodeCls="tree-node-nonleaf tree-node-nonleaf-collapsed";
  144. }
  145. }
  146. });
  147. var acc=$("<div></div>").appendTo(_2c);
  148. acc.accordion({fit:_2d.height=="auto"?false:true,border:_2d.border,multiple:_2d.multiple});
  149. var _2f=_2d.data;
  150. for(var i=0;i<_2f.length;i++){
  151. acc.accordion("add",{title:_2f[i].text,selected:_2f[i].state=="open",iconCls:_2f[i].iconCls,onBeforeExpand:function(){
  152. return !_2d.collapsed;
  153. }});
  154. var ap=acc.accordion("panels")[i];
  155. _8(_2c,ap,_2f[i].children);
  156. _13(_2c,ap.panel("header"),_2f[i]);
  157. }
  158. }
  159. };
  160. function _30(_31,_32){
  161. var _33=$(_31).sidemenu("options");
  162. _33.collapsed=_32;
  163. var acc=$(_31).find(".accordion");
  164. var _34=acc.accordion("panels");
  165. acc.accordion("options").animate=false;
  166. if(_33.collapsed){
  167. $(_31).addClass("sidemenu-collapsed");
  168. for(var i=0;i<_34.length;i++){
  169. var _35=_34[i];
  170. if(_35.panel("options").collapsed){
  171. _33.data[i].state="closed";
  172. }else{
  173. _33.data[i].state="open";
  174. acc.accordion("unselect",i);
  175. }
  176. var _36=_35.panel("header");
  177. _36.find(".panel-title").html("");
  178. _36.find(".panel-tool").hide();
  179. }
  180. }else{
  181. $(_31).removeClass("sidemenu-collapsed");
  182. for(var i=0;i<_34.length;i++){
  183. var _35=_34[i];
  184. if(_33.data[i].state=="open"){
  185. acc.accordion("select",i);
  186. }
  187. var _36=_35.panel("header");
  188. _36.find(".panel-title").html(_35.panel("options").title);
  189. _36.find(".panel-tool").show();
  190. }
  191. }
  192. acc.accordion("options").animate=_33.animate;
  193. };
  194. function _37(_38){
  195. $(_38).find(".tooltip-f").each(function(){
  196. $(this).tooltip("destroy");
  197. });
  198. $(_38).remove();
  199. };
  200. $.fn.sidemenu=function(_39,_3a){
  201. if(typeof _39=="string"){
  202. var _3b=$.fn.sidemenu.methods[_39];
  203. return _3b(this,_3a);
  204. }
  205. _39=_39||{};
  206. return this.each(function(){
  207. var _3c=$.data(this,"sidemenu");
  208. if(_3c){
  209. $.extend(_3c.options,_39);
  210. }else{
  211. _3c=$.data(this,"sidemenu",{options:$.extend({},$.fn.sidemenu.defaults,$.fn.sidemenu.parseOptions(this),_39)});
  212. _2(this);
  213. }
  214. _4(this);
  215. _2b(this);
  216. _30(this,_3c.options.collapsed);
  217. });
  218. };
  219. $.fn.sidemenu.methods={options:function(jq){
  220. return jq.data("sidemenu").options;
  221. },resize:function(jq,_3d){
  222. return jq.each(function(){
  223. _4(this,_3d);
  224. });
  225. },collapse:function(jq){
  226. return jq.each(function(){
  227. _30(this,true);
  228. });
  229. },expand:function(jq){
  230. return jq.each(function(){
  231. _30(this,false);
  232. });
  233. },destroy:function(jq){
  234. return jq.each(function(){
  235. _37(this);
  236. });
  237. }};
  238. $.fn.sidemenu.parseOptions=function(_3e){
  239. var t=$(_3e);
  240. return $.extend({},$.parser.parseOptions(_3e,["width","height"]));
  241. };
  242. $.fn.sidemenu.defaults={width:200,height:"auto",border:true,animate:true,multiple:true,collapsed:false,data:null,floatMenuWidth:200,floatMenuPosition:"right",onSelect:function(_3f){
  243. }};
  244. })(jQuery);