UNPKG

angular-ui-grid

Version:

A data grid for Angular

7 lines (5 loc) 4.65 kB
/*! * ui-grid - v4.9.1 - 2020-10-26 * Copyright (c) 2020 ; License: MIT */ !function(){"use strict";var i=angular.module("ui.grid.infiniteScroll",["ui.grid"]);i.service("uiGridInfiniteScrollService",["gridUtil","$compile","$rootScope","uiGridConstants","ScrollEvent","$q",function(i,o,c,s,t,n){var a={initializeGrid:function(n,i){if(a.defaultGridOptions(n.options),n.options.enableInfiniteScroll){n.infiniteScroll={dataLoading:!1},a.setScrollDirections(n,n.options.infiniteScrollUp,n.options.infiniteScrollDown),n.api.core.on.scrollEnd(i,a.handleScroll);var o={events:{infiniteScroll:{needLoadMoreData:function(i,o){},needLoadMoreDataTop:function(i,o){}}},methods:{infiniteScroll:{dataLoaded:function(i,o){return a.setScrollDirections(n,i,o),a.adjustScroll(n).then(function(){n.infiniteScroll.dataLoading=!1})},resetScroll:function(i,o){a.setScrollDirections(n,i,o),a.adjustInfiniteScrollPosition(n,0)},saveScrollPercentage:function(){n.infiniteScroll.prevScrollTop=n.renderContainers.body.prevScrollTop,n.infiniteScroll.previousVisibleRows=n.getVisibleRowCount()},dataRemovedTop:function(i,o){a.dataRemovedTop(n,i,o)},dataRemovedBottom:function(i,o){a.dataRemovedBottom(n,i,o)},setScrollDirections:function(i,o){a.setScrollDirections(n,i,o)}}}};n.api.registerEventsFromObject(o.events),n.api.registerMethodsFromObject(o.methods)}},defaultGridOptions:function(i){i.enableInfiniteScroll=!1!==i.enableInfiniteScroll,i.infiniteScrollRowsFromEnd=i.infiniteScrollRowsFromEnd||20,i.infiniteScrollUp=!0===i.infiniteScrollUp,i.infiniteScrollDown=!1!==i.infiniteScrollDown},setScrollDirections:function(i,o,n){i.infiniteScroll.scrollUp=!0===o,i.suppressParentScrollUp=!0===o,i.infiniteScroll.scrollDown=!1!==n,i.suppressParentScrollDown=!1!==n},handleScroll:function(i){if(!(i.grid.infiniteScroll&&i.grid.infiniteScroll.dataLoading||"ui.grid.adjustInfiniteScrollPosition"===i.source)&&i.y)if(0===i.y.percentage)i.grid.scrollDirection=s.scrollDirection.UP,a.loadData(i.grid);else if(1===i.y.percentage)i.grid.scrollDirection=s.scrollDirection.DOWN,a.loadData(i.grid);else{var o=i.grid.options.infiniteScrollRowsFromEnd/i.grid.renderContainers.body.visibleRowCache.length;i.grid.scrollDirection===s.scrollDirection.UP?i.y.percentage<=o&&a.loadData(i.grid):i.grid.scrollDirection===s.scrollDirection.DOWN&&1-i.y.percentage<=o&&a.loadData(i.grid)}},loadData:function(i){i.infiniteScroll.previousVisibleRows=i.renderContainers.body.visibleRowCache.length,i.infiniteScroll.direction=i.scrollDirection,delete i.infiniteScroll.prevScrollTop,i.scrollDirection===s.scrollDirection.UP&&i.infiniteScroll.scrollUp?(i.infiniteScroll.dataLoading=!0,i.api.infiniteScroll.raise.needLoadMoreDataTop()):i.scrollDirection===s.scrollDirection.DOWN&&i.infiniteScroll.scrollDown&&(i.infiniteScroll.dataLoading=!0,i.api.infiniteScroll.raise.needLoadMoreData())},adjustScroll:function(l){var t=n.defer();return c.$applyAsync(function(){var i,o,n,e;i=l.getViewportHeight()+l.headerHeight-l.renderContainers.body.headerHeight-l.scrollbarHeight,o=l.options.rowHeight,void 0===l.infiniteScroll.direction&&a.adjustInfiniteScrollPosition(l,0);var r=o*(n=l.getVisibleRowCount());l.infiniteScroll.scrollDown&&r<i&&l.api.infiniteScroll.raise.needLoadMoreData(),l.infiniteScroll.direction===s.scrollDirection.UP&&(e=(l.infiniteScroll.prevScrollTop||0)+(n-l.infiniteScroll.previousVisibleRows)*o,a.adjustInfiniteScrollPosition(l,e),c.$applyAsync(function(){t.resolve()})),l.infiniteScroll.direction===s.scrollDirection.DOWN&&(e=l.infiniteScroll.prevScrollTop||l.infiniteScroll.previousVisibleRows*o-i,a.adjustInfiniteScrollPosition(l,e),c.$applyAsync(function(){t.resolve()}))},0),t.promise},adjustInfiniteScrollPosition:function(i,o){var n=new t(i,null,null,"ui.grid.adjustInfiniteScrollPosition"),e=i.getVisibleRowCount(),r=i.getViewportHeight()+i.headerHeight-i.renderContainers.body.headerHeight-i.scrollbarHeight,l=e*i.options.rowHeight-r;0===o&&i.infiniteScroll.scrollUp?n.y={pixels:1}:n.y={percentage:o/l},i.scrollContainers("",n)},dataRemovedTop:function(i,o,n){var e,r,l,t;a.setScrollDirections(i,o,n),e=i.renderContainers.body.visibleRowCache.length,r=i.infiniteScroll.prevScrollTop,t=i.options.rowHeight,l=r-(i.infiniteScroll.previousVisibleRows-e)*t,a.adjustInfiniteScrollPosition(i,l)},dataRemovedBottom:function(i,o,n){var e;a.setScrollDirections(i,o,n),e=i.infiniteScroll.prevScrollTop,a.adjustInfiniteScrollPosition(i,e)}};return a}]),i.directive("uiGridInfiniteScroll",["uiGridInfiniteScrollService",function(r){return{priority:-200,scope:!1,require:"^uiGrid",compile:function(){return{pre:function(i,o,n,e){r.initializeGrid(e.grid,i)},post:function(i,o,n){}}}}}])}();