angular-ui-grid
Version:
A data grid for Angular
2 lines • 9.63 kB
JavaScript
/*! For license information please see ui-grid.pagination.min.js.LICENSE.txt */
(()=>{var n={66:n=>{n.exports='<div\n class="ui-grid-pager-panel"\n ui-grid-pager\n ng-show="grid.options.enablePaginationControls">\n <div\n role="navigation"\n class="ui-grid-pager-container">\n <div\n class="ui-grid-pager-control">\n <button\n type="button"\n class="ui-grid-pager-first"\n ui-grid-one-bind-title="aria.pageToFirst"\n ui-grid-one-bind-aria-label="aria.pageToFirst"\n ng-click="pageFirstPageClick()"\n ng-disabled="cantPageBackward()">\n <div\n ng-class="grid.isRTL() ? \'last-triangle\' : \'first-triangle\'">\n <div\n ng-class="grid.isRTL() ? \'last-bar-rtl\' : \'first-bar\'">\n </div>\n </div>\n </button>\n <button\n type="button"\n class="ui-grid-pager-previous"\n ui-grid-one-bind-title="aria.pageBack"\n ui-grid-one-bind-aria-label="aria.pageBack"\n ng-click="pagePreviousPageClick()"\n ng-disabled="cantPageBackward()">\n <div ng-class="grid.isRTL() ? \'last-triangle prev-triangle\' : \'first-triangle prev-triangle\'"></div>\n </button>\n <input\n type="number"\n ui-grid-one-bind-title="aria.pageSelected"\n ui-grid-one-bind-aria-label="aria.pageSelected"\n class="ui-grid-pager-control-input"\n ng-model="grid.options.paginationCurrentPage"\n min="1"\n max="{{ paginationApi.getTotalPages() }}"\n step="1"\n required />\n <span\n class="ui-grid-pager-max-pages-number"\n ng-show="paginationApi.getTotalPages() > 0">\n <abbr\n ui-grid-one-bind-title="paginationOf">\n /\n </abbr>\n {{ paginationApi.getTotalPages() }}\n </span>\n <button\n type="button"\n class="ui-grid-pager-next"\n ui-grid-one-bind-title="aria.pageForward"\n ui-grid-one-bind-aria-label="aria.pageForward"\n ng-click="pageNextPageClick()"\n ng-disabled="cantPageForward()">\n <div ng-class="grid.isRTL() ? \'first-triangle next-triangle\' : \'last-triangle next-triangle\'"></div>\n </button>\n <button\n type="button"\n class="ui-grid-pager-last"\n ui-grid-one-bind-title="aria.pageToLast"\n ui-grid-one-bind-aria-label="aria.pageToLast"\n ng-click="pageLastPageClick()"\n ng-disabled="cantPageToLast()">\n <div ng-class="grid.isRTL() ? \'first-triangle\' : \'last-triangle\'">\n <div ng-class="grid.isRTL() ? \'first-bar-rtl\' : \'last-bar\'">\n </div>\n </div>\n </button>\n </div>\n <div\n class="ui-grid-pager-row-count-picker"\n ng-if="grid.options.paginationPageSizes.length > 1 && !grid.options.useCustomPagination">\n <select\n ui-grid-one-bind-aria-labelledby-grid="\'items-per-page-label\'"\n ng-model="grid.options.paginationPageSize"\n ng-options="o as o for o in grid.options.paginationPageSizes"></select>\n <span\n ui-grid-one-bind-id-grid="\'items-per-page-label\'"\n class="ui-grid-pager-row-count-label">\n {{sizesLabel}}\n </span>\n </div>\n <span\n ng-if="grid.options.paginationPageSizes.length <= 1"\n class="ui-grid-pager-row-count-label">\n {{grid.options.paginationPageSize}} {{sizesLabel}}\n </span>\n </div>\n <div\n class="ui-grid-pager-count-container">\n <div\n class="ui-grid-pager-count">\n <span\n ng-show="grid.options.totalItems > 0">\n {{ 1 + paginationApi.getFirstRowIndex() }}\n <abbr\n ui-grid-one-bind-title="paginationThrough">\n -\n </abbr>\n {{ 1 + paginationApi.getLastRowIndex() }} {{paginationOf}} {{grid.options.totalItems}} {{totalItemsLabel}}\n </span>\n </div>\n </div>\n</div>\n'},778:()=>{!function(){"use strict";var n=angular.module("ui.grid.pagination",["ng","ui.grid"]);n.service("uiGridPaginationService",["gridUtil",function(n){var i={initializeGrid:function(n){i.defaultGridOptions(n.options);var a={events:{pagination:{paginationChanged:function(n,i){}}},methods:{pagination:{getPage:function(){return n.options.enablePagination?n.options.paginationCurrentPage:null},getFirstRowIndex:function(){return n.options.useCustomPagination?n.options.paginationPageSizes.reduce((function(i,a,t){return t<n.options.paginationCurrentPage-1?i+a:i}),0):(n.options.paginationCurrentPage-1)*n.options.paginationPageSize},getLastRowIndex:function(){return n.options.useCustomPagination?a.methods.pagination.getFirstRowIndex()+n.options.paginationPageSizes[n.options.paginationCurrentPage-1]-1:Math.min(n.options.paginationCurrentPage*n.options.paginationPageSize,n.options.totalItems)-1},getTotalPages:function(){return n.options.enablePagination?n.options.useCustomPagination?n.options.paginationPageSizes.length:0===n.options.totalItems?1:Math.ceil(n.options.totalItems/n.options.paginationPageSize):null},nextPage:function(){n.options.enablePagination&&(n.options.totalItems>0?n.options.paginationCurrentPage=Math.min(n.options.paginationCurrentPage+1,a.methods.pagination.getTotalPages()):n.options.paginationCurrentPage++)},previousPage:function(){n.options.enablePagination&&(n.options.paginationCurrentPage=Math.max(n.options.paginationCurrentPage-1,1))},seek:function(i){if(n.options.enablePagination){if(!angular.isNumber(i)||i<1)throw"Invalid page number: "+i;n.options.paginationCurrentPage=Math.min(i,a.methods.pagination.getTotalPages())}}}}};n.api.registerEventsFromObject(a.events),n.api.registerMethodsFromObject(a.methods);n.registerRowsProcessor((function(i){if(n.options.useExternalPagination||!n.options.enablePagination)return i;var t=parseInt(n.options.paginationPageSize,10),e=(parseInt(n.options.paginationCurrentPage,10),i.filter((function(n){return n.visible})));n.options.totalItems=e.length;var o=a.methods.pagination.getFirstRowIndex(),g=a.methods.pagination.getLastRowIndex();return o>e.length&&(o=((n.options.paginationCurrentPage=1)-1)*t),e.slice(o,g+1)}),900)},defaultGridOptions:function(i){i.enablePagination=!1!==i.enablePagination,i.enablePaginationControls=!1!==i.enablePaginationControls,i.useExternalPagination=!0===i.useExternalPagination,i.useCustomPagination=!0===i.useCustomPagination,n.isNullOrUndefined(i.totalItems)&&(i.totalItems=0),n.isNullOrUndefined(i.paginationPageSizes)&&(i.paginationPageSizes=[250,500,1e3]),n.isNullOrUndefined(i.paginationPageSize)&&(i.paginationPageSizes.length>0?i.paginationPageSize=i.paginationPageSizes[0]:i.paginationPageSize=0),n.isNullOrUndefined(i.paginationCurrentPage)&&(i.paginationCurrentPage=1),n.isNullOrUndefined(i.paginationTemplate)&&(i.paginationTemplate="ui-grid/pagination")},onPaginationChanged:function(n,i,a){n.api.pagination.raise.paginationChanged(i,a),n.options.useExternalPagination||n.queueGridRefresh()}};return i}]),n.directive("uiGridPagination",["gridUtil","uiGridPaginationService",function(n,i){return{priority:-200,scope:!1,require:"uiGrid",link:{pre:function(a,t,e,o){i.initializeGrid(o.grid),n.getTemplate(o.grid.options.paginationTemplate).then((function(n){var i=angular.element(n);t.append(i),o.innerCompile(i)}))}}}}]),n.directive("uiGridPager",["uiGridPaginationService","uiGridConstants","gridUtil","i18nService","i18nConstants",function(n,i,a,t,e){return{priority:-200,scope:!0,require:"^uiGrid",link:function(o,g,r,s){o.aria=t.getSafeText("pagination.aria");var p=function(){o.paginationApi=s.grid.api.pagination,o.sizesLabel=t.getSafeText("pagination.sizes"),o.totalItemsLabel=t.getSafeText("pagination.totalItems"),o.paginationOf=t.getSafeText("pagination.of"),o.paginationThrough=t.getSafeText("pagination.through")};p(),o.$on(e.UPDATE_EVENT,p);var l=s.grid.options;s.grid.renderContainers.body.registerViewportAdjuster((function(n){return l.enablePaginationControls&&(n.height=n.height-a.elementHeight(g,"padding")),n}));var u=s.grid.registerDataChangeCallback((function(n){n.options.useExternalPagination||(n.options.totalItems=n.rows.length)}),[i.dataChange.ROW]);o.$on("$destroy",u);var d=o.$watch("grid.options.paginationCurrentPage + grid.options.paginationPageSize",(function(i,a){i!==a&&void 0!==a&&(!angular.isNumber(l.paginationCurrentPage)||l.paginationCurrentPage<1?l.paginationCurrentPage=1:l.totalItems>0&&l.paginationCurrentPage>o.paginationApi.getTotalPages()?l.paginationCurrentPage=o.paginationApi.getTotalPages():n.onPaginationChanged(o.grid,l.paginationCurrentPage,l.paginationPageSize))}));o.$on("$destroy",(function(){d()})),o.cantPageForward=function(){return o.paginationApi.getTotalPages()?o.cantPageToLast():l.data.length<1},o.cantPageToLast=function(){var n=o.paginationApi.getTotalPages();return!n||l.paginationCurrentPage>=n},o.cantPageBackward=function(){return l.paginationCurrentPage<=1};var c=function(n){n&&a.focus.bySelector(g,".ui-grid-pager-control-input")};o.pageFirstPageClick=function(){o.paginationApi.seek(1),c(o.cantPageBackward())},o.pagePreviousPageClick=function(){o.paginationApi.previousPage(),c(o.cantPageBackward())},o.pageNextPageClick=function(){o.paginationApi.nextPage(),c(o.cantPageForward())},o.pageLastPageClick=function(){o.paginationApi.seek(o.paginationApi.getTotalPages()),c(o.cantPageToLast())}}}}])}()},561:(n,i,a)=>{angular.module("ui.grid.pagination").run(["$templateCache",function(n){"use strict";n.put("ui-grid/pagination",a(66))}])}},i={};function a(t){var e=i[t];if(void 0!==e)return e.exports;var o=i[t]={exports:{}};return n[t](o,o.exports,a),o.exports}a(778),a(561)})();