@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.
@@ -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 = false;
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)="currentPage !== 1 ? changePage(0) : false">
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)="currentPage !== 1 ? changePage(currentPage-2) : false">
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)="currentPage !== 1 ? changePage(0) : false">
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)="currentPage !== 1 ? changePage(currentPage-2) : false">
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", "title", "subtitle", "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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
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: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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 });
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, NgClass, ButtonComponent]
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)="currentPage !== totalPages ? changePage(currentPage) : false">
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)="currentPage !== totalPages ? changePage(totalPages-1) : false">
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)="currentPage !== totalPages ? changePage(currentPage) : false">
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)="currentPage !== totalPages ? changePage(totalPages-1) : false">
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: 1745498618,
1534
- version: '19.0.0-develop.3',
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 disabled and the Pager content is accessible in the normal tab sequence.
1616
- * @default false
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
- * @hidden
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 = false;
1823
+ _navigable = true;
1698
1824
  _size = DEFAULT_SIZE;
1699
- constructor(pagerContext, element, localization, renderer, ngZone, navigationService) {
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.responsive && this.resizeHandler();
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 (changes['responsive']) {
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
- const width = this.element.nativeElement.offsetWidth;
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
- const numericButtonsElement = this.element.nativeElement.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
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
- if (numericButtonsElement) {
1797
- const selectElement = numericButtonsElement.querySelector('select');
1798
- const numbersElement = numericButtonsElement.querySelector('.k-pager-numbers');
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
- if (pagerInfoElement) {
1809
- if (width < RESPONSIVE_BREAKPOINT_LARGE) {
1810
- this.renderer.addClass(pagerInfoElement, 'k-hidden');
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 (pagerPageSizes) {
1817
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
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
- 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: PagerNavigationService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
1902
- 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" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, host: { listeners: { "focusin": "focusHandler($event)" }, properties: { "class.k-pager": "this.pagerClass", "attr.role": "this.widgetRole", "attr.aria-roledescription": "this.roleDescription", "attr.aria-keyshortcuts": "this.keyShortcuts", "attr.tabindex": "this.hostTabindex", "attr.dir": "this.dir" } }, providers: [
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="type === 'input'"></kendo-pager-input>
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="type === 'input'"></kendo-pager-input>
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']