UNPKG

angular-ui-grid

Version:

A data grid for Angular

7 lines (5 loc) 5.72 kB
/*! * ui-grid - v4.9.1 - 2020-10-26 * Copyright (c) 2020 ; License: MIT */ !function(){"use strict";var e=angular.module("ui.grid.resizeColumns",["ui.grid"]);e.service("uiGridResizeColumnsService",["gridUtil","$q","$rootScope",function(r,o,t){return{defaultGridOptions:function(e){e.enableColumnResizing=!1!==e.enableColumnResizing,!1===e.enableColumnResize&&(e.enableColumnResizing=!1)},colResizerColumnBuilder:function(e,i,n){return e.enableColumnResizing=void 0===e.enableColumnResizing?n.enableColumnResizing:e.enableColumnResizing,!1===e.enableColumnResize&&(e.enableColumnResizing=!1),o.all([])},registerPublicApi:function(e){e.api.registerEventsFromObject({colResizable:{columnSizeChanged:function(e,i){}}})},fireColumnSizeChanged:function(e,i,n){t.$applyAsync(function(){e.api.colResizable?e.api.colResizable.raise.columnSizeChanged(i,n):r.logError("The resizeable api is not registered, this may indicate that you've included the module but not added the 'ui-grid-resize-columns' directive to your grid definition. Cannot raise any events.")})},findTargetCol:function(e,i,n){var r=e.getRenderContainer();if("left"!==i)return e;var o=r.visibleColumnCache.indexOf(e);return 0===o?r.visibleColumnCache[0]:r.visibleColumnCache[o-1*n]}}}]),e.directive("uiGridResizeColumns",["gridUtil","uiGridResizeColumnsService",function(e,o){return{replace:!0,priority:0,require:"^uiGrid",scope:!1,compile:function(){return{pre:function(e,i,n,r){o.defaultGridOptions(r.grid.options),r.grid.registerColumnBuilder(o.colResizerColumnBuilder),o.registerPublicApi(r.grid)},post:function(e,i,n,r){}}}}}]),e.directive("uiGridHeaderCell",["gridUtil","$templateCache","$compile","$q","uiGridResizeColumnsService","uiGridConstants",function(e,t,d,i,c,g){return{priority:-10,require:"^uiGrid",compile:function(){return{post:function(l,u,e,i){var n=i.grid;if(n.options.enableColumnResizing){var a=t.get("ui-grid/columnResizer"),s=1;n.isRTL()&&(l.position="left",s=-1);var r=function(){for(var e=u[0].getElementsByClassName("ui-grid-column-resizer"),i=0;i<e.length;i++)angular.element(e[i]).remove();var n=c.findTargetCol(l.col,"left",s),r=l.col.getRenderContainer();if(n&&0!==r.visibleColumnCache.indexOf(l.col)&&!1!==n.colDef.enableColumnResizing){var o=angular.element(a).clone();o.attr("position","left"),u.prepend(o),d(o)(l)}if(!1!==l.col.colDef.enableColumnResizing){var t=angular.element(a).clone();t.attr("position","right"),u.append(t),d(t)(l)}};r();var o=n.registerDataChangeCallback(function(){l.$applyAsync(r)},[g.dataChange.COLUMN]);l.$on("$destroy",o)}}}}}}]),e.directive("uiGridColumnResizer",["$document","gridUtil","uiGridConstants","uiGridResizeColumnsService",function(v,h,p,z){var R=angular.element('<div class="ui-grid-resize-overlay"></div>');return{priority:0,scope:{col:"=",position:"@",renderIndex:"="},require:"?^uiGrid",link:function(u,a,e,s){var t=0,l=0,d=0,c=1;function g(e){s.grid.refreshCanvas(!0).then(function(){s.grid.queueGridRefresh()})}function f(e,i){var n=i;return e.minWidth&&n<e.minWidth?n=e.minWidth:e.maxWidth&&n>e.maxWidth&&(n=e.maxWidth),n}function n(e,i){e.originalEvent&&(e=e.originalEvent),e.preventDefault(),(l=(e.targetTouches?e.targetTouches[0]:e).clientX-d)<0?l=0:l>s.grid.gridWidth&&(l=s.grid.gridWidth);var n=z.findTargetCol(u.col,u.position,c);if(!1!==n.colDef.enableColumnResizing){s.grid.element.hasClass("column-resizing")||s.grid.element.addClass("column-resizing");var r=l-t,o=parseInt(n.drawnWidth+r*c,10);l+=(f(n,o)-o)*c,R.css({left:l+"px"}),s.fireEvent(p.events.ITEM_DRAGGING)}}function r(e){e.originalEvent&&(e=e.originalEvent),e.preventDefault(),s.grid.element.removeClass("column-resizing"),R.remove();var i=(l=(e.changedTouches?e.changedTouches[0]:e).clientX-d)-t;if(0===i)return C(),void m();var n=z.findTargetCol(u.col,u.position,c);if(!1!==n.colDef.enableColumnResizing){var r=parseInt(n.drawnWidth+i*c,10);n.width=f(n,r),n.hasCustomWidth=!0,g(),z.fireColumnSizeChanged(s.grid,n.colDef,i),C(),m()}}s.grid.isRTL()&&(u.position="left",c=-1),"left"===u.position?a.addClass("left"):"right"===u.position&&a.addClass("right");var o=function(e,i){e.originalEvent&&(e=e.originalEvent),e.stopPropagation(),d=s.grid.element[0].getBoundingClientRect().left,t=(e.targetTouches?e.targetTouches[0]:e).clientX-d,s.grid.element.append(R),R.css({left:t}),"touchstart"===e.type?(v.on("touchend",r),v.on("touchmove",n),a.off("mousedown",o)):(v.on("mouseup",r),v.on("mousemove",n),a.off("touchstart",o))},m=function(){a.on("mousedown",o),a.on("touchstart",o)},C=function(){v.off("mouseup",r),v.off("touchend",r),v.off("mousemove",n),v.off("touchmove",n),a.off("mousedown",o),a.off("touchstart",o)};m();var i=function(e,i){e.stopPropagation();var n=z.findTargetCol(u.col,u.position,c);if(!1!==n.colDef.enableColumnResizing){var o=0,r=h.closestElm(a,".ui-grid-render-container").querySelectorAll("."+p.COL_CLASS_PREFIX+n.uid+" .ui-grid-cell-contents");Array.prototype.forEach.call(r,function(e){var r;angular.element(e).parent().hasClass("ui-grid-header-cell")&&(r=angular.element(e).parent()[0].querySelectorAll(".ui-grid-column-menu-button")),h.fakeElement(e,{},function(e){var i=angular.element(e);i.attr("style","float: left");var n=h.elementWidth(i);r&&(n+=h.elementWidth(r));o<n&&(o=n)})});var t=f(n,o),l=t-n.drawnWidth;n.width=t,n.hasCustomWidth=!0,g(),z.fireColumnSizeChanged(s.grid,n.colDef,l)}};a.on("dblclick",i),a.on("$destroy",function(){a.off("dblclick",i),C()})}}}])}(),angular.module("ui.grid.resizeColumns").run(["$templateCache",function(e){"use strict";e.put("ui-grid/columnResizer",'<div ui-grid-column-resizer ng-if="grid.options.enableColumnResizing" class="ui-grid-column-resizer" col="col" position="right" render-index="renderIndex" unselectable="on"></div>')}]);