UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

1 lines 13.1 kB
module.exports=function(e){function t(r){if(i[r])return i[r].exports;var n=i[r]={exports:{},id:r,loaded:!1};return e[r].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}({0:function(e,t,i){e.exports=i(1436)},3:function(e,t){e.exports=function(){throw Error("define cannot be used indirect")}},1049:function(e,t){e.exports=require("./kendo.core")},1113:function(e,t){e.exports=require("./kendo.draganddrop")},1194:function(e,t){e.exports=require("./kendo.resizable")},1436:function(e,t,i){var r,n,s;!function(o,define){n=[i(1049),i(1113),i(1194)],r=o,s="function"==typeof r?r.apply(t,n):r,!(void 0!==s&&(e.exports=s))}(function(){return function(e){function t(t,i){try{return e.contains(t,i)||t==i}catch(r){return!1}}var i=window.kendo,r=i.ui,n=r.Widget,s=r.Draggable,o=i.keys,a=i.selectorFromClasses,d="resize",l="reorder",c=".kendoTileLayout",p="k-cursor-ns-resize",h="k-cursor-ew-resize",u="k-cursor-nwse-resize",m="k-cursor-nesw-resize",g="k-cursor-grab",f="k-cursor-grabbing",v=1,_="k-cursor-nesw-resize k-cursor-nwse-resize k-cursor-ew-resize k-cursor-ns-resize",w={wrapper:"k-widget k-tilelayout",item:"k-tilelayout-item k-card",itemHeader:"k-tilelayout-item-header k-card-header",itemHeaderTitle:"k-card-title",itemBody:"k-tilelayout-item-body k-card-body",reorderHint:"k-layout-item-hint k-layout-item-hint-reorder",resizeHint:"k-layout-item-hint k-layout-item-hint-resize"},y=n.extend({init:function(t,i){var r=this;n.fn.init.call(r,t,i),e.cssNumber.gridColumnStart=!0,e.cssNumber.gridColumnEnd=!0,e.cssNumber.gridRowStart=!0,e.cssNumber.gridRowEnd=!0,r.element=e(t).addClass(y.styles.wrapper),r._setWrapperStyles(),r._initContainers(),r._resizable(),r._navigatable(),r._reorderable()},events:[d,l],options:{name:"TileLayout",columns:null,gap:{columns:16,rows:16},containers:[],resizable:!1,reorderable:!1,navigatable:!1,columnsWidth:"1fr",rowsHeight:"1fr",height:"",width:""},destroy:function(){n.fn.destroy.call(this),this._draggableInstance&&(this.element.find(".k-tilelayout-item").each(function(){var t=e(this);t.data("kendoDropTarget")&&t.data("kendoDropTarget").destroy()}),this._draggableInstance.destroy(),this._draggableInstance.element=this._draggableInstance.draggable=null),this.resizable&&(this.resizable.destroy(),this.resizable=null),this.resizeHandle&&(this.resizeHandle.off(c).remove(),this.resizeHandle=null),this.element.off(c)},setOptions:function(e){this.destroy(),i.deepExtend(this.options,e),this.element.empty(),this.init(this.element,this.options)},getOptions:function(){var t=e.extend(!0,{},this.options);return t.containers=i.deepExtend([],this.items),t},_initContainers:function(){var t,r,n,s,o,a,d,l,c=this,p=c.options.containers,h=c.element.children(),u=!!h.length;if(c.items=[],c.itemsMap={},u)h.each(function(r,n){t=i.guid();var s=e(n).addClass(y.styles.item).attr("id",t);c._addContainer(s,p[r],r,t)});else for(l=0;l<p.length;l++){if(t=i.guid(),a=p[l],r=e("<div></div>").addClass(y.styles.item).attr("id",t),s=a.header,s&&(s.template||s.text)&&(n=e("<div></div>").addClass(y.styles.itemHeader),c.options.reorderable&&n.addClass(g),s.text&&(d="<h5 class='"+y.styles.itemHeaderTitle+"'>"+s.text+"</h5>"),n.append(d||i.template(s.template)({})),n.appendTo(r)),o=e("<div></div>").addClass(y.styles.itemBody),!a.bodyTemplate)throw Error("Having a bodyTemplate for the container is mandatory");o.append(i.template(a.bodyTemplate)({})),o.appendTo(r),r.appendTo(c.element),c._addContainer(r,a,l,t)}},_addContainer:function(e,t,r,n){var s=this;t.order="number"==typeof t.order?t.order:r,e.attr(i.attr("index"),t.order),t.id=n,s._setContainerCoordinates(e,t),s.itemsMap[n]=t,s.items.push(s.itemsMap[n])},_setWrapperStyles:function(){var e=this,t=e.options;e.element.css({"grid-template-columns":i.format("repeat({0}, minmax(0, {1}))",t.columns,"string"==typeof t.columnsWidth?t.columnsWidth:t.columnsWidth+"px"),"grid-auto-rows":i.format("minmax(0, {0})","string"==typeof t.rowsHeight?t.rowsHeight:t.rowsHeight+"px"),"column-gap":t.gap.columns,width:"string"==typeof t.width?t.width:t.width+"px",height:"string"==typeof t.height?t.height:t.height+"px",padding:t.gap.rows+"px "+t.gap.columns+"px ","row-gap":t.gap.rows})},_setContainerCoordinates:function(e,t){t&&e.css({order:t.order,"grid-column-end":i.format("span {0}",t.colSpan),"grid-row-end":i.format("span {0}",t.rowSpan)}).attr(i.attr("index"),t.order)},_updateContainers:function(){var e,t=this;for(e=0;e<t.items.length;e++)t._setContainerCoordinates(t.element.find("#"+t.items[e].id),t.items[e])},_createResizeHandle:function(t,i,r){var n=this;n._isresizing||(n.resizeHandle&&n.resizeHandle.data("div")[0]!==t[0]&&(n.resizeHandle.off(c).remove(),n.resizeHandle=null),n.resizeHandle||(n.resizeHandle=e('<div class="k-resize-handle"></div>'),n.resizeHandle.appendTo(t)),n._positionResizeHandle(t,i,r))},_positionResizeHandle:function(e,t,r){var n,s=this,o=parseFloat(e.css("borderRightWidth")),a=parseFloat(e.css("borderBottomWidth")),d=e.height(),l=e.width(),c=r?d-6.5-a:0,g=t?l-4.5-o:0,f=9,v=9;t&&r?(v=f=25,c-=12.5,g-=12.5,n=i.support.isRtl(s.element)?m:u):t&&!r?(v=d,n=h):!t&&r&&(f=l,n=p),s.resizeHandle.css({top:c,left:g,height:v,width:f}).attr("side",t).attr("down",r).removeClass(_).addClass(n).data("div",e).show()},_createResizeHint:function(t){var i,r,n,s=this;s.hint||(i=t.css("grid-column-end"),r=t.css("grid-row-end"),n=t.css("order"),s.hint=e("<div class='"+y.styles.resizeHint+"'></div>").css({order:n,"grid-column-end":i,"grid-row-end":r}).insertAfter(t))},_removeResizeHint:function(){this._isresizing||this.hint&&(this.hint.remove(),this.hint=null)},_positionHint:function(e,t){var r=this;e&&r.hint.css("grid-column-end",i.format("span {0}",e)),t&&r.hint.css("grid-row-end",i.format("span {0}",t))},_removeAbsoluteStyles:function(e){e.css("position",""),e.css("left",""),e.css("top",""),e.css("width",""),e.css("height",""),e.css("z-index","")},_positionAbsolutely:function(e){var t,i,r;"absolute"!=e.css("position")&&(t=e.position(),i=e.outerWidth(),r=e.outerHeight(),e.css("position","absolute"),e.css("left",t.left),e.css("top",t.top),e.css("width",i),e.css("height",r),e.css("z-index",2))},_navigatable:function(){if(this.options.navigatable){var t=this;t.element.children().attr("tabindex",0),t.element.on("keydown"+c,t,e.proxy(t._keyDown,t))}},_keyDown:function(t){var i=e(t.target),r=!1;i.is(".k-tilelayout-item.k-card")&&(t.ctrlKey&&t.keyCode==o.LEFT&&(r=!0,this._resizeItem(i,"horizontal",-1)),t.ctrlKey&&t.keyCode==o.RIGHT&&(r=!0,this._resizeItem(i,"horizontal",1)),t.ctrlKey&&t.keyCode==o.UP&&(r=!0,this._resizeItem(i,"vertical",-1)),t.ctrlKey&&t.keyCode==o.DOWN&&(r=!0,this._resizeItem(i,"vertical",1)),t.shiftKey&&t.keyCode==o.LEFT&&(r=!0,this._reorderItem(i,-1)),t.shiftKey&&t.keyCode==o.RIGHT&&(r=!0,this._reorderItem(i,1)),r&&t.preventDefault())},_resizeItem:function(e,t,r){var n,s,o=this,a=e.attr("id");o.options.resizable&&("horizontal"===t?(n=parseInt(e.css("grid-column-end").replace("span",""),10)+r,s=o.element.css("grid-template-columns").split(" ").length,s>=n&&n>0&&(o.itemsMap[a].colSpan=n,e.css({"grid-column-end":i.format("span {0}",n)}))):(n=parseInt(e.css("grid-row-end").replace("span",""),10)+r,s=o.element.css("grid-template-rows").split(" ").length,s>=n&&n>0&&(o.itemsMap[a].rowSpan=n,e.css({"grid-row-end":i.format("span {0}",n)}))))},_reorderItem:function(e,t){var r,n,s;this.options.reorderable&&(r=parseInt(e.css("order"),10),n=this.element.children().length,t=r+t,t>=0&&t<n&&(s=this.element.find("> ["+i.attr("index")+"='"+t+"']"),this.itemsMap[e.attr("id")].order=t,this.itemsMap[s.attr("id")].order=r,this._updateContainers(),this._updateDOM(),e.focus()))},_sortContainers:function(t){var r=i.attr("index");return t.sort(function(t,i){var n,s;return t=e(t),i=e(i),n=t.attr(r),s=i.attr(r),void 0===n&&(n=e(t).index()),void 0===s&&(s=e(i).index()),n=parseInt(n,10),s=parseInt(s,10),n>s?1:n<s?-1:0})},_updateDOM:function(){var t=this,i=t.element.children(":visible");i=t._sortContainers(i),i.each(function(){e(this).appendTo(t.element)})},_resizable:function(){var t,i,n,s,o,l,p,h=this,u=0,m=0,g=0,f=0,_=0,w=0,H=0;h.options.resizable&&(h.element.on("mousemove"+c,a(y.styles.item),function(t){var i=e(this),r=i[0].getBoundingClientRect(),n=Math.abs(r.right-t.clientX)<16,s=Math.abs(r.bottom-t.clientY)<16;n&&s?h._createResizeHandle(i,!0,!0):n?h._createResizeHandle(i,!0,!1):s&&h._createResizeHandle(i,!1,!0)}),h.resizable=new r.Resizable(h.element,{handle:"div.k-tilelayout-item > .k-resize-handle",start:function(r){var a=e(r.currentTarget);l=a.data("div"),n=l.attr("id"),t=a.attr("side"),i=a.attr("down"),p=h.element.css("grid-template-rows").split(" ").length,t&&(s=h._calculateFractionWidth(),H=h._calculateRightEndSide(s),u=r.x.location,g=l.width(),_=parseInt(l.css("grid-column-end").replace("span",""),10)),i&&(o=(h.element[0].scrollHeight-(p+1)*h.options.gap.rows)/p,m=r.y.location,f=l.height(),w=parseInt(l.css("grid-row-end").replace("span",""),10)),h._isresizing=!0},resize:function(e){var r,a,d=0,c=0,p=0,y=0,z=0,b=0,x=0,k=h.element[0].getBoundingClientRect();h._positionAbsolutely(l),h._createResizeHint(l),"true"==t&&(p=e.x.location-u,r=k.left+H-window.scrollX-e.x.location<h.options.gap.columns,a=g+p<s,r||a?p=0:(x=p/(s+h.options.gap.columns),z=p-Math.floor(x)*(s+h.options.gap.columns),d=_+Math.floor(x)+(z>=s/2?1:0),h.itemsMap[n].colSpan=Math.max(d,v))),"true"==i&&(y=e.y.location-m,r=k.bottom+window.scrollY-e.y.location<h.options.gap.rows,a=f+y<=o,r||a?y=0:(b=y/(o+h.options.gap.rows),z=y-Math.floor(b)*(o+h.options.gap.rows),c=w+Math.floor(b)+(z>=o/2?1:0),h.itemsMap[n].rowSpan=Math.max(c,v))),h._positionHint(d,c),h._positionResizeHandle(l,"true"==t,"true"==i),y&&l.css("height",f+y),p&&l.css("width",g+p)},resizeend:function(){h._isresizing=!1,h._setContainerCoordinates(l,h.itemsMap[n]),h._removeAbsoluteStyles(l),h._removeResizeHint(),h.trigger(d,{container:l})}}))},_calculateFractionWidth:function(){var e=this,t=e.element.children().first(),i=e.itemsMap[t.attr("id")].colSpan,r=t.outerWidth();return(r-(i-1)*e.options.gap.columns)/i},_calculateRightEndSide:function(e){var t=this,i=t.options.columns,r=t.options.gap.columns;return i*(e+r)+r},_createDropHint:function(t){this.dropHint=e("<div class='"+y.styles.reorderHint+"'></div>").css({order:t.order,"grid-column-end":t.columnEnd,"grid-row-end":t.rowEnd}).attr(i.attr("index"),t.order).attr("direction",t.direction)},_insertDropHint:function(e,t){"right"==t?this.dropHint.insertAfter(e):this.dropHint.insertBefore(e)},_removeDropHint:function(){this.dropHint&&(this.dropHint.remove(),this.dropHint=null)},_reorderable:function(){var r,n,o,d,c,p;this.options.reorderable&&(r=this,n=r.element,d=a(y.styles.item),c=a(y.styles.itemHeader),p=i.guid(),this._draggableInstance=new s(this.element,{filter:c,autoScroll:!0,group:p,hint:function(e){var t=e.closest(d),i=t.width(),r=t.height(),n=t.clone();return n.find(c).removeClass(g).addClass(f),n.width(i).height(r)},dragstart:function(t){o=e(t.currentTarget).closest(d)},drag:function(n){var s,a,l,c,p,h,u,m,g=i.elementUnderCursor(n),f=n.sender.hint,v=r._draggableInstance.currentTarget.closest(d);if(t(f[0],g)){if(f.hide(),g=i.elementUnderCursor(n),!t(o[0],g)){if(r.dropHint&&r.dropHint[0]==g[0])return void f.show();s=e(g),s=s.hasClass(y.styles.item)?s:s.closest(d),s.hasClass(y.styles.item)&&(a=s[0].getBoundingClientRect(),l=n.clientX-a.left,c=a.right-n.clientX,p=l>c?"right":"left",h=s.css("order"),r.dropHint&&r.dropHint.attr("direction")!==p?(u=r.dropHint.clone(),u.css("order",h),r.dropHint.remove(),r.dropHint=u,r._insertDropHint(s,p),r.dropHint.attr("direction",p).attr(i.attr("index"),h)):r.dropHint||(m="right"==p?s.next():s.prev(),m[0]!=o[0]&&(r._createDropHint({order:h,columnEnd:v.css("grid-column-end"),rowEnd:v.css("grid-row-end"),direction:p}),o.hide(),r._insertDropHint(s,p))))}f.show()}},dragend:function(e){var t,n,s,o,a,c,p,h,u,m,g;if(!r.dropHint)return e.sender.hint.remove(),void r._removeDropHint();for(t=parseInt(r.dropHint.css("order"),10),n=e.currentTarget.closest(d),s=r.element.find(d),o=parseInt(n.css("order"),10),a=n.attr("id"),c=r.element.children(":visible"),c=r._sortContainers(c),t=c.index(r.dropHint[0]),h=Math.max(t,o),p=Math.min(t,o),r.itemsMap[a].order=t,m=t>o?"right":"left","left"==m?h--:p++,g=p;g<=h;g++)u=s.filter("["+i.attr("index")+"='"+g+"']"),r.itemsMap[u.attr("id")].order+="left"==m?1:-1;n.show(),r._updateContainers(),e.sender.hint.remove(),r._removeDropHint(),r.options.navigatable&&r._updateDOM(),r.trigger(l,{newIndex:t,oldIndex:o,container:n})}}),n.find(d).kendoDropTarget({group:p,dragenter:function(t){var i,n,s,a,l,c,p;if(!r._isresizing&&(i=e(t.dropTarget),n=r._draggableInstance.currentTarget.closest(d),o[0]!=i[0])){if(s=i[0].getBoundingClientRect(),a=t.clientX-s.left,l=s.right-t.clientX,p=a>l?"right":"left",c="right"==p?i.next():i.prev(),c[0]==o[0])return;r._removeDropHint(),o.hide(),r._createDropHint({order:i.css("order"),columnEnd:n.css("grid-column-end"),rowEnd:n.css("grid-row-end"),direction:p}),o.hide(),r._insertDropHint(i,p)}}}))}});r.plugin(y),e.extend(!0,y,{styles:w})}(window.kendo.jQuery),window.kendo},i(3))}});