cmat 0.0.86 → 0.0.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs +98 -80
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +26 -34
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-carousel.mjs +467 -556
- package/fesm2022/cmat-components-carousel.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +270 -259
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +200 -116
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-code-editor.mjs +85 -38
- package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-color-picker.mjs +841 -0
- package/fesm2022/cmat-components-color-picker.mjs.map +1 -0
- package/fesm2022/cmat-components-custom-formly.mjs +1395 -838
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-data-picker.mjs +996 -0
- package/fesm2022/cmat-components-data-picker.mjs.map +1 -0
- package/fesm2022/cmat-components-date-range.mjs +310 -264
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-date-time-display.mjs +16 -20
- package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +120 -137
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-empty-state.mjs +17 -24
- package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
- package/fesm2022/cmat-components-file-preview.mjs +18 -24
- package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
- package/fesm2022/cmat-components-filter-toolbar.mjs +30 -39
- package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
- package/fesm2022/cmat-components-form-actions.mjs +12 -12
- package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +10 -10
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +48 -41
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-image-viewer.mjs +104 -107
- package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
- package/fesm2022/cmat-components-inline-loading.mjs +12 -15
- package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +118 -75
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-knob-input.mjs +196 -178
- package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs +26 -41
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +81 -80
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +1212 -1287
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +467 -450
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +143 -132
- package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
- package/fesm2022/cmat-components-org-chart.mjs +68 -83
- package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
- package/fesm2022/cmat-components-page-header.mjs +18 -24
- package/fesm2022/cmat-components-page-header.mjs.map +1 -1
- package/fesm2022/cmat-components-pagination.mjs +220 -136
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +262 -215
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +227 -195
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-progress-bar.mjs +15 -34
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-qrcode.mjs +95 -88
- package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +70 -67
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-rich-text-editor.mjs +23 -26
- package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +190 -159
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +276 -213
- package/fesm2022/cmat-components-select-table.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +178 -128
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-skeleton.mjs +44 -28
- package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
- package/fesm2022/cmat-components-speed-dial.mjs +107 -163
- package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
- package/fesm2022/cmat-components-status-tag.mjs +29 -36
- package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
- package/fesm2022/cmat-components-table-toolbar.mjs +14 -18
- package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs +111 -118
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +65 -66
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +130 -160
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +32 -39
- package/fesm2022/cmat-components-treetable.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +186 -176
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +25 -28
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-arrow-cursor.mjs +85 -92
- package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs +49 -50
- package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
- package/fesm2022/cmat-directives-debounce.mjs +16 -19
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +60 -69
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +31 -30
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +6 -6
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +7 -13
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
- package/fesm2022/cmat-services-alert.mjs +26 -27
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-config.mjs +14 -23
- package/fesm2022/cmat-services-config.mjs.map +1 -1
- package/fesm2022/cmat-services-confirmation.mjs +8 -8
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs +6 -10
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-export-as.mjs +3 -3
- package/fesm2022/cmat-services-export-as.mjs.map +1 -1
- package/fesm2022/cmat-services-loading.mjs +30 -47
- package/fesm2022/cmat-services-loading.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
- package/fesm2022/cmat-services-media-watcher.mjs +43 -34
- package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs.map +1 -1
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs +11 -11
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +4 -4
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat.mjs +9229 -7508
- package/fesm2022/cmat.mjs.map +1 -1
- package/icons/material-icons/heroicons-outline.svg +3 -0
- package/icons/material-icons/heroicons-solid.svg +3 -0
- package/package.json +10 -1
- package/styles/components/bundle.scss +21 -0
- package/styles/overrides/angular-material.scss +22 -1
- package/tailwind/plugins/theming.js +183 -183
- package/types/cmat-components-breadcrumb.d.ts +40 -37
- package/types/cmat-components-card.d.ts +11 -13
- package/types/cmat-components-carousel.d.ts +87 -113
- package/types/cmat-components-cascade.d.ts +84 -65
- package/types/cmat-components-chip-input.d.ts +29 -24
- package/types/cmat-components-code-editor.d.ts +28 -12
- package/types/cmat-components-color-picker.d.ts +236 -0
- package/types/cmat-components-custom-formly.d.ts +316 -184
- package/types/cmat-components-data-picker.d.ts +372 -0
- package/types/cmat-components-date-range.d.ts +31 -36
- package/types/cmat-components-date-time-display.d.ts +8 -8
- package/types/cmat-components-drawer.d.ts +30 -32
- package/types/cmat-components-empty-state.d.ts +9 -10
- package/types/cmat-components-file-preview.d.ts +9 -9
- package/types/cmat-components-filter-toolbar.d.ts +15 -15
- package/types/cmat-components-form-actions.d.ts +5 -5
- package/types/cmat-components-fullscreen.d.ts +5 -5
- package/types/cmat-components-highlight.d.ts +13 -14
- package/types/cmat-components-image-viewer.d.ts +29 -33
- package/types/cmat-components-inline-loading.d.ts +6 -6
- package/types/cmat-components-json-editor.d.ts +15 -17
- package/types/cmat-components-knob-input.d.ts +58 -55
- package/types/cmat-components-masonry.d.ts +9 -12
- package/types/cmat-components-material-color-picker.d.ts +16 -21
- package/types/cmat-components-material-datetimepicker.d.ts +174 -216
- package/types/cmat-components-navigation.d.ts +34 -39
- package/types/cmat-components-opt-input.d.ts +35 -33
- package/types/cmat-components-org-chart.d.ts +8 -9
- package/types/cmat-components-page-header.d.ts +9 -9
- package/types/cmat-components-pagination.d.ts +36 -40
- package/types/cmat-components-password-strength.d.ts +58 -64
- package/types/cmat-components-popover.d.ts +22 -32
- package/types/cmat-components-progress-bar.d.ts +7 -10
- package/types/cmat-components-qrcode.d.ts +22 -22
- package/types/cmat-components-rating.d.ts +17 -19
- package/types/cmat-components-rich-text-editor.d.ts +11 -12
- package/types/cmat-components-select-search.d.ts +48 -36
- package/types/cmat-components-select-table.d.ts +38 -34
- package/types/cmat-components-select-tree.d.ts +17 -15
- package/types/cmat-components-skeleton.d.ts +27 -10
- package/types/cmat-components-speed-dial.d.ts +24 -33
- package/types/cmat-components-status-tag.d.ts +19 -9
- package/types/cmat-components-table-toolbar.d.ts +7 -7
- package/types/cmat-components-timeline.d.ts +33 -34
- package/types/cmat-components-toast.d.ts +26 -30
- package/types/cmat-components-transfer-picker.d.ts +51 -56
- package/types/cmat-components-treetable.d.ts +12 -13
- package/types/cmat-components-upload.d.ts +33 -38
- package/types/cmat-components-x6-angular-shape.d.ts +1 -1
- package/types/cmat-directives-animate-on-scroll.d.ts +7 -7
- package/types/cmat-directives-arrow-cursor.d.ts +18 -20
- package/types/cmat-directives-data-exporter.d.ts +10 -10
- package/types/cmat-directives-debounce.d.ts +5 -5
- package/types/cmat-directives-digit-only.d.ts +13 -13
- package/types/cmat-directives-seamless-auto-scroll.d.ts +7 -7
- package/types/cmat-pipes-secure.d.ts +1 -3
- package/types/cmat-services-alert.d.ts +11 -12
- package/types/cmat-services-config.d.ts +2 -7
- package/types/cmat-services-confirmation.d.ts +2 -2
- package/types/cmat-services-data.d.ts +0 -1
- package/types/cmat-services-loading.d.ts +14 -22
- package/types/cmat-services-media-watcher.d.ts +5 -5
- package/types/cmat-services-translation.d.ts +4 -5
- package/types/cmat.d.ts +2167 -1746
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-components-pagination.mjs","sources":["../../../projects/cmat/components/pagination/pagination.service.ts","../../../projects/cmat/components/pagination/pagination.directive.ts","../../../projects/cmat/components/pagination/pagination.component.ts","../../../projects/cmat/components/pagination/pagination.component.html","../../../projects/cmat/components/pagination/pagination.pipe.ts","../../../projects/cmat/components/pagination/cmat-components-pagination.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { CmatPaginationInstance } from './pagination.instance';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatPaginationService {\r\n private readonly _change = new Subject<string>();\r\n private readonly _instances: Record<string, CmatPaginationInstance> = {};\r\n private readonly _defaultPaginationId = 'DEFAULT_PAGINATION_ID';\r\n\r\n get change$(): Observable<string> {\r\n return this._change.asObservable();\r\n }\r\n\r\n public defaultId(): string { return this._defaultPaginationId; }\r\n\r\n public notifyChange(id: string): void {\r\n this._change.next(id);\r\n }\r\n\r\n public register(instance: CmatPaginationInstance): boolean {\r\n const normalizedInstance: CmatPaginationInstance = {\r\n ...structuredClone(instance),\r\n id: instance.id ?? this._defaultPaginationId\r\n };\r\n const id = normalizedInstance.id!;\r\n\r\n if (!this._instances[id]) {\r\n this._instances[id] = normalizedInstance;\r\n return true;\r\n }\r\n\r\n return this._updateInstance(normalizedInstance);\r\n }\r\n\r\n public getCurrentPage(id: string): number | undefined {\r\n return this._instances[id]?.currentPage;\r\n }\r\n\r\n public getItemsPerPage(id: string): number | undefined {\r\n return this._instances[id]?.itemsPerPage;\r\n }\r\n\r\n public setCurrentPage(id: string, page: number): void {\r\n if (this._instances[id]) {\r\n const instance = this._instances[id];\r\n const maxPage = Math.ceil(instance.totalItems / instance.itemsPerPage);\r\n if (page <= maxPage && 1 <= page) {\r\n this._instances[id].currentPage = page;\r\n this.notifyChange(id);\r\n }\r\n }\r\n }\r\n\r\n public setTotalItems(id: string, totalItems: number): void {\r\n if (this._instances[id] && 0 <= totalItems) {\r\n this._instances[id].totalItems = totalItems;\r\n this.notifyChange(id);\r\n }\r\n }\r\n\r\n public setItemsPerPage(id: string, itemsPerPage: number): void {\r\n if (this._instances[id]) {\r\n this._instances[id].itemsPerPage = itemsPerPage;\r\n this.notifyChange(id);\r\n }\r\n }\r\n\r\n public getInstance(id: string = this._defaultPaginationId): CmatPaginationInstance | undefined {\r\n if (this._instances[id]) {\r\n return this._clone(this._instances[id]);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private _updateInstance(instance: CmatPaginationInstance): boolean {\r\n let changed = false;\r\n if (instance.id) {\r\n const currentInstance = this._instances[instance.id];\r\n const keys = new Set([...Object.keys(currentInstance), ...Object.keys(instance)]);\r\n\r\n for (const prop of keys) {\r\n const key = prop as keyof CmatPaginationInstance;\r\n\r\n if (instance[key] !== currentInstance[key]) {\r\n currentInstance[key] = instance[key];\r\n changed = true;\r\n }\r\n }\r\n }\r\n return changed;\r\n }\r\n\r\n private _clone<T extends Record<string, unknown>>(obj: T): T {\r\n return structuredClone(obj);\r\n }\r\n}\r\n","import {\r\n afterNextRender,\r\n DestroyRef,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n inject,\r\n Injector,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CmatPaginationInstance } from './pagination.instance';\r\nimport { CmatPaginationService } from './pagination.service';\r\n\r\nexport interface Page {\r\n label: string | number;\r\n value: number;\r\n}\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'pagination-template,[pagination-template]',\r\n exportAs: 'paginationApi'\r\n})\r\nexport class CmatPaginationDirective implements OnInit, OnChanges {\r\n @Input() id: string;\r\n @Input() maxSize: number = 7;\r\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n @Output() pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\r\n @Output() perPageCountChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n readonly pages$ = signal<Page[]>([]);\r\n\r\n private readonly service = inject(CmatPaginationService);\r\n private readonly _injector = inject(Injector);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private _pageLinksUpdateQueued = false;\r\n\r\n constructor() {\r\n this.service.change$.pipe(\r\n takeUntilDestroyed(this._destroyRef))\r\n .subscribe((id) => {\r\n if (this.id === id) {\r\n this._schedulePageLinksUpdate();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.id ??= this.service.defaultId();\r\n this._schedulePageLinksUpdate();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this._schedulePageLinksUpdate();\r\n }\r\n\r\n previous(): void {\r\n if (!this.isFirstPage()) {\r\n this._checkValidId();\r\n\r\n const current = this.getCurrent();\r\n if (current)\r\n this.setCurrent(current - 1);\r\n }\r\n }\r\n\r\n next(): void {\r\n if (!this.isLastPage()) {\r\n this._checkValidId();\r\n\r\n const current = this.getCurrent();\r\n if (current)\r\n this.setCurrent(current + 1);\r\n }\r\n }\r\n\r\n goFirstPage(): void {\r\n if (!this.isFirstPage()) {\r\n this._checkValidId();\r\n\r\n this.setCurrent(1);\r\n }\r\n }\r\n\r\n goLastPage(): void {\r\n if (!this.isLastPage()) {\r\n this._checkValidId();\r\n\r\n const lastPage = this.getLastPage();\r\n if (lastPage)\r\n this.setCurrent(lastPage);\r\n }\r\n }\r\n\r\n isFirstPage(): boolean {\r\n return this.getCurrent() === 1;\r\n }\r\n\r\n isLastPage(): boolean {\r\n return this.getLastPage() === this.getCurrent();\r\n }\r\n\r\n setCurrent(page: number | string): void {\r\n const nextPage = Number(page);\r\n\r\n if (!Number.isNaN(nextPage)) {\r\n this.pageChange.emit(nextPage);\r\n }\r\n }\r\n\r\n getCurrent(): number | void {\r\n return this.service.getCurrentPage(this.id);\r\n }\r\n\r\n getLastPage(): number | void {\r\n const inst = this.service.getInstance(this.id);\r\n if (!inst) {\r\n return;\r\n }\r\n\r\n if (inst.totalItems < 1) {\r\n return 1;\r\n }\r\n return Math.ceil(inst.totalItems / inst.itemsPerPage);\r\n }\r\n\r\n getTotalItems(): number | void {\r\n return this.service.getInstance(this.id)?.totalItems;\r\n }\r\n\r\n setItemsPerPage(count: number): void {\r\n this.service.setItemsPerPage(this.id, count);\r\n\r\n this.perPageCountChange.emit(count);\r\n const inst = this.service.getInstance(this.id);\r\n if (!inst) {\r\n return;\r\n }\r\n\r\n this.setCurrent(this._outOfBoundCorrection(inst));\r\n }\r\n\r\n private _checkValidId(): void {\r\n if (this.service.getInstance(this.id)?.id == null) {\r\n console.warn(`PaginationControlsDirective: the specified id \"${this.id}\" does not match any registered PaginationInstance`);\r\n }\r\n }\r\n\r\n private _updatePageLinks(): void {\r\n const inst = this.service.getInstance(this.id);\r\n if (!inst) {\r\n this.pages$.set([]);\r\n return;\r\n }\r\n\r\n const correctedCurrentPage = this._outOfBoundCorrection(inst);\r\n const pageForRender = correctedCurrentPage !== inst.currentPage ? correctedCurrentPage : inst.currentPage;\r\n\r\n this.pageBoundsCorrection.emit(correctedCurrentPage);\r\n this.pages$.set(this._createPageArray(pageForRender, inst.itemsPerPage, inst.totalItems, this.maxSize));\r\n }\r\n\r\n private _schedulePageLinksUpdate(): void {\r\n if (this._pageLinksUpdateQueued) {\r\n return;\r\n }\r\n\r\n this._pageLinksUpdateQueued = true;\r\n afterNextRender(() => {\r\n this._pageLinksUpdateQueued = false;\r\n this._updatePageLinks();\r\n }, { injector: this._injector });\r\n }\r\n\r\n private _outOfBoundCorrection(instance: CmatPaginationInstance): number {\r\n const totalPages = Math.ceil(instance.totalItems / instance.itemsPerPage);\r\n if (totalPages < instance.currentPage && 0 < totalPages) {\r\n return totalPages;\r\n } else if (instance.currentPage < 1) {\r\n return 1;\r\n }\r\n\r\n return instance.currentPage;\r\n }\r\n\r\n private _createPageArray(currentPage: number, itemsPerPage: number, totalItems: number, paginationRange: number): Page[] {\r\n paginationRange = +paginationRange;\r\n const pages: Page[] = [];\r\n\r\n const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1);\r\n const halfWay = Math.ceil(paginationRange / 2);\r\n\r\n const isStart = currentPage <= halfWay;\r\n const isEnd = totalPages - halfWay < currentPage;\r\n const isMiddle = !isStart && !isEnd;\r\n\r\n const ellipsesNeeded = paginationRange < totalPages;\r\n let i = 1;\r\n\r\n while (i <= totalPages && i <= paginationRange) {\r\n let label: string | number;\r\n const pageNumber = this._calculatePageNumber(i, currentPage, paginationRange, totalPages);\r\n const openingEllipsesNeeded = (i === 2 && (isMiddle || isEnd));\r\n const closingEllipsesNeeded = (i === paginationRange - 1 && (isMiddle || isStart));\r\n if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\r\n label = '...';\r\n } else {\r\n label = pageNumber;\r\n }\r\n pages.push({\r\n label: label,\r\n value: pageNumber\r\n });\r\n i++;\r\n }\r\n\r\n return pages;\r\n }\r\n\r\n private _calculatePageNumber(i: number, currentPage: number, paginationRange: number, totalPages: number): number {\r\n const halfWay = Math.ceil(paginationRange / 2);\r\n if (i === paginationRange) {\r\n return totalPages;\r\n } else if (i === 1) {\r\n return i;\r\n } else if (paginationRange < totalPages) {\r\n if (totalPages - halfWay < currentPage) {\r\n return totalPages - paginationRange + i;\r\n } else if (halfWay < currentPage) {\r\n return currentPage - halfWay + i;\r\n } else {\r\n return i;\r\n }\r\n } else {\r\n return i;\r\n }\r\n }\r\n}\r\n","import { DecimalPipe, NgStyle } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, Input, OnInit, Output, ViewEncapsulation, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { CmatDigitOnlyDirective } from 'cmat/directives/digit-only';\r\nimport { CmatMediaWatcherService } from 'cmat/services/media-watcher';\r\nimport { CmatPaginationDirective } from './pagination.directive';\r\n\r\n@Component({\r\n selector: 'cmat-pagination',\r\n templateUrl: './pagination.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cmatPagination',\r\n imports: [CmatPaginationDirective, MatIconModule, NgStyle, MatFormFieldModule, MatInputModule, CmatDigitOnlyDirective, MatSelectModule, DecimalPipe, MatButtonModule]\r\n})\r\nexport class CmatPaginationComponent implements OnInit {\r\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n @Output() pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\r\n @Output() perPageCountChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @Input() id: string;\r\n @Input() maxSize: number = 7;\r\n\r\n @Input() itemsPerPages: number[] = [10, 20, 30];\r\n @Input() initPerPage: number = 10;\r\n\r\n readonly isScreenSmall = signal(false);\r\n\r\n private _cmatMediaWatcherService = inject(CmatMediaWatcherService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _autoHide: boolean = false;\r\n\r\n @Input()\r\n get autoHide(): boolean {\r\n return this._autoHide;\r\n }\r\n set autoHide(value: boolean) {\r\n this._autoHide = !!value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this._cmatMediaWatcherService.onMediaChange$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(({ matchingAliases }) => {\r\n this.isScreenSmall.set(!matchingAliases.includes('md'));\r\n });\r\n }\r\n}\r\n","<pagination-template #p=\"paginationApi\" class=\"w-full px-4 py-2 flex\" [id]=\"id\"\r\n [maxSize]=\"isScreenSmall()&&maxSize>5?5:maxSize\" (pageChange)=\"pageChange.emit($event)\"\r\n (pageBoundsCorrection)=\"pageBoundsCorrection.emit($event)\" (perPageCountChange)=\"perPageCountChange.emit($event)\">\r\n <div class=\"hidden md:flex flex-auto items-center\">\r\n <span>总计:{{p.getTotalItems()}}</span>\r\n </div>\r\n <nav role=\"navigation\" class=\"flex min-h-12 w-full md:w-0\">\r\n @if (!(autoHide && p.pages$().length <= 1)) {\r\n <ul\r\n class=\"flex flex-row items-center justify-center md:justify-end w-full\">\r\n <li>\r\n <button type=\"button\" class=\"flex items-center\" matIconButton [disabled]=\"p.getCurrent()===1\"\r\n (click)=\"p.goFirstPage()\">\r\n <mat-icon svgIcon=\"mat_outline:first_page\"></mat-icon>\r\n </button>\r\n </li>\r\n <li class=\"pr-4\">\r\n <button type=\"button\" class=\"flex items-center\" matIconButton [disabled]=\"p.getCurrent()===1\"\r\n (click)=\"p.previous()\">\r\n <mat-icon svgIcon=\"mat_outline:navigate_before\"></mat-icon>\r\n </button>\r\n </li>\r\n <div class=\"flex flex-row gap-4\">\r\n @for (page of p.pages$(); track $index) {\r\n <li class=\"flex text-xl lg:text-2xl\">\r\n @if (p.getCurrent() !== page.value) {\r\n <a tabindex=\"0\" role=\"presentation\"\r\n class=\"cursor-pointer text-gray-400 hover:text-current\" (click)=\"p.setCurrent(page.value)\">\r\n <span>{{ (page.label === '...') ? page.label : (page.label | number:'') }}</span>\r\n </a>\r\n }\r\n @if (p.getCurrent() === page.value) {\r\n <span class=\"text-current\">\r\n <span>{{ (page.label === '...') ? page.label : (page.label | number:'') }}</span>\r\n </span>\r\n }\r\n </li>\r\n }\r\n </div> \r\n <li class=\"pl-4\">\r\n <button type=\"button\" class=\"flex items-center\" matIconButton [disabled]=\"p.getCurrent()===p.getLastPage()\"\r\n (click)=\"p.next()\">\r\n <mat-icon svgIcon=\"mat_outline:navigate_next\"></mat-icon>\r\n </button>\r\n </li>\r\n <li>\r\n <button type=\"button\" class=\"flex items-center\" matIconButton [disabled]=\"p.getCurrent()===p.getLastPage()\"\r\n (click)=\"p.goLastPage()\">\r\n <mat-icon svgIcon=\"mat_outline:last_page\"></mat-icon>\r\n </button>\r\n </li>\r\n <li class=\"hidden md:block px-2\">\r\n <mat-form-field [ngStyle]=\"{'width':((p.getLastPage()?.toString()?.length||0)*8+64)+'px'}\">\r\n <input #current matInput type=\"text\" cmatDigitOnly class=\"text-end\"\r\n [value]=\"p.getCurrent()\" [autocomplete]=\"'off'\" [min]=\"0\" [max]=\"p.getLastPage()||0\"\r\n (keyup.enter)=\"p.setCurrent(current.value)\">\r\n <span matSuffix>/<div class=\"pl-1\">{{p.getLastPage()}}</div></span>\r\n </mat-form-field>\r\n </li>\r\n <li class=\"hidden md:block\">\r\n <mat-form-field class=\"w-24\">\r\n <mat-select #pageCount name=\"pageCount\" [value]=\"initPerPage\"\r\n (selectionChange)=\"p.setItemsPerPage(pageCount.value)\">\r\n @for (perPage of itemsPerPages; track perPage) {\r\n <mat-option [value]=\"perPage\">\r\n {{perPage}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </li>\r\n </ul>\r\n }\r\n </nav>\r\n </pagination-template>\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { CmatPaginationInstance } from './pagination.instance';\r\nimport { CmatPaginationService } from './pagination.service';\r\n\r\nconst LARGE_NUMBER = Number.MAX_SAFE_INTEGER;\r\n\r\nexport type Collection<T> = readonly T[];\r\n\r\nexport interface CmatPaginatePipeArgs {\r\n id?: string;\r\n currentPage: string | number;\r\n itemsPerPage: string | number;\r\n totalItems: string | number;\r\n}\r\n\r\nexport interface CmatPipeState {\r\n size: number;\r\n start?: number;\r\n end?: number;\r\n slice: readonly unknown[];\r\n}\r\n\r\n@Pipe({\r\n name: 'paginate',\r\n pure: true\r\n})\r\nexport class CmatPaginatePipe implements PipeTransform {\r\n private service = inject(CmatPaginationService);\r\n\r\n private readonly state: Record<string, CmatPipeState> = {};\r\n\r\n public transform<T, U extends Collection<T>>(collection: U, args: CmatPaginatePipeArgs): U {\r\n if (!Array.isArray(collection)) {\r\n const _id = args.id ?? this.service.defaultId();\r\n const cachedSlice = this.state[_id]?.slice as unknown as U | undefined;\r\n\r\n return cachedSlice ?? collection;\r\n }\r\n\r\n const totalItems = this._toNumber(args.totalItems) || collection.length;\r\n const serverSideMode = totalItems !== collection.length;\r\n const instance = this.createInstance(collection, { ...args, totalItems });\r\n\r\n const id = instance.id ?? this.service.defaultId();\r\n let start: number | undefined;\r\n let end: number | undefined;\r\n const perPage = this._toNumber(args.itemsPerPage);\r\n\r\n const emitChange = this.service.register(instance);\r\n\r\n if (!serverSideMode) {\r\n const pageSize = perPage || LARGE_NUMBER;\r\n start = (instance.currentPage - 1) * pageSize;\r\n end = start + pageSize;\r\n\r\n const isIdentical = this._stateIsIdentical(id, collection, start, end);\r\n if (isIdentical) {\r\n return this.state[id].slice as unknown as U;\r\n }\r\n\r\n const slice = collection.slice(start, end);\r\n this._saveState(id, collection, slice, start, end);\r\n this.service.notifyChange(id);\r\n return slice as unknown as U;\r\n }\r\n\r\n if (emitChange) {\r\n this.service.notifyChange(id);\r\n }\r\n\r\n this._saveState(id, collection, collection, start, end);\r\n\r\n return collection;\r\n\r\n }\r\n\r\n private createInstance(collection: readonly unknown[], config: CmatPaginatePipeArgs): CmatPaginationInstance {\r\n this.checkConfig(config);\r\n\r\n return {\r\n id: config.id ?? this.service.defaultId(),\r\n itemsPerPage: this._toNumber(config.itemsPerPage) || 10,\r\n currentPage: this._toNumber(config.currentPage) || 1,\r\n totalItems: this._toNumber(config.totalItems) || collection.length\r\n };\r\n }\r\n\r\n private checkConfig(config: CmatPaginatePipeArgs): void {\r\n const missing = ['itemsPerPage', 'currentPage'].filter(prop => !(prop in config));\r\n\r\n if (missing.length > 0) {\r\n throw new Error(`PaginatePipe: Argument is missing the following required properties: ${missing.join(', ')}`);\r\n }\r\n }\r\n\r\n private _saveState(id: string, collection: readonly unknown[], slice: readonly unknown[], start?: number, end?: number): void {\r\n this.state[id] = {\r\n size: collection.length,\r\n slice,\r\n start,\r\n end\r\n };\r\n }\r\n\r\n private _stateIsIdentical(id: string, collection: readonly unknown[], start: number, end: number): boolean {\r\n const state = this.state[id];\r\n if (!state) {\r\n return false;\r\n }\r\n const isMetaDataIdentical = state.size === collection.length &&\r\n state.start === start &&\r\n state.end === end;\r\n\r\n if (!isMetaDataIdentical) {\r\n return false;\r\n }\r\n\r\n return state.slice.every((element, index) => element === collection[start + index]);\r\n }\r\n\r\n private _toNumber(value: string | number): number {\r\n return Number(value);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmat-components-pagination.mjs","sources":["../../../projects/cmat/components/pagination/pagination.service.ts","../../../projects/cmat/components/pagination/pagination.directive.ts","../../../projects/cmat/components/pagination/pagination.component.ts","../../../projects/cmat/components/pagination/pagination.component.html","../../../projects/cmat/components/pagination/pagination.pipe.ts","../../../projects/cmat/components/pagination/cmat-components-pagination.ts"],"sourcesContent":["import { Injectable, signal, untracked } from '@angular/core';\r\nimport { CmatPaginationInstance } from './pagination.instance';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatPaginationService {\r\n private readonly _instances = signal<Record<string, CmatPaginationInstance>>({});\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n readonly instances = this._instances.asReadonly();\r\n\r\n private readonly _defaultPaginationId = 'DEFAULT_PAGINATION_ID';\r\n\r\n public defaultId(): string { return this._defaultPaginationId; }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public notifyChange(_id: string): void {\r\n // 使用 requestAnimationFrame 延迟 Signal 更新,避免在模板渲染周期中写入\r\n requestAnimationFrame(() => {\r\n this._instances.update(current => ({ ...current }));\r\n });\r\n }\r\n\r\n public register(instance: CmatPaginationInstance, fromPipe: boolean = false): boolean {\r\n const normalizedInstance: CmatPaginationInstance = {\r\n ...structuredClone(instance),\r\n id: instance.id ?? this._defaultPaginationId\r\n };\r\n const id = normalizedInstance.id!;\r\n\r\n let changed = false;\r\n const currentInstances = untracked(() => this._instances());\r\n\r\n if (!currentInstances[id]) {\r\n changed = true;\r\n } else {\r\n const needsUpdate = this._needsUpdate(currentInstances[id], normalizedInstance);\r\n if (needsUpdate) {\r\n changed = true;\r\n }\r\n }\r\n\r\n if (changed) {\r\n if (fromPipe) {\r\n requestAnimationFrame(() => {\r\n this._instances.update((current) => {\r\n if (!current[id]) {\r\n return { ...current, [id]: normalizedInstance };\r\n } else {\r\n this._updateInstance(current[id], normalizedInstance);\r\n return { ...current };\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n this._instances.update((current) => {\r\n if (!current[id]) {\r\n return { ...current, [id]: normalizedInstance };\r\n } else {\r\n this._updateInstance(current[id], normalizedInstance);\r\n return { ...current };\r\n }\r\n });\r\n }\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n public getCurrentPage(id: string): number | undefined {\r\n return this._instances()[id]?.currentPage;\r\n }\r\n\r\n public getItemsPerPage(id: string): number | undefined {\r\n return this._instances()[id]?.itemsPerPage;\r\n }\r\n\r\n public setCurrentPage(id: string, page: number): void {\r\n this._instances.update((current) => {\r\n const instance = current[id];\r\n if (instance) {\r\n const maxPage = Math.ceil(instance.totalItems / instance.itemsPerPage);\r\n if (page <= maxPage && 1 <= page) {\r\n // 创建新引用以确保 Signal 检测到变化\r\n current[id] = { ...instance, currentPage: page };\r\n return { ...current };\r\n }\r\n }\r\n return current;\r\n });\r\n\r\n // 通知分页器更新显示\r\n this.notifyChange(id);\r\n }\r\n\r\n public setTotalItems(id: string, totalItems: number): void {\r\n this._instances.update((current) => {\r\n const instance = current[id];\r\n if (instance && 0 <= totalItems) {\r\n current[id] = { ...instance, totalItems };\r\n return { ...current };\r\n }\r\n return current;\r\n });\r\n\r\n // 通知分页器更新显示\r\n this.notifyChange(id);\r\n }\r\n\r\n public setItemsPerPage(id: string, itemsPerPage: number): void {\r\n this._instances.update((current) => {\r\n const instance = current[id];\r\n if (instance) {\r\n current[id] = { ...instance, itemsPerPage };\r\n return { ...current };\r\n }\r\n return current;\r\n });\r\n\r\n // 通知分页器更新显示\r\n this.notifyChange(id);\r\n }\r\n\r\n public getInstance(id: string = this._defaultPaginationId): CmatPaginationInstance | undefined {\r\n const instance = this._instances()[id];\r\n if (instance) {\r\n return this._clone(instance);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private _updateInstance(current: CmatPaginationInstance, incoming: CmatPaginationInstance): boolean {\r\n let changed = false;\r\n if (incoming.id) {\r\n const keys = new Set([...Object.keys(current), ...Object.keys(incoming)]);\r\n\r\n for (const prop of keys) {\r\n const key = prop as keyof CmatPaginationInstance;\r\n\r\n if (incoming[key] !== current[key]) {\r\n current[key] = incoming[key];\r\n changed = true;\r\n }\r\n }\r\n }\r\n return changed;\r\n }\r\n\r\n private _needsUpdate(current: CmatPaginationInstance, incoming: CmatPaginationInstance): boolean {\r\n // 检查是否有任何属性发生变化\r\n const keys = new Set([...Object.keys(current), ...Object.keys(incoming)]);\r\n for (const prop of keys) {\r\n const key = prop as keyof CmatPaginationInstance;\r\n if (incoming[key] !== current[key]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private _clone<T extends Record<string, unknown>>(obj: T): T {\r\n return structuredClone(obj);\r\n }\r\n}\r\n","import {\r\n afterNextRender,\r\n Directive,\r\n inject,\r\n Injector,\r\n signal,\r\n input,\r\n output,\r\n effect,\r\n untracked,\r\n} from '@angular/core';\r\nimport { CmatPaginationInstance } from './pagination.instance';\r\nimport { CmatPaginationService } from './pagination.service';\r\n\r\nexport interface Page {\r\n label: string | number;\r\n value: number;\r\n}\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: 'pagination-template,[pagination-template]',\r\n exportAs: 'paginationApi',\r\n})\r\nexport class CmatPaginationDirective {\r\n readonly id = input<string>();\r\n readonly maxSize = input<number>(7);\r\n\r\n readonly pageChange = output<number>();\r\n readonly pageBoundsCorrection = output<number>();\r\n readonly perPageCountChange = output<number>();\r\n\r\n readonly pages = signal<Page[]>([]);\r\n\r\n private readonly service = inject(CmatPaginationService);\r\n private readonly _injector = inject(Injector);\r\n private _pageLinksUpdateQueued = false;\r\n\r\n constructor() {\r\n effect(() => {\r\n const instances = this.service.instances();\r\n\r\n if (this._getId() === instances[this._getId()]?.id) {\r\n untracked(() => {\r\n this._schedulePageLinksUpdate();\r\n });\r\n }\r\n });\r\n\r\n this._schedulePageLinksUpdate();\r\n }\r\n\r\n previous(): void {\r\n if (!this.isFirstPage()) {\r\n this._checkValidId();\r\n\r\n const current = this.getCurrent();\r\n if (current) this.setCurrent(current - 1);\r\n }\r\n }\r\n\r\n next(): void {\r\n if (!this.isLastPage()) {\r\n this._checkValidId();\r\n\r\n const current = this.getCurrent();\r\n if (current) this.setCurrent(current + 1);\r\n }\r\n }\r\n\r\n goFirstPage(): void {\r\n if (!this.isFirstPage()) {\r\n this._checkValidId();\r\n\r\n this.setCurrent(1);\r\n }\r\n }\r\n\r\n goLastPage(): void {\r\n if (!this.isLastPage()) {\r\n this._checkValidId();\r\n\r\n const lastPage = this.getLastPage();\r\n if (lastPage) this.setCurrent(lastPage);\r\n }\r\n }\r\n\r\n isFirstPage(): boolean {\r\n return this.getCurrent() === 1;\r\n }\r\n\r\n isLastPage(): boolean {\r\n return this.getLastPage() === this.getCurrent();\r\n }\r\n\r\n setCurrent(page: number | string): void {\r\n const nextPage = Number(page);\r\n\r\n if (!Number.isNaN(nextPage)) {\r\n this.pageChange.emit(nextPage);\r\n }\r\n }\r\n\r\n getCurrent(): number | void {\r\n return this.service.getCurrentPage(this._getId());\r\n }\r\n\r\n getLastPage(): number | void {\r\n const inst = this.service.getInstance(this._getId());\r\n if (!inst) {\r\n return;\r\n }\r\n\r\n if (inst.totalItems < 1) {\r\n return 1;\r\n }\r\n return Math.ceil(inst.totalItems / inst.itemsPerPage);\r\n }\r\n\r\n getTotalItems(): number | void {\r\n return this.service.getInstance(this._getId())?.totalItems;\r\n }\r\n\r\n setItemsPerPage(count: number): void {\r\n const id = this._getId();\r\n this.service.setItemsPerPage(id, count);\r\n\r\n this.perPageCountChange.emit(count);\r\n const inst = this.service.getInstance(id);\r\n if (!inst) {\r\n return;\r\n }\r\n\r\n this.setCurrent(this._outOfBoundCorrection(inst));\r\n }\r\n\r\n private _getId(): string {\r\n return this.id() ?? this.service.defaultId();\r\n }\r\n\r\n private _checkValidId(): void {\r\n const id = this._getId();\r\n if (this.service.getInstance(id)?.id == null) {\r\n console.warn(\r\n `PaginationControlsDirective: the specified id \"${id}\" does not match any registered PaginationInstance`,\r\n );\r\n }\r\n }\r\n\r\n private _updatePageLinks(): void {\r\n const inst = this.service.getInstance(this._getId());\r\n if (!inst) {\r\n this.pages.set([]);\r\n return;\r\n }\r\n\r\n const correctedCurrentPage = this._outOfBoundCorrection(inst);\r\n const pageForRender =\r\n correctedCurrentPage !== inst.currentPage\r\n ? correctedCurrentPage\r\n : inst.currentPage;\r\n\r\n this.pageBoundsCorrection.emit(correctedCurrentPage);\r\n this.pages.set(\r\n this._createPageArray(\r\n pageForRender,\r\n inst.itemsPerPage,\r\n inst.totalItems,\r\n this.maxSize(),\r\n ),\r\n );\r\n }\r\n\r\n private _schedulePageLinksUpdate(): void {\r\n if (this._pageLinksUpdateQueued) {\r\n return;\r\n }\r\n\r\n this._pageLinksUpdateQueued = true;\r\n afterNextRender(\r\n () => {\r\n this._pageLinksUpdateQueued = false;\r\n this._updatePageLinks();\r\n },\r\n { injector: this._injector },\r\n );\r\n }\r\n\r\n private _outOfBoundCorrection(instance: CmatPaginationInstance): number {\r\n const totalPages = Math.ceil(instance.totalItems / instance.itemsPerPage);\r\n if (totalPages < instance.currentPage && 0 < totalPages) {\r\n return totalPages;\r\n } else if (instance.currentPage < 1) {\r\n return 1;\r\n }\r\n\r\n return instance.currentPage;\r\n }\r\n\r\n private _createPageArray(\r\n currentPage: number,\r\n itemsPerPage: number,\r\n totalItems: number,\r\n paginationRange: number,\r\n ): Page[] {\r\n paginationRange = +paginationRange;\r\n const pages: Page[] = [];\r\n\r\n const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1);\r\n const halfWay = Math.ceil(paginationRange / 2);\r\n\r\n const isStart = currentPage <= halfWay;\r\n const isEnd = totalPages - halfWay < currentPage;\r\n const isMiddle = !isStart && !isEnd;\r\n\r\n const ellipsesNeeded = paginationRange < totalPages;\r\n let i = 1;\r\n\r\n while (i <= totalPages && i <= paginationRange) {\r\n let label: string | number;\r\n const pageNumber = this._calculatePageNumber(\r\n i,\r\n currentPage,\r\n paginationRange,\r\n totalPages,\r\n );\r\n const openingEllipsesNeeded = i === 2 && (isMiddle || isEnd);\r\n const closingEllipsesNeeded =\r\n i === paginationRange - 1 && (isMiddle || isStart);\r\n if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\r\n label = '...';\r\n } else {\r\n label = pageNumber;\r\n }\r\n pages.push({\r\n label: label,\r\n value: pageNumber,\r\n });\r\n i++;\r\n }\r\n\r\n return pages;\r\n }\r\n\r\n private _calculatePageNumber(\r\n i: number,\r\n currentPage: number,\r\n paginationRange: number,\r\n totalPages: number,\r\n ): number {\r\n const halfWay = Math.ceil(paginationRange / 2);\r\n if (i === paginationRange) {\r\n return totalPages;\r\n } else if (i === 1) {\r\n return i;\r\n } else if (paginationRange < totalPages) {\r\n if (totalPages - halfWay < currentPage) {\r\n return totalPages - paginationRange + i;\r\n } else if (halfWay < currentPage) {\r\n return currentPage - halfWay + i;\r\n } else {\r\n return i;\r\n }\r\n } else {\r\n return i;\r\n }\r\n }\r\n}\r\n","import { DecimalPipe, NgClass, NgStyle } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n inject,\r\n input,\r\n output,\r\n computed,\r\n ElementRef,\r\n afterNextRender,\r\n signal,\r\n DestroyRef,\r\n} from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { CmatDigitOnlyDirective } from 'cmat/directives/digit-only';\r\nimport { CmatPaginationDirective } from './pagination.directive';\r\n\r\n@Component({\r\n selector: 'cmat-pagination',\r\n templateUrl: './pagination.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: 'cmatPagination',\r\n imports: [\r\n CmatPaginationDirective,\r\n MatIconModule,\r\n NgStyle,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n CmatDigitOnlyDirective,\r\n MatSelectModule,\r\n DecimalPipe,\r\n MatButtonModule,\r\n NgClass\r\n ],\r\n})\r\nexport class CmatPaginationComponent {\r\n readonly id = input<string>();\r\n readonly maxSize = input<number>(7);\r\n readonly itemsPerPages = input<number[]>([10, 20, 30]);\r\n readonly initPerPage = input<number>(10);\r\n readonly autoHide = input<boolean>(false);\r\n\r\n readonly pageChange = output<number>();\r\n readonly pageBoundsCorrection = output<number>();\r\n readonly perPageCountChange = output<number>();\r\n\r\n private _elementRef = inject(ElementRef);\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n // 组件宽度信号,初始化为一个合理默认值\r\n private _componentWidth = signal<number>(1024);\r\n \r\n // 根据组件自身宽度判断是否使用移动端样式(阈值:768px)\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n readonly isScreenSmall = computed(() => {\r\n return this._componentWidth() < 768;\r\n });\r\n\r\n constructor() {\r\n // 使用 ResizeObserver 监听组件自身宽度变化\r\n afterNextRender(() => {\r\n const element = this._elementRef.nativeElement as HTMLElement;\r\n \r\n // 确保元素是块级或行内块级,可以正确测量宽度\r\n if (getComputedStyle(element).display === 'inline') {\r\n element.style.display = 'inline-block';\r\n element.style.width = '100%';\r\n }\r\n \r\n // 立即获取一次初始宽度\r\n const initialWidth = element.getBoundingClientRect().width;\r\n if (initialWidth > 0) {\r\n this._componentWidth.set(initialWidth);\r\n }\r\n \r\n // 创建 ResizeObserver\r\n const resizeObserver = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n const width = entry.contentRect.width;\r\n // 只有当宽度大于0时才更新,避免无效值\r\n if (width > 0) {\r\n this._componentWidth.set(width);\r\n }\r\n }\r\n });\r\n \r\n // 开始观察\r\n resizeObserver.observe(element);\r\n \r\n // 组件销毁时清理观察者\r\n this._destroyRef.onDestroy(() => {\r\n resizeObserver.disconnect();\r\n });\r\n });\r\n }\r\n}\r\n","<pagination-template #p=\"paginationApi\" class=\"w-full px-4 py-2 flex\" [id]=\"id()\"\r\n [maxSize]=\"isScreenSmall() && maxSize() > 5 ? 5 : maxSize()\" (pageChange)=\"pageChange.emit($event)\"\r\n (pageBoundsCorrection)=\"pageBoundsCorrection.emit($event)\" (perPageCountChange)=\"perPageCountChange.emit($event)\">\r\n <div class=\"flex-auto items-center\" [ngClass]=\"{'hidden':isScreenSmall(),'flex':!isScreenSmall()}\">\r\n <span>总计:{{ p.getTotalItems() }}</span>\r\n </div>\r\n <nav role=\"navigation\" class=\"flex min-h-12\" [ngClass]=\"{'w-full':isScreenSmall(),'w-0':!isScreenSmall()}\">\r\n @if (!(autoHide() && p.pages().length <= 1)) { \r\n <ul class=\"flex flex-row items-center w-full\"\r\n [ngClass]=\"{'justify-center':isScreenSmall(),'justify-end':!isScreenSmall()}\">\r\n <li>\r\n <button type=\"button\" class=\"flex items-center\" matIconButton [disabled]=\"p.getCurrent() === 1\"\r\n (click)=\"p.goFirstPage()\">\r\n <mat-icon svgIcon=\"mat_outline:first_page\"></mat-icon>\r\n </button>\r\n </li>\r\n <li class=\"pr-4\">\r\n <button type=\"button\" class=\"flex items-center\" matIconButton [disabled]=\"p.getCurrent() === 1\"\r\n (click)=\"p.previous()\">\r\n <mat-icon svgIcon=\"mat_outline:navigate_before\"></mat-icon>\r\n </button>\r\n </li>\r\n <div class=\"flex flex-row gap-4\">\r\n @for (page of p.pages(); track $index) {\r\n <li class=\"flex text-xl lg:text-2xl\">\r\n @if (p.getCurrent() !== page.value) {\r\n <a tabindex=\"0\" role=\"presentation\" class=\"cursor-pointer text-gray-400 hover:text-current\"\r\n (click)=\"p.setCurrent(page.value)\">\r\n <span>{{\r\n page.label === \"...\"\r\n ? page.label\r\n : (page.label | number: \"\")\r\n }}</span>\r\n </a>\r\n }\r\n @if (p.getCurrent() === page.value) {\r\n <span class=\"text-current\">\r\n <span>{{\r\n page.label === \"...\"\r\n ? page.label\r\n : (page.label | number: \"\")\r\n }}</span>\r\n </span>\r\n }\r\n </li>\r\n }\r\n </div>\r\n <li class=\"pl-4\">\r\n <button type=\"button\" class=\"flex items-center\" matIconButton [disabled]=\"p.getCurrent() === p.getLastPage()\"\r\n (click)=\"p.next()\">\r\n <mat-icon svgIcon=\"mat_outline:navigate_next\"></mat-icon>\r\n </button>\r\n </li>\r\n <li>\r\n <button type=\"button\" class=\"flex items-center\" matIconButton [disabled]=\"p.getCurrent() === p.getLastPage()\"\r\n (click)=\"p.goLastPage()\">\r\n <mat-icon svgIcon=\"mat_outline:last_page\"></mat-icon>\r\n </button>\r\n </li>\r\n <li class=\"px-2\" [ngClass]=\"{'hidden':isScreenSmall(),'block':!isScreenSmall()}\">\r\n <mat-form-field appearance=\"fill\" [ngStyle]=\"{\r\n width: (p.getLastPage()?.toString()?.length || 0) * 8 + 64 + 'px',\r\n }\">\r\n <input #current matInput type=\"text\" cmatDigitOnly class=\"text-end\" [value]=\"p.getCurrent()\"\r\n [autocomplete]=\"'off'\" [min]=\"0\" [max]=\"p.getLastPage() || 0\" (keyup.enter)=\"p.setCurrent(current.value)\" />\r\n <span matSuffix>/\r\n <div class=\"pl-1\">{{ p.getLastPage() }}</div>\r\n </span>\r\n </mat-form-field>\r\n </li>\r\n <li [ngClass]=\"{'hidden':isScreenSmall(),'block':!isScreenSmall()}\" >\r\n <mat-form-field class=\"w-24\" appearance=\"fill\">\r\n <mat-select #pageCount name=\"pageCount\" [value]=\"initPerPage()\"\r\n (selectionChange)=\"p.setItemsPerPage(pageCount.value)\">\r\n @for (perPage of itemsPerPages(); track perPage) {\r\n <mat-option [value]=\"perPage\">\r\n {{ perPage }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </li>\r\n </ul>\r\n }\r\n </nav>\r\n</pagination-template>","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { CmatPaginationInstance } from './pagination.instance';\r\nimport { CmatPaginationService } from './pagination.service';\r\n\r\nconst LARGE_NUMBER = Number.MAX_SAFE_INTEGER;\r\n\r\nexport type Collection<T> = readonly T[];\r\n\r\nexport interface CmatPaginatePipeArgs {\r\n id?: string;\r\n currentPage: string | number;\r\n itemsPerPage: string | number;\r\n totalItems: string | number;\r\n}\r\n\r\nexport interface CmatPipeState {\r\n size: number;\r\n start?: number;\r\n end?: number;\r\n slice: readonly unknown[];\r\n}\r\n\r\n@Pipe({\r\n name: 'paginate',\r\n pure: true\r\n})\r\nexport class CmatPaginatePipe implements PipeTransform {\r\n private service = inject(CmatPaginationService);\r\n\r\n private readonly state: Record<string, CmatPipeState> = {};\r\n\r\n public transform<T, U extends Collection<T>>(collection: U, args: CmatPaginatePipeArgs): U {\r\n if (!Array.isArray(collection)) {\r\n const _id = args.id ?? this.service.defaultId();\r\n const cachedSlice = this.state[_id]?.slice as unknown as U | undefined;\r\n\r\n return cachedSlice ?? collection;\r\n }\r\n\r\n const totalItems = this._toNumber(args.totalItems) || collection.length;\r\n const serverSideMode = totalItems !== collection.length;\r\n const instance = this.createInstance(collection, { ...args, totalItems });\r\n\r\n const id = instance.id ?? this.service.defaultId();\r\n let start: number | undefined;\r\n let end: number | undefined;\r\n const perPage = this._toNumber(args.itemsPerPage);\r\n\r\n const emitChange = this.service.register(instance,true);\r\n\r\n if (!serverSideMode) {\r\n const pageSize = perPage || LARGE_NUMBER;\r\n start = (instance.currentPage - 1) * pageSize;\r\n end = start + pageSize;\r\n\r\n const isIdentical = this._stateIsIdentical(id, collection, start, end);\r\n if (isIdentical) {\r\n return this.state[id].slice as unknown as U;\r\n }\r\n\r\n const slice = collection.slice(start, end);\r\n this._saveState(id, collection, slice, start, end);\r\n this.service.notifyChange(id);\r\n return slice as unknown as U;\r\n }\r\n\r\n if (emitChange) {\r\n this.service.notifyChange(id);\r\n }\r\n\r\n this._saveState(id, collection, collection, start, end);\r\n\r\n return collection;\r\n\r\n }\r\n\r\n private createInstance(collection: readonly unknown[], config: CmatPaginatePipeArgs): CmatPaginationInstance {\r\n this.checkConfig(config);\r\n\r\n return {\r\n id: config.id ?? this.service.defaultId(),\r\n itemsPerPage: this._toNumber(config.itemsPerPage) || 10,\r\n currentPage: this._toNumber(config.currentPage) || 1,\r\n totalItems: this._toNumber(config.totalItems) || collection.length\r\n };\r\n }\r\n\r\n private checkConfig(config: CmatPaginatePipeArgs): void {\r\n const missing = ['itemsPerPage', 'currentPage'].filter(prop => !(prop in config));\r\n\r\n if (missing.length > 0) {\r\n throw new Error(`PaginatePipe: Argument is missing the following required properties: ${missing.join(', ')}`);\r\n }\r\n }\r\n\r\n private _saveState(id: string, collection: readonly unknown[], slice: readonly unknown[], start?: number, end?: number): void {\r\n this.state[id] = {\r\n size: collection.length,\r\n slice,\r\n start,\r\n end\r\n };\r\n }\r\n\r\n private _stateIsIdentical(id: string, collection: readonly unknown[], start: number, end: number): boolean {\r\n const state = this.state[id];\r\n if (!state) {\r\n return false;\r\n }\r\n const isMetaDataIdentical = state.size === collection.length &&\r\n state.start === start &&\r\n state.end === end;\r\n\r\n if (!isMetaDataIdentical) {\r\n return false;\r\n }\r\n\r\n return state.slice.every((element, index) => element === collection[start + index]);\r\n }\r\n\r\n private _toNumber(value: string | number): number {\r\n return Number(value);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|