@progress/kendo-angular-pager 19.0.0-develop.3 → 19.0.0-develop.30
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/esm2022/package-metadata.mjs +2 -2
- package/esm2022/pager/navigation.service.mjs +1 -1
- package/esm2022/pager/pager-input.component.mjs +13 -6
- package/esm2022/pager/pager-next-buttons.component.mjs +14 -4
- package/esm2022/pager/pager-numeric-buttons.component.mjs +5 -53
- package/esm2022/pager/pager-page-sizes.component.mjs +30 -5
- package/esm2022/pager/pager-prev-buttons.component.mjs +14 -4
- package/esm2022/pager/pager.component.mjs +410 -57
- package/esm2022/util.mjs +52 -0
- package/fesm2022/progress-kendo-angular-pager.mjs +535 -136
- package/index.d.ts +1 -0
- package/package.json +8 -8
- package/pager/pager-input.component.d.ts +6 -1
- package/pager/pager-next-buttons.component.d.ts +4 -0
- package/pager/pager-page-sizes.component.d.ts +15 -1
- package/pager/pager-prev-buttons.component.d.ts +4 -0
- package/pager/pager.component.d.ts +74 -9
- package/schematics/ngAdd/index.js +6 -6
- package/util.d.ts +30 -0
- package/esm2022/pager/common/constants.mjs +0 -12
- package/pager/common/constants.d.ts +0 -12
|
@@ -8,12 +8,13 @@ import * as i1 from '@progress/kendo-angular-l10n';
|
|
|
8
8
|
import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
|
|
9
9
|
import { Subject, Subscription } from 'rxjs';
|
|
10
10
|
import { caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon } from '@progress/kendo-svg-icons';
|
|
11
|
-
import { isFocusable, Keys, EventsOutsideAngularDirective, anyChanged, ResizeSensorComponent, isPresent, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
11
|
+
import { isDocumentAvailable, isFocusable, Keys, EventsOutsideAngularDirective, anyChanged, isChanged, ResizeSensorComponent, isPresent, ResizeBatchService } from '@progress/kendo-angular-common';
|
|
12
12
|
import { ButtonComponent } from '@progress/kendo-angular-buttons';
|
|
13
13
|
import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
|
|
14
|
-
import { NgIf, NgFor, NgClass, NgTemplateOutlet } from '@angular/common';
|
|
14
|
+
import { NgIf, NgFor, NgClass, NgTemplateOutlet, NgStyle } from '@angular/common';
|
|
15
15
|
import { NumericTextBoxComponent } from '@progress/kendo-angular-inputs';
|
|
16
16
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
17
|
+
import { take } from 'rxjs/operators';
|
|
17
18
|
import { IconsService } from '@progress/kendo-angular-icons';
|
|
18
19
|
import { PopupService } from '@progress/kendo-angular-popup';
|
|
19
20
|
|
|
@@ -425,12 +426,63 @@ const getStylingClasses = (componentType, stylingOption, previousValue, newValue
|
|
|
425
426
|
* @hidden
|
|
426
427
|
*/
|
|
427
428
|
const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\{\\s*${name}\\s*\}`, 'g'), value);
|
|
429
|
+
/**
|
|
430
|
+
* @hidden
|
|
431
|
+
*/
|
|
432
|
+
const calculatePadding = (element) => {
|
|
433
|
+
if (!element || !isDocumentAvailable()) {
|
|
434
|
+
return { padding: 0, gapNumbersSizes: 0, gapSizesInfo: 0 };
|
|
435
|
+
}
|
|
436
|
+
const computedStyle = window.getComputedStyle(element);
|
|
437
|
+
const paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;
|
|
438
|
+
const paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;
|
|
439
|
+
const padding = (paddingLeft + paddingRight) * 1.2; // account for rounding errors
|
|
440
|
+
const style = getComputedStyle(document.documentElement);
|
|
441
|
+
const gapNumbersSizes = 2 * (parseFloat(style.getPropertyValue('--kendo-spacing-3\\.5') || '0.875rem') * (parseFloat(getComputedStyle(document.documentElement).fontSize) || 16)); // convert rem to px
|
|
442
|
+
const gapSizesInfo = gapNumbersSizes;
|
|
443
|
+
return { padding, gapNumbersSizes, gapSizesInfo };
|
|
444
|
+
};
|
|
445
|
+
/**
|
|
446
|
+
* @hidden
|
|
447
|
+
*/
|
|
448
|
+
const createMeasurementSpan = (renderer, container, className) => {
|
|
449
|
+
const span = renderer.createElement('span');
|
|
450
|
+
renderer.appendChild(container, span);
|
|
451
|
+
renderer.addClass(span, className);
|
|
452
|
+
return span;
|
|
453
|
+
};
|
|
454
|
+
/**
|
|
455
|
+
* @hidden
|
|
456
|
+
*/
|
|
457
|
+
const copyComputedStyles = (renderer, source, destination) => {
|
|
458
|
+
const computedStyle = getComputedStyle(source);
|
|
459
|
+
const importantStyles = [
|
|
460
|
+
'font-family', 'font-size', 'font-weight', 'font-style',
|
|
461
|
+
'letter-spacing', 'text-transform', 'white-space', 'word-spacing',
|
|
462
|
+
'padding-left', 'padding-right', 'margin-left', 'margin-right',
|
|
463
|
+
'border-left-width', 'border-right-width', 'box-sizing'
|
|
464
|
+
];
|
|
465
|
+
importantStyles.forEach(style => {
|
|
466
|
+
renderer.setStyle(destination, style, computedStyle.getPropertyValue(style));
|
|
467
|
+
});
|
|
468
|
+
};
|
|
469
|
+
/**
|
|
470
|
+
*
|
|
471
|
+
* @hidden
|
|
472
|
+
*/
|
|
473
|
+
const positionOffScreen = (renderer, element) => {
|
|
474
|
+
renderer.setStyle(element, 'position', 'absolute');
|
|
475
|
+
renderer.setStyle(element, 'visibility', 'hidden');
|
|
476
|
+
renderer.setStyle(element, 'left', '-9999px');
|
|
477
|
+
renderer.setStyle(element, 'top', '-9999px');
|
|
478
|
+
renderer.setStyle(element, 'display', 'flex');
|
|
479
|
+
};
|
|
428
480
|
|
|
429
481
|
/**
|
|
430
482
|
* @hidden
|
|
431
483
|
*/
|
|
432
484
|
class PagerNavigationService {
|
|
433
|
-
isNavigable =
|
|
485
|
+
isNavigable = true;
|
|
434
486
|
innerNavigationChange = new Subject();
|
|
435
487
|
toggleInnerNavigation(value) {
|
|
436
488
|
this.innerNavigationChange.next(value);
|
|
@@ -537,6 +589,16 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
|
|
|
537
589
|
get disabled() {
|
|
538
590
|
return this.currentPage === 1 || !this.total;
|
|
539
591
|
}
|
|
592
|
+
/**
|
|
593
|
+
* @hidden
|
|
594
|
+
*/
|
|
595
|
+
onClick(isFirst = false) {
|
|
596
|
+
if (this.disabled) {
|
|
597
|
+
return false;
|
|
598
|
+
}
|
|
599
|
+
const targetPage = isFirst ? 0 : this.currentPage - 2;
|
|
600
|
+
return this.currentPage !== 1 ? this.changePage(targetPage) : false;
|
|
601
|
+
}
|
|
540
602
|
onChanges({ total, skip, pageSize }) {
|
|
541
603
|
this.total = total;
|
|
542
604
|
this.skip = skip;
|
|
@@ -558,7 +620,7 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
|
|
|
558
620
|
[size]="size"
|
|
559
621
|
[title]="textFor('firstPage')"
|
|
560
622
|
[attr.aria-label]="textFor('firstPage')"
|
|
561
|
-
(click)="
|
|
623
|
+
(click)="onClick(true)">
|
|
562
624
|
</button>
|
|
563
625
|
<button
|
|
564
626
|
type="button" kendoButton
|
|
@@ -573,7 +635,7 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
|
|
|
573
635
|
[size]="size"
|
|
574
636
|
[title]="textFor('previousPage')"
|
|
575
637
|
[attr.aria-label]="textFor('previousPage')"
|
|
576
|
-
(click)="
|
|
638
|
+
(click)="onClick()">
|
|
577
639
|
</button>
|
|
578
640
|
`, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
579
641
|
}
|
|
@@ -596,7 +658,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
596
658
|
[size]="size"
|
|
597
659
|
[title]="textFor('firstPage')"
|
|
598
660
|
[attr.aria-label]="textFor('firstPage')"
|
|
599
|
-
(click)="
|
|
661
|
+
(click)="onClick(true)">
|
|
600
662
|
</button>
|
|
601
663
|
<button
|
|
602
664
|
type="button" kendoButton
|
|
@@ -611,7 +673,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
611
673
|
[size]="size"
|
|
612
674
|
[title]="textFor('previousPage')"
|
|
613
675
|
[attr.aria-label]="textFor('previousPage')"
|
|
614
|
-
(click)="
|
|
676
|
+
(click)="onClick()">
|
|
615
677
|
</button>
|
|
616
678
|
`,
|
|
617
679
|
standalone: true,
|
|
@@ -629,6 +691,18 @@ class PagerPageSizesComponent extends PagerElementComponent {
|
|
|
629
691
|
element;
|
|
630
692
|
ngZone;
|
|
631
693
|
dropDownList;
|
|
694
|
+
_showItemsText = true;
|
|
695
|
+
/**
|
|
696
|
+
* Controls the visibility of the page text label.
|
|
697
|
+
* @hidden
|
|
698
|
+
*/
|
|
699
|
+
get showItemsText() {
|
|
700
|
+
return this._showItemsText;
|
|
701
|
+
}
|
|
702
|
+
set showItemsText(value) {
|
|
703
|
+
this._showItemsText = value;
|
|
704
|
+
this.cd.markForCheck();
|
|
705
|
+
}
|
|
632
706
|
/**
|
|
633
707
|
* The page sizes collection. Can contain numbers and [PageSizeItem]({% slug api_pager_pagesizeitem %}) objects.
|
|
634
708
|
*
|
|
@@ -780,6 +854,12 @@ class PagerPageSizesComponent extends PagerElementComponent {
|
|
|
780
854
|
* * `none`
|
|
781
855
|
*/
|
|
782
856
|
size = DEFAULT_SIZE;
|
|
857
|
+
/**
|
|
858
|
+
* Toggles the adaptiveness of the internal DropDownList.
|
|
859
|
+
*
|
|
860
|
+
* @default 'auto'
|
|
861
|
+
*/
|
|
862
|
+
adaptiveMode = 'auto';
|
|
783
863
|
/**
|
|
784
864
|
* @hidden
|
|
785
865
|
*
|
|
@@ -826,7 +906,7 @@ class PagerPageSizesComponent extends PagerElementComponent {
|
|
|
826
906
|
}
|
|
827
907
|
}
|
|
828
908
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
829
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerPageSizesComponent, isStandalone: true, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: { pageSizes: "pageSizes", size: "size" }, host: { properties: { "class.k-pager-sizes": "this.classes" } }, viewQueries: [{ propertyName: "dropDownList", first: true, predicate: ["dropdownlist"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
909
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerPageSizesComponent, isStandalone: true, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: { showItemsText: "showItemsText", pageSizes: "pageSizes", size: "size", adaptiveMode: "adaptiveMode" }, host: { properties: { "class.k-pager-sizes": "this.classes" } }, viewQueries: [{ propertyName: "dropDownList", first: true, predicate: ["dropdownlist"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
830
910
|
<kendo-dropdownlist kendoPagerFocusable
|
|
831
911
|
#dropdownlist
|
|
832
912
|
[size]="size"
|
|
@@ -836,9 +916,10 @@ class PagerPageSizesComponent extends PagerElementComponent {
|
|
|
836
916
|
[valuePrimitive]="true"
|
|
837
917
|
[value]="pageSize"
|
|
838
918
|
(valueChange)="pageSizeChange($event, dropdownlist)"
|
|
919
|
+
[adaptiveMode]="adaptiveMode"
|
|
839
920
|
[attr.aria-label]="textFor('itemsPerPage')"></kendo-dropdownlist>
|
|
840
|
-
{{ textFor('itemsPerPage') }}
|
|
841
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "
|
|
921
|
+
<ng-container *ngIf="showItemsText">{{ textFor('itemsPerPage') }}</ng-container>
|
|
922
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
842
923
|
}
|
|
843
924
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
|
|
844
925
|
type: Component,
|
|
@@ -855,19 +936,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
855
936
|
[valuePrimitive]="true"
|
|
856
937
|
[value]="pageSize"
|
|
857
938
|
(valueChange)="pageSizeChange($event, dropdownlist)"
|
|
939
|
+
[adaptiveMode]="adaptiveMode"
|
|
858
940
|
[attr.aria-label]="textFor('itemsPerPage')"></kendo-dropdownlist>
|
|
859
|
-
{{ textFor('itemsPerPage') }}
|
|
941
|
+
<ng-container *ngIf="showItemsText">{{ textFor('itemsPerPage') }}</ng-container>
|
|
860
942
|
`,
|
|
861
943
|
standalone: true,
|
|
862
|
-
imports: [DropDownListComponent, PagerFocusableDirective]
|
|
944
|
+
imports: [DropDownListComponent, PagerFocusableDirective, NgIf]
|
|
863
945
|
}]
|
|
864
946
|
}], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { dropDownList: [{
|
|
865
947
|
type: ViewChild,
|
|
866
948
|
args: ['dropdownlist', { static: true }]
|
|
949
|
+
}], showItemsText: [{
|
|
950
|
+
type: Input
|
|
867
951
|
}], pageSizes: [{
|
|
868
952
|
type: Input
|
|
869
953
|
}], size: [{
|
|
870
954
|
type: Input
|
|
955
|
+
}], adaptiveMode: [{
|
|
956
|
+
type: Input
|
|
871
957
|
}], classes: [{
|
|
872
958
|
type: HostBinding,
|
|
873
959
|
args: ["class.k-pager-sizes"]
|
|
@@ -1058,30 +1144,6 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
|
|
|
1058
1144
|
}
|
|
1059
1145
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
1060
1146
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerNumericButtonsComponent, isStandalone: true, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: { buttonCount: "buttonCount", size: "size" }, viewQueries: [{ propertyName: "selectElement", first: true, predicate: ["select"], descendants: true, read: ElementRef }, { propertyName: "numbersElement", first: true, predicate: ["numbers"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
|
|
1061
|
-
<select kendoPagerFocusable #select
|
|
1062
|
-
class="k-hidden k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
|
|
1063
|
-
[attr.title]="pageChooserLabel"
|
|
1064
|
-
[attr.aria-label]="pageChooserLabel"
|
|
1065
|
-
(change)="onSelectChange($event)">
|
|
1066
|
-
<option *ngIf="start > 1"
|
|
1067
|
-
value="previousButtons"
|
|
1068
|
-
[selected]="false"
|
|
1069
|
-
[attr.aria-label]="pageLabel(start - 1)">...
|
|
1070
|
-
</option>
|
|
1071
|
-
<option *ngFor="let num of buttons"
|
|
1072
|
-
[value]="num.toString()"
|
|
1073
|
-
[selected]="num === currentPage"
|
|
1074
|
-
[attr.aria-label]="pageLabel(num)"
|
|
1075
|
-
[attr.aria-current]="currentPage === num ? 'page' : undefined"
|
|
1076
|
-
[ngClass]="{'k-selected':currentPage === num}">
|
|
1077
|
-
{{num}}
|
|
1078
|
-
</option>
|
|
1079
|
-
<option *ngIf="end < totalPages"
|
|
1080
|
-
value="nextButtons"
|
|
1081
|
-
[selected]="false"
|
|
1082
|
-
[attr.aria-label]="pageLabel(end + 1)">...
|
|
1083
|
-
</option>
|
|
1084
|
-
</select>
|
|
1085
1147
|
<div class="k-pager-numbers" #numbers>
|
|
1086
1148
|
<button *ngIf="start > 1"
|
|
1087
1149
|
type="button"
|
|
@@ -1106,7 +1168,7 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
|
|
|
1106
1168
|
[attr.title]="pageLabel(num)"
|
|
1107
1169
|
[attr.aria-current]="currentPage === num ? 'page' : undefined"
|
|
1108
1170
|
[selected]="currentPage === num"
|
|
1109
|
-
(click)="changePage(num - 1)">
|
|
1171
|
+
(click)="currentPage === num ? false : changePage(num - 1)">
|
|
1110
1172
|
{{num}}
|
|
1111
1173
|
</button>
|
|
1112
1174
|
<button *ngIf="end < totalPages"
|
|
@@ -1121,7 +1183,7 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
|
|
|
1121
1183
|
[attr.title]="pageLabel(end + 1)"
|
|
1122
1184
|
(click)="changePage(end)">...</button>
|
|
1123
1185
|
</div>
|
|
1124
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "
|
|
1186
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1125
1187
|
}
|
|
1126
1188
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{
|
|
1127
1189
|
type: Component,
|
|
@@ -1129,30 +1191,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1129
1191
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1130
1192
|
selector: 'kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons',
|
|
1131
1193
|
template: `
|
|
1132
|
-
<select kendoPagerFocusable #select
|
|
1133
|
-
class="k-hidden k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
|
|
1134
|
-
[attr.title]="pageChooserLabel"
|
|
1135
|
-
[attr.aria-label]="pageChooserLabel"
|
|
1136
|
-
(change)="onSelectChange($event)">
|
|
1137
|
-
<option *ngIf="start > 1"
|
|
1138
|
-
value="previousButtons"
|
|
1139
|
-
[selected]="false"
|
|
1140
|
-
[attr.aria-label]="pageLabel(start - 1)">...
|
|
1141
|
-
</option>
|
|
1142
|
-
<option *ngFor="let num of buttons"
|
|
1143
|
-
[value]="num.toString()"
|
|
1144
|
-
[selected]="num === currentPage"
|
|
1145
|
-
[attr.aria-label]="pageLabel(num)"
|
|
1146
|
-
[attr.aria-current]="currentPage === num ? 'page' : undefined"
|
|
1147
|
-
[ngClass]="{'k-selected':currentPage === num}">
|
|
1148
|
-
{{num}}
|
|
1149
|
-
</option>
|
|
1150
|
-
<option *ngIf="end < totalPages"
|
|
1151
|
-
value="nextButtons"
|
|
1152
|
-
[selected]="false"
|
|
1153
|
-
[attr.aria-label]="pageLabel(end + 1)">...
|
|
1154
|
-
</option>
|
|
1155
|
-
</select>
|
|
1156
1194
|
<div class="k-pager-numbers" #numbers>
|
|
1157
1195
|
<button *ngIf="start > 1"
|
|
1158
1196
|
type="button"
|
|
@@ -1177,7 +1215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1177
1215
|
[attr.title]="pageLabel(num)"
|
|
1178
1216
|
[attr.aria-current]="currentPage === num ? 'page' : undefined"
|
|
1179
1217
|
[selected]="currentPage === num"
|
|
1180
|
-
(click)="changePage(num - 1)">
|
|
1218
|
+
(click)="currentPage === num ? false : changePage(num - 1)">
|
|
1181
1219
|
{{num}}
|
|
1182
1220
|
</button>
|
|
1183
1221
|
<button *ngIf="end < totalPages"
|
|
@@ -1194,7 +1232,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1194
1232
|
</div>
|
|
1195
1233
|
`,
|
|
1196
1234
|
standalone: true,
|
|
1197
|
-
imports: [PagerFocusableDirective, NgIf, NgFor,
|
|
1235
|
+
imports: [PagerFocusableDirective, NgIf, NgFor, ButtonComponent]
|
|
1198
1236
|
}]
|
|
1199
1237
|
}], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: i0.Renderer2 }]; }, propDecorators: { selectElement: [{
|
|
1200
1238
|
type: ViewChild,
|
|
@@ -1236,6 +1274,16 @@ class PagerNextButtonsComponent extends PagerElementComponent {
|
|
|
1236
1274
|
constructor(localization, pagerContext, cd) {
|
|
1237
1275
|
super(localization, pagerContext, cd);
|
|
1238
1276
|
}
|
|
1277
|
+
/**
|
|
1278
|
+
* @hidden
|
|
1279
|
+
*/
|
|
1280
|
+
onClick(isLast = false) {
|
|
1281
|
+
if (this.disabled) {
|
|
1282
|
+
return false;
|
|
1283
|
+
}
|
|
1284
|
+
const targetPage = isLast ? this.totalPages - 1 : this.currentPage;
|
|
1285
|
+
return this.currentPage !== this.totalPages ? this.changePage(targetPage) : false;
|
|
1286
|
+
}
|
|
1239
1287
|
onChanges({ total, skip, pageSize }) {
|
|
1240
1288
|
this.total = total;
|
|
1241
1289
|
this.skip = skip;
|
|
@@ -1256,7 +1304,7 @@ class PagerNextButtonsComponent extends PagerElementComponent {
|
|
|
1256
1304
|
[class.k-disabled]="disabled"
|
|
1257
1305
|
[title]="textFor('nextPage')"
|
|
1258
1306
|
[attr.aria-label]="textFor('nextPage')"
|
|
1259
|
-
(click)="
|
|
1307
|
+
(click)="onClick()">
|
|
1260
1308
|
</button>
|
|
1261
1309
|
<button kendoButton kendoPagerFocusable
|
|
1262
1310
|
type="button"
|
|
@@ -1270,7 +1318,7 @@ class PagerNextButtonsComponent extends PagerElementComponent {
|
|
|
1270
1318
|
[class.k-disabled]="disabled"
|
|
1271
1319
|
[title]="textFor('lastPage')"
|
|
1272
1320
|
[attr.aria-label]="textFor('lastPage')"
|
|
1273
|
-
(click)="
|
|
1321
|
+
(click)="onClick(true)">
|
|
1274
1322
|
</button>
|
|
1275
1323
|
`, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1276
1324
|
}
|
|
@@ -1292,7 +1340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1292
1340
|
[class.k-disabled]="disabled"
|
|
1293
1341
|
[title]="textFor('nextPage')"
|
|
1294
1342
|
[attr.aria-label]="textFor('nextPage')"
|
|
1295
|
-
(click)="
|
|
1343
|
+
(click)="onClick()">
|
|
1296
1344
|
</button>
|
|
1297
1345
|
<button kendoButton kendoPagerFocusable
|
|
1298
1346
|
type="button"
|
|
@@ -1306,7 +1354,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1306
1354
|
[class.k-disabled]="disabled"
|
|
1307
1355
|
[title]="textFor('lastPage')"
|
|
1308
1356
|
[attr.aria-label]="textFor('lastPage')"
|
|
1309
|
-
(click)="
|
|
1357
|
+
(click)="onClick(true)">
|
|
1310
1358
|
</button>
|
|
1311
1359
|
`,
|
|
1312
1360
|
standalone: true,
|
|
@@ -1324,6 +1372,11 @@ class PagerInputComponent extends PagerElementComponent {
|
|
|
1324
1372
|
zone;
|
|
1325
1373
|
renderer;
|
|
1326
1374
|
numericInput;
|
|
1375
|
+
/**
|
|
1376
|
+
* Controls the visibility of the page text label.
|
|
1377
|
+
* @hidden
|
|
1378
|
+
*/
|
|
1379
|
+
showPageText = true;
|
|
1327
1380
|
/**
|
|
1328
1381
|
* Specifies the padding of the internal numeric input element.
|
|
1329
1382
|
*
|
|
@@ -1397,9 +1450,9 @@ class PagerInputComponent extends PagerElementComponent {
|
|
|
1397
1450
|
return this.totalPages !== 0;
|
|
1398
1451
|
}
|
|
1399
1452
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
1400
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerInputComponent, isStandalone: true, selector: "kendo-datapager-input, kendo-pager-input", inputs: { size: "size" }, viewQueries: [{ propertyName: "numericInput", first: true, predicate: NumericTextBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
1453
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerInputComponent, isStandalone: true, selector: "kendo-datapager-input, kendo-pager-input", inputs: { showPageText: "showPageText", size: "size" }, viewQueries: [{ propertyName: "numericInput", first: true, predicate: NumericTextBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
1401
1454
|
<span class="k-pager-input">
|
|
1402
|
-
{{textFor('page')}}
|
|
1455
|
+
<ng-container *ngIf="showPageText">{{textFor('page')}}</ng-container>
|
|
1403
1456
|
<kendo-numerictextbox kendoPagerFocusable
|
|
1404
1457
|
[spinners]="false"
|
|
1405
1458
|
[decimals]="0"
|
|
@@ -1421,7 +1474,7 @@ class PagerInputComponent extends PagerElementComponent {
|
|
|
1421
1474
|
</kendo-numerictextbox>
|
|
1422
1475
|
{{textFor('of')}} {{totalPages}}
|
|
1423
1476
|
</span>
|
|
1424
|
-
`, isInline: true, dependencies: [{ kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
|
|
1477
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
|
|
1425
1478
|
}
|
|
1426
1479
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputComponent, decorators: [{
|
|
1427
1480
|
type: Component,
|
|
@@ -1429,7 +1482,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1429
1482
|
selector: 'kendo-datapager-input, kendo-pager-input',
|
|
1430
1483
|
template: `
|
|
1431
1484
|
<span class="k-pager-input">
|
|
1432
|
-
{{textFor('page')}}
|
|
1485
|
+
<ng-container *ngIf="showPageText">{{textFor('page')}}</ng-container>
|
|
1433
1486
|
<kendo-numerictextbox kendoPagerFocusable
|
|
1434
1487
|
[spinners]="false"
|
|
1435
1488
|
[decimals]="0"
|
|
@@ -1453,11 +1506,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1453
1506
|
</span>
|
|
1454
1507
|
`,
|
|
1455
1508
|
standalone: true,
|
|
1456
|
-
imports: [NgClass, NumericTextBoxComponent, PagerFocusableDirective, EventsOutsideAngularDirective]
|
|
1509
|
+
imports: [NgClass, NgIf, NumericTextBoxComponent, PagerFocusableDirective, EventsOutsideAngularDirective]
|
|
1457
1510
|
}]
|
|
1458
1511
|
}], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { numericInput: [{
|
|
1459
1512
|
type: ViewChild,
|
|
1460
1513
|
args: [NumericTextBoxComponent, { static: true }]
|
|
1514
|
+
}], showPageText: [{
|
|
1515
|
+
type: Input
|
|
1461
1516
|
}], size: [{
|
|
1462
1517
|
type: Input
|
|
1463
1518
|
}] } });
|
|
@@ -1530,28 +1585,40 @@ const packageMetadata = {
|
|
|
1530
1585
|
productName: 'Kendo UI for Angular',
|
|
1531
1586
|
productCode: 'KENDOUIANGULAR',
|
|
1532
1587
|
productCodes: ['KENDOUIANGULAR'],
|
|
1533
|
-
publishDate:
|
|
1534
|
-
version: '19.0.0-develop.
|
|
1588
|
+
publishDate: 1747836246,
|
|
1589
|
+
version: '19.0.0-develop.30',
|
|
1535
1590
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
1536
1591
|
};
|
|
1537
1592
|
|
|
1538
|
-
/**
|
|
1539
|
-
* @hidden
|
|
1540
|
-
*/
|
|
1541
|
-
const RESPONSIVE_BREAKPOINT_MEDIUM = 600;
|
|
1542
|
-
/**
|
|
1543
|
-
* @hidden
|
|
1544
|
-
*/
|
|
1545
|
-
const RESPONSIVE_BREAKPOINT_LARGE = 768;
|
|
1546
|
-
|
|
1547
1593
|
class PagerComponent {
|
|
1548
1594
|
pagerContext;
|
|
1549
1595
|
element;
|
|
1550
1596
|
localization;
|
|
1551
1597
|
renderer;
|
|
1552
1598
|
ngZone;
|
|
1599
|
+
cdr;
|
|
1553
1600
|
navigationService;
|
|
1554
1601
|
template;
|
|
1602
|
+
set numericButtons(buttons) {
|
|
1603
|
+
const newWidth = buttons ? buttons.nativeElement?.offsetWidth : 0;
|
|
1604
|
+
if (buttons && newWidth !== this.pagerDimensions.numericButtonsWidth) {
|
|
1605
|
+
this.pagerDimensions.numericButtonsWidth = newWidth;
|
|
1606
|
+
}
|
|
1607
|
+
}
|
|
1608
|
+
set pagerInput(input) {
|
|
1609
|
+
const newWidth = input ? input.nativeElement?.offsetWidth : 0;
|
|
1610
|
+
if (input && newWidth !== this.pagerDimensions.inputWidth) {
|
|
1611
|
+
this.pagerDimensions.inputWidth = newWidth;
|
|
1612
|
+
}
|
|
1613
|
+
}
|
|
1614
|
+
pagerInputComponent;
|
|
1615
|
+
set pageSizes(sizes) {
|
|
1616
|
+
const newWidth = sizes ? sizes.nativeElement?.offsetWidth : 0;
|
|
1617
|
+
if (sizes && newWidth !== this.pagerDimensions.pageSizesWidth) {
|
|
1618
|
+
this.pagerDimensions.pageSizesWidth = newWidth;
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
pageSizesComponent;
|
|
1555
1622
|
/**
|
|
1556
1623
|
* @hidden
|
|
1557
1624
|
*/
|
|
@@ -1604,6 +1671,9 @@ class PagerComponent {
|
|
|
1604
1671
|
this._pageSizeValues = value;
|
|
1605
1672
|
}
|
|
1606
1673
|
}
|
|
1674
|
+
get pageSizeValues() {
|
|
1675
|
+
return this._pageSizeValues;
|
|
1676
|
+
}
|
|
1607
1677
|
/**
|
|
1608
1678
|
* Toggles the **Previous** and **Next** buttons.
|
|
1609
1679
|
*
|
|
@@ -1612,8 +1682,8 @@ class PagerComponent {
|
|
|
1612
1682
|
previousNext = true;
|
|
1613
1683
|
/**
|
|
1614
1684
|
* If set to `true`, the user can use dedicated shortcuts to interact with the Pager ([see example]({% slug keyboard_navigation_pager %})).
|
|
1615
|
-
* By default, navigation is
|
|
1616
|
-
* @default
|
|
1685
|
+
* By default, navigation is enabled. To disable it and make the Pager content accessible in the normal tab sequence, set the property to `false`.
|
|
1686
|
+
* @default true
|
|
1617
1687
|
*/
|
|
1618
1688
|
set navigable(value) {
|
|
1619
1689
|
this._navigable = value;
|
|
@@ -1640,12 +1710,17 @@ class PagerComponent {
|
|
|
1640
1710
|
return this._size;
|
|
1641
1711
|
}
|
|
1642
1712
|
/**
|
|
1643
|
-
*
|
|
1644
|
-
* Toggles the Pager responsive functionality.
|
|
1713
|
+
* Toggles the Pager responsive functionality ([see example](slug:responsive_pager)).
|
|
1645
1714
|
*
|
|
1646
1715
|
* @default true
|
|
1647
1716
|
*/
|
|
1648
1717
|
responsive = true;
|
|
1718
|
+
/**
|
|
1719
|
+
* Toggles the Pager adaptiveness functionality ([see example](slug:adaptive_mode_pager)).
|
|
1720
|
+
*
|
|
1721
|
+
* @default 'auto'
|
|
1722
|
+
*/
|
|
1723
|
+
adaptiveMode = 'auto';
|
|
1649
1724
|
/**
|
|
1650
1725
|
* Fires when the current page of the Pager is changed ([see example](slug:overview_pager)).
|
|
1651
1726
|
* You have to handle the event yourself and page the data.
|
|
@@ -1657,7 +1732,22 @@ class PagerComponent {
|
|
|
1657
1732
|
* If the event is prevented, the page size will remain unchanged ([see example]({% slug pager_events %})).
|
|
1658
1733
|
*/
|
|
1659
1734
|
pageSizeChange = new EventEmitter();
|
|
1735
|
+
/**
|
|
1736
|
+
* @hidden
|
|
1737
|
+
*/
|
|
1738
|
+
pagerInputVisibilityChange = new EventEmitter();
|
|
1739
|
+
/**
|
|
1740
|
+
* @hidden
|
|
1741
|
+
*/
|
|
1742
|
+
pageTextVisibilityChange = new EventEmitter();
|
|
1743
|
+
/**
|
|
1744
|
+
* @hidden
|
|
1745
|
+
*/
|
|
1746
|
+
itemsTextVisibilityChange = new EventEmitter();
|
|
1660
1747
|
pagerClass = true;
|
|
1748
|
+
get responsiveClass() {
|
|
1749
|
+
return this.responsive;
|
|
1750
|
+
}
|
|
1661
1751
|
widgetRole = 'application';
|
|
1662
1752
|
roleDescription = 'pager';
|
|
1663
1753
|
keyShortcuts = 'Enter ArrowRight ArrowLeft';
|
|
@@ -1689,19 +1779,76 @@ class PagerComponent {
|
|
|
1689
1779
|
context.currentPage = this.currentPage;
|
|
1690
1780
|
return context;
|
|
1691
1781
|
}
|
|
1782
|
+
/**
|
|
1783
|
+
* @hidden
|
|
1784
|
+
*/
|
|
1785
|
+
get showPageText() {
|
|
1786
|
+
return this._showPageText;
|
|
1787
|
+
}
|
|
1788
|
+
set showPageText(value) {
|
|
1789
|
+
this._showPageText = value;
|
|
1790
|
+
this.pagerInputComponent && (this.pagerInputComponent.showPageText = value);
|
|
1791
|
+
this.pageTextVisibilityChange.emit(value);
|
|
1792
|
+
}
|
|
1793
|
+
/**
|
|
1794
|
+
* @hidden
|
|
1795
|
+
*/
|
|
1796
|
+
get showItemsText() {
|
|
1797
|
+
return this._showItemsText;
|
|
1798
|
+
}
|
|
1799
|
+
set showItemsText(value) {
|
|
1800
|
+
this._showItemsText = value;
|
|
1801
|
+
this.pageSizesComponent && (this.pageSizesComponent.showItemsText = value);
|
|
1802
|
+
this.itemsTextVisibilityChange.emit(value);
|
|
1803
|
+
}
|
|
1804
|
+
/**
|
|
1805
|
+
* @hidden
|
|
1806
|
+
*/
|
|
1807
|
+
get showInput() {
|
|
1808
|
+
return this._showInput;
|
|
1809
|
+
}
|
|
1810
|
+
set showInput(value) {
|
|
1811
|
+
this._showInput = value;
|
|
1812
|
+
this.pagerInputVisibilityChange.emit(value);
|
|
1813
|
+
}
|
|
1814
|
+
/**
|
|
1815
|
+
* @hidden
|
|
1816
|
+
*/
|
|
1817
|
+
initialized = false;
|
|
1692
1818
|
subscriptions = new Subscription();
|
|
1693
1819
|
_templateContext = {};
|
|
1694
1820
|
_pageSizeValues = DEFAULT_PAGE_SIZE_VALUES;
|
|
1695
1821
|
direction;
|
|
1696
1822
|
isInnerNavigationEnabled = false;
|
|
1697
|
-
_navigable =
|
|
1823
|
+
_navigable = true;
|
|
1698
1824
|
_size = DEFAULT_SIZE;
|
|
1699
|
-
|
|
1825
|
+
_showInput = true;
|
|
1826
|
+
_showPageText = true;
|
|
1827
|
+
_showItemsText = true;
|
|
1828
|
+
/**
|
|
1829
|
+
* Stores the measurements of various Pager elements.
|
|
1830
|
+
* These dimensions are used for responsive layout calculations.
|
|
1831
|
+
* @hidden
|
|
1832
|
+
*/
|
|
1833
|
+
pagerDimensions = {
|
|
1834
|
+
padding: 0,
|
|
1835
|
+
numericButtonsWidth: 0,
|
|
1836
|
+
inputWidth: 0,
|
|
1837
|
+
pageSizesWidth: 0,
|
|
1838
|
+
sizesTextWidth: 0,
|
|
1839
|
+
pageTextWidth: 0,
|
|
1840
|
+
infoTextWidth: 0,
|
|
1841
|
+
gapNumbersSizes: 0,
|
|
1842
|
+
gapSizesInfo: 0,
|
|
1843
|
+
width: 0
|
|
1844
|
+
};
|
|
1845
|
+
constructor(pagerContext, element, localization, renderer, ngZone, cdr, navigationService) {
|
|
1700
1846
|
this.pagerContext = pagerContext;
|
|
1701
1847
|
this.element = element;
|
|
1702
1848
|
this.localization = localization;
|
|
1703
1849
|
this.renderer = renderer;
|
|
1704
1850
|
this.ngZone = ngZone;
|
|
1851
|
+
this.cdr = cdr;
|
|
1705
1852
|
this.navigationService = navigationService;
|
|
1706
1853
|
validatePackage(packageMetadata);
|
|
1707
1854
|
this.direction = localization.rtl ? 'rtl' : 'ltr';
|
|
@@ -1718,6 +1865,8 @@ class PagerComponent {
|
|
|
1718
1865
|
this.subscriptions.add(this.pagerContext.pageSizeChange.subscribe(this.changePageSize.bind(this)));
|
|
1719
1866
|
this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {
|
|
1720
1867
|
this.direction = rtl ? 'rtl' : 'ltr';
|
|
1868
|
+
this.measureAllTextWidths();
|
|
1869
|
+
this.responsive && this.resizeHandler();
|
|
1721
1870
|
}));
|
|
1722
1871
|
this.subscriptions.add(this.navigationService.innerNavigationChange.subscribe(this.innerNavigationChange.bind(this)));
|
|
1723
1872
|
if (this.navigable) {
|
|
@@ -1727,25 +1876,67 @@ class PagerComponent {
|
|
|
1727
1876
|
});
|
|
1728
1877
|
}
|
|
1729
1878
|
}
|
|
1879
|
+
get maxItems() {
|
|
1880
|
+
return Math.min(this.currentPage * this.pageSize, this.total);
|
|
1881
|
+
}
|
|
1730
1882
|
ngAfterViewInit() {
|
|
1731
|
-
this.responsive && this.resizeHandler();
|
|
1732
1883
|
this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
|
|
1733
1884
|
this.subscriptions.add(this.template.changes.subscribe(() => {
|
|
1734
|
-
this.
|
|
1885
|
+
this.measureAllTextWidths();
|
|
1886
|
+
this.responsive && this.resizeHandler(false);
|
|
1735
1887
|
}));
|
|
1736
1888
|
this.handleClasses(this.size, 'size');
|
|
1889
|
+
this.measureAllTextWidths();
|
|
1890
|
+
!this.numericButtons && (this.pagerDimensions.numericButtonsWidth = this.element.nativeElement.querySelector('.k-pager-numbers')?.offsetWidth ?? 0);
|
|
1891
|
+
!this.pagerInput && (this.pagerDimensions.inputWidth = this.element.nativeElement.querySelector('.k-pager-input')?.offsetWidth ?? 0);
|
|
1892
|
+
!this.pageSizes && (this.pagerDimensions.pageSizesWidth = this.element.nativeElement.querySelector('.k-pager-sizes')?.offsetWidth ?? 0);
|
|
1893
|
+
const padding = calculatePadding(this.element.nativeElement);
|
|
1894
|
+
this.pagerDimensions.padding = padding.padding;
|
|
1895
|
+
this.pagerDimensions.gapNumbersSizes = padding.gapNumbersSizes;
|
|
1896
|
+
this.pagerDimensions.gapSizesInfo = padding.gapSizesInfo;
|
|
1897
|
+
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
1898
|
+
if (this.type !== 'input') {
|
|
1899
|
+
this.showInput = false;
|
|
1900
|
+
}
|
|
1901
|
+
});
|
|
1902
|
+
if (!isDocumentAvailable()) {
|
|
1903
|
+
this.initialized = true;
|
|
1904
|
+
return;
|
|
1905
|
+
}
|
|
1906
|
+
this.responsive && this.resizeHandler();
|
|
1907
|
+
setTimeout(() => {
|
|
1908
|
+
this.initialized = true;
|
|
1909
|
+
this.cdr.markForCheck();
|
|
1910
|
+
}, 0);
|
|
1737
1911
|
}
|
|
1738
1912
|
ngOnChanges(changes) {
|
|
1739
1913
|
if (anyChanged(["pageSize", "skip", "total"], changes, false)) {
|
|
1914
|
+
const previousButtonCount = Math.min(this.buttonCount, (changes['total']?.previousValue || this.total) / (changes['pageSize']?.previousValue || this.pageSize));
|
|
1740
1915
|
this.pagerContext.notifyChanges({
|
|
1741
1916
|
pageSize: this.pageSize,
|
|
1742
1917
|
skip: this.skip,
|
|
1743
1918
|
total: this.total
|
|
1744
1919
|
});
|
|
1920
|
+
this.pagerDimensions.numericButtonsWidth = (this.pagerDimensions.numericButtonsWidth * Math.min(this.buttonCount, this.total / this.pageSize)) / previousButtonCount;
|
|
1745
1921
|
this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
|
|
1922
|
+
this.responsive && this.resizeHandler(false);
|
|
1746
1923
|
}
|
|
1747
|
-
if (
|
|
1748
|
-
this.responsive && this.resizeHandler();
|
|
1924
|
+
if (anyChanged(["pageSizeValues", "previousNext", "buttonCount"], changes, true)) {
|
|
1925
|
+
this.responsive && this.resizeHandler(false);
|
|
1926
|
+
}
|
|
1927
|
+
if (isChanged('responsive', changes, true)) {
|
|
1928
|
+
if (changes['responsive'].currentValue && !changes['responsive'].previousValue) {
|
|
1929
|
+
this.measureAllTextWidths();
|
|
1930
|
+
this.resizeHandler(false);
|
|
1931
|
+
}
|
|
1932
|
+
if (!this.responsive) {
|
|
1933
|
+
this.showInput = this.type === 'input';
|
|
1934
|
+
this.showElementsInOrder(this.element.nativeElement.offsetWidth, this.pagerDimensions.width);
|
|
1935
|
+
}
|
|
1936
|
+
}
|
|
1937
|
+
if (isChanged('type', changes, true)) {
|
|
1938
|
+
this.showNumericButtonsResponsive();
|
|
1939
|
+
this.responsive && this.resizeHandler(false);
|
|
1749
1940
|
}
|
|
1750
1941
|
}
|
|
1751
1942
|
ngOnDestroy() {
|
|
@@ -1783,44 +1974,47 @@ class PagerComponent {
|
|
|
1783
1974
|
/**
|
|
1784
1975
|
* @hidden
|
|
1785
1976
|
*/
|
|
1786
|
-
resizeHandler = () => {
|
|
1977
|
+
resizeHandler = (compareWidth = true) => {
|
|
1787
1978
|
if (this.template?.first && !this.responsive) {
|
|
1788
1979
|
return;
|
|
1789
1980
|
}
|
|
1790
|
-
|
|
1981
|
+
if (!isDocumentAvailable() || !this.element?.nativeElement) {
|
|
1982
|
+
this.initialized = true;
|
|
1983
|
+
return;
|
|
1984
|
+
}
|
|
1985
|
+
let pagerWidth = this.element.nativeElement.offsetWidth;
|
|
1986
|
+
if (pagerWidth <= 0) {
|
|
1987
|
+
return;
|
|
1988
|
+
}
|
|
1989
|
+
if (compareWidth && pagerWidth === this.pagerDimensions.width) {
|
|
1990
|
+
return;
|
|
1991
|
+
}
|
|
1992
|
+
else {
|
|
1993
|
+
this.pagerDimensions.width = pagerWidth;
|
|
1994
|
+
}
|
|
1791
1995
|
this.ngZone.runOutsideAngular(() => {
|
|
1792
1996
|
setTimeout(() => {
|
|
1793
|
-
|
|
1997
|
+
if (this.template?.first && !this.responsive) {
|
|
1998
|
+
return;
|
|
1999
|
+
}
|
|
2000
|
+
const numericButtonsWrapperElement = this.element.nativeElement.querySelector('.k-pager-numbers-wrap');
|
|
1794
2001
|
const pagerInfoElement = this.element.nativeElement.querySelector('.k-pager-info');
|
|
1795
2002
|
const pagerPageSizes = this.element.nativeElement.querySelector('.k-pager-sizes');
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
|
|
1800
|
-
this.renderer.removeClass(selectElement, 'k-hidden');
|
|
1801
|
-
this.renderer.addClass(numbersElement, 'k-hidden');
|
|
1802
|
-
}
|
|
1803
|
-
else {
|
|
1804
|
-
this.renderer.addClass(selectElement, 'k-hidden');
|
|
1805
|
-
this.renderer.removeClass(numbersElement, 'k-hidden');
|
|
1806
|
-
}
|
|
2003
|
+
let elementsWidths = numericButtonsWrapperElement?.offsetWidth + (pagerPageSizes?.offsetWidth || 0) + (pagerInfoElement?.offsetWidth > 0 ? Math.min(this.pagerDimensions.infoTextWidth) : 0);
|
|
2004
|
+
if (this.isElementVisible(pagerInfoElement)) {
|
|
2005
|
+
elementsWidths += this.pagerDimensions.gapSizesInfo;
|
|
1807
2006
|
}
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
}
|
|
1812
|
-
else {
|
|
1813
|
-
this.renderer.removeClass(pagerInfoElement, 'k-hidden');
|
|
1814
|
-
}
|
|
2007
|
+
pagerWidth -= this.pagerDimensions.padding;
|
|
2008
|
+
if (this.isElementVisible(pagerPageSizes)) {
|
|
2009
|
+
pagerWidth -= this.pagerDimensions.gapNumbersSizes;
|
|
1815
2010
|
}
|
|
1816
|
-
if (
|
|
1817
|
-
|
|
1818
|
-
this.renderer.addClass(pagerPageSizes, 'k-hidden');
|
|
1819
|
-
}
|
|
1820
|
-
else {
|
|
1821
|
-
this.renderer.removeClass(pagerPageSizes, 'k-hidden');
|
|
1822
|
-
}
|
|
2011
|
+
if (Math.ceil(elementsWidths) <= pagerWidth) {
|
|
2012
|
+
this.showElementsInOrder(pagerWidth, elementsWidths);
|
|
1823
2013
|
}
|
|
2014
|
+
else {
|
|
2015
|
+
this.hideElementsInOrder(pagerWidth, elementsWidths);
|
|
2016
|
+
}
|
|
2017
|
+
!this.initialized && this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialized = true);
|
|
1824
2018
|
});
|
|
1825
2019
|
});
|
|
1826
2020
|
};
|
|
@@ -1898,8 +2092,183 @@ class PagerComponent {
|
|
|
1898
2092
|
this.renderer.addClass(elem, classes.toAdd);
|
|
1899
2093
|
}
|
|
1900
2094
|
}
|
|
1901
|
-
|
|
1902
|
-
|
|
2095
|
+
showElementsInOrder(availableWidth, currentWidth) {
|
|
2096
|
+
const el = this.element.nativeElement;
|
|
2097
|
+
const numericButtonsElement = el.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
|
|
2098
|
+
const pagerInfoElement = el.querySelector('.k-pager-info');
|
|
2099
|
+
const pagerPageSizes = el.querySelector('.k-pager-sizes');
|
|
2100
|
+
const pagerSizesDropDown = el.querySelector('.k-pager-sizes .k-dropdownlist');
|
|
2101
|
+
const checkOverflow = this.responsive;
|
|
2102
|
+
if (this.type === 'input' && this.isElementVisible(pagerInfoElement) || this.isElementVisible(numericButtonsElement)) {
|
|
2103
|
+
return;
|
|
2104
|
+
}
|
|
2105
|
+
if (this.showPageSizes && !this.isElementVisible(pagerPageSizes)) {
|
|
2106
|
+
const addDropDownWidth = currentWidth + this.pagerDimensions.pageSizesWidth + this.pagerDimensions.gapNumbersSizes - this.pagerDimensions.sizesTextWidth;
|
|
2107
|
+
if (checkOverflow && addDropDownWidth > availableWidth)
|
|
2108
|
+
return;
|
|
2109
|
+
this.ngZone.run(() => this.showItemsText = false);
|
|
2110
|
+
this.showElement(pagerPageSizes);
|
|
2111
|
+
currentWidth = addDropDownWidth;
|
|
2112
|
+
if (checkOverflow && currentWidth >= availableWidth)
|
|
2113
|
+
return;
|
|
2114
|
+
}
|
|
2115
|
+
if (this.showPageSizes && this.isElementVisible(pagerPageSizes) && !this.showItemsText) {
|
|
2116
|
+
const addPageSizesText = currentWidth - pagerSizesDropDown?.offsetWidth + this.pagerDimensions.pageSizesWidth;
|
|
2117
|
+
if (checkOverflow && addPageSizesText > availableWidth)
|
|
2118
|
+
return;
|
|
2119
|
+
this.ngZone.run(() => this.showItemsText = true);
|
|
2120
|
+
currentWidth = addPageSizesText;
|
|
2121
|
+
if (checkOverflow && currentWidth >= availableWidth)
|
|
2122
|
+
return;
|
|
2123
|
+
}
|
|
2124
|
+
if (!this.showPageText && (!this.showPageSizes || (this.isElementVisible(pagerPageSizes) && this.showItemsText))) {
|
|
2125
|
+
const addPageText = currentWidth + this.pagerDimensions.pageTextWidth;
|
|
2126
|
+
if (checkOverflow && addPageText > availableWidth)
|
|
2127
|
+
return;
|
|
2128
|
+
this.ngZone.run(() => this.showPageText = true);
|
|
2129
|
+
currentWidth = addPageText;
|
|
2130
|
+
if (checkOverflow && currentWidth >= availableWidth)
|
|
2131
|
+
return;
|
|
2132
|
+
}
|
|
2133
|
+
if (this.info && !this.isElementVisible(pagerInfoElement) && (!this.showPageSizes || (this.isElementVisible(pagerPageSizes) && this.showPageText))) {
|
|
2134
|
+
const addInfoText = currentWidth + this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo;
|
|
2135
|
+
if (checkOverflow && addInfoText > availableWidth)
|
|
2136
|
+
return;
|
|
2137
|
+
this.ngZone.run(() => {
|
|
2138
|
+
this.showElement(pagerInfoElement);
|
|
2139
|
+
});
|
|
2140
|
+
currentWidth = addInfoText;
|
|
2141
|
+
}
|
|
2142
|
+
if (this.type === 'numeric' && (!this.info || this.isElementVisible(pagerInfoElement))) {
|
|
2143
|
+
const addNumericButtons = currentWidth - this.pagerDimensions.inputWidth + this.pagerDimensions.numericButtonsWidth;
|
|
2144
|
+
if (checkOverflow && addNumericButtons > availableWidth)
|
|
2145
|
+
return;
|
|
2146
|
+
this.showElement(numericButtonsElement);
|
|
2147
|
+
this.ngZone.run(() => {
|
|
2148
|
+
this.showInput = false;
|
|
2149
|
+
this.cdr.markForCheck();
|
|
2150
|
+
});
|
|
2151
|
+
}
|
|
2152
|
+
}
|
|
2153
|
+
hideElementsInOrder(availableWidth, currentWidth) {
|
|
2154
|
+
const el = this.element.nativeElement;
|
|
2155
|
+
const numericButtonsElement = el.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
|
|
2156
|
+
const pagerInfoElement = el.querySelector('.k-pager-info');
|
|
2157
|
+
const pagerPageSizes = el.querySelector('.k-pager-sizes');
|
|
2158
|
+
const pagerSizesDropDown = el.querySelector('.k-pager-sizes .k-dropdownlist');
|
|
2159
|
+
if (this.isElementVisible(numericButtonsElement)) {
|
|
2160
|
+
this.hideElement(numericButtonsElement);
|
|
2161
|
+
this.ngZone.run(() => this.showInput = true);
|
|
2162
|
+
currentWidth += this.pagerDimensions.inputWidth - this.pagerDimensions.numericButtonsWidth;
|
|
2163
|
+
if (currentWidth <= availableWidth)
|
|
2164
|
+
return;
|
|
2165
|
+
}
|
|
2166
|
+
if (this.isElementVisible(pagerInfoElement)) {
|
|
2167
|
+
this.hideElement(pagerInfoElement);
|
|
2168
|
+
currentWidth -= (this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo);
|
|
2169
|
+
if (currentWidth <= availableWidth)
|
|
2170
|
+
return;
|
|
2171
|
+
}
|
|
2172
|
+
if (this.showPageText) {
|
|
2173
|
+
this.ngZone.run(() => this.showPageText = false);
|
|
2174
|
+
currentWidth = currentWidth - this.pagerDimensions.pageTextWidth;
|
|
2175
|
+
if (currentWidth <= availableWidth)
|
|
2176
|
+
return;
|
|
2177
|
+
}
|
|
2178
|
+
if (this.showPageSizes && this.isElementVisible(pagerPageSizes) && this.showItemsText) {
|
|
2179
|
+
this.ngZone.run(() => this.showItemsText = false);
|
|
2180
|
+
currentWidth = currentWidth - this.pagerDimensions.pageSizesWidth + pagerSizesDropDown?.offsetWidth;
|
|
2181
|
+
if (currentWidth <= availableWidth)
|
|
2182
|
+
return;
|
|
2183
|
+
}
|
|
2184
|
+
this.hideElement(pagerPageSizes);
|
|
2185
|
+
}
|
|
2186
|
+
isElementVisible(element) {
|
|
2187
|
+
return element && !element?.classList.contains('k-hidden');
|
|
2188
|
+
}
|
|
2189
|
+
hideElement(element) {
|
|
2190
|
+
if (element) {
|
|
2191
|
+
this.renderer.addClass(element, 'k-hidden');
|
|
2192
|
+
}
|
|
2193
|
+
}
|
|
2194
|
+
showElement(element) {
|
|
2195
|
+
if (element) {
|
|
2196
|
+
this.renderer.removeClass(element, 'k-hidden');
|
|
2197
|
+
}
|
|
2198
|
+
}
|
|
2199
|
+
measureAllTextWidths() {
|
|
2200
|
+
if (!isDocumentAvailable()) {
|
|
2201
|
+
return;
|
|
2202
|
+
}
|
|
2203
|
+
const el = this.element.nativeElement;
|
|
2204
|
+
const existingInfo = el.querySelector('.k-pager-info');
|
|
2205
|
+
const existingInput = el.querySelector('.k-pager-input');
|
|
2206
|
+
const existingSizes = el.querySelector('.k-pager-sizes');
|
|
2207
|
+
// create a single measurement container
|
|
2208
|
+
const measureContainer = this.renderer.createElement('div');
|
|
2209
|
+
positionOffScreen(this.renderer, measureContainer);
|
|
2210
|
+
this.renderer.appendChild(this.element.nativeElement, measureContainer);
|
|
2211
|
+
const infoSpan = createMeasurementSpan(this.renderer, measureContainer, 'k-pager-info');
|
|
2212
|
+
const pageSpan = createMeasurementSpan(this.renderer, measureContainer, 'k-pager-input');
|
|
2213
|
+
const sizesSpan = createMeasurementSpan(this.renderer, measureContainer, 'k-pager-sizes');
|
|
2214
|
+
const infoText = `${this.currentPage} - ${this.maxItems} ${this.localization.get('of')} ${this.total} ${this.localization.get('items')}`;
|
|
2215
|
+
this.renderer.setProperty(infoSpan, 'textContent', infoText);
|
|
2216
|
+
this.renderer.setProperty(pageSpan, 'textContent', this.localization.get('page'));
|
|
2217
|
+
this.renderer.setProperty(sizesSpan, 'textContent', this.localization.get('itemsPerPage'));
|
|
2218
|
+
// copy computed styles if available
|
|
2219
|
+
if (existingInfo)
|
|
2220
|
+
copyComputedStyles(this.renderer, existingInfo, infoSpan);
|
|
2221
|
+
if (existingInput)
|
|
2222
|
+
copyComputedStyles(this.renderer, existingInput, pageSpan);
|
|
2223
|
+
if (existingSizes)
|
|
2224
|
+
copyComputedStyles(this.renderer, existingSizes, sizesSpan);
|
|
2225
|
+
// force a reflow to ensure measurements are accurate
|
|
2226
|
+
measureContainer.getBoundingClientRect();
|
|
2227
|
+
this.pagerDimensions.infoTextWidth = infoSpan?.offsetWidth;
|
|
2228
|
+
if (this.pagerDimensions.inputWidth && this.pagerDimensions.pageTextWidth) {
|
|
2229
|
+
this.pagerDimensions.inputWidth = this.pagerDimensions.inputWidth - this.pagerDimensions.pageTextWidth + pageSpan.offsetWidth;
|
|
2230
|
+
}
|
|
2231
|
+
this.pagerDimensions.pageTextWidth = pageSpan?.offsetWidth;
|
|
2232
|
+
if (this.pagerDimensions.pageSizesWidth && this.pagerDimensions.sizesTextWidth) {
|
|
2233
|
+
this.pagerDimensions.pageSizesWidth = this.pagerDimensions.pageSizesWidth - this.pagerDimensions.sizesTextWidth + sizesSpan.offsetWidth;
|
|
2234
|
+
}
|
|
2235
|
+
this.pagerDimensions.sizesTextWidth = sizesSpan?.offsetWidth;
|
|
2236
|
+
this.renderer.removeChild(this.element.nativeElement, measureContainer);
|
|
2237
|
+
}
|
|
2238
|
+
showNumericButtonsResponsive() {
|
|
2239
|
+
if (!isDocumentAvailable() || !this.element?.nativeElement) {
|
|
2240
|
+
return;
|
|
2241
|
+
}
|
|
2242
|
+
const numericButtonsElement = this.element.nativeElement.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
|
|
2243
|
+
const hasNumericButtons = this.numericButtons || numericButtonsElement;
|
|
2244
|
+
const hasInput = this.pagerInput || this.element.nativeElement.querySelector('.k-pager-input');
|
|
2245
|
+
if (!this.responsive || (!hasNumericButtons && !hasInput)) {
|
|
2246
|
+
this.showInput = this.type === 'input';
|
|
2247
|
+
return;
|
|
2248
|
+
}
|
|
2249
|
+
const pagerInfoElement = this.element.nativeElement.querySelector('.k-pager-info');
|
|
2250
|
+
if (this.type === 'input' || !this.isElementVisible(pagerInfoElement)) {
|
|
2251
|
+
this.showInput = true;
|
|
2252
|
+
return;
|
|
2253
|
+
}
|
|
2254
|
+
if (this.isElementVisible(numericButtonsElement)) {
|
|
2255
|
+
this.showInput = false;
|
|
2256
|
+
return;
|
|
2257
|
+
}
|
|
2258
|
+
const pagerWidth = this.element.nativeElement?.offsetWidth;
|
|
2259
|
+
const numericButtonsWrapperElement = this.element.nativeElement.querySelector('.k-pager-numbers-wrap');
|
|
2260
|
+
const elementsWidths = numericButtonsWrapperElement?.offsetWidth + this.pagerDimensions.pageSizesWidth + this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo;
|
|
2261
|
+
const hasAvailableWidth = pagerWidth > elementsWidths - this.pagerDimensions.inputWidth + this.pagerDimensions.numericButtonsWidth;
|
|
2262
|
+
this.showInput = !hasAvailableWidth;
|
|
2263
|
+
}
|
|
2264
|
+
get showPageSizes() {
|
|
2265
|
+
if (typeof this.pageSizeValues === 'boolean') {
|
|
2266
|
+
return this.pageSizeValues;
|
|
2267
|
+
}
|
|
2268
|
+
return this.pageSizeValues?.length > 0;
|
|
2269
|
+
}
|
|
2270
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, deps: [{ token: PagerContextService, optional: true, skipSelf: true }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: PagerNavigationService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
2271
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerComponent, isStandalone: true, selector: "kendo-datapager, kendo-pager", inputs: { externalTemplate: "externalTemplate", total: "total", skip: "skip", pageSize: "pageSize", buttonCount: "buttonCount", info: "info", type: "type", pageSizeValues: "pageSizeValues", previousNext: "previousNext", navigable: "navigable", size: "size", responsive: "responsive", adaptiveMode: "adaptiveMode" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange", pagerInputVisibilityChange: "pagerInputVisibilityChange", pageTextVisibilityChange: "pageTextVisibilityChange", itemsTextVisibilityChange: "itemsTextVisibilityChange" }, host: { listeners: { "focusin": "focusHandler($event)" }, properties: { "class.k-pager": "this.pagerClass", "class.k-pager-responsive": "this.responsiveClass", "attr.role": "this.widgetRole", "attr.aria-roledescription": "this.roleDescription", "attr.aria-keyshortcuts": "this.keyShortcuts", "attr.tabindex": "this.hostTabindex", "attr.dir": "this.dir" } }, providers: [
|
|
1903
2272
|
LocalizationService,
|
|
1904
2273
|
PagerContextService,
|
|
1905
2274
|
PagerNavigationService,
|
|
@@ -1907,7 +2276,7 @@ class PagerComponent {
|
|
|
1907
2276
|
provide: L10N_PREFIX,
|
|
1908
2277
|
useValue: 'kendo.pager'
|
|
1909
2278
|
}
|
|
1910
|
-
], queries: [{ propertyName: "template", predicate: PagerTemplateDirective }], exportAs: ["kendoDataPager", "kendoPager"], usesOnChanges: true, ngImport: i0, template: `
|
|
2279
|
+
], queries: [{ propertyName: "template", predicate: PagerTemplateDirective }], viewQueries: [{ propertyName: "numericButtons", first: true, predicate: PagerNumericButtonsComponent, descendants: true, read: ElementRef }, { propertyName: "pagerInput", first: true, predicate: PagerInputComponent, descendants: true, read: ElementRef }, { propertyName: "pagerInputComponent", first: true, predicate: PagerInputComponent, descendants: true }, { propertyName: "pageSizes", first: true, predicate: PagerPageSizesComponent, descendants: true, read: ElementRef }, { propertyName: "pageSizesComponent", first: true, predicate: PagerPageSizesComponent, descendants: true }], exportAs: ["kendoDataPager", "kendoPager"], usesOnChanges: true, ngImport: i0, template: `
|
|
1911
2280
|
<ng-container kendoPagerLocalizedMessages
|
|
1912
2281
|
i18n-ariaLabel="kendo.pager.ariaLabel|The value of the aria-label attribute of the Pager"
|
|
1913
2282
|
ariaLabel="{{ 'Page navigation, page {currentPage} of {totalPages}' }}"
|
|
@@ -1952,25 +2321,27 @@ class PagerComponent {
|
|
|
1952
2321
|
[ngTemplateOutletContext]="templateContext">
|
|
1953
2322
|
</ng-container>
|
|
1954
2323
|
<ng-template #default>
|
|
1955
|
-
<div class="k-pager-numbers-wrap">
|
|
2324
|
+
<div class="k-pager-numbers-wrap" [ngStyle]="{opacity: initialized ? null : '0'}">
|
|
1956
2325
|
<kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
|
|
1957
2326
|
<kendo-pager-numeric-buttons
|
|
1958
2327
|
[size]="size"
|
|
1959
2328
|
*ngIf="type === 'numeric' && buttonCount > 0"
|
|
1960
2329
|
[buttonCount]="buttonCount">
|
|
1961
2330
|
</kendo-pager-numeric-buttons>
|
|
1962
|
-
<kendo-pager-input [size]="size" *ngIf="
|
|
2331
|
+
<kendo-pager-input [size]="size" *ngIf="showInput"></kendo-pager-input>
|
|
1963
2332
|
<kendo-pager-next-buttons [size]="size" *ngIf="previousNext"></kendo-pager-next-buttons>
|
|
1964
2333
|
</div>
|
|
1965
2334
|
<kendo-pager-page-sizes *ngIf="_pageSizeValues.length"
|
|
2335
|
+
[ngStyle]="{opacity: initialized ? null : '0'}"
|
|
1966
2336
|
[size]="size"
|
|
1967
|
-
[pageSizes]="_pageSizeValues"
|
|
2337
|
+
[pageSizes]="_pageSizeValues"
|
|
2338
|
+
[adaptiveMode]="adaptiveMode">
|
|
1968
2339
|
</kendo-pager-page-sizes>
|
|
1969
|
-
<kendo-pager-info *ngIf="info">
|
|
2340
|
+
<kendo-pager-info *ngIf="info" [ngStyle]="{opacity: initialized ? null : '0'}">
|
|
1970
2341
|
</kendo-pager-info>
|
|
1971
2342
|
</ng-template>
|
|
1972
2343
|
<kendo-resize-sensor *ngIf="responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
|
|
1973
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoPagerLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "component", type: PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
|
|
2344
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoPagerLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "component", type: PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["showPageText", "size"] }, { kind: "component", type: PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["showItemsText", "pageSizes", "size", "adaptiveMode"] }, { kind: "component", type: PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
1974
2345
|
}
|
|
1975
2346
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, decorators: [{
|
|
1976
2347
|
type: Component,
|
|
@@ -2031,39 +2402,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2031
2402
|
[ngTemplateOutletContext]="templateContext">
|
|
2032
2403
|
</ng-container>
|
|
2033
2404
|
<ng-template #default>
|
|
2034
|
-
<div class="k-pager-numbers-wrap">
|
|
2405
|
+
<div class="k-pager-numbers-wrap" [ngStyle]="{opacity: initialized ? null : '0'}">
|
|
2035
2406
|
<kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
|
|
2036
2407
|
<kendo-pager-numeric-buttons
|
|
2037
2408
|
[size]="size"
|
|
2038
2409
|
*ngIf="type === 'numeric' && buttonCount > 0"
|
|
2039
2410
|
[buttonCount]="buttonCount">
|
|
2040
2411
|
</kendo-pager-numeric-buttons>
|
|
2041
|
-
<kendo-pager-input [size]="size" *ngIf="
|
|
2412
|
+
<kendo-pager-input [size]="size" *ngIf="showInput"></kendo-pager-input>
|
|
2042
2413
|
<kendo-pager-next-buttons [size]="size" *ngIf="previousNext"></kendo-pager-next-buttons>
|
|
2043
2414
|
</div>
|
|
2044
2415
|
<kendo-pager-page-sizes *ngIf="_pageSizeValues.length"
|
|
2416
|
+
[ngStyle]="{opacity: initialized ? null : '0'}"
|
|
2045
2417
|
[size]="size"
|
|
2046
|
-
[pageSizes]="_pageSizeValues"
|
|
2418
|
+
[pageSizes]="_pageSizeValues"
|
|
2419
|
+
[adaptiveMode]="adaptiveMode">
|
|
2047
2420
|
</kendo-pager-page-sizes>
|
|
2048
|
-
<kendo-pager-info *ngIf="info">
|
|
2421
|
+
<kendo-pager-info *ngIf="info" [ngStyle]="{opacity: initialized ? null : '0'}">
|
|
2049
2422
|
</kendo-pager-info>
|
|
2050
2423
|
</ng-template>
|
|
2051
2424
|
<kendo-resize-sensor *ngIf="responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
|
|
2052
2425
|
`,
|
|
2053
2426
|
standalone: true,
|
|
2054
|
-
imports: [LocalizedMessagesDirective, NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerPageSizesComponent, PagerInfoComponent, ResizeSensorComponent]
|
|
2427
|
+
imports: [LocalizedMessagesDirective, NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerPageSizesComponent, PagerInfoComponent, ResizeSensorComponent, NgStyle]
|
|
2055
2428
|
}]
|
|
2056
2429
|
}], ctorParameters: function () { return [{ type: PagerContextService, decorators: [{
|
|
2057
2430
|
type: Optional
|
|
2058
2431
|
}, {
|
|
2059
2432
|
type: SkipSelf
|
|
2060
|
-
}] }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: PagerNavigationService, decorators: [{
|
|
2433
|
+
}] }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: PagerNavigationService, decorators: [{
|
|
2061
2434
|
type: Optional
|
|
2062
2435
|
}, {
|
|
2063
2436
|
type: SkipSelf
|
|
2064
2437
|
}] }]; }, propDecorators: { template: [{
|
|
2065
2438
|
type: ContentChildren,
|
|
2066
2439
|
args: [PagerTemplateDirective]
|
|
2440
|
+
}], numericButtons: [{
|
|
2441
|
+
type: ViewChild,
|
|
2442
|
+
args: [PagerNumericButtonsComponent, { read: ElementRef }]
|
|
2443
|
+
}], pagerInput: [{
|
|
2444
|
+
type: ViewChild,
|
|
2445
|
+
args: [PagerInputComponent, { read: ElementRef }]
|
|
2446
|
+
}], pagerInputComponent: [{
|
|
2447
|
+
type: ViewChild,
|
|
2448
|
+
args: [PagerInputComponent]
|
|
2449
|
+
}], pageSizes: [{
|
|
2450
|
+
type: ViewChild,
|
|
2451
|
+
args: [PagerPageSizesComponent, { read: ElementRef }]
|
|
2452
|
+
}], pageSizesComponent: [{
|
|
2453
|
+
type: ViewChild,
|
|
2454
|
+
args: [PagerPageSizesComponent]
|
|
2067
2455
|
}], externalTemplate: [{
|
|
2068
2456
|
type: Input
|
|
2069
2457
|
}], total: [{
|
|
@@ -2088,13 +2476,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2088
2476
|
type: Input
|
|
2089
2477
|
}], responsive: [{
|
|
2090
2478
|
type: Input
|
|
2479
|
+
}], adaptiveMode: [{
|
|
2480
|
+
type: Input
|
|
2091
2481
|
}], pageChange: [{
|
|
2092
2482
|
type: Output
|
|
2093
2483
|
}], pageSizeChange: [{
|
|
2094
2484
|
type: Output
|
|
2485
|
+
}], pagerInputVisibilityChange: [{
|
|
2486
|
+
type: Output
|
|
2487
|
+
}], pageTextVisibilityChange: [{
|
|
2488
|
+
type: Output
|
|
2489
|
+
}], itemsTextVisibilityChange: [{
|
|
2490
|
+
type: Output
|
|
2095
2491
|
}], pagerClass: [{
|
|
2096
2492
|
type: HostBinding,
|
|
2097
2493
|
args: ['class.k-pager']
|
|
2494
|
+
}], responsiveClass: [{
|
|
2495
|
+
type: HostBinding,
|
|
2496
|
+
args: ['class.k-pager-responsive']
|
|
2098
2497
|
}], widgetRole: [{
|
|
2099
2498
|
type: HostBinding,
|
|
2100
2499
|
args: ['attr.role']
|