angular-ui-grid
Version:
A data grid for Angular
6 lines • 5.64 kB
JavaScript
/*!
* ui-grid - v4.12.7 - 2024-04-12
* http://ui-grid.info/
* Copyright (c) 2024 ; License: MIT
*/
!function(){"use strict";var e=angular.module("ui.grid.resizeColumns",["ui.grid"]);e.service("uiGridResizeColumnsService",["gridUtil","$q","$rootScope",function(o,t,r){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:e).enableColumnResizing,!1===e.enableColumnResize&&(e.enableColumnResizing=!1),t.all([])},registerPublicApi:function(e){e.api.registerEventsFromObject({colResizable:{columnSizeChanged:function(e,i){}}})},fireColumnSizeChanged:function(e,i,n){r.$applyAsync(function(){e.api.colResizable?e.api.colResizable.raise.columnSizeChanged(i,n):o.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 o=e.getRenderContainer();return"left"===i?0===(i=o.visibleColumnCache.indexOf(e))?o.visibleColumnCache[0]:o.visibleColumnCache[i-+n]:e}}}]),e.directive("uiGridResizeColumns",["gridUtil","uiGridResizeColumnsService",function(e,t){return{replace:!0,priority:0,require:"^uiGrid",scope:!1,compile:function(){return{pre:function(e,i,n,o){t.defaultGridOptions(o.grid.options),o.grid.registerColumnBuilder(t.colResizerColumnBuilder),t.registerPublicApi(o.grid)},post:function(e,i,n,o){}}}}}]),e.directive("uiGridHeaderCell",["gridUtil","$templateCache","$compile","$q","uiGridResizeColumnsService","uiGridConstants",function(e,o,a,i,s,d){return{priority:-10,require:"^uiGrid",compile:function(){return{post:function(t,r,e,i){var l,u,n,i=i.grid;i.options.enableColumnResizing&&(l=o.get("ui-grid/columnResizer"),u=1,i.isRTL()&&(t.position="left",u=-1),(n=function(){for(var e=r[0].getElementsByClassName("ui-grid-column-resizer"),i=0;i<e.length;i++)angular.element(e[i]).remove();var n=s.findTargetCol(t.col,"left",u),o=t.col.getRenderContainer();n&&0!==o.visibleColumnCache.indexOf(t.col)&&!1!==n.colDef.enableColumnResizing&&((o=angular.element(l).clone()).attr("position","left"),r.prepend(o),a(o)(t)),!1!==t.col.colDef.enableColumnResizing&&((n=angular.element(l).clone()).attr("position","right"),r.append(n),a(n)(t))})(),i=i.registerDataChangeCallback(function(){t.$applyAsync(n)},[d.dataChange.COLUMN]),t.$on("$destroy",i))}}}}}]),e.directive("uiGridColumnResizer",["$document","gridUtil","uiGridConstants","uiGridResizeColumnsService",function(h,p,v,z){var R=angular.element('<div class="ui-grid-resize-overlay"></div>');return{priority:0,scope:{col:"=",position:"@",renderIndex:"="},require:"?^uiGrid",link:function(r,l,e,u){var o=0,t=0,a=0,s=1;function d(){u.grid.refreshCanvas(!0).then(function(){u.grid.queueGridRefresh()})}function c(e,i){return e.minWidth&&i<e.minWidth?i=e.minWidth:e.maxWidth&&i>e.maxWidth&&(i=e.maxWidth),i}function n(e,i){(e=e.originalEvent?e.originalEvent:e).preventDefault(),(t=(e.targetTouches?e.targetTouches[0]:e).clientX-a)<0?t=0:t>u.grid.gridWidth&&(t=u.grid.gridWidth);var n,e=z.findTargetCol(r.col,r.position,s);!1!==e.colDef.enableColumnResizing&&(u.grid.element.hasClass("column-resizing")||u.grid.element.addClass("column-resizing"),n=t-o,n=parseInt(e.drawnWidth+n*s,10),t+=(c(e,n)-n)*s,R.css({left:t+"px"}),u.fireEvent(v.events.ITEM_DRAGGING))}function g(e){(e=e.originalEvent?e.originalEvent:e).preventDefault(),u.grid.element.removeClass("column-resizing"),R.remove();var i,n,e=(t=(e.changedTouches?e.changedTouches[0]:e).clientX-a)-o;0==e?(C(),f()):!1!==(i=z.findTargetCol(r.col,r.position,s)).colDef.enableColumnResizing&&(n=parseInt(i.drawnWidth+e*s,10),i.width=c(i,n),i.hasCustomWidth=!0,d(),z.fireColumnSizeChanged(u.grid,i.colDef,e),C(),f())}u.grid.isRTL()&&(r.position="left",s=-1),"left"===r.position?l.addClass("left"):"right"===r.position&&l.addClass("right");function i(e,i){var n,o,t;e.stopPropagation(),!1!==(e=z.findTargetCol(r.col,r.position,s)).colDef.enableColumnResizing&&(n=0,o=p.closestElm(l,".ui-grid-render-container").querySelectorAll("."+v.COL_CLASS_PREFIX+e.uid+" .ui-grid-cell-contents"),Array.prototype.forEach.call(o,function(e){var i;angular.element(e).parent().hasClass("ui-grid-header-cell")&&(i=angular.element(e).parent()[0].querySelectorAll(".ui-grid-column-menu-button")),p.fakeElement(e,{},function(e){e=angular.element(e),e.attr("style","float: left"),e=p.elementWidth(e)+2;i&&(e+=p.elementWidth(i)),n<e&&(n=e)})}),t=(o=c(e,n))-e.drawnWidth,e.width=o,e.hasCustomWidth=!0,d(),z.fireColumnSizeChanged(u.grid,e.colDef,t))}var m=function(e,i){(e=e.originalEvent?e.originalEvent:e).stopPropagation(),a=u.grid.element[0].getBoundingClientRect().left,o=(e.targetTouches?e.targetTouches[0]:e).clientX-a,u.grid.element.append(R),R.css({left:o}),"touchstart"===e.type?(h.on("touchend",g),h.on("touchmove",n),l.off("mousedown",m)):(h.on("mouseup",g),h.on("mousemove",n),l.off("touchstart",m))},f=function(){l.on("mousedown",m),l.on("touchstart",m)},C=function(){h.off("mouseup",g),h.off("touchend",g),h.off("mousemove",n),h.off("touchmove",n),l.off("mousedown",m),l.off("touchstart",m)};f();l.on("dblclick",i),l.on("$destroy",function(){l.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>')}]);