jquery.window.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  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. function _1(_2,_3){
  12. var _4=$.data(_2,"window");
  13. if(_3){
  14. if(_3.left!=null){
  15. _4.options.left=_3.left;
  16. }
  17. if(_3.top!=null){
  18. _4.options.top=_3.top;
  19. }
  20. }
  21. $(_2).panel("move",_4.options);
  22. if(_4.shadow){
  23. _4.shadow.css({left:_4.options.left,top:_4.options.top});
  24. }
  25. };
  26. function _5(_6,_7){
  27. var _8=$.data(_6,"window").options;
  28. var pp=$(_6).window("panel");
  29. var _9=pp._outerWidth();
  30. if(_8.inline){
  31. var _a=pp.parent();
  32. _8.left=Math.ceil((_a.width()-_9)/2+_a.scrollLeft());
  33. }else{
  34. _8.left=Math.ceil(($(window)._outerWidth()-_9)/2+$(document).scrollLeft());
  35. }
  36. if(_7){
  37. _1(_6);
  38. }
  39. };
  40. function _b(_c,_d){
  41. var _e=$.data(_c,"window").options;
  42. var pp=$(_c).window("panel");
  43. var _f=pp._outerHeight();
  44. if(_e.inline){
  45. var _10=pp.parent();
  46. _e.top=Math.ceil((_10.height()-_f)/2+_10.scrollTop());
  47. }else{
  48. _e.top=Math.ceil(($(window)._outerHeight()-_f)/2+$(document).scrollTop());
  49. }
  50. if(_d){
  51. _1(_c);
  52. }
  53. };
  54. function _11(_12){
  55. var _13=$.data(_12,"window");
  56. var _14=_13.options;
  57. var win=$(_12).panel($.extend({},_13.options,{border:false,doSize:true,closed:true,cls:"window "+(!_14.border?"window-thinborder window-noborder ":(_14.border=="thin"?"window-thinborder ":""))+(_14.cls||""),headerCls:"window-header "+(_14.headerCls||""),bodyCls:"window-body "+(_14.noheader?"window-body-noheader ":" ")+(_14.bodyCls||""),onBeforeDestroy:function(){
  58. if(_14.onBeforeDestroy.call(_12)==false){
  59. return false;
  60. }
  61. if(_13.shadow){
  62. _13.shadow.remove();
  63. }
  64. if(_13.mask){
  65. _13.mask.remove();
  66. }
  67. },onClose:function(){
  68. if(_13.shadow){
  69. _13.shadow.hide();
  70. }
  71. if(_13.mask){
  72. _13.mask.hide();
  73. }
  74. _14.onClose.call(_12);
  75. },onOpen:function(){
  76. if(_13.mask){
  77. _13.mask.css($.extend({display:"block",zIndex:$.fn.window.defaults.zIndex++},$.fn.window.getMaskSize(_12)));
  78. }
  79. if(_13.shadow){
  80. _13.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_14.left,top:_14.top,width:_13.window._outerWidth(),height:_13.window._outerHeight()});
  81. }
  82. _13.window.css("z-index",$.fn.window.defaults.zIndex++);
  83. _14.onOpen.call(_12);
  84. },onResize:function(_15,_16){
  85. var _17=$(this).panel("options");
  86. $.extend(_14,{width:_17.width,height:_17.height,left:_17.left,top:_17.top});
  87. if(_13.shadow){
  88. _13.shadow.css({left:_14.left,top:_14.top,width:_13.window._outerWidth(),height:_13.window._outerHeight()});
  89. }
  90. _14.onResize.call(_12,_15,_16);
  91. },onMinimize:function(){
  92. if(_13.shadow){
  93. _13.shadow.hide();
  94. }
  95. if(_13.mask){
  96. _13.mask.hide();
  97. }
  98. _13.options.onMinimize.call(_12);
  99. },onBeforeCollapse:function(){
  100. if(_14.onBeforeCollapse.call(_12)==false){
  101. return false;
  102. }
  103. if(_13.shadow){
  104. _13.shadow.hide();
  105. }
  106. },onExpand:function(){
  107. if(_13.shadow){
  108. _13.shadow.show();
  109. }
  110. _14.onExpand.call(_12);
  111. }}));
  112. _13.window=win.panel("panel");
  113. if(_13.mask){
  114. _13.mask.remove();
  115. }
  116. if(_14.modal){
  117. _13.mask=$("<div class=\"window-mask\" style=\"display:none\"></div>").insertAfter(_13.window);
  118. }
  119. if(_13.shadow){
  120. _13.shadow.remove();
  121. }
  122. if(_14.shadow){
  123. _13.shadow=$("<div class=\"window-shadow\" style=\"display:none\"></div>").insertAfter(_13.window);
  124. }
  125. var _18=_14.closed;
  126. if(_14.left==null){
  127. _5(_12);
  128. }
  129. if(_14.top==null){
  130. _b(_12);
  131. }
  132. _1(_12);
  133. if(!_18){
  134. win.window("open");
  135. }
  136. };
  137. function _19(_1a,top,_1b,_1c){
  138. var _1d=this;
  139. var _1e=$.data(_1d,"window");
  140. var _1f=_1e.options;
  141. if(!_1f.constrain){
  142. return {};
  143. }
  144. if($.isFunction(_1f.constrain)){
  145. return _1f.constrain.call(_1d,_1a,top,_1b,_1c);
  146. }
  147. var win=$(_1d).window("window");
  148. var _20=_1f.inline?win.parent():$(window);
  149. if(_1a<0){
  150. _1a=0;
  151. }
  152. if(top<_20.scrollTop()){
  153. top=_20.scrollTop();
  154. }
  155. if(_1a+_1b>_20.width()){
  156. if(_1b==win.outerWidth()){
  157. _1a=_20.width()-_1b;
  158. }else{
  159. _1b=_20.width()-_1a;
  160. }
  161. }
  162. if(top-_20.scrollTop()+_1c>_20.height()){
  163. if(_1c==win.outerHeight()){
  164. top=_20.height()-_1c+_20.scrollTop();
  165. }else{
  166. _1c=_20.height()-top+_20.scrollTop();
  167. }
  168. }
  169. return {left:_1a,top:top,width:_1b,height:_1c};
  170. };
  171. function _21(_22){
  172. var _23=$.data(_22,"window");
  173. _23.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_23.options.draggable==false,onBeforeDrag:function(e){
  174. if(_23.mask){
  175. _23.mask.css("z-index",$.fn.window.defaults.zIndex++);
  176. }
  177. if(_23.shadow){
  178. _23.shadow.css("z-index",$.fn.window.defaults.zIndex++);
  179. }
  180. _23.window.css("z-index",$.fn.window.defaults.zIndex++);
  181. },onStartDrag:function(e){
  182. _24(e);
  183. },onDrag:function(e){
  184. _25(e);
  185. return false;
  186. },onStopDrag:function(e){
  187. _26(e,"move");
  188. }});
  189. _23.window.resizable({disabled:_23.options.resizable==false,onStartResize:function(e){
  190. _24(e);
  191. },onResize:function(e){
  192. _25(e);
  193. return false;
  194. },onStopResize:function(e){
  195. _26(e,"resize");
  196. }});
  197. function _24(e){
  198. if(_23.pmask){
  199. _23.pmask.remove();
  200. }
  201. _23.pmask=$("<div class=\"window-proxy-mask\"></div>").insertAfter(_23.window);
  202. _23.pmask.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_23.window._outerWidth(),height:_23.window._outerHeight()});
  203. if(_23.proxy){
  204. _23.proxy.remove();
  205. }
  206. _23.proxy=$("<div class=\"window-proxy\"></div>").insertAfter(_23.window);
  207. _23.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top});
  208. _23.proxy._outerWidth(e.data.width)._outerHeight(e.data.height);
  209. _23.proxy.hide();
  210. setTimeout(function(){
  211. if(_23.pmask){
  212. _23.pmask.show();
  213. }
  214. if(_23.proxy){
  215. _23.proxy.show();
  216. }
  217. },500);
  218. };
  219. function _25(e){
  220. $.extend(e.data,_19.call(_22,e.data.left,e.data.top,e.data.width,e.data.height));
  221. _23.pmask.show();
  222. _23.proxy.css({display:"block",left:e.data.left,top:e.data.top});
  223. _23.proxy._outerWidth(e.data.width);
  224. _23.proxy._outerHeight(e.data.height);
  225. };
  226. function _26(e,_27){
  227. $.extend(e.data,_19.call(_22,e.data.left,e.data.top,e.data.width+0.1,e.data.height+0.1));
  228. $(_22).window(_27,e.data);
  229. _23.pmask.remove();
  230. _23.pmask=null;
  231. _23.proxy.remove();
  232. _23.proxy=null;
  233. };
  234. };
  235. $(function(){
  236. if(!$._positionFixed){
  237. $(window).resize(function(){
  238. $("body>div.window-mask:visible").css({width:"",height:""});
  239. setTimeout(function(){
  240. $("body>div.window-mask:visible").css($.fn.window.getMaskSize());
  241. },50);
  242. });
  243. }
  244. });
  245. $.fn.window=function(_28,_29){
  246. if(typeof _28=="string"){
  247. var _2a=$.fn.window.methods[_28];
  248. if(_2a){
  249. return _2a(this,_29);
  250. }else{
  251. return this.panel(_28,_29);
  252. }
  253. }
  254. _28=_28||{};
  255. return this.each(function(){
  256. var _2b=$.data(this,"window");
  257. if(_2b){
  258. $.extend(_2b.options,_28);
  259. }else{
  260. _2b=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_28)});
  261. if(!_2b.options.inline){
  262. document.body.appendChild(this);
  263. }
  264. }
  265. _11(this);
  266. _21(this);
  267. });
  268. };
  269. $.fn.window.methods={options:function(jq){
  270. var _2c=jq.panel("options");
  271. var _2d=$.data(jq[0],"window").options;
  272. return $.extend(_2d,{closed:_2c.closed,collapsed:_2c.collapsed,minimized:_2c.minimized,maximized:_2c.maximized});
  273. },window:function(jq){
  274. return $.data(jq[0],"window").window;
  275. },move:function(jq,_2e){
  276. return jq.each(function(){
  277. _1(this,_2e);
  278. });
  279. },hcenter:function(jq){
  280. return jq.each(function(){
  281. _5(this,true);
  282. });
  283. },vcenter:function(jq){
  284. return jq.each(function(){
  285. _b(this,true);
  286. });
  287. },center:function(jq){
  288. return jq.each(function(){
  289. _5(this);
  290. _b(this);
  291. _1(this);
  292. });
  293. }};
  294. $.fn.window.getMaskSize=function(_2f){
  295. var _30=$(_2f).data("window");
  296. if(_30&&_30.options.inline){
  297. return {};
  298. }else{
  299. if($._positionFixed){
  300. return {position:"fixed"};
  301. }else{
  302. return {width:$(document).width(),height:$(document).height()};
  303. }
  304. }
  305. };
  306. $.fn.window.parseOptions=function(_31){
  307. return $.extend({},$.fn.panel.parseOptions(_31),$.parser.parseOptions(_31,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}]));
  308. };
  309. $.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,border:true,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false,constrain:false});
  310. })(jQuery);