UNPKG

@progress/kendo-ui

Version:

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

1 lines 8.38 kB
module.exports=function(r){var a={};function n(t){if(a[t])return a[t].exports;var e=a[t]={exports:{},id:t,loaded:!1};return r[t].call(e.exports,e,e.exports,n),e.loaded=!0,e.exports}return n.m=r,n.c=a,n.p="",n(0)}({0:function(t,e,r){t.exports=r(1312)},3:function(t,e){t.exports=function(){throw Error("define cannot be used indirect")}},1051:function(t,e){t.exports=require("./kendo.core")},1137:function(t,e){t.exports=require("./kendo.draganddrop")},1312:function(t,e,r){var a;r(3),r=[r(1051),r(1137)],void 0===(e="function"==typeof(a=function(){var t={id:"groupable",name:"Groupable",category:"framework",depends:["core","draganddrop"],advanced:true},c=window.kendo.jQuery,e=void 0,g=window.kendo,d=g.ui.Widget,s=g._outerWidth,l=g.attr,b=c.extend,r=c.each,p=false,k="dir",a="field",n="title",f="asc",_="desc",h="group-sort",m=".kendoGroupable",C="change",i=g.template('<div class="k-group-indicator" data-#=data.ns#field="${data.field}" data-#=data.ns#title="${data.title || ""}" data-#=data.ns#dir="${data.dir || "asc"}">'+'<a href="\\#" class="k-link">'+'<span class="k-icon k-i-sort-${(data.dir || "asc") == "asc" ? "asc-sm" : "desc-sm"}" title="(sorted ${(data.dir || "asc") == "asc" ? "ascending": "descending"})"></span>'+"${data.title ? data.title: data.field}"+"</a>"+'<a href="\\#" data-role="button" aria-label="Remove grouping by ${data.title || data.field} field" class="k-button k-button-md k-rounded-md k-button-flat k-button-flat-base k-icon-button">'+'<span class="k-button-icon k-icon k-i-close"></span>'+"</a>"+"</div>",{useWithBlock:false}),I=function(t){var e=t.attr(g.attr("title"));if(e)e=g.htmlEncode(e);return c('<div class="k-group-clue k-drag-clue" />').html(e||t.attr(g.attr("field"))).prepend('<span class="k-icon k-drag-status k-i-cancel"></span>')},v=c('<div class="k-grouping-dropclue"/>'),o=d.extend({init:function(t,e){var u=this,r=g.guid(),i=u._intializePositions.bind(u),a,n,o=u._dropCuePositions=[];d.fn.init.call(u,t,e);p=g.support.isRtl(t);n=p?"right":"left";u.draggable=a=u.options.draggable||new g.ui.Draggable(u.element,{filter:u.options.draggableElements,hint:I,group:r});u.groupContainer=c(u.options.groupContainer,u.element).kendoDropTarget({group:a.options.group,dragenter:function(t){if(u._canDrag(t.draggable.currentTarget)){t.draggable.hint.find(".k-drag-status").removeClass("k-i-cancel").addClass("k-i-plus");v.css(n,0).appendTo(u.groupContainer)}},dragleave:function(t){t.draggable.hint.find(".k-drag-status").removeClass("k-i-plus").addClass("k-i-cancel");v.remove()},drop:function(t){var e=t.draggable.currentTarget,r=e.attr(g.attr("field")),a=e.attr(g.attr("title")),n=u.indicator(r),i=u._dropCuePositions,o=i[i.length-1],d;var s=b({},u.options.sort,e.data(h));var l=s.dir;if(!e.hasClass("k-group-indicator")&&!u._canDrag(e))return;if(o){d=u._dropCuePosition(g.getOffset(v).left+parseInt(o.element.css("marginLeft"),10)*(p?-1:1)+parseInt(o.element.css("marginRight"),10));if(d&&u._canDrop(c(n),d.element,d.left)){if(d.before)d.element.before(n||u.buildIndicator(r,a,l));else d.element.after(n||u.buildIndicator(r,a,l));u._setIndicatorSortOptions(r,s);u._change()}}else{u.groupContainer.empty();u.groupContainer.append(u.buildIndicator(r,a,l));u._setIndicatorSortOptions(r,s);u._change()}}}).kendoDraggable({filter:"div.k-group-indicator",hint:I,group:a.options.group,dragcancel:u._dragCancel.bind(u),dragstart:function(t){var e=t.currentTarget,r=parseInt(e.css("marginLeft"),10),a=e.position(),n=p?a.left-r:a.left+s(e);i();v.css("left",n).appendTo(u.groupContainer);this.hint.find(".k-drag-status").removeClass("k-i-cancel").addClass("k-i-plus")},dragend:function(){u._dragEnd(this)},drag:u._drag.bind(u)}).on("click"+m,".k-button",function(t){t.preventDefault();u._removeIndicator(c(this).parent())}).on("click"+m,".k-link",function(t){var e=c(this).parent();var r=e.attr(l(k))===f?_:f;e.attr(l(k),r);u._change();t.preventDefault()});a.bind(["dragend","dragcancel","dragstart","drag"],{dragend:function(){u._dragEnd(this)},dragcancel:u._dragCancel.bind(u),dragstart:function(t){var e,r,a;if(!u.options.allowDrag&&!u._canDrag(t.currentTarget)){t.preventDefault();return}i();if(o.length){e=o[o.length-1].element;r=parseInt(e.css("marginRight"),10);a=e.position().left+s(e)+r}else a=0},drag:u._drag.bind(u)});u.dataSource=u.options.dataSource;if(u.dataSource&&u._refreshHandler)u.dataSource.unbind(C,u._refreshHandler);else u._refreshHandler=u.refresh.bind(u);if(u.dataSource){u.dataSource.bind("change",u._refreshHandler);u.refresh()}},refresh:function(){var i=this,t=i.dataSource;var e=t.group()||[];var o=l(a);var d=l(n);var s;if(i.groupContainer){i.groupContainer.empty();r(e,function(t,e){var r=e.field;var a=e.dir;var n=i.element.find(i.options.filter).filter(function(){return c(this).attr(o)===r});s=i.buildIndicator(r,n.attr(d),a);i.groupContainer.append(s);i._setIndicatorSortOptions(r,b({},i.options.sort,{dir:a,compare:e.compare}))})}i._invalidateGroupContainer()},destroy:function(){var t=this;d.fn.destroy.call(t);t.groupContainer.off(m);if(t.groupContainer.data("kendoDropTarget"))t.groupContainer.data("kendoDropTarget").destroy();if(t.groupContainer.data("kendoDraggable"))t.groupContainer.data("kendoDraggable").destroy();if(!t.options.draggable)t.draggable.destroy();if(t.dataSource&&t._refreshHandler){t.dataSource.unbind("change",t._refreshHandler);t._refreshHandler=null}t.groupContainer=t.element=t.draggable=null},events:["change"],options:{name:"Groupable",filter:"th",draggableElements:"th",messages:{empty:"Drag a column header and drop it here to group by that column"},sort:{dir:f,compare:null}},indicator:function(e){var t=c(".k-group-indicator",this.groupContainer);return c.grep(t,function(t){return c(t).attr(g.attr("field"))===e})[0]},buildIndicator:function(t,e,r){var a=this;var n=i({ns:g.ns,field:t.replace(/"/g,"'"),title:e,dir:r||(a.options.sort||{}).dir||f});return n},_setIndicatorSortOptions:function(t,e){var r=c(this.indicator(t));r.data(h,e)},aggregates:function(){var t=this;var a;var n;var i;return t.element.find(t.options.filter).map(function(){var t=c(this),e=t.attr(g.attr("aggregates")),r=t.attr(g.attr("field"));if(e&&e!==""){a=e.split(",");e=[];for(n=0,i=a.length;n<i;n++)e.push({field:r,aggregate:a[n]})}return e}).toArray()},descriptors:function(){var a=this,t=c(".k-group-indicator",a.groupContainer),n,i=a.aggregates();return c.map(t,function(t){t=c(t);n=t.attr(g.attr("field"));var e=a.options.sort||{};var r=t.data(h)||{};return{field:n,dir:t.attr(g.attr("dir")),aggregates:i||[],compare:r.compare||e.compare}})},_removeIndicator:function(t){var e=this;t.off();t.removeData();t.remove();e._invalidateGroupContainer();e._change()},_change:function(){var t=this;if(t.dataSource){var e=t.descriptors();if(t.trigger("change",{groups:e})){t.refresh();return}t.dataSource.group(e)}},_dropCuePosition:function(e){var t=this._dropCuePositions;if(!v.is(":visible")||t.length===0)return;e=Math.ceil(e);var r=t[t.length-1],a=r.left,n=r.right,i=parseInt(r.element.css("marginLeft"),10),o=parseInt(r.element.css("marginRight"),10);if(e>=n&&!p||e<a&&p)e={left:r.element.position().left+(!p?s(r.element)+o:-i),element:r.element,before:false};else{e=c.grep(t,function(t){return t.left<=e&&e<=t.right||p&&e>t.right})[0];if(e)e={left:p?e.element.position().left+s(e.element)+o:e.element.position().left-i,element:e.element,before:true}}return e},_drag:function(t){var e=this._dropCuePosition(t.x.location);if(e)v.css({left:e.left,right:"auto"})},_canDrag:function(t){var e=t.attr(g.attr("field"));return t.attr(g.attr("groupable"))!="false"&&e&&(t.hasClass("k-group-indicator")||!this.indicator(e))},_canDrop:function(t,e,r){var a=t.next(),n=t[0]!==e[0]&&(!a[0]||e[0]!==a[0]||(!p&&r>a.position().left||p&&r<a.position().left));return n},_dragEnd:function(t){var e=this,r=t.currentTarget.attr(g.attr("field")),a=e.indicator(r);if(t!==e.options.draggable&&!t.dropped&&a)e._removeIndicator(c(a));e._dragCancel()},_dragCancel:function(){v.remove();this._dropCuePositions=[]},_intializePositions:function(){var t=this,e=c(".k-group-indicator",t.groupContainer),r;t._dropCuePositions=c.map(e,function(t){t=c(t);r=g.getOffset(t).left;return{left:parseInt(r,10),right:parseInt(r+s(t),10),element:t}})},_invalidateGroupContainer:function(){var t=this.groupContainer;if(t&&t.is(":empty"))t.html(this.options.messages.empty)}});return g.ui.plugin(o),window.kendo})?a.apply(e,r):a)||(t.exports=e)}});