UNPKG

angular-ui-grid

Version:

A data grid for Angular

6 lines 6.06 kB
/*! * 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.moveColumns",["ui.grid"]);e.service("uiGridMoveColumnService",["$q","$rootScope","$log","ScrollEvent","uiGridConstants","gridUtil",function(o,d,e,i,s,u){var c={initializeGrid:function(e){this.registerPublicApi(e),this.defaultGridOptions(e.options),e.moveColumns={orderCache:[]},e.registerColumnBuilder(this.movableColumnBuilder),e.registerDataChangeCallback(this.verifyColumnOrder,[s.dataChange.COLUMN])},registerPublicApi:function(t){var a=this,e={colMovable:{columnPositionChanged:function(e,i,n){}}},i={colMovable:{moveColumn:function(e,i){var o=t.columns;if(angular.isNumber(e)&&angular.isNumber(i)){for(var n,r=0,l=0;l<o.length;l++)(angular.isDefined(o[l].colDef.visible)&&!1===o[l].colDef.visible||!0===o[l].isRowHeader)&&r++;e>=o.length-r||i>=o.length-r?u.logError("MoveColumn: Invalid values for originalPosition, finalPosition"):a.redrawColumnAtPosition(t,(n=function(e){for(var i=e,n=0;n<=i;n++)angular.isDefined(o[n])&&(angular.isDefined(o[n].colDef.visible)&&!1===o[n].colDef.visible||!0===o[n].isRowHeader)&&i++;return i})(e),n(i))}else u.logError("MoveColumn: Please provide valid values for originalPosition and finalPosition")}}};t.api.registerEventsFromObject(e),t.api.registerMethodsFromObject(i)},defaultGridOptions:function(e){e.enableColumnMoving=!1!==e.enableColumnMoving},movableColumnBuilder:function(e,i,n){return e.enableColumnMoving=(void 0===e.enableColumnMoving?n:e).enableColumnMoving,o.all([])},updateColumnCache:function(e){e.moveColumns.orderCache=e.getOnlyDataColumns()},verifyColumnOrder:function(n){var o,r=n.rowHeaderColumns.length;angular.forEach(n.moveColumns.orderCache,function(e,i){-1!==(o=n.columns.indexOf(e))&&o-r!==i&&(e=n.columns.splice(o,1)[0],n.columns.splice(i+r,0,e))})},redrawColumnAtPosition:function(e,i,n){var o=e.columns;if(i!==n){for(var r=i<n?i+1:i-1,l=Math.min(r,n);l<=Math.max(r,n)&&!o[l].visible;l++);if(!(l>Math.max(r,n))){var t=o[i];if(t.colDef.enableColumnMoving){if(n<i)for(var a=i;n<a;a--)o[a]=o[a-1];else if(i<n)for(var u=i;u<n;u++)o[u]=o[u+1];o[n]=t,c.updateColumnCache(e),e.queueGridRefresh(),d.$applyAsync(function(){e.api.core.notifyDataChange(s.dataChange.COLUMN),e.api.colMovable.raise.columnPositionChanged(t.colDef,i,n)})}}}}};return c}]),e.directive("uiGridMoveColumns",["uiGridMoveColumnService",function(r){return{replace:!0,priority:0,require:"^uiGrid",scope:!1,compile:function(){return{pre:function(e,i,n,o){r.initializeGrid(o.grid)},post:function(e,i,n,o){}}}}}]),e.directive("uiGridHeaderCell",["$q","gridUtil","uiGridMoveColumnService","$document","$log","uiGridConstants","ScrollEvent",function(e,i,w,D,n,o,M){return{priority:-10,require:"^uiGrid",compile:function(){return{post:function(d,o,e,s){var i,c,n,f,g,v,m,h,C,r,l,t,b,p,a,u;d.col.colDef.enableColumnMoving&&(i=angular.element(o[0].querySelectorAll(".ui-grid-cell-contents")),C=v=!1,r=function(e){c=d.grid.element[0].getBoundingClientRect().left,d.grid.hasLeftContainer()&&(c+=d.grid.renderContainers.left.header[0].getBoundingClientRect().width),n=e.pageX||(e.originalEvent?e.originalEvent.pageX:0),f=0,g=c+d.grid.getViewportWidth(),"mousedown"===e.type?(D.on("mousemove",l),D.on("mouseup",t)):"touchstart"===e.type&&(D.on("touchmove",l),D.on("touchend",t))},l=function(e){var e=e.pageX||(e.originalEvent?e.originalEvent.pageX:0),i=e-n;0!=i&&(document.onselectstart=function(){return!1},C=!0,v?(u(i),n=e):a())},t=function(e){if(document.onselectstart=null,m&&(m.remove(),v=!1),p(),b(),C){for(var i,n=d.grid.columns,o=0,r=0;r<n.length&&n[r].colDef.name!==d.col.colDef.name;r++)o++;if(f<0){var l,t=0;if(d.grid.isRTL()){for(l=o+1;l<n.length;l++)if((angular.isUndefined(n[l].colDef.visible)||!0===n[l].colDef.visible)&&(t+=n[l].drawnWidth||n[l].width||n[l].colDef.width)>Math.abs(f)){w.redrawColumnAtPosition(d.grid,o,l-1);break}}else for(l=o-1;0<=l;l--)if((angular.isUndefined(n[l].colDef.visible)||!0===n[l].colDef.visible)&&(t+=n[l].drawnWidth||n[l].width||n[l].colDef.width)>Math.abs(f)){w.redrawColumnAtPosition(d.grid,o,l+1);break}t<Math.abs(f)&&(i=0,d.grid.isRTL()&&(i=n.length-1),w.redrawColumnAtPosition(d.grid,o,i))}else if(0<f){var a,u=0;if(d.grid.isRTL()){for(a=o-1;0<a;a--)if((angular.isUndefined(n[a].colDef.visible)||!0===n[a].colDef.visible)&&(u+=n[a].drawnWidth||n[a].width||n[a].colDef.width,f<u)){w.redrawColumnAtPosition(d.grid,o,a);break}}else for(a=o+1;a<n.length;a++)if((angular.isUndefined(n[a].colDef.visible)||!0===n[a].colDef.visible)&&(u+=n[a].drawnWidth||n[a].width||n[a].colDef.width,f<u)){w.redrawColumnAtPosition(d.grid,o,a-1);break}u<f&&(i=n.length-1,d.grid.isRTL()&&(i=0),w.redrawColumnAtPosition(d.grid,o,i))}}},p=function(){i.off("touchstart",r),i.off("mousedown",r),D.off("mousemove",l),D.off("touchmove",l),D.off("mouseup",t),D.off("touchend",t)},(b=function(){i.on("touchstart",r),i.on("mousedown",r)})(),a=function(){v=!0,m=o.clone(),o.parent().append(m),m.addClass("movingColumn");var e={},i=(e.left=o[0].offsetLeft+"px",d.grid.element[0].getBoundingClientRect().right),n=o[0].getBoundingClientRect().right;i<n&&(h=d.col.drawnWidth+(i-n),e.width=h+"px"),m.css(e)},u=function(e){for(var i=d.grid.columns,n=0,o=0;o<i.length;o++)!angular.isUndefined(i[o].colDef.visible)&&!0!==i[o].colDef.visible||(n+=i[o].drawnWidth||i[o].width||i[o].colDef.width);var r=m[0].getBoundingClientRect().left-1,l=m[0].getBoundingClientRect().right,t=r-c+e;t=t<g?t:g,(c<=r||0<e)&&(l<=g||e<0)?m.css({visibility:"visible",left:m[0].offsetLeft+(t<g?e:g-r)+"px"}):n>Math.ceil(s.grid.gridWidth)&&(e*=8,(l=new M(d.col.grid,null,null,"uiGridHeaderCell.moveElement")).x={pixels:e},l.grid.scrollContainers("",l));for(var a=0,u=0;u<i.length;u++)if(angular.isUndefined(i[u].colDef.visible)||!0===i[u].colDef.visible){if(i[u].colDef.name===d.col.colDef.name)break;a+=i[u].drawnWidth||i[u].width||i[u].colDef.width}void 0===d.newScrollLeft?f+=e:f=d.newScrollLeft+t-a,h<d.col.drawnWidth&&(h+=Math.abs(e),m.css({width:h+"px"}))},d.$on("$destroy",p))}}}}}])}();