import * as i0 from '@angular/core'; import { Injectable, InjectionToken, inject, ChangeDetectorRef, numberAttribute, EventEmitter, booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, NgModule } from '@angular/core'; import { _IdGenerator } from '@angular/cdk/a11y'; import { Subject, ReplaySubject } from 'rxjs'; import { MatFormField } from './_form-field-chunk.mjs'; import { MatSelect, MatSelectModule } from './select.mjs'; import { MatOption } from './_option-chunk.mjs'; import { MatIconButton } from './_icon-button-chunk.mjs'; import { MatTooltip } from './_tooltip-chunk.mjs'; import { MatTooltipModule } from './tooltip.mjs'; import { MatButtonModule } from './button.mjs'; import '@angular/cdk/bidi'; import '@angular/cdk/coercion'; import '@angular/cdk/platform'; import '@angular/common'; import 'rxjs/operators'; import '@angular/cdk/observers/private'; import './_animation-chunk.mjs'; import '@angular/cdk/layout'; import '@angular/cdk/overlay'; import '@angular/cdk/scrolling'; import '@angular/cdk/collections'; import '@angular/cdk/keycodes'; import '@angular/forms'; import './_error-options-chunk.mjs'; import './_error-state-chunk.mjs'; import './_option-module-chunk.mjs'; import './_ripple-module-chunk.mjs'; import './_ripple-chunk.mjs'; import '@angular/cdk/private'; import './_pseudo-checkbox-module-chunk.mjs'; import './_pseudo-checkbox-chunk.mjs'; import './form-field.mjs'; import '@angular/cdk/observers'; import './_structural-styles-chunk.mjs'; import './_ripple-loader-chunk.mjs'; import '@angular/cdk/portal'; class MatPaginatorIntl { changes = new Subject(); itemsPerPageLabel = 'Items per page:'; nextPageLabel = 'Next page'; previousPageLabel = 'Previous page'; firstPageLabel = 'First page'; lastPageLabel = 'Last page'; getRangeLabel = (page, pageSize, length) => { if (length == 0 || pageSize == 0) { return `0 of ${length}`; } length = Math.max(length, 0); const startIndex = page * pageSize; const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize; return `${startIndex + 1} – ${endIndex} of ${length}`; }; static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: MatPaginatorIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: MatPaginatorIntl, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: MatPaginatorIntl, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }] }); const DEFAULT_PAGE_SIZE = 50; class PageEvent { pageIndex; previousPageIndex; pageSize; length; } const MAT_PAGINATOR_DEFAULT_OPTIONS = new InjectionToken('MAT_PAGINATOR_DEFAULT_OPTIONS'); class MatPaginator { _intl = inject(MatPaginatorIntl); _changeDetectorRef = inject(ChangeDetectorRef); _formFieldAppearance; _pageSizeLabelId = inject(_IdGenerator).getId('mat-paginator-page-size-label-'); _intlChanges; _isInitialized = false; _initializedStream = new ReplaySubject(1); color; get pageIndex() { return this._pageIndex; } set pageIndex(value) { this._pageIndex = Math.max(value || 0, 0); this._changeDetectorRef.markForCheck(); } _pageIndex = 0; get length() { return this._length; } set length(value) { this._length = value || 0; this._changeDetectorRef.markForCheck(); } _length = 0; get pageSize() { return this._pageSize; } set pageSize(value) { this._pageSize = Math.max(value || 0, 0); this._updateDisplayedPageSizeOptions(); } _pageSize; get pageSizeOptions() { return this._pageSizeOptions; } set pageSizeOptions(value) { this._pageSizeOptions = (value || []).map(p => numberAttribute(p, 0)); this._updateDisplayedPageSizeOptions(); } _pageSizeOptions = []; hidePageSize = false; showFirstLastButtons = false; selectConfig = {}; disabled = false; page = new EventEmitter(); _displayedPageSizeOptions; initialized = this._initializedStream; constructor() { const _intl = this._intl; const defaults = inject(MAT_PAGINATOR_DEFAULT_OPTIONS, { optional: true }); this._intlChanges = _intl.changes.subscribe(() => this._changeDetectorRef.markForCheck()); if (defaults) { const { pageSize, pageSizeOptions, hidePageSize, showFirstLastButtons } = defaults; if (pageSize != null) { this._pageSize = pageSize; } if (pageSizeOptions != null) { this._pageSizeOptions = pageSizeOptions; } if (hidePageSize != null) { this.hidePageSize = hidePageSize; } if (showFirstLastButtons != null) { this.showFirstLastButtons = showFirstLastButtons; } } this._formFieldAppearance = defaults?.formFieldAppearance || 'outline'; } ngOnInit() { this._isInitialized = true; this._updateDisplayedPageSizeOptions(); this._initializedStream.next(); } ngOnDestroy() { this._initializedStream.complete(); this._intlChanges.unsubscribe(); } nextPage() { if (this.hasNextPage()) { this._navigate(this.pageIndex + 1); } } previousPage() { if (this.hasPreviousPage()) { this._navigate(this.pageIndex - 1); } } firstPage() { if (this.hasPreviousPage()) { this._navigate(0); } } lastPage() { if (this.hasNextPage()) { this._navigate(this.getNumberOfPages() - 1); } } hasPreviousPage() { return this.pageIndex >= 1 && this.pageSize != 0; } hasNextPage() { const maxPageIndex = this.getNumberOfPages() - 1; return this.pageIndex < maxPageIndex && this.pageSize != 0; } getNumberOfPages() { if (!this.pageSize) { return 0; } return Math.ceil(this.length / this.pageSize); } _changePageSize(pageSize) { const startIndex = this.pageIndex * this.pageSize; const previousPageIndex = this.pageIndex; this.pageIndex = Math.floor(startIndex / pageSize) || 0; this.pageSize = pageSize; this._emitPageEvent(previousPageIndex); } _nextButtonsDisabled() { return this.disabled || !this.hasNextPage(); } _previousButtonsDisabled() { return this.disabled || !this.hasPreviousPage(); } _updateDisplayedPageSizeOptions() { if (!this._isInitialized) { return; } if (!this.pageSize) { this._pageSize = this.pageSizeOptions.length != 0 ? this.pageSizeOptions[0] : DEFAULT_PAGE_SIZE; } this._displayedPageSizeOptions = this.pageSizeOptions.slice(); if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) { this._displayedPageSizeOptions.push(this.pageSize); } this._displayedPageSizeOptions.sort((a, b) => a - b); this._changeDetectorRef.markForCheck(); } _emitPageEvent(previousPageIndex) { this.page.emit({ previousPageIndex, pageIndex: this.pageIndex, pageSize: this.pageSize, length: this.length }); } _navigate(index) { const previousIndex = this.pageIndex; if (index !== previousIndex) { this.pageIndex = index; this._emitPageEvent(previousIndex); } } _buttonClicked(targetIndex, isDisabled) { if (!isDisabled) { this._navigate(targetIndex); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: MatPaginator, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: MatPaginator, isStandalone: true, selector: "mat-paginator", inputs: { color: "color", pageIndex: ["pageIndex", "pageIndex", numberAttribute], length: ["length", "length", numberAttribute], pageSize: ["pageSize", "pageSize", numberAttribute], pageSizeOptions: "pageSizeOptions", hidePageSize: ["hidePageSize", "hidePageSize", booleanAttribute], showFirstLastButtons: ["showFirstLastButtons", "showFirstLastButtons", booleanAttribute], selectConfig: "selectConfig", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { page: "page" }, host: { attributes: { "role": "group" }, classAttribute: "mat-mdc-paginator" }, exportAs: ["matPaginator"], ngImport: i0, template: "
\n
\n @if (!hidePageSize) {\n
\n
\n {{_intl.itemsPerPageLabel}}\n
\n\n @if (_displayedPageSizeOptions.length > 1) {\n \n \n @for (pageSizeOption of _displayedPageSizeOptions; track pageSizeOption) {\n \n {{pageSizeOption}}\n \n }\n \n
\n \n }\n\n @if (_displayedPageSizeOptions.length <= 1) {\n
{{pageSize}}
\n }\n
\n }\n\n
\n
\n {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\n
\n\n \n\n @if (showFirstLastButtons) {\n \n }\n \n \n @if (showFirstLastButtons) {\n \n }\n
\n
\n
\n", styles: [".mat-mdc-paginator{display:block;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-paginator-container-text-color, var(--mat-sys-on-surface));background-color:var(--mat-paginator-container-background-color, var(--mat-sys-surface));font-family:var(--mat-paginator-container-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-paginator-container-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-paginator-container-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-paginator-container-text-weight, var(--mat-sys-body-small-weight));letter-spacing:var(--mat-paginator-container-text-tracking, var(--mat-sys-body-small-tracking));--mat-form-field-container-height: var(--mat-paginator-form-field-container-height, 40px);--mat-form-field-container-vertical-padding: var(--mat-paginator-form-field-container-vertical-padding, 8px)}.mat-mdc-paginator .mat-mdc-select-value{font-size:var(--mat-paginator-select-trigger-text-size, var(--mat-sys-body-small-size))}.mat-mdc-paginator .mat-mdc-form-field-subscript-wrapper{display:none}.mat-mdc-paginator .mat-mdc-select{line-height:1.5}.mat-mdc-paginator-outer-container{display:flex}.mat-mdc-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap;width:100%;min-height:var(--mat-paginator-container-size, 56px)}.mat-mdc-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-mdc-paginator-page-size{margin-right:0;margin-left:8px}.mat-mdc-paginator-page-size-label{margin:0 4px}.mat-mdc-paginator-page-size-select{margin:0 4px;width:var(--mat-paginator-page-size-select-width, 84px)}.mat-mdc-paginator-range-label{margin:0 32px 0 24px}.mat-mdc-paginator-range-actions{display:flex;align-items:center}.mat-mdc-paginator-icon{display:inline-block;width:28px;fill:var(--mat-paginator-enabled-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button[aria-disabled] .mat-mdc-paginator-icon{fill:var(--mat-paginator-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}[dir=rtl] .mat-mdc-paginator-icon{transform:rotate(180deg)}@media(forced-colors: active){.mat-mdc-icon-button[aria-disabled] .mat-mdc-paginator-icon,.mat-mdc-paginator-icon{fill:currentColor}.mat-mdc-paginator-range-actions .mat-mdc-icon-button{outline:solid 1px}.mat-mdc-paginator-range-actions .mat-mdc-icon-button[aria-disabled]{color:GrayText}}.mat-mdc-paginator-touch-target{display:var(--mat-paginator-touch-target-display, block);position:absolute;top:50%;left:50%;width:var(--mat-paginator-page-size-select-width, 84px);height:var(--mat-paginator-page-size-select-touch-target-height, 48px);background-color:rgba(0,0,0,0);transform:translate(-50%, -50%);cursor:pointer}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: MatPaginator, decorators: [{ type: Component, args: [{ selector: 'mat-paginator', exportAs: 'matPaginator', host: { 'class': 'mat-mdc-paginator', 'role': 'group' }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [MatFormField, MatSelect, MatOption, MatIconButton, MatTooltip], template: "
\n
\n @if (!hidePageSize) {\n
\n
\n {{_intl.itemsPerPageLabel}}\n
\n\n @if (_displayedPageSizeOptions.length > 1) {\n \n \n @for (pageSizeOption of _displayedPageSizeOptions; track pageSizeOption) {\n \n {{pageSizeOption}}\n \n }\n \n
\n \n }\n\n @if (_displayedPageSizeOptions.length <= 1) {\n
{{pageSize}}
\n }\n
\n }\n\n
\n
\n {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\n
\n\n \n\n @if (showFirstLastButtons) {\n \n }\n \n \n @if (showFirstLastButtons) {\n \n }\n
\n
\n
\n", styles: [".mat-mdc-paginator{display:block;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-paginator-container-text-color, var(--mat-sys-on-surface));background-color:var(--mat-paginator-container-background-color, var(--mat-sys-surface));font-family:var(--mat-paginator-container-text-font, var(--mat-sys-body-small-font));line-height:var(--mat-paginator-container-text-line-height, var(--mat-sys-body-small-line-height));font-size:var(--mat-paginator-container-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-paginator-container-text-weight, var(--mat-sys-body-small-weight));letter-spacing:var(--mat-paginator-container-text-tracking, var(--mat-sys-body-small-tracking));--mat-form-field-container-height: var(--mat-paginator-form-field-container-height, 40px);--mat-form-field-container-vertical-padding: var(--mat-paginator-form-field-container-vertical-padding, 8px)}.mat-mdc-paginator .mat-mdc-select-value{font-size:var(--mat-paginator-select-trigger-text-size, var(--mat-sys-body-small-size))}.mat-mdc-paginator .mat-mdc-form-field-subscript-wrapper{display:none}.mat-mdc-paginator .mat-mdc-select{line-height:1.5}.mat-mdc-paginator-outer-container{display:flex}.mat-mdc-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap;width:100%;min-height:var(--mat-paginator-container-size, 56px)}.mat-mdc-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-mdc-paginator-page-size{margin-right:0;margin-left:8px}.mat-mdc-paginator-page-size-label{margin:0 4px}.mat-mdc-paginator-page-size-select{margin:0 4px;width:var(--mat-paginator-page-size-select-width, 84px)}.mat-mdc-paginator-range-label{margin:0 32px 0 24px}.mat-mdc-paginator-range-actions{display:flex;align-items:center}.mat-mdc-paginator-icon{display:inline-block;width:28px;fill:var(--mat-paginator-enabled-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button[aria-disabled] .mat-mdc-paginator-icon{fill:var(--mat-paginator-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}[dir=rtl] .mat-mdc-paginator-icon{transform:rotate(180deg)}@media(forced-colors: active){.mat-mdc-icon-button[aria-disabled] .mat-mdc-paginator-icon,.mat-mdc-paginator-icon{fill:currentColor}.mat-mdc-paginator-range-actions .mat-mdc-icon-button{outline:solid 1px}.mat-mdc-paginator-range-actions .mat-mdc-icon-button[aria-disabled]{color:GrayText}}.mat-mdc-paginator-touch-target{display:var(--mat-paginator-touch-target-display, block);position:absolute;top:50%;left:50%;width:var(--mat-paginator-page-size-select-width, 84px);height:var(--mat-paginator-page-size-select-touch-target-height, 48px);background-color:rgba(0,0,0,0);transform:translate(-50%, -50%);cursor:pointer}\n"] }] }], ctorParameters: () => [], propDecorators: { color: [{ type: Input }], pageIndex: [{ type: Input, args: [{ transform: numberAttribute }] }], length: [{ type: Input, args: [{ transform: numberAttribute }] }], pageSize: [{ type: Input, args: [{ transform: numberAttribute }] }], pageSizeOptions: [{ type: Input }], hidePageSize: [{ type: Input, args: [{ transform: booleanAttribute }] }], showFirstLastButtons: [{ type: Input, args: [{ transform: booleanAttribute }] }], selectConfig: [{ type: Input }], disabled: [{ type: Input, args: [{ transform: booleanAttribute }] }], page: [{ type: Output }] } }); class MatPaginatorModule { static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: MatPaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.3", ngImport: i0, type: MatPaginatorModule, imports: [MatButtonModule, MatSelectModule, MatTooltipModule, MatPaginator], exports: [MatPaginator] }); static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: MatPaginatorModule, imports: [MatButtonModule, MatSelectModule, MatTooltipModule, MatPaginator] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: MatPaginatorModule, decorators: [{ type: NgModule, args: [{ imports: [MatButtonModule, MatSelectModule, MatTooltipModule, MatPaginator], exports: [MatPaginator] }] }] }); export { MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginator, MatPaginatorIntl, MatPaginatorModule, PageEvent }; //# sourceMappingURL=paginator.mjs.map