@obliczeniowo/elementary
Version:
Library made in Angular version 19
1 lines • 13.5 kB
Source Map (JSON)
{"version":3,"file":"obliczeniowo-elementary-pagination.mjs","sources":["../../../../projects/components/pagination/components/pagination/pagination.component.ts","../../../../projects/components/pagination/components/pagination/pagination.component.html","../../../../projects/components/pagination/pagination.module.ts","../../../../projects/components/pagination/obliczeniowo-elementary-pagination.ts"],"sourcesContent":["import {\r\n Component,\r\n computed,\r\n effect,\r\n HostBinding,\r\n input,\r\n Input,\r\n model,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { PaginationOptions } from '../../interfaces/pagination-options';\r\n\r\n@Component({\r\n selector: 'obl-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: PaginationComponent,\r\n },\r\n ],\r\n standalone: false\r\n})\r\nexport class PaginationComponent implements ControlValueAccessor {\r\n /** Current selected page starting from 1 to totalPages */\r\n page = model<number>(1);\r\n\r\n /** page size */\r\n size = model<number>(20);\r\n\r\n /** total records */\r\n total = model<number>(0);\r\n\r\n /**\r\n * en: translation key value for text inside component\r\n *\r\n * @example\r\n *\r\n * <obl-pagination [translation]=\"{ 'Page': 'Strona' }></obl-pagination>\"\r\n */\r\n translations = input<{ [en: string]: string }>({});\r\n\r\n options = model<PaginationOptions>({\r\n itemsCount: 4,\r\n nextPrevious: true,\r\n lastFirst: true,\r\n pageInput: true,\r\n of: true,\r\n total: false,\r\n });\r\n\r\n @Input()\r\n @HostBinding('class.disabled')\r\n disabled = false;\r\n\r\n @Input()\r\n @HostBinding('attr.small')\r\n small?: boolean;\r\n\r\n protected characters = 2;\r\n\r\n constructor() {\r\n effect(() => {\r\n this.page();\r\n this.setChars();\r\n })\r\n }\r\n\r\n get totalPages() {\r\n return Math.ceil(this.total() / this.size());\r\n }\r\n\r\n setChars() {\r\n setTimeout(() => {\r\n const length = this.page().toString().length;\r\n this.characters = (length > 2 && length) || 2;\r\n });\r\n }\r\n\r\n pages = computed(() => {\r\n const { page } = this;\r\n const { itemsCount } = this.options();\r\n let start = Math.max(page() - itemsCount, 1);\r\n const end = Math.min(start + itemsCount * 2, this.totalPages);\r\n\r\n if (this.totalPages > end - start && end === this.totalPages) {\r\n start = Math.max(end - (itemsCount * 2 + 1), 1);\r\n }\r\n\r\n return new Array(end - start + 1).fill(0).map((_, index) => start + index);\r\n });\r\n\r\n movePage(id: number) {\r\n const { page, size, total } = this;\r\n if (page() !== id) {\r\n page.set(id);\r\n }\r\n\r\n this.onChange({\r\n page: page(),\r\n size: size(),\r\n total: total(),\r\n });\r\n\r\n this.setChars();\r\n }\r\n\r\n changePage(event: any) {\r\n let page = event.target.value;\r\n\r\n if (page < 1) {\r\n page = 1;\r\n event.target.value = 1;\r\n } else if (page > this.totalPages) {\r\n page = this.totalPages;\r\n event.target.value = this.totalPages;\r\n }\r\n\r\n this.movePage(+page);\r\n }\r\n\r\n onChange = (value: {\r\n page: number,\r\n size: number,\r\n total: number,\r\n options?: PaginationOptions\r\n }) => {};\r\n\r\n onTouched = () => {};\r\n\r\n writeValue(value: {\r\n page: number,\r\n size: number,\r\n total: number,\r\n options?: PaginationOptions\r\n }): void {\r\n this.page.set(value.page);\r\n this.size.set(value.size);\r\n this.total.set(value.total);\r\n this.options.set(value.options || this.options());\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n}\r\n","@if (options().total) {\r\n <span [attr.small]=\"small\">\r\n {{ 'Total' | oblTranslation : translations() }} {{ total() }}\r\n </span>\r\n}\r\n\r\n@if (totalPages > 1) {\r\n @if (options().lastFirst) {\r\n <button\r\n oblButton\r\n [attr.small]=\"small\"\r\n [disabled]=\"page() === 1\"\r\n (click)=\"movePage(1)\"\r\n >\r\n <obl-icon name=\"left-more\"></obl-icon>\r\n </button>\r\n }\r\n @if (options().nextPrevious) {\r\n <button\r\n oblButton\r\n [attr.small]=\"small\"\r\n [disabled]=\"page() === 1\"\r\n (click)=\"movePage(page() - 1)\"\r\n >\r\n <obl-icon name=\"left\"></obl-icon>\r\n </button>\r\n }\r\n\r\n @for (p of pages(); track $index) {\r\n <button\r\n [attr.small]=\"small\"\r\n [class.selected]=\"p === page()\"\r\n oblButton\r\n (click)=\"movePage(p)\"\r\n >\r\n {{ p }}\r\n </button>\r\n }\r\n\r\n @if (options().nextPrevious) {\r\n <button\r\n [attr.small]=\"small\"\r\n oblButton\r\n [disabled]=\"page() === totalPages\"\r\n (click)=\"movePage(page() + 1)\"\r\n >\r\n <obl-icon name=\"right\"></obl-icon>\r\n </button>\r\n }\r\n\r\n @if (options().lastFirst) {\r\n <button\r\n [attr.small]=\"small\"\r\n oblButton\r\n [disabled]=\"page() === totalPages\"\r\n (click)=\"movePage(totalPages)\"\r\n >\r\n <obl-icon name=\"right-more\"></obl-icon>\r\n </button>\r\n }\r\n\r\n @if (options().pageInput) {\r\n <obl-input-wrapper\r\n [small]=\"small\"\r\n [label]=\"'Page' | oblTranslation : translations()\"\r\n >\r\n @if (options().of) {\r\n <ng-container suffix>\r\n <span>\r\n {{ 'of' | oblTranslation : translations() }} {{ totalPages }}\r\n </span>\r\n </ng-container>\r\n }\r\n <input\r\n oblInput\r\n [class.of]=\"options().of\"\r\n [style.width.ch]=\"characters\"\r\n [value]=\"page()\"\r\n [min]=\"1\"\r\n [max]=\"totalPages\"\r\n type=\"number\"\r\n (change)=\"changePage($event)\"\r\n #pageInput\r\n />\r\n </obl-input-wrapper>\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\nimport { InputModule } from '@obliczeniowo/elementary/input';\r\nimport { IconsModule } from '@obliczeniowo/elementary/icons';\r\nimport { TextPipesModule } from '@obliczeniowo/elementary/text-pipes';\r\n\r\nimport { PaginationComponent } from './components/pagination/pagination.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n PaginationComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ButtonsModule,\r\n InputModule,\r\n IconsModule,\r\n TextPipesModule\r\n ],\r\n exports: [\r\n PaginationComponent\r\n ]\r\n})\r\nexport class PaginationModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}