ngx-ui-builder
Version:
Angular - Render component ui with configurations
1 lines • 16 kB
Source Map (JSON)
{"version":3,"file":"ngx-ui-builder-pagination.mjs","sources":["../../../libs/ngx-ui-builder/pagination/src/pagination.component.ts","../../../libs/ngx-ui-builder/pagination/src/pagination.component.html","../../../libs/ngx-ui-builder/pagination/src/pagination.module.ts","../../../libs/ngx-ui-builder/pagination/src/public-api.ts","../../../libs/ngx-ui-builder/pagination/src/ngx-ui-builder-pagination.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { BehaviorSubject, filter, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { PaginationConfig } from './pagination.types';\n\n@Component({\n selector: 'nub-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NubPaginationComponent implements OnInit, OnDestroy {\n @Input() set configs(configs: PaginationConfig) {\n this.localConfigs = { ...this.localConfigs, ...configs };\n };\n DOTS = '...';\n\n localConfigs: PaginationConfig = {\n pageSizes: [5, 10, 20, 50, 100],\n pageSize: 10,\n page: 1,\n siblingCount: 2,\n showRefreshButton: false,\n showPageSizesConfig: false,\n };\n\n pagination$: BehaviorSubject<PaginationConfig> = new BehaviorSubject<PaginationConfig>(this.localConfigs);\n pageArray$: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);\n\n private _componentDestroy: Subject<void> = new Subject<void>();\n\n constructor() {}\n\n ngOnInit(): void {\n this.pagination$.next(this.localConfigs);\n\n this.refresh();\n\n this.pagination$.pipe(\n takeUntil(this._componentDestroy),\n ).subscribe((pagination => {\n Object.assign(this.localConfigs, pagination);\n }));\n }\n\n ngOnDestroy() {\n this._componentDestroy.next();\n this._componentDestroy.complete();\n }\n\n buildPageArray(): Observable<any[]> {\n return this.pagination$.pipe(\n takeUntil(this._componentDestroy),\n filter(pagination => !!pagination),\n map(pagination => {\n const totalPageCount = Math.round((pagination?.totalItems ?? 0) / (pagination?.pageSize ?? 10));\n\n // siblingCount + firstPage + lastPage + currentPage + 2*DOTS\n const totalPageNumbers = (pagination?.siblingCount ?? 1) + 5;\n\n // [1..totalPageCount]\n if (totalPageNumbers >= totalPageCount) {\n return this.range(1, totalPageCount);\n }\n\n const leftSiblingIndex = Math.max((pagination?.page ?? 1) - (pagination?.siblingCount ?? 1), 1);\n const rightSiblingIndex = Math.min(\n (pagination?.page ?? 1) + (pagination?.siblingCount ?? 1),\n totalPageCount\n );\n\n const shouldShowLeftDots = leftSiblingIndex > 2;\n const shouldShowRightDots = rightSiblingIndex < totalPageCount - 2;\n\n const firstPageIndex = 1;\n const lastPageIndex = totalPageCount;\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = 3 + 2 * (pagination?.siblingCount ?? 1);\n const leftRange = this.range(1, leftItemCount);\n\n return [...leftRange, this.DOTS, totalPageCount];\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = 3 + 2 * (pagination?.siblingCount ?? 1);\n const rightRange = this.range(\n totalPageCount - rightItemCount + 1,\n totalPageCount\n );\n return [firstPageIndex, this.DOTS, ...rightRange];\n }\n\n if (shouldShowLeftDots && shouldShowRightDots) {\n const middleRange = this.range(leftSiblingIndex, rightSiblingIndex);\n return [firstPageIndex, this.DOTS, ...middleRange, this.DOTS, lastPageIndex];\n }\n\n return new Array(totalPageCount);\n }),\n );\n }\n\n async setPageSize(): Promise<void> {\n await this.refresh();\n const pagination = this.buildOptions();\n if (this.localConfigs.afterChangePageSize) {\n this.localConfigs.afterChangePageSize(pagination);\n } else {\n this.goToPage(0);\n }\n }\n\n goToPage(pageIndex: number): void {\n const pagination = this.buildOptions(pageIndex);\n\n this.pagination$.next({\n ...pagination,\n } as PaginationConfig);\n\n if (this.localConfigs.afterChangePage) {\n this.localConfigs.afterChangePage(pagination);\n }\n this.refresh();\n }\n\n refresh(): void {\n this.buildPageArray().subscribe(data => {\n this.pageArray$.next(data);\n });\n }\n\n onRefresh(): void {\n this.refresh();\n }\n\n private buildOptions(pageIndex = 0) {\n return {\n pageSizes: this.localConfigs.pageSizes,\n pageSize: this.localConfigs.pageSize,\n page: pageIndex + 1,\n siblingCount: this.localConfigs.siblingCount,\n totalItems: this.localConfigs.totalItems,\n };\n }\n\n private range(start: number, end: number) {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n }\n}\n","<div class=\"pagination-container\">\n\n <button class=\"btn-refresh\" (click)=\"onRefresh()\">Refresh</button>\n\n <!-- Pagination Section -->\n <div class=\"settings\">\n <label>\n {{localConfigs.labelSettingsItemsPerPage || 'Items per page'}}:\n <select [(ngModel)]=\"localConfigs.pageSize\" (change)=\"setPageSize()\">\n <option *ngFor=\"let page of (pagination$ | async)!.pageSizes\">\n <span>{{ page }}</span>\n </option>\n </select>\n </label>\n </div>\n\n <div class=\"pagination\" *ngIf=\"pagination$ | async\">\n <ng-container *ngTemplateOutlet=\"firstTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"previousTemplate\"></ng-container>\n <ng-container *ngFor=\"let page of pageArray$ | async; let i = index\">\n <ng-container *ngIf=\"page === DOTS\">\n <ng-container *ngTemplateOutlet=\"dotTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"page !== DOTS\">\n <ng-container *ngTemplateOutlet=\"pageNumberTemplate; context: {$implicit: page}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"nextTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"lastTemplate\"></ng-container>\n </div>\n</div>\n\n<ng-template #firstTemplate>\n <div (click)=\"goToPage(0)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"page-icon\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5\"/>\n </svg>\n </div>\n</ng-template>\n\n<ng-template #lastTemplate>\n <div (click)=\"goToPage(localConfigs.totalItems! / localConfigs.pageSize!)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"page-icon\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11.25 4.5l7.5 7.5-7.5 7.5m-6-15l7.5 7.5-7.5 7.5\"/>\n </svg>\n </div>\n</ng-template>\n\n<ng-template #previousTemplate>\n <div (click)=\"goToPage(localConfigs.page! > 1 ? localConfigs.page! - 2 : 0)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"page-icon\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\"/>\n </svg>\n </div>\n</ng-template>\n\n<ng-template #nextTemplate>\n <div (click)=\"goToPage(localConfigs.page!)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"page-icon\"\n >\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\"/>\n </svg>\n </div>\n</ng-template>\n\n<ng-template #pageNumberTemplate let-page>\n <div\n class=\"page-number\"\n [ngClass]=\"{ 'active': (pagination$ | async)?.page === page }\"\n (click)=\"goToPage(page - 1)\"\n >\n <span>{{page}}</span>\n </div>\n</ng-template>\n\n<ng-template #dotTemplate>\n <div class=\"page-dot\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"14\" viewBox=\"0 0 18 14\">\n <text id=\"_.\" data-name=\"….\" transform=\"translate(9 11)\" fill=\"#6badb9\" font-size=\"1em\" font-family=\"Helvetica\">\n <tspan x=\"-8.945\" y=\"0\">….</tspan>\n </text>\n </svg>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { NubPaginationComponent } from './pagination.component';\n\n@NgModule({\n declarations: [\n NubPaginationComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ],\n exports: [\n NubPaginationComponent\n ]\n})\nexport class NubPaginationModule { }\n","/*\n * Public API Surface of pagination\n */\n\nexport * from './pagination.component';\nexport * from './pagination.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}