16 lines
19 KiB
JavaScript
16 lines
19 KiB
JavaScript
/**
|
|
* Copyright 2014 Telerik AD
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
!function(e,define){define(["./kendo.draganddrop.min"],e)}(function(){return function(e,t){function n(e){return t!==e}function i(e,t,n){return Math.max(Math.min(parseInt(e,10),1/0===n?n:parseInt(n,10)),parseInt(t,10))}function r(e,t){return function(){var n=this,i=n.wrapper,r=i[0].style,o=n.options;if(!o.isMaximized&&!o.isMinimized)return n.restoreOptions={width:r.width,height:r.height},i.children(x).hide().end().children(k).find(j).parent().hide().eq(0).before(X.action({name:"Restore"})),t.call(n),"maximize"==e?n.wrapper.children(k).find(Y).parent().hide():n.wrapper.children(k).find(Y).parent().show(),n}}function o(){return!this.type||this.type.toLowerCase().indexOf("script")>=0}function a(e){var t=this;t.owner=e,t._draggable=new c(e.wrapper,{filter:x,group:e.wrapper.id+"-resizing",dragstart:p(t.dragstart,t),drag:p(t.drag,t),dragend:p(t.dragend,t)}),t._draggable.userEvents.bind("press",p(t.addOverlay,t)),t._draggable.userEvents.bind("release",p(t.removeOverlay,t))}function s(e,t){var n=this;n.owner=e,n._draggable=new c(e.wrapper,{filter:t,group:e.wrapper.id+"-moving",dragstart:p(n.dragstart,n),drag:p(n.drag,n),dragend:p(n.dragend,n),dragcancel:p(n.dragcancel,n)}),n._draggable.userEvents.stopPropagation=!1}var l=window.kendo,u=l.ui.Widget,c=l.ui.Draggable,d=e.isPlainObject,f=l._activeElement,p=e.proxy,h=e.extend,g=e.each,m=l.template,v="body",_=".kendoWindow",w=".k-window",b=".k-window-title",k=b+"bar",y=".k-window-content",x=".k-resize-handle",C=".k-overlay",T="k-content-frame",S="k-loading",F="k-state-hover",D="k-state-focused",E="k-window-maximized",M=":visible",I="hidden",H="cursor",z="open",A="activate",O="deactivate",P="close",N="refresh",R="resize",L="dragstart",B="dragend",W="error",q="overflow",V="zIndex",j=".k-window-actions .k-i-minimize,.k-window-actions .k-i-maximize",U=".k-i-pin",$=".k-i-unpin",Y=U+","+$,G=".k-window-titlebar .k-window-action",Q=".k-window-titlebar .k-i-refresh",K=l.isLocalUrl,J=u.extend({init:function(i,r){var a,s,c,f,h,g,m,v=this,x={},C=!1,T=r&&r.actions&&!r.actions.length;u.fn.init.call(v,i,r),r=v.options,f=r.position,i=v.element,h=r.content,T&&(r.actions=[]),v.appendTo=e(r.appendTo),v._animations(),h&&!d(h)&&(h=r.content={url:h}),i.find("script").filter(o).remove(),i.parent().is(v.appendTo)||f.top!==t&&f.left!==t||(i.is(M)?(x=i.offset(),C=!0):(s=i.css("visibility"),c=i.css("display"),i.css({visibility:I,display:""}),x=i.offset(),i.css({visibility:s,display:c})),f.top===t&&(f.top=x.top),f.left===t&&(f.left=x.left)),n(r.visible)&&null!==r.visible||(r.visible=i.is(M)),a=v.wrapper=i.closest(w),i.is(".k-content")&&a[0]||(i.addClass("k-window-content k-content"),v._createWindow(i,r),a=v.wrapper=i.closest(w),v._dimensions()),v._position(),r.pinned&&v.pin(!0),h&&v.refresh(h),r.visible&&v.toFront(),g=a.children(y),v._tabindex(g),r.visible&&r.modal&&v._overlay(a.is(M)).css({opacity:.5}),a.on("mouseenter"+_,G,p(v._buttonEnter,v)).on("mouseleave"+_,G,p(v._buttonLeave,v)).on("click"+_,"> "+G,p(v._windowActionHandler,v)),g.on("keydown"+_,p(v._keydown,v)).on("focus"+_,p(v._focus,v)).on("blur"+_,p(v._blur,v)),this._resizable(),this._draggable(),m=i.attr("id"),m&&(m+="_wnd_title",a.children(k).children(b).attr("id",m),g.attr({role:"dialog","aria-labelledby":m})),a.add(a.children(".k-resize-handle,"+k)).on("mousedown"+_,p(v.toFront,v)),v.touchScroller=l.touchScroller(i),v._resizeHandler=p(v._onDocumentResize,v),e(window).on("resize",v._resizeHandler),r.visible&&(v.trigger(z),v.trigger(A)),l.notify(v)},_buttonEnter:function(t){e(t.currentTarget).addClass(F)},_buttonLeave:function(t){e(t.currentTarget).removeClass(F)},_focus:function(){this.wrapper.addClass(D)},_blur:function(){this.wrapper.removeClass(D)},_dimensions:function(){var e,t,n=this.wrapper,r=this.options,o=r.width,a=r.height,s=r.maxHeight,l=["minWidth","minHeight","maxWidth","maxHeight"];for(this.title(r.title),e=0;l.length>e;e++)t=r[l[e]],t&&1/0!=t&&n.css(l[e],t);s&&1/0!=s&&this.element.css("maxHeight",s),o&&n.width((""+o).indexOf("%")>0?o:i(o,r.minWidth,r.maxWidth)),a&&n.height((""+a).indexOf("%")>0?a:i(a,r.minHeight,r.maxHeight)),r.visible||n.hide()},_position:function(){var e=this.wrapper,t=this.options.position;0===t.top&&(t.top=""+t.top),0===t.left&&(t.left=""+t.left),e.css({top:t.top||"",left:t.left||""})},_animations:function(){var e=this.options;e.animation===!1&&(e.animation={open:{effects:{}},close:{hide:!0,effects:{}}})},_resize:function(){l.resize(this.element.children())},_resizable:function(){var t=this.options.resizable,n=this.wrapper;this.resizing&&(n.off("dblclick"+_).children(x).remove(),this.resizing.destroy(),this.resizing=null),t&&(n.on("dblclick"+_,k,p(function(t){e(t.target).closest(".k-window-action").length||this.toggleMaximization()},this)),g("n e s w se sw ne nw".split(" "),function(e,t){n.append(X.resizeHandle(t))}),this.resizing=new a(this)),n=null},_draggable:function(){var e=this.options.draggable;this.dragging&&(this.dragging.destroy(),this.dragging=null),e&&(this.dragging=new s(this,e.dragHandle||k))},setOptions:function(e){u.fn.setOptions.call(this,e),this._animations(),this._dimensions(),this._position(),this._resizable(),this._draggable()},events:[z,A,O,P,N,R,L,B,W],options:{name:"Window",animation:{open:{effects:{zoom:{direction:"in"},fade:{direction:"in"}},duration:350},close:{effects:{zoom:{direction:"out",properties:{scale:.7}},fade:{direction:"out"}},duration:350,hide:!0}},title:"",actions:["Close"],autoFocus:!0,modal:!1,resizable:!0,draggable:!0,minWidth:90,minHeight:50,maxWidth:1/0,maxHeight:1/0,pinned:!1,position:{},content:null,visible:null,height:null,width:null,appendTo:"body"},_closable:function(){return e.inArray("close",e.map(this.options.actions,function(e){return e.toLowerCase()}))>-1},_keydown:function(e){var t,n,r,o,a,s,u=this,c=u.options,d=l.keys,f=e.keyCode,p=u.wrapper,h=10,g=u.options.isMaximized;e.target!=e.currentTarget||u._closing||(f==d.ESC&&u._closable()&&u._close(!1),!c.draggable||e.ctrlKey||g||(t=l.getOffset(p),f==d.UP?n=p.css("top",t.top-h):f==d.DOWN?n=p.css("top",t.top+h):f==d.LEFT?n=p.css("left",t.left-h):f==d.RIGHT&&(n=p.css("left",t.left+h))),c.resizable&&e.ctrlKey&&!g&&(f==d.UP?(n=!0,o=p.height()-h):f==d.DOWN&&(n=!0,o=p.height()+h),f==d.LEFT?(n=!0,r=p.width()-h):f==d.RIGHT&&(n=!0,r=p.width()+h),n&&(a=i(r,c.minWidth,c.maxWidth),s=i(o,c.minHeight,c.maxHeight),isNaN(a)||(p.width(a),u.options.width=a+"px"),isNaN(s)||(p.height(s),u.options.height=s+"px"),u.resize())),n&&e.preventDefault())},_overlay:function(t){var n=this.appendTo.children(C),i=this.wrapper;return n.length||(n=e("<div class='k-overlay' />")),n.insertBefore(i[0]).toggle(t).css(V,parseInt(i.css(V),10)-1),n},_actionForIcon:function(e){var t=/\bk-i-\w+\b/.exec(e[0].className)[0];return{"k-i-close":"_close","k-i-maximize":"maximize","k-i-minimize":"minimize","k-i-restore":"restore","k-i-refresh":"refresh","k-i-pin":"pin","k-i-unpin":"unpin"}[t]},_windowActionHandler:function(n){var i,r;if(!this._closing)return i=e(n.target).closest(".k-window-action").find(".k-icon"),r=this._actionForIcon(i),r?(n.preventDefault(),this[r](),!1):t},_modals:function(){var t=this,n=e(w).filter(function(){var n=e(this),i=t._object(n),r=i&&i.options;return r&&r.modal&&r.visible&&n.is(M)}).sort(function(t,n){return+e(t).css("zIndex")-+e(n).css("zIndex")});return t=null,n},_object:function(e){var t=e.children(y);return t.data("kendoWindow")||t.data("kendo"+this.options.name)},center:function(){var t,n,i=this,r=i.options.position,o=i.wrapper,a=e(window),s=0,l=0;return i.options.isMaximized?i:(i.options.pinned||(s=a.scrollTop(),l=a.scrollLeft()),n=l+Math.max(0,(a.width()-o.width())/2),t=s+Math.max(0,(a.height()-o.height()-parseInt(o.css("paddingTop"),10))/2),o.css({left:n,top:t}),r.top=t,r.left=n,i)},title:function(e){var t=this,n=t.wrapper,i=t.options,r=n.children(k),o=r.children(b),a=r.outerHeight();return arguments.length?(e===!1?(n.addClass("k-window-titleless"),r.remove()):(r.length||n.prepend(X.titlebar(h(X,i))),n.css("padding-top",a),r.css("margin-top",-a)),o.text(e),t.options.title=e,t):o.text()},content:function(e,t){var i=this.wrapper.children(y),r=i.children(".km-scroll-container");return i=r[0]?r:i,n(e)?(this.angular("cleanup",function(){return{elements:i.children()}}),l.destroy(this.element.children()),i.empty().html(e),this.angular("compile",function(){var e,n=[];for(e=i.length;--e>=0;)n.push({dataItem:t});return{elements:i.children(),data:n}}),this):i.html()},open:function(){var t,n,i=this,r=i.wrapper,o=i.options,a=o.animation.open,s=r.children(y);return i.trigger(z)||(i._closing&&r.kendoStop(!0,!0),i._closing=!1,i.toFront(),o.autoFocus&&i.element.focus(),o.visible=!0,o.modal&&(t=i._overlay(!1),t.kendoStop(!0,!0),a.duration&&l.effects.Fade?(n=l.fx(t).fadeIn(),n.duration(a.duration||0),n.endValue(.5),n.play()):t.css("opacity",.5),t.show()),r.is(M)||(s.css(q,I),r.show().kendoStop().kendoAnimate({effects:a.effects,duration:a.duration,complete:p(this._activate,this)}))),o.isMaximized&&(i._documentScrollTop=e(document).scrollTop(),e("html, body").css(q,I)),i},_activate:function(){this.options.autoFocus&&this.element.focus(),this.trigger(A),this.wrapper.children(y).css(q,"")},_removeOverlay:function(n){var i,r=this._modals(),o=this.options,a=o.modal&&!r.length,s=o.modal?this._overlay(!0):e(t),u=o.animation.close;a?!n&&u.duration&&l.effects.Fade?(i=l.fx(s).fadeOut(),i.duration(u.duration||0),i.startValue(.5),i.play()):this._overlay(!1).remove():r.length&&this._object(r.last())._overlay(!0)},_close:function(t){var n=this,i=n.wrapper,r=n.options,o=r.animation.open,a=r.animation.close;i.is(M)&&!n.trigger(P,{userTriggered:!t})&&(n._closing=!0,r.visible=!1,e(w).each(function(t,n){var r=e(n).children(y);n!=i&&r.find("> ."+T).length>0&&r.children(C).remove()}),this._removeOverlay(),i.kendoStop().kendoAnimate({effects:a.effects||o.effects,reverse:a.reverse===!0,duration:a.duration,complete:p(this._deactivate,this)})),n.options.isMaximized&&(e("html, body").css(q,""),n._documentScrollTop&&n._documentScrollTop>0&&e(document).scrollTop(n._documentScrollTop))},_deactivate:function(){this.wrapper.hide().css("opacity",""),this.trigger(O);var e=this._object(this._modals().last());e&&e.toFront()},close:function(){return this._close(!0),this},_actionable:function(t){return e(t).is(G+","+G+" .k-icon,:input,a")},_shouldFocus:function(t){var n=f(),i=this.element;return!(!this.options.autoFocus||e(n).is(i)||this._actionable(t)||i.find(n).length&&i.find(t).length)},toFront:function(t){var n,i,r=this,o=r.wrapper,a=o[0],s=+o.css(V),l=s,u=t&&t.target||null;return e(w).each(function(t,n){var i=e(n),r=i.css(V),o=i.children(y);isNaN(r)||(s=Math.max(+r,s)),n!=a&&o.find("> ."+T).length>0&&o.append(X.overlay)}),(!o[0].style.zIndex||s>l)&&o.css(V,s+2),r.element.find("> .k-overlay").remove(),r._shouldFocus(u)&&(r.element.focus(),n=e(window).scrollTop(),i=parseInt(o.position().top,10),i>0&&n>i&&(n>0?e(window).scrollTop(i):o.css("top",n))),o=null,r},toggleMaximization:function(){return this._closing?this:this[this.options.isMaximized?"restore":"maximize"]()},restore:function(){var t=this,n=t.options,i=n.minHeight,r=t.restoreOptions;return n.isMaximized||n.isMinimized?(i&&1/0!=i&&t.wrapper.css("min-height",i),t.wrapper.css({position:n.pinned?"fixed":"absolute",left:r.left,top:r.top,width:r.width,height:r.height}).removeClass(E).find(".k-window-content,.k-resize-handle").show().end().find(".k-window-titlebar .k-i-restore").parent().remove().end().end().find(j).parent().show().end().end().find(Y).parent().show(),t.options.width=r.width,t.options.height=r.height,e("html, body").css(q,""),this._documentScrollTop&&this._documentScrollTop>0&&e(document).scrollTop(this._documentScrollTop),n.isMaximized=n.isMinimized=!1,t.resize(),t):t},maximize:r("maximize",function(){var t=this,n=t.wrapper,i=n.position();h(t.restoreOptions,{left:i.left,top:i.top}),n.css({left:0,top:0,position:"fixed"}).addClass(E),this._documentScrollTop=e(document).scrollTop(),e("html, body").css(q,I),t.options.isMaximized=!0,t._onDocumentResize()}),minimize:r("minimize",function(){var e=this;e.wrapper.css({height:"",minHeight:""}),e.element.hide(),e.options.isMinimized=!0}),pin:function(t){var n=this,i=e(window),r=n.wrapper,o=parseInt(r.css("top"),10),a=parseInt(r.css("left"),10);(t||!n.options.pinned&&!n.options.isMaximized)&&(r.css({position:"fixed",top:o-i.scrollTop(),left:a-i.scrollLeft()}),r.children(k).find(U).addClass("k-i-unpin").removeClass("k-i-pin"),n.options.pinned=!0)},unpin:function(){var t=this,n=e(window),i=t.wrapper,r=parseInt(i.css("top"),10),o=parseInt(i.css("left"),10);t.options.pinned&&!t.options.isMaximized&&(i.css({position:"",top:r+n.scrollTop(),left:o+n.scrollLeft()}),i.children(k).find($).addClass("k-i-pin").removeClass("k-i-unpin"),t.options.pinned=!1)},_onDocumentResize:function(){var t,n,i=this,r=i.wrapper,o=e(window);i.options.isMaximized&&(t=o.width(),n=o.height()-parseInt(r.css("padding-top"),10),r.css({width:t,height:n}),i.options.width=t,i.options.height=n,i.resize())},refresh:function(t){var i,r,o,a=this,s=a.options,l=e(a.element);return d(t)||(t={url:t}),t=h({},s.content,t),r=n(s.iframe)?s.iframe:t.iframe,o=t.url,o?(n(r)||(r=!K(o)),r?(i=l.find("."+T)[0],i?i.src=o||i.src:l.html(X.contentFrame(h({},s,{content:t}))),l.find("."+T).unbind("load"+_).on("load"+_,p(this._triggerRefresh,this))):a._ajaxRequest(t)):(t.template&&a.content(m(t.template)({})),a.trigger(N)),l.toggleClass("k-window-iframecontent",!!r),a},_triggerRefresh:function(){this.trigger(N)},_ajaxComplete:function(){clearTimeout(this._loadingIconTimeout),this.wrapper.find(Q).removeClass(S)},_ajaxError:function(e,t){this.trigger(W,{status:t,xhr:e})},_ajaxSuccess:function(e){return function(t){var n=t;e&&(n=m(e)(t||{})),this.content(n,t),this.element.prop("scrollTop",0),this.trigger(N)}},_showLoading:function(){this.wrapper.find(Q).addClass(S)},_ajaxRequest:function(t){this._loadingIconTimeout=setTimeout(p(this._showLoading,this),100),e.ajax(h({type:"GET",dataType:"html",cache:!1,error:p(this._ajaxError,this),complete:p(this._ajaxComplete,this),success:p(this._ajaxSuccess(t.template),this)},t))},destroy:function(){this.resizing&&this.resizing.destroy(),this.dragging&&this.dragging.destroy(),this.wrapper.off(_).children(y).off(_).end().find(".k-resize-handle,.k-window-titlebar").off(_),e(window).off("resize",this._resizeHandler),clearTimeout(this._loadingIconTimeout),u.fn.destroy.call(this),this.unbind(t),l.destroy(this.wrapper),this._removeOverlay(!0),this.wrapper.empty().remove(),this.wrapper=this.appendTo=this.element=e()},_createWindow:function(){var t,n,i=this.element,r=this.options,o=l.support.isRtl(i);r.scrollable===!1&&i.attr("style","overflow:hidden;"),n=e(X.wrapper(r)),r.title!==!1&&n.append(X.titlebar(h(X,r))),t=i.find("iframe:not(.k-content)").map(function(){var e=this.getAttribute("src");return this.src="",e}),n.toggleClass("k-rtl",o).appendTo(this.appendTo).append(i).find("iframe:not(.k-content)").each(function(e){this.src=t[e]}),n.find(".k-window-title").css(o?"left":"right",n.find(".k-window-actions").outerWidth()+10),i.show(),i.find("[data-role=editor]").each(function(){var t=e(this).data("kendoEditor");t&&t.refresh()}),n=i=null}}),X={wrapper:m("<div class='k-widget k-window' />"),action:m("<a role='button' href='\\#' class='k-window-action k-link'><span role='presentation' class='k-icon k-i-#= name.toLowerCase() #'>#= name #</span></a>"),titlebar:m("<div class='k-window-titlebar k-header'> <span class='k-window-title'>#= title #</span><div class='k-window-actions'># for (var i = 0; i < actions.length; i++) { ##= action({ name: actions[i] }) ## } #</div></div>"),overlay:"<div class='k-overlay' />",contentFrame:m("<iframe frameborder='0' title='#= title #' class='"+T+"' src='#= content.url #'>This page requires frames in order to show content</iframe>"),resizeHandle:m("<div class='k-resize-handle k-resize-#= data #'></div>")};a.prototype={addOverlay:function(){this.owner.wrapper.append(X.overlay)},removeOverlay:function(){this.owner.wrapper.find(C).remove()},dragstart:function(t){var n=this,i=n.owner,r=i.wrapper;n.elementPadding=parseInt(r.css("padding-top"),10),n.initialPosition=l.getOffset(r,"position"),n.resizeDirection=t.currentTarget.prop("className").replace("k-resize-handle k-resize-",""),n.initialSize={width:r.width(),height:r.height()},n.containerOffset=l.getOffset(i.appendTo,"position"),r.children(x).not(t.currentTarget).hide(),e(v).css(H,t.currentTarget.css(H))},drag:function(e){var t,n,r,o,a=this,s=a.owner,l=s.wrapper,u=s.options,c=a.resizeDirection,d=a.containerOffset,f=a.initialPosition,p=a.initialSize,h=Math.max(e.x.location,d.left),g=Math.max(e.y.location,d.top);c.indexOf("e")>=0?(t=h-f.left,l.width(i(t,u.minWidth,u.maxWidth))):c.indexOf("w")>=0&&(o=f.left+p.width,t=i(o-h,u.minWidth,u.maxWidth),l.css({left:o-t-d.left,width:t})),c.indexOf("s")>=0?(n=g-f.top-a.elementPadding,l.height(i(n,u.minHeight,u.maxHeight))):c.indexOf("n")>=0&&(r=f.top+p.height,n=i(r-g,u.minHeight,u.maxHeight),l.css({top:r-n-d.top,height:n})),t&&(s.options.width=t+"px"),n&&(s.options.height=n+"px"),s.resize()},dragend:function(t){var n=this,i=n.owner,r=i.wrapper;return r.children(x).not(t.currentTarget).show(),e(v).css(H,""),i.touchScroller&&i.touchScroller.reset(),27==t.keyCode&&r.css(n.initialPosition).css(n.initialSize),!1},destroy:function(){this._draggable&&this._draggable.destroy(),this._draggable=this.owner=null}},s.prototype={dragstart:function(t){var n=this.owner,i=n.element,r=i.find(".k-window-actions"),o=l.getOffset(n.appendTo);n.trigger(L),n.initialWindowPosition=l.getOffset(n.wrapper,"position"),n.startPosition={left:t.x.client-n.initialWindowPosition.left,top:t.y.client-n.initialWindowPosition.top},n.minLeftPosition=r.length>0?r.outerWidth()+parseInt(r.css("right"),10)-i.outerWidth():20-i.outerWidth(),n.minLeftPosition-=o.left,n.minTopPosition=-o.top,n.wrapper.append(X.overlay).children(x).hide(),e(v).css(H,t.currentTarget.css(H))},drag:function(t){var n=this.owner,i=n.options.position,r=Math.max(t.y.client-n.startPosition.top,n.minTopPosition),o=Math.max(t.x.client-n.startPosition.left,n.minLeftPosition),a={left:o,top:r};e(n.wrapper).css(a),i.top=r,i.left=o},_finishDrag:function(){var t=this.owner;t.wrapper.children(x).toggle(!t.options.isMinimized).end().find(C).remove(),e(v).css(H,"")},dragcancel:function(e){this._finishDrag(),e.currentTarget.closest(w).css(this.owner.initialWindowPosition)},dragend:function(){return this._finishDrag(),this.owner.trigger(B),!1},destroy:function(){this._draggable&&this._draggable.destroy(),this._draggable=this.owner=null}},l.ui.plugin(J)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t){t()}); |