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