@fundamental-ngx/core 0.43.32 → 0.43.34
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/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.d.ts +6 -2
- package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +4 -3
- package/esm2020/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +14 -7
- package/esm2020/list/directives/list-icon.directive.mjs +9 -2
- package/esm2020/pagination/pagination.component.mjs +7 -3
- package/esm2020/popover/popover-body/popover-body.component.mjs +3 -3
- package/esm2020/table/directives/table-cell.directive.mjs +22 -3
- package/esm2020/table/table.component.mjs +6 -5
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +16 -8
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-list.mjs +8 -1
- package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-pagination.mjs +7 -2
- package/fesm2015/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-popover.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-table.mjs +25 -5
- package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +16 -8
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-list.mjs +8 -1
- package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-pagination.mjs +6 -2
- package/fesm2020/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-popover.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-table.mjs +25 -5
- package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
- package/fundamental-ngx-core-v0.43.34.tgz +0 -0
- package/list/directives/list-icon.directive.d.ts +3 -1
- package/package.json +3 -3
- package/pagination/pagination.component.d.ts +4 -2
- package/schematics/add-dependencies/index.js +4 -4
- package/table/directives/table-cell.directive.d.ts +6 -0
- package/table/table.component.d.ts +3 -2
- package/fundamental-ngx-core-v0.43.32.tgz +0 -0
|
@@ -266,6 +266,11 @@ class PaginationComponent {
|
|
|
266
266
|
this._subscriptions.add((_a = this._rtlService) === null || _a === void 0 ? void 0 : _a.rtl.subscribe(() => this._refreshPages()));
|
|
267
267
|
}
|
|
268
268
|
/** @hidden */
|
|
269
|
+
ngAfterViewInit() {
|
|
270
|
+
var _a, _b;
|
|
271
|
+
(_b = (_a = this._focusKeyManagerList) === null || _a === void 0 ? void 0 : _a.focusKeyManager) === null || _b === void 0 ? void 0 : _b.withVerticalOrientation(false);
|
|
272
|
+
}
|
|
273
|
+
/** @hidden */
|
|
269
274
|
ngOnDestroy() {
|
|
270
275
|
this._subscriptions.unsubscribe();
|
|
271
276
|
}
|
|
@@ -384,14 +389,14 @@ class PaginationComponent {
|
|
|
384
389
|
}
|
|
385
390
|
}
|
|
386
391
|
PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginationComponent, deps: [{ token: PaginationService }, { token: i0.ChangeDetectorRef }, { token: i2.LiveAnnouncer }, { token: FD_LANGUAGE }, { token: i3.RtlService, optional: true }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
387
|
-
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PaginationComponent, selector: "fd-pagination", inputs: { id: "id", mobile: "mobile", totalItems: "totalItems", currentPage: "currentPage", itemsPerPage: "itemsPerPage", itemsPerPageTemplate: "itemsPerPageTemplate", itemsPerPageLabel: "itemsPerPageLabel", itemsPerPageOptions: "itemsPerPageOptions", displayTotalItems: "displayTotalItems", displayTextTemplate: "displayTextTemplate", firstLabel: "firstLabel", previousLabel: "previousLabel", nextLabel: "nextLabel", lastLabel: "lastLabel", ariaLabel: "ariaLabel", pageLabel: "pageLabel", currentPageAriaLabel: "currentPageAriaLabel", labelBeforeInputMobile: "labelBeforeInputMobile", labelAfterInputMobile: "labelAfterInputMobile", inputAriaLabel: "inputAriaLabel" }, outputs: { pageChangeStart: "pageChangeStart", itemsPerPageChange: "itemsPerPageChange" }, host: { properties: { "class.fd-pagination--mobile": "mobile", "class.fd-pagination--short": "_lastPage <= 9" }, classAttribute: "fd-pagination" }, providers: [PaginationService, contentDensityObserverProviders()], viewQueries: [{ propertyName: "_focusKeyManagerList", first: true, predicate: FocusKeyManagerListDirective, descendants: true }, { propertyName: "_pageInputElement", first: true, predicate: ["pageInputElement"], descendants: true, read: ElementRef }, { propertyName: "_currentPageElement", first: true, predicate: ["currentPageElement"], descendants: true, read: ElementRef }, { propertyName: "_focusKeyManagerItems", predicate: FocusKeyManagerItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"ariaLabel || ('corePagination.ariaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n [title]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n [title]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel\n ? pageLabel(currentPage)\n : ('corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage })\n \"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelBeforeInputMobile\n ? labelBeforeInputMobile + ':'\n : ('corePagination.labelBeforeInputMobile' | fdTranslate)\n }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n inputAriaLabel\n ? inputAriaLabel(currentPage, _totalPages)\n : ('corePagination.inputAriaLabel'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelAfterInputMobile\n ? labelAfterInputMobile(_lastPage)\n : ('corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n [title]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n [title]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ itemsPerPageLabel ? itemsPerPageLabel + ':' : ('corePagination.itemsPerPageLabel' | fdTranslate) }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-pagination\n*/.fd-pagination{--fdPaginationMoreWidth:2.25rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.75rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0 1rem;width:100%}.fd-pagination:after,.fd-pagination:before{box-sizing:inherit;font-size:inherit}.fd-pagination__per-page{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__per-page:after,.fd-pagination__per-page:before{box-sizing:inherit;font-size:inherit}.fd-pagination__nav{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 auto;padding:0}.fd-pagination__nav:after,.fd-pagination__nav:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__more:after,.fd-pagination__more:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more:before{content:\"...\";display:block;text-align:center;width:var(--fdPaginationMoreWidth)}.fd-pagination__more[class*=-compact],.fd-pagination__more[class*=-condensed],[class*=-compact] .fd-pagination__more:not([class*=-cozy]),[class*=-condensed] .fd-pagination__more:not([class*=-cozy]){--fdPaginationMoreWidth:2rem}.fd-pagination .fd-pagination__button,.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__link,.fd-pagination__more{margin-left:.125rem;margin-right:.125rem}.fd-pagination .fd-pagination__input{--fdInput_Field_Margin:.125rem;--fdInput_Field_Compact_Margin:.125rem;-moz-appearance:textfield;min-width:2.5rem;text-align:center;width:auto}.fd-pagination .fd-pagination__input::-webkit-inner-spin-button,.fd-pagination .fd-pagination__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__per-page-label{-ms-flex-negative:0;align-self:center;flex-shrink:0}.fd-pagination .fd-pagination__label{display:none}.fd-pagination .fd-pagination__total-label{margin:0}.fd-pagination .fd-pagination__link.is-focus,.fd-pagination .fd-pagination__link:focus{outline:none;z-index:5}.fd-pagination .fd-pagination__link.is-focus:after,.fd-pagination .fd-pagination__link:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-pagination .fd-pagination__link.is-focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link.is-focus.is-selected:after,.fd-pagination .fd-pagination__link:focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-pagination .fd-pagination__link.is-active{display:none}.fd-pagination .fd-pagination__button [class*=sap-icon][dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__button [class*=sap-icon]{transform:rotate(180deg)}.fd-pagination .fd-pagination__button--mobile{display:none}.fd-pagination--short .fd-pagination__link.is-active,.fd-pagination--short .fd-pagination__link:active{display:flex}.fd-pagination--short .fd-pagination__input{display:none}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination--mobile .fd-pagination__link,.fd-pagination--mobile .fd-pagination__more,.fd-pagination--mobile .fd-pagination__per-page-label,.fd-pagination--mobile .fd-pagination__total{display:none}.fd-pagination--mobile .fd-pagination__button--mobile,.fd-pagination--mobile .fd-pagination__input,.fd-pagination--mobile .fd-pagination__label{display:flex}.fd-pagination--mobile .fd-pagination__link.is-active,.fd-pagination--mobile .fd-pagination__link:active{display:none}@media (max-width: 599px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}@media (min-width: 600px) and (max-width: 1023px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-pagination__label .fd-form-label,.fd-pagination__total-label .fd-form-label{margin:0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.SelectComponent, selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i7.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i8.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i9.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "directive", type: i3.OnlyDigitsDirective, selector: "[fdkOnlyDigits], [fdOnlyDigits], [fd-only-digits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "directive", type: i3.FocusKeyManagerItemDirective, selector: "[fdkFocusKeyManagerItem], [fd-focus-key-manager-item], [fdFocusKeyManagerItem]", inputs: ["initialFocus", "_tabindex"] }, { kind: "directive", type: i3.FocusKeyManagerListDirective, selector: "[fdkFocusKeyManagerList], [fd-focus-key-manager-list], [fdFocusKeyManagerList]", inputs: ["orientation", "skipPredicate"] }, { kind: "pipe", type: i10.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true });
|
|
392
|
+
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PaginationComponent, selector: "fd-pagination", inputs: { id: "id", mobile: "mobile", totalItems: "totalItems", currentPage: "currentPage", itemsPerPage: "itemsPerPage", itemsPerPageTemplate: "itemsPerPageTemplate", itemsPerPageLabel: "itemsPerPageLabel", itemsPerPageOptions: "itemsPerPageOptions", displayTotalItems: "displayTotalItems", displayTextTemplate: "displayTextTemplate", firstLabel: "firstLabel", previousLabel: "previousLabel", nextLabel: "nextLabel", lastLabel: "lastLabel", ariaLabel: "ariaLabel", pageLabel: "pageLabel", currentPageAriaLabel: "currentPageAriaLabel", labelBeforeInputMobile: "labelBeforeInputMobile", labelAfterInputMobile: "labelAfterInputMobile", inputAriaLabel: "inputAriaLabel" }, outputs: { pageChangeStart: "pageChangeStart", itemsPerPageChange: "itemsPerPageChange" }, host: { properties: { "class.fd-pagination--mobile": "mobile", "class.fd-pagination--short": "_lastPage <= 9" }, classAttribute: "fd-pagination" }, providers: [PaginationService, contentDensityObserverProviders()], viewQueries: [{ propertyName: "_focusKeyManagerList", first: true, predicate: FocusKeyManagerListDirective, descendants: true }, { propertyName: "_pageInputElement", first: true, predicate: ["pageInputElement"], descendants: true, read: ElementRef }, { propertyName: "_currentPageElement", first: true, predicate: ["currentPageElement"], descendants: true, read: ElementRef }, { propertyName: "_focusKeyManagerItems", predicate: FocusKeyManagerItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"ariaLabel || ('corePagination.ariaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n [title]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n [title]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel\n ? pageLabel(currentPage)\n : ('corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage })\n \"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelBeforeInputMobile\n ? labelBeforeInputMobile + ':'\n : ('corePagination.labelBeforeInputMobile' | fdTranslate)\n }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [ariaLabel]=\"\n inputAriaLabel\n ? inputAriaLabel(currentPage, _totalPages)\n : ('corePagination.inputAriaLabel'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelAfterInputMobile\n ? labelAfterInputMobile(_lastPage)\n : ('corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n [title]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n [title]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ itemsPerPageLabel ? itemsPerPageLabel + ':' : ('corePagination.itemsPerPageLabel' | fdTranslate) }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-pagination\n*/.fd-pagination{--fdPaginationMoreWidth:2.25rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.75rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0 1rem;width:100%}.fd-pagination:after,.fd-pagination:before{box-sizing:inherit;font-size:inherit}.fd-pagination__per-page{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__per-page:after,.fd-pagination__per-page:before{box-sizing:inherit;font-size:inherit}.fd-pagination__nav{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 auto;padding:0}.fd-pagination__nav:after,.fd-pagination__nav:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__more:after,.fd-pagination__more:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more:before{content:\"...\";display:block;text-align:center;width:var(--fdPaginationMoreWidth)}.fd-pagination__more[class*=-compact],.fd-pagination__more[class*=-condensed],[class*=-compact] .fd-pagination__more:not([class*=-cozy]),[class*=-condensed] .fd-pagination__more:not([class*=-cozy]){--fdPaginationMoreWidth:2rem}.fd-pagination .fd-pagination__button,.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__link,.fd-pagination__more{margin-left:.125rem;margin-right:.125rem}.fd-pagination .fd-pagination__input{--fdInput_Field_Margin:.125rem;--fdInput_Field_Compact_Margin:.125rem;-moz-appearance:textfield;min-width:2.5rem;text-align:center;width:auto}.fd-pagination .fd-pagination__input::-webkit-inner-spin-button,.fd-pagination .fd-pagination__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__per-page-label{-ms-flex-negative:0;align-self:center;flex-shrink:0}.fd-pagination .fd-pagination__label{display:none}.fd-pagination .fd-pagination__total-label{margin:0}.fd-pagination .fd-pagination__link.is-focus,.fd-pagination .fd-pagination__link:focus{outline:none;z-index:5}.fd-pagination .fd-pagination__link.is-focus:after,.fd-pagination .fd-pagination__link:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-pagination .fd-pagination__link.is-focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link.is-focus.is-selected:after,.fd-pagination .fd-pagination__link:focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-pagination .fd-pagination__link.is-active{display:none}.fd-pagination .fd-pagination__button [class*=sap-icon][dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__button [class*=sap-icon]{transform:rotate(180deg)}.fd-pagination .fd-pagination__button--mobile{display:none}.fd-pagination--short .fd-pagination__link.is-active,.fd-pagination--short .fd-pagination__link:active{display:flex}.fd-pagination--short .fd-pagination__input{display:none}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination--mobile .fd-pagination__link,.fd-pagination--mobile .fd-pagination__more,.fd-pagination--mobile .fd-pagination__per-page-label,.fd-pagination--mobile .fd-pagination__total{display:none}.fd-pagination--mobile .fd-pagination__button--mobile,.fd-pagination--mobile .fd-pagination__input,.fd-pagination--mobile .fd-pagination__label{display:flex}.fd-pagination--mobile .fd-pagination__link.is-active,.fd-pagination--mobile .fd-pagination__link:active{display:none}@media (max-width: 599px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}@media (min-width: 600px) and (max-width: 1023px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-pagination__label .fd-form-label,.fd-pagination__total-label .fd-form-label{margin:0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.SelectComponent, selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i7.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i8.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i9.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "directive", type: i3.OnlyDigitsDirective, selector: "[fdkOnlyDigits], [fdOnlyDigits], [fd-only-digits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "directive", type: i3.FocusKeyManagerItemDirective, selector: "[fdkFocusKeyManagerItem], [fd-focus-key-manager-item], [fdFocusKeyManagerItem]", inputs: ["initialFocus", "_tabindex"] }, { kind: "directive", type: i3.FocusKeyManagerListDirective, selector: "[fdkFocusKeyManagerList], [fd-focus-key-manager-list], [fdFocusKeyManagerList]", inputs: ["orientation", "skipPredicate"] }, { kind: "pipe", type: i10.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true });
|
|
388
393
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
389
394
|
type: Component,
|
|
390
395
|
args: [{ selector: 'fd-pagination', providers: [PaginationService, contentDensityObserverProviders()], host: {
|
|
391
396
|
class: 'fd-pagination',
|
|
392
397
|
'[class.fd-pagination--mobile]': 'mobile',
|
|
393
398
|
'[class.fd-pagination--short]': '_lastPage <= 9'
|
|
394
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"ariaLabel || ('corePagination.ariaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n [title]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n [title]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel\n ? pageLabel(currentPage)\n : ('corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage })\n \"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelBeforeInputMobile\n ? labelBeforeInputMobile + ':'\n : ('corePagination.labelBeforeInputMobile' | fdTranslate)\n }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n inputAriaLabel\n ? inputAriaLabel(currentPage, _totalPages)\n : ('corePagination.inputAriaLabel'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelAfterInputMobile\n ? labelAfterInputMobile(_lastPage)\n : ('corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n [title]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n [title]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ itemsPerPageLabel ? itemsPerPageLabel + ':' : ('corePagination.itemsPerPageLabel' | fdTranslate) }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-pagination\n*/.fd-pagination{--fdPaginationMoreWidth:2.25rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.75rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0 1rem;width:100%}.fd-pagination:after,.fd-pagination:before{box-sizing:inherit;font-size:inherit}.fd-pagination__per-page{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__per-page:after,.fd-pagination__per-page:before{box-sizing:inherit;font-size:inherit}.fd-pagination__nav{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 auto;padding:0}.fd-pagination__nav:after,.fd-pagination__nav:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__more:after,.fd-pagination__more:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more:before{content:\"...\";display:block;text-align:center;width:var(--fdPaginationMoreWidth)}.fd-pagination__more[class*=-compact],.fd-pagination__more[class*=-condensed],[class*=-compact] .fd-pagination__more:not([class*=-cozy]),[class*=-condensed] .fd-pagination__more:not([class*=-cozy]){--fdPaginationMoreWidth:2rem}.fd-pagination .fd-pagination__button,.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__link,.fd-pagination__more{margin-left:.125rem;margin-right:.125rem}.fd-pagination .fd-pagination__input{--fdInput_Field_Margin:.125rem;--fdInput_Field_Compact_Margin:.125rem;-moz-appearance:textfield;min-width:2.5rem;text-align:center;width:auto}.fd-pagination .fd-pagination__input::-webkit-inner-spin-button,.fd-pagination .fd-pagination__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__per-page-label{-ms-flex-negative:0;align-self:center;flex-shrink:0}.fd-pagination .fd-pagination__label{display:none}.fd-pagination .fd-pagination__total-label{margin:0}.fd-pagination .fd-pagination__link.is-focus,.fd-pagination .fd-pagination__link:focus{outline:none;z-index:5}.fd-pagination .fd-pagination__link.is-focus:after,.fd-pagination .fd-pagination__link:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-pagination .fd-pagination__link.is-focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link.is-focus.is-selected:after,.fd-pagination .fd-pagination__link:focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-pagination .fd-pagination__link.is-active{display:none}.fd-pagination .fd-pagination__button [class*=sap-icon][dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__button [class*=sap-icon]{transform:rotate(180deg)}.fd-pagination .fd-pagination__button--mobile{display:none}.fd-pagination--short .fd-pagination__link.is-active,.fd-pagination--short .fd-pagination__link:active{display:flex}.fd-pagination--short .fd-pagination__input{display:none}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination--mobile .fd-pagination__link,.fd-pagination--mobile .fd-pagination__more,.fd-pagination--mobile .fd-pagination__per-page-label,.fd-pagination--mobile .fd-pagination__total{display:none}.fd-pagination--mobile .fd-pagination__button--mobile,.fd-pagination--mobile .fd-pagination__input,.fd-pagination--mobile .fd-pagination__label{display:flex}.fd-pagination--mobile .fd-pagination__link.is-active,.fd-pagination--mobile .fd-pagination__link:active{display:none}@media (max-width: 599px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}@media (min-width: 600px) and (max-width: 1023px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-pagination__label .fd-form-label,.fd-pagination__total-label .fd-form-label{margin:0}\n"] }]
|
|
399
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"ariaLabel || ('corePagination.ariaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n [title]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n [title]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel\n ? pageLabel(currentPage)\n : ('corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage })\n \"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelBeforeInputMobile\n ? labelBeforeInputMobile + ':'\n : ('corePagination.labelBeforeInputMobile' | fdTranslate)\n }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [ariaLabel]=\"\n inputAriaLabel\n ? inputAriaLabel(currentPage, _totalPages)\n : ('corePagination.inputAriaLabel'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelAfterInputMobile\n ? labelAfterInputMobile(_lastPage)\n : ('corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n [title]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n [title]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ itemsPerPageLabel ? itemsPerPageLabel + ':' : ('corePagination.itemsPerPageLabel' | fdTranslate) }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-pagination\n*/.fd-pagination{--fdPaginationMoreWidth:2.25rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.75rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0 1rem;width:100%}.fd-pagination:after,.fd-pagination:before{box-sizing:inherit;font-size:inherit}.fd-pagination__per-page{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__per-page:after,.fd-pagination__per-page:before{box-sizing:inherit;font-size:inherit}.fd-pagination__nav{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 auto;padding:0}.fd-pagination__nav:after,.fd-pagination__nav:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__more:after,.fd-pagination__more:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more:before{content:\"...\";display:block;text-align:center;width:var(--fdPaginationMoreWidth)}.fd-pagination__more[class*=-compact],.fd-pagination__more[class*=-condensed],[class*=-compact] .fd-pagination__more:not([class*=-cozy]),[class*=-condensed] .fd-pagination__more:not([class*=-cozy]){--fdPaginationMoreWidth:2rem}.fd-pagination .fd-pagination__button,.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__link,.fd-pagination__more{margin-left:.125rem;margin-right:.125rem}.fd-pagination .fd-pagination__input{--fdInput_Field_Margin:.125rem;--fdInput_Field_Compact_Margin:.125rem;-moz-appearance:textfield;min-width:2.5rem;text-align:center;width:auto}.fd-pagination .fd-pagination__input::-webkit-inner-spin-button,.fd-pagination .fd-pagination__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__per-page-label{-ms-flex-negative:0;align-self:center;flex-shrink:0}.fd-pagination .fd-pagination__label{display:none}.fd-pagination .fd-pagination__total-label{margin:0}.fd-pagination .fd-pagination__link.is-focus,.fd-pagination .fd-pagination__link:focus{outline:none;z-index:5}.fd-pagination .fd-pagination__link.is-focus:after,.fd-pagination .fd-pagination__link:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-pagination .fd-pagination__link.is-focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link.is-focus.is-selected:after,.fd-pagination .fd-pagination__link:focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-pagination .fd-pagination__link.is-active{display:none}.fd-pagination .fd-pagination__button [class*=sap-icon][dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__button [class*=sap-icon]{transform:rotate(180deg)}.fd-pagination .fd-pagination__button--mobile{display:none}.fd-pagination--short .fd-pagination__link.is-active,.fd-pagination--short .fd-pagination__link:active{display:flex}.fd-pagination--short .fd-pagination__input{display:none}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination--mobile .fd-pagination__link,.fd-pagination--mobile .fd-pagination__more,.fd-pagination--mobile .fd-pagination__per-page-label,.fd-pagination--mobile .fd-pagination__total{display:none}.fd-pagination--mobile .fd-pagination__button--mobile,.fd-pagination--mobile .fd-pagination__input,.fd-pagination--mobile .fd-pagination__label{display:flex}.fd-pagination--mobile .fd-pagination__link.is-active,.fd-pagination--mobile .fd-pagination__link:active{display:none}@media (max-width: 599px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}@media (min-width: 600px) and (max-width: 1023px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-pagination__label .fd-form-label,.fd-pagination__total-label .fd-form-label{margin:0}\n"] }]
|
|
395
400
|
}], ctorParameters: function () {
|
|
396
401
|
return [{ type: PaginationService }, { type: i0.ChangeDetectorRef }, { type: i2.LiveAnnouncer }, { type: i11.Observable, decorators: [{
|
|
397
402
|
type: Inject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-pagination.mjs","sources":["../../../../libs/core/src/lib/pagination/pagination.service.ts","../../../../libs/core/src/lib/pagination/pagination.component.ts","../../../../libs/core/src/lib/pagination/pagination.component.html","../../../../libs/core/src/lib/pagination/deprecated-pagination-compact.directive.ts","../../../../libs/core/src/lib/pagination/pagination.module.ts","../../../../libs/core/src/lib/pagination/fundamental-ngx-core-pagination.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core';\n\nimport { Pagination } from './pagination.model';\n\n/** Constant representing the number of pages which appear before and after current page. */\nconst CORNER_DISPLAY_PAGES = 1;\nconst SIDE_CURRENT_DISPLAY_PAGES = 2;\n\n/**\n * Service that is used to retrieve all the pages, the number of pages, and to validate the pagination object.\n */\n@Injectable()\nexport class PaginationService {\n /** @hidden */\n public readonly moreElementValue = -1;\n\n /**\n * Returns a number array representing the pages of the pagination object.\n * Array length always the same and configured by CORNER_DISPLAY_PAGES & SIDE_CURRENT_DISPLAY_PAGES.\n * @param pagination An object of type *Pagination*.\n */\n getPages(pagination: Pagination): number[] {\n if (!pagination.currentPage) {\n pagination.currentPage = 1;\n }\n\n this.validate(pagination);\n\n const totalPages = this.getTotalPages(pagination);\n const pages = new Array(totalPages).fill(undefined).map((_, i) => i + 1);\n\n // +1 for current page, +2 for \"more\" elements - after start & before end pages\n const pagesToDisplay = CORNER_DISPLAY_PAGES * 2 + SIDE_CURRENT_DISPLAY_PAGES * 2 + 1 + 2;\n\n if (pages.length <= pagesToDisplay) {\n return pages;\n }\n\n const pagesBefore = pagination.currentPage - 1;\n const pagesAfter = totalPages - pagination.currentPage;\n const minimalPagesGap = Math.round(pagesToDisplay / 2);\n\n if (pagesBefore < minimalPagesGap) {\n return [\n ...pages.slice(0, pagesToDisplay - 2),\n this.moreElementValue,\n ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n ];\n }\n\n if (pagesAfter < minimalPagesGap) {\n return [\n ...pages.slice(0, CORNER_DISPLAY_PAGES),\n this.moreElementValue,\n ...pages.slice(totalPages - pagesToDisplay + 2)\n ];\n }\n\n return [\n ...pages.slice(0, CORNER_DISPLAY_PAGES),\n this.moreElementValue,\n ...pages.slice(\n pagination.currentPage - SIDE_CURRENT_DISPLAY_PAGES - 1,\n pagination.currentPage + SIDE_CURRENT_DISPLAY_PAGES\n ),\n this.moreElementValue,\n ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n ];\n }\n\n /**\n * Retrieves the total number of pages.\n * @param pagination An object of type *Pagination*.\n */\n getTotalPages(pagination: Pagination): number {\n if (!pagination.itemsPerPage) {\n return 0;\n }\n\n return Math.ceil(pagination.totalItems / pagination.itemsPerPage);\n }\n\n /**\n * Provides validation for the pagination object.\n * @param pagination An object of type *Pagination*.\n */\n validate(pagination: Pagination): void {\n if (isDevMode()) {\n if (isNaN(pagination.totalItems) || pagination.totalItems <= 0) {\n console.warn(\n `\"totalItems\" must be a number greater than zero but got \"${pagination.totalItems}\". This warning only appears in development mode.`\n );\n }\n\n if (isNaN(pagination.itemsPerPage!) || pagination.itemsPerPage! <= 0) {\n console.warn(\n `\"itemsPerPage\" must be a number greater than zero but got \"${pagination.itemsPerPage}\". This warning only appears in development mode.`\n );\n }\n }\n }\n}\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceArray, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { firstValueFrom, Observable, Subscription } from 'rxjs';\nimport { NgModel } from '@angular/forms';\n\nimport { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { Pagination } from './pagination.model';\nimport { PaginationService } from './pagination.service';\nimport { FdLanguage, FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\n\n/** Constant representing the default number of items per page. */\nconst DEFAULT_ITEMS_PER_PAGE = 10;\n\ninterface CurrentShowing {\n from: number;\n to: number;\n totalCount: number;\n /** @deprecated has been renamed to \"totalCount\" */\n of: number;\n}\n\nlet paginationUniqueId = 0;\n\n/**\n * The component that is used to provide navigation between paged information.\n * ```html\n * <fd-pagination\n * [totalItems]=\"50\"\n * [itemsPerPage]=\"10\"\n * [currentPage]=\"3\">\n * </fd-pagination>\n * ```\n */\n@Component({\n selector: 'fd-pagination',\n templateUrl: './pagination.component.html',\n providers: [PaginationService, contentDensityObserverProviders()],\n host: {\n class: 'fd-pagination',\n '[class.fd-pagination--mobile]': 'mobile',\n '[class.fd-pagination--short]': '_lastPage <= 9'\n },\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: true\n})\nexport class PaginationComponent implements OnChanges, OnInit, OnDestroy {\n /** Id for the pagination component. If omitted, a unique one is generated. */\n @Input()\n id: string = 'fd-pagination-' + paginationUniqueId++;\n\n /** Whether component should be shown in the mobile mode. */\n @Input()\n set mobile(value: BooleanInput) {\n this._mobile = coerceBooleanProperty(value);\n }\n get mobile(): boolean {\n return this._mobile;\n }\n\n /** Represents the total number of items. */\n @Input()\n totalItems: number;\n\n /** Represents the current page number. */\n @Input()\n set currentPage(value: number) {\n this._currentPage = Math.floor(coerceNumberProperty(value, 1));\n }\n get currentPage(): number {\n return this._currentPage;\n }\n\n /** Represents the number of items per page. */\n @Input()\n set itemsPerPage(value: number) {\n value = Math.floor(coerceNumberProperty(value, DEFAULT_ITEMS_PER_PAGE));\n\n this._itemsPerPage = Math.max(value, 1);\n\n this._updateDisplayedPageSizeOptions();\n }\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n /**\n * The custom template show range of item by current page of items.\n * It has higher priority than `itemsPerPageOptions` property.\n */\n @Input()\n itemsPerPageTemplate: TemplateRef<any>;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for options for items per page.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n itemsPerPageLabel: string;\n\n /** Represents the options for items per page. */\n @Input()\n set itemsPerPageOptions(value: number[]) {\n this._itemsPerPageOptions = coerceArray<number>(value)\n .map((v) => coerceNumberProperty(v, 0))\n .map((v) => Math.floor(v))\n .filter((v) => v > 0)\n .sort((a, b) => a - b);\n\n this._updateDisplayedPageSizeOptions();\n }\n get itemsPerPageOptions(): number[] {\n return this._itemsPerPageOptions;\n }\n\n /** Whether to display the total number of items. */\n @Input()\n displayTotalItems = true;\n\n /**\n * The template show range of item by current page of items.\n * Default view: Showing {{ from }}-{{ to }} of {{ of }}\n */\n @Input()\n displayTextTemplate: TemplateRef<any>;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'first' page button.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n firstLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'previous' page button.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n previousLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'next' page button.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n nextLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'last' page button.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n lastLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Aria label for the navigation element\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n ariaLabel: string;\n\n /** Event emitted when the page is changed. */\n @Output()\n pageChangeStart = new EventEmitter<number>();\n\n /** Event emitted when items per page option is changed.*/\n @Output()\n itemsPerPageChange = new EventEmitter<number>();\n\n /** @hidden */\n _pages: number[] = [];\n\n /** @hidden */\n _pagesBeforeCurrent: number[];\n\n /** @hidden */\n _pagesAfterCurrent: number[];\n\n /** @hidden */\n @ViewChild(FocusKeyManagerListDirective)\n readonly _focusKeyManagerList: FocusKeyManagerListDirective;\n\n /** @hidden */\n @ViewChildren(FocusKeyManagerItemDirective)\n readonly _focusKeyManagerItems: QueryList<FocusKeyManagerItemDirective>;\n\n /** @hidden */\n @ViewChild('pageInputElement', { read: ElementRef })\n readonly _pageInputElement: ElementRef;\n\n /** @hidden */\n @ViewChild('currentPageElement', { read: ElementRef })\n readonly _currentPageElement: ElementRef;\n\n /**\n * Retrieves an object that represents\n * the total number of items, the current page, and the number of items per page.\n */\n get paginationObject(): Pagination {\n return {\n totalItems: this.totalItems,\n currentPage: this.currentPage,\n itemsPerPage: this.itemsPerPage\n };\n }\n\n /** @hidden */\n get _lastPage(): number {\n return this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get isFirstPage(): boolean {\n return this.currentPage === 1;\n }\n\n /** @hidden */\n get isLastPage(): boolean {\n return this.currentPage === this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get _totalPages(): number {\n return this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get _totalPagesElementId(): string {\n return this.id + '__total';\n }\n\n /** @hidden */\n get _moreElementValue(): number {\n return this.paginationService.moreElementValue;\n }\n\n /** @hidden */\n _currentShowing: CurrentShowing = {\n from: 0,\n to: 0,\n of: 0,\n totalCount: 0\n };\n\n /** @hidden */\n _displayedPageSizeOptions: number[] = [];\n\n /** @hidden */\n private _itemsPerPage: number = DEFAULT_ITEMS_PER_PAGE;\n\n /** @hidden */\n private _mobile = false;\n\n /** @hidden */\n private _itemsPerPageOptions: number[];\n\n /** @hidden */\n private _currentPage = 1;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _translationResolver = new TranslationResolver();\n\n /** @hidden */\n private get _isRtl(): boolean {\n return this._rtlService?.rtl.value;\n }\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'Page ' page button. Page number passed as function parameter.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n pageLabel: (page: number) => string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Function to create current page aria label, current page passed as a parameter of the function\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n currentPageAriaLabel: (currentPage: number) => string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Page label to be shown before current page input in mobile mode.\n * In conjuction with @pageLabelAfterInputMobile generates the label for the input.\n * Example: 'Page' + input + pageLabelAfterInputMobile\n * This property is mainly provided to support i18n.\n */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n @Input()\n labelBeforeInputMobile: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Page label to be shown after current page input in mobile mode. Pages count passed as the function parameter.\n * In conjuction with @pageLabelBeforeInputMobile generates the label for the input.\n * Example: pageLabelBeforeInputMobile + input + 'of 500'.\n * This property is mainly provided to support i18n.\n */\n @Input()\n labelAfterInputMobile: (pagesCount: number) => string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Current page input aria label, parameters passed to the function (currentPage: number, pagesCount: number).\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n inputAriaLabel: (currentPage: number, pagesCount: number) => string;\n\n /** @hidden */\n constructor(\n private readonly paginationService: PaginationService,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _liveAnnouncer: LiveAnnouncer,\n @Inject(FD_LANGUAGE) private readonly _language: Observable<FdLanguage>,\n @Optional() private readonly _rtlService: RtlService,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.currentPage) {\n this.currentPage = changes.currentPage.currentValue;\n }\n\n if (!this.currentPage || this.currentPage < 1) {\n this.currentPage = 1;\n } else {\n const totalPages = this.paginationService.getTotalPages(this.paginationObject);\n\n if (this.currentPage > totalPages) {\n this.currentPage = totalPages;\n }\n }\n\n this._refreshPages();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(this._rtlService?.rtl.subscribe(() => this._refreshPages()));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n skipItemPredicate(item: any): boolean {\n return (\n getComputedStyle(item.nativeElement).display === 'none' ||\n item.nativeElement.getAttribute('disabled') === 'true'\n );\n }\n\n /**\n * Navigates to a specific page.\n * @param page The page to navigate to.\n * @param event The mouse event (optional).\n */\n goToPage(page: number, event?: Event): void {\n if (page > this._lastPage || page < 1) {\n return;\n }\n\n this._refreshPages();\n\n if (event) {\n this._focusCurrentPage();\n }\n\n this.pageChangeStart.emit(page);\n\n this._announcePage(page);\n }\n\n /** Navigates to the first page */\n goToFirstPage(): void {\n this.goToPage(1);\n }\n\n /**\n * Navigates to a previous page.\n */\n previousPage(): void {\n this.goToPage(this.currentPage - 1);\n }\n\n /**\n * Navigates to the next page.\n */\n nextPage(): void {\n this.goToPage(this.currentPage + 1);\n }\n\n /** Navigates to the last page */\n goToLastPage(): void {\n this.goToPage(this._lastPage);\n }\n\n /** @deprecated, use {@link paginationObject} getter instead */\n getPaginationObject(): Pagination {\n return this.paginationObject;\n }\n\n /** @hidden */\n _onChangePerPage = (event: number): void => {\n this.itemsPerPage = event;\n this.itemsPerPageChange.emit(this.itemsPerPage);\n\n this._refreshPages();\n\n const maxPage = this._pages[this._pages.length - 1];\n if (this.currentPage > maxPage) {\n this.pageChangeStart.emit(maxPage);\n }\n };\n\n /** @hidden */\n _restoreInputValue(model: NgModel): void {\n model.reset(this.currentPage);\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _refreshPages(): void {\n const pagination = this.paginationObject;\n\n this._pages = this.paginationService.getPages(pagination);\n\n const currentPageIndex = this._pages.findIndex((page) => page === this.currentPage);\n\n this._pagesBeforeCurrent = this._pages.slice(0, currentPageIndex);\n this._pagesAfterCurrent = this._pages.slice(currentPageIndex + 1);\n\n const itemsPerPage = pagination.itemsPerPage ?? DEFAULT_ITEMS_PER_PAGE;\n\n this._currentShowing = {\n from: this.currentPage - 1 === 0 ? 1 : (this.currentPage - 1) * itemsPerPage + 1,\n to: Math.min((this.currentPage - 1) * itemsPerPage + itemsPerPage, this.totalItems),\n of: this.totalItems,\n totalCount: this.totalItems\n };\n\n this._cdr.markForCheck();\n }\n\n /** Focus current page link/input using FocusKeyManager\n * @hidden\n */\n private _focusCurrentPage(): void {\n const currentPageNativeElement =\n getComputedStyle(this._currentPageElement.nativeElement).display === 'none'\n ? this._pageInputElement.nativeElement\n : this._currentPageElement.nativeElement;\n\n const index = this._focusKeyManagerItems\n .toArray()\n .findIndex((elem) => elem.nativeElement === currentPageNativeElement);\n\n this._focusKeyManagerList.focusItem(index);\n }\n\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n */\n private _updateDisplayedPageSizeOptions(): void {\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.itemsPerPage) {\n this._itemsPerPage = this.itemsPerPageOptions.length ? this.itemsPerPageOptions[0] : DEFAULT_ITEMS_PER_PAGE;\n }\n\n this._displayedPageSizeOptions = this.itemsPerPageOptions?.slice() ?? [];\n\n if (!this._displayedPageSizeOptions.includes(this.itemsPerPage)) {\n this._displayedPageSizeOptions.push(this.itemsPerPage);\n }\n\n this._displayedPageSizeOptions.sort((a, b) => a - b);\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private async _announcePage(page: number): Promise<void> {\n let label: string;\n if (this.currentPageAriaLabel) {\n label = this.currentPageAriaLabel(page);\n } else {\n const lang = await firstValueFrom(this._language);\n label = this._translationResolver.resolve(lang, 'corePagination.currentPageAriaLabel', {\n pageNumber: page,\n totalCount: this.totalItems\n });\n }\n this._liveAnnouncer.announce(label);\n }\n}\n","<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"ariaLabel || ('corePagination.ariaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n [title]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n [title]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel\n ? pageLabel(currentPage)\n : ('corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage })\n \"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelBeforeInputMobile\n ? labelBeforeInputMobile + ':'\n : ('corePagination.labelBeforeInputMobile' | fdTranslate)\n }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n inputAriaLabel\n ? inputAriaLabel(currentPage, _totalPages)\n : ('corePagination.inputAriaLabel'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelAfterInputMobile\n ? labelAfterInputMobile(_lastPage)\n : ('corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n [title]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n [title]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ itemsPerPageLabel ? itemsPerPageLabel + ':' : ('corePagination.itemsPerPageLabel' | fdTranslate) }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n","import { Directive, forwardRef } from '@angular/core';\nimport { CONTENT_DENSITY_DIRECTIVE, DeprecatedCompactDirective } from '@fundamental-ngx/core/content-density';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-pagination[compact]',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => DeprecatedPaginationCompactDirective)\n }\n ]\n})\nexport class DeprecatedPaginationCompactDirective extends DeprecatedCompactDirective {\n /** @hidden */\n constructor() {\n super('fd-pagination');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { SelectModule } from '@fundamental-ngx/core/select';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { OnlyDigitsModule, FocusKeyManagerHelpersModule } from '@fundamental-ngx/cdk/utils';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\nimport { PaginationComponent } from './pagination.component';\nimport { PaginationService } from './pagination.service';\nimport { DeprecatedPaginationCompactDirective } from './deprecated-pagination-compact.directive';\n\n@NgModule({\n declarations: [PaginationComponent, DeprecatedPaginationCompactDirective],\n imports: [\n CommonModule,\n ButtonModule,\n IconModule,\n SelectModule,\n I18nModule,\n FormsModule,\n FormModule,\n OnlyDigitsModule,\n FocusKeyManagerHelpersModule,\n ContentDensityModule\n ],\n providers: [PaginationService],\n exports: [PaginationComponent, DeprecatedPaginationCompactDirective]\n})\nexport class PaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-pagination.mjs","sources":["../../../../libs/core/src/lib/pagination/pagination.service.ts","../../../../libs/core/src/lib/pagination/pagination.component.ts","../../../../libs/core/src/lib/pagination/pagination.component.html","../../../../libs/core/src/lib/pagination/deprecated-pagination-compact.directive.ts","../../../../libs/core/src/lib/pagination/pagination.module.ts","../../../../libs/core/src/lib/pagination/fundamental-ngx-core-pagination.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core';\n\nimport { Pagination } from './pagination.model';\n\n/** Constant representing the number of pages which appear before and after current page. */\nconst CORNER_DISPLAY_PAGES = 1;\nconst SIDE_CURRENT_DISPLAY_PAGES = 2;\n\n/**\n * Service that is used to retrieve all the pages, the number of pages, and to validate the pagination object.\n */\n@Injectable()\nexport class PaginationService {\n /** @hidden */\n public readonly moreElementValue = -1;\n\n /**\n * Returns a number array representing the pages of the pagination object.\n * Array length always the same and configured by CORNER_DISPLAY_PAGES & SIDE_CURRENT_DISPLAY_PAGES.\n * @param pagination An object of type *Pagination*.\n */\n getPages(pagination: Pagination): number[] {\n if (!pagination.currentPage) {\n pagination.currentPage = 1;\n }\n\n this.validate(pagination);\n\n const totalPages = this.getTotalPages(pagination);\n const pages = new Array(totalPages).fill(undefined).map((_, i) => i + 1);\n\n // +1 for current page, +2 for \"more\" elements - after start & before end pages\n const pagesToDisplay = CORNER_DISPLAY_PAGES * 2 + SIDE_CURRENT_DISPLAY_PAGES * 2 + 1 + 2;\n\n if (pages.length <= pagesToDisplay) {\n return pages;\n }\n\n const pagesBefore = pagination.currentPage - 1;\n const pagesAfter = totalPages - pagination.currentPage;\n const minimalPagesGap = Math.round(pagesToDisplay / 2);\n\n if (pagesBefore < minimalPagesGap) {\n return [\n ...pages.slice(0, pagesToDisplay - 2),\n this.moreElementValue,\n ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n ];\n }\n\n if (pagesAfter < minimalPagesGap) {\n return [\n ...pages.slice(0, CORNER_DISPLAY_PAGES),\n this.moreElementValue,\n ...pages.slice(totalPages - pagesToDisplay + 2)\n ];\n }\n\n return [\n ...pages.slice(0, CORNER_DISPLAY_PAGES),\n this.moreElementValue,\n ...pages.slice(\n pagination.currentPage - SIDE_CURRENT_DISPLAY_PAGES - 1,\n pagination.currentPage + SIDE_CURRENT_DISPLAY_PAGES\n ),\n this.moreElementValue,\n ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n ];\n }\n\n /**\n * Retrieves the total number of pages.\n * @param pagination An object of type *Pagination*.\n */\n getTotalPages(pagination: Pagination): number {\n if (!pagination.itemsPerPage) {\n return 0;\n }\n\n return Math.ceil(pagination.totalItems / pagination.itemsPerPage);\n }\n\n /**\n * Provides validation for the pagination object.\n * @param pagination An object of type *Pagination*.\n */\n validate(pagination: Pagination): void {\n if (isDevMode()) {\n if (isNaN(pagination.totalItems) || pagination.totalItems <= 0) {\n console.warn(\n `\"totalItems\" must be a number greater than zero but got \"${pagination.totalItems}\". This warning only appears in development mode.`\n );\n }\n\n if (isNaN(pagination.itemsPerPage!) || pagination.itemsPerPage! <= 0) {\n console.warn(\n `\"itemsPerPage\" must be a number greater than zero but got \"${pagination.itemsPerPage}\". This warning only appears in development mode.`\n );\n }\n }\n }\n}\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceArray, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { firstValueFrom, Observable, Subscription } from 'rxjs';\nimport { NgModel } from '@angular/forms';\n\nimport { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { Pagination } from './pagination.model';\nimport { PaginationService } from './pagination.service';\nimport { FdLanguage, FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\n\n/** Constant representing the default number of items per page. */\nconst DEFAULT_ITEMS_PER_PAGE = 10;\n\ninterface CurrentShowing {\n from: number;\n to: number;\n totalCount: number;\n /** @deprecated has been renamed to \"totalCount\" */\n of: number;\n}\n\nlet paginationUniqueId = 0;\n\n/**\n * The component that is used to provide navigation between paged information.\n * ```html\n * <fd-pagination\n * [totalItems]=\"50\"\n * [itemsPerPage]=\"10\"\n * [currentPage]=\"3\">\n * </fd-pagination>\n * ```\n */\n@Component({\n selector: 'fd-pagination',\n templateUrl: './pagination.component.html',\n providers: [PaginationService, contentDensityObserverProviders()],\n host: {\n class: 'fd-pagination',\n '[class.fd-pagination--mobile]': 'mobile',\n '[class.fd-pagination--short]': '_lastPage <= 9'\n },\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: true\n})\nexport class PaginationComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n /** Id for the pagination component. If omitted, a unique one is generated. */\n @Input()\n id: string = 'fd-pagination-' + paginationUniqueId++;\n\n /** Whether component should be shown in the mobile mode. */\n @Input()\n set mobile(value: BooleanInput) {\n this._mobile = coerceBooleanProperty(value);\n }\n get mobile(): boolean {\n return this._mobile;\n }\n\n /** Represents the total number of items. */\n @Input()\n totalItems: number;\n\n /** Represents the current page number. */\n @Input()\n set currentPage(value: number) {\n this._currentPage = Math.floor(coerceNumberProperty(value, 1));\n }\n get currentPage(): number {\n return this._currentPage;\n }\n\n /** Represents the number of items per page. */\n @Input()\n set itemsPerPage(value: number) {\n value = Math.floor(coerceNumberProperty(value, DEFAULT_ITEMS_PER_PAGE));\n\n this._itemsPerPage = Math.max(value, 1);\n\n this._updateDisplayedPageSizeOptions();\n }\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n /**\n * The custom template show range of item by current page of items.\n * It has higher priority than `itemsPerPageOptions` property.\n */\n @Input()\n itemsPerPageTemplate: TemplateRef<any>;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for options for items per page.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n itemsPerPageLabel: string;\n\n /** Represents the options for items per page. */\n @Input()\n set itemsPerPageOptions(value: number[]) {\n this._itemsPerPageOptions = coerceArray<number>(value)\n .map((v) => coerceNumberProperty(v, 0))\n .map((v) => Math.floor(v))\n .filter((v) => v > 0)\n .sort((a, b) => a - b);\n\n this._updateDisplayedPageSizeOptions();\n }\n get itemsPerPageOptions(): number[] {\n return this._itemsPerPageOptions;\n }\n\n /** Whether to display the total number of items. */\n @Input()\n displayTotalItems = true;\n\n /**\n * The template show range of item by current page of items.\n * Default view: Showing {{ from }}-{{ to }} of {{ of }}\n */\n @Input()\n displayTextTemplate: TemplateRef<any>;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'first' page button.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n firstLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'previous' page button.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n previousLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'next' page button.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n nextLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'last' page button.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n lastLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Aria label for the navigation element\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n ariaLabel: string;\n\n /** Event emitted when the page is changed. */\n @Output()\n pageChangeStart = new EventEmitter<number>();\n\n /** Event emitted when items per page option is changed.*/\n @Output()\n itemsPerPageChange = new EventEmitter<number>();\n\n /** @hidden */\n _pages: number[] = [];\n\n /** @hidden */\n _pagesBeforeCurrent: number[];\n\n /** @hidden */\n _pagesAfterCurrent: number[];\n\n /** @hidden */\n @ViewChild(FocusKeyManagerListDirective)\n readonly _focusKeyManagerList: FocusKeyManagerListDirective;\n\n /** @hidden */\n @ViewChildren(FocusKeyManagerItemDirective)\n readonly _focusKeyManagerItems: QueryList<FocusKeyManagerItemDirective>;\n\n /** @hidden */\n @ViewChild('pageInputElement', { read: ElementRef })\n readonly _pageInputElement: ElementRef;\n\n /** @hidden */\n @ViewChild('currentPageElement', { read: ElementRef })\n readonly _currentPageElement: ElementRef;\n\n /**\n * Retrieves an object that represents\n * the total number of items, the current page, and the number of items per page.\n */\n get paginationObject(): Pagination {\n return {\n totalItems: this.totalItems,\n currentPage: this.currentPage,\n itemsPerPage: this.itemsPerPage\n };\n }\n\n /** @hidden */\n get _lastPage(): number {\n return this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get isFirstPage(): boolean {\n return this.currentPage === 1;\n }\n\n /** @hidden */\n get isLastPage(): boolean {\n return this.currentPage === this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get _totalPages(): number {\n return this.paginationService.getTotalPages(this.paginationObject);\n }\n\n /** @hidden */\n get _totalPagesElementId(): string {\n return this.id + '__total';\n }\n\n /** @hidden */\n get _moreElementValue(): number {\n return this.paginationService.moreElementValue;\n }\n\n /** @hidden */\n _currentShowing: CurrentShowing = {\n from: 0,\n to: 0,\n of: 0,\n totalCount: 0\n };\n\n /** @hidden */\n _displayedPageSizeOptions: number[] = [];\n\n /** @hidden */\n private _itemsPerPage: number = DEFAULT_ITEMS_PER_PAGE;\n\n /** @hidden */\n private _mobile = false;\n\n /** @hidden */\n private _itemsPerPageOptions: number[];\n\n /** @hidden */\n private _currentPage = 1;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _translationResolver = new TranslationResolver();\n\n /** @hidden */\n private get _isRtl(): boolean {\n return this._rtlService?.rtl.value;\n }\n\n /**\n * @deprecated use i18n capabilities instead\n * Label for the 'Page ' page button. Page number passed as function parameter.\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n pageLabel: (page: number) => string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Function to create current page aria label, current page passed as a parameter of the function\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n currentPageAriaLabel: (currentPage: number) => string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Page label to be shown before current page input in mobile mode.\n * In conjuction with @pageLabelAfterInputMobile generates the label for the input.\n * Example: 'Page' + input + pageLabelAfterInputMobile\n * This property is mainly provided to support i18n.\n */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n @Input()\n labelBeforeInputMobile: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Page label to be shown after current page input in mobile mode. Pages count passed as the function parameter.\n * In conjuction with @pageLabelBeforeInputMobile generates the label for the input.\n * Example: pageLabelBeforeInputMobile + input + 'of 500'.\n * This property is mainly provided to support i18n.\n */\n @Input()\n labelAfterInputMobile: (pagesCount: number) => string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Current page input aria label, parameters passed to the function (currentPage: number, pagesCount: number).\n * This property is mainly provided to support reading in the right language for screen reader.\n */\n @Input()\n inputAriaLabel: (currentPage: number, pagesCount: number) => string;\n\n /** @hidden */\n constructor(\n private readonly paginationService: PaginationService,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _liveAnnouncer: LiveAnnouncer,\n @Inject(FD_LANGUAGE) private readonly _language: Observable<FdLanguage>,\n @Optional() private readonly _rtlService: RtlService,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.currentPage) {\n this.currentPage = changes.currentPage.currentValue;\n }\n\n if (!this.currentPage || this.currentPage < 1) {\n this.currentPage = 1;\n } else {\n const totalPages = this.paginationService.getTotalPages(this.paginationObject);\n\n if (this.currentPage > totalPages) {\n this.currentPage = totalPages;\n }\n }\n\n this._refreshPages();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(this._rtlService?.rtl.subscribe(() => this._refreshPages()));\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._focusKeyManagerList?.focusKeyManager?.withVerticalOrientation(false);\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n skipItemPredicate(item: any): boolean {\n return (\n getComputedStyle(item.nativeElement).display === 'none' ||\n item.nativeElement.getAttribute('disabled') === 'true'\n );\n }\n\n /**\n * Navigates to a specific page.\n * @param page The page to navigate to.\n * @param event The mouse event (optional).\n */\n goToPage(page: number, event?: Event): void {\n if (page > this._lastPage || page < 1) {\n return;\n }\n\n this._refreshPages();\n\n if (event) {\n this._focusCurrentPage();\n }\n\n this.pageChangeStart.emit(page);\n\n this._announcePage(page);\n }\n\n /** Navigates to the first page */\n goToFirstPage(): void {\n this.goToPage(1);\n }\n\n /**\n * Navigates to a previous page.\n */\n previousPage(): void {\n this.goToPage(this.currentPage - 1);\n }\n\n /**\n * Navigates to the next page.\n */\n nextPage(): void {\n this.goToPage(this.currentPage + 1);\n }\n\n /** Navigates to the last page */\n goToLastPage(): void {\n this.goToPage(this._lastPage);\n }\n\n /** @deprecated, use {@link paginationObject} getter instead */\n getPaginationObject(): Pagination {\n return this.paginationObject;\n }\n\n /** @hidden */\n _onChangePerPage = (event: number): void => {\n this.itemsPerPage = event;\n this.itemsPerPageChange.emit(this.itemsPerPage);\n\n this._refreshPages();\n\n const maxPage = this._pages[this._pages.length - 1];\n if (this.currentPage > maxPage) {\n this.pageChangeStart.emit(maxPage);\n }\n };\n\n /** @hidden */\n _restoreInputValue(model: NgModel): void {\n model.reset(this.currentPage);\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private _refreshPages(): void {\n const pagination = this.paginationObject;\n\n this._pages = this.paginationService.getPages(pagination);\n\n const currentPageIndex = this._pages.findIndex((page) => page === this.currentPage);\n\n this._pagesBeforeCurrent = this._pages.slice(0, currentPageIndex);\n this._pagesAfterCurrent = this._pages.slice(currentPageIndex + 1);\n\n const itemsPerPage = pagination.itemsPerPage ?? DEFAULT_ITEMS_PER_PAGE;\n\n this._currentShowing = {\n from: this.currentPage - 1 === 0 ? 1 : (this.currentPage - 1) * itemsPerPage + 1,\n to: Math.min((this.currentPage - 1) * itemsPerPage + itemsPerPage, this.totalItems),\n of: this.totalItems,\n totalCount: this.totalItems\n };\n\n this._cdr.markForCheck();\n }\n\n /** Focus current page link/input using FocusKeyManager\n * @hidden\n */\n private _focusCurrentPage(): void {\n const currentPageNativeElement =\n getComputedStyle(this._currentPageElement.nativeElement).display === 'none'\n ? this._pageInputElement.nativeElement\n : this._currentPageElement.nativeElement;\n\n const index = this._focusKeyManagerItems\n .toArray()\n .findIndex((elem) => elem.nativeElement === currentPageNativeElement);\n\n this._focusKeyManagerList.focusItem(index);\n }\n\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n */\n private _updateDisplayedPageSizeOptions(): void {\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.itemsPerPage) {\n this._itemsPerPage = this.itemsPerPageOptions.length ? this.itemsPerPageOptions[0] : DEFAULT_ITEMS_PER_PAGE;\n }\n\n this._displayedPageSizeOptions = this.itemsPerPageOptions?.slice() ?? [];\n\n if (!this._displayedPageSizeOptions.includes(this.itemsPerPage)) {\n this._displayedPageSizeOptions.push(this.itemsPerPage);\n }\n\n this._displayedPageSizeOptions.sort((a, b) => a - b);\n this._cdr.markForCheck();\n }\n\n /** @hidden */\n private async _announcePage(page: number): Promise<void> {\n let label: string;\n if (this.currentPageAriaLabel) {\n label = this.currentPageAriaLabel(page);\n } else {\n const lang = await firstValueFrom(this._language);\n label = this._translationResolver.resolve(lang, 'corePagination.currentPageAriaLabel', {\n pageNumber: page,\n totalCount: this.totalItems\n });\n }\n this._liveAnnouncer.announce(label);\n }\n}\n","<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"ariaLabel || ('corePagination.ariaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n [title]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n [title]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel\n ? pageLabel(currentPage)\n : ('corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage })\n \"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelBeforeInputMobile\n ? labelBeforeInputMobile + ':'\n : ('corePagination.labelBeforeInputMobile' | fdTranslate)\n }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [ariaLabel]=\"\n inputAriaLabel\n ? inputAriaLabel(currentPage, _totalPages)\n : ('corePagination.inputAriaLabel'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelAfterInputMobile\n ? labelAfterInputMobile(_lastPage)\n : ('corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n [title]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n [title]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ itemsPerPageLabel ? itemsPerPageLabel + ':' : ('corePagination.itemsPerPageLabel' | fdTranslate) }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n","import { Directive, forwardRef } from '@angular/core';\nimport { CONTENT_DENSITY_DIRECTIVE, DeprecatedCompactDirective } from '@fundamental-ngx/core/content-density';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-pagination[compact]',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => DeprecatedPaginationCompactDirective)\n }\n ]\n})\nexport class DeprecatedPaginationCompactDirective extends DeprecatedCompactDirective {\n /** @hidden */\n constructor() {\n super('fd-pagination');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { SelectModule } from '@fundamental-ngx/core/select';\nimport { FormModule } from '@fundamental-ngx/core/form';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { OnlyDigitsModule, FocusKeyManagerHelpersModule } from '@fundamental-ngx/cdk/utils';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\nimport { PaginationComponent } from './pagination.component';\nimport { PaginationService } from './pagination.service';\nimport { DeprecatedPaginationCompactDirective } from './deprecated-pagination-compact.directive';\n\n@NgModule({\n declarations: [PaginationComponent, DeprecatedPaginationCompactDirective],\n imports: [\n CommonModule,\n ButtonModule,\n IconModule,\n SelectModule,\n I18nModule,\n FormsModule,\n FormModule,\n OnlyDigitsModule,\n FocusKeyManagerHelpersModule,\n ContentDensityModule\n ],\n providers: [PaginationService],\n exports: [PaginationComponent, DeprecatedPaginationCompactDirective]\n})\nexport class PaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|