@progress/kendo-angular-pager 19.0.0-develop.12 → 19.0.0-develop.13

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 { isFocusable, Keys, EventsOutsideAngularDirective, isDocumentAvailable, anyChanged, 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,6 +426,54 @@ 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
+ const computedStyle = window.getComputedStyle(element);
434
+ const paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;
435
+ const paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;
436
+ const padding = (paddingLeft + paddingRight) * 1.2; // account for rounding errors
437
+ const style = getComputedStyle(document.documentElement);
438
+ const gapNumbersSizes = 2 * (parseFloat(style.getPropertyValue('--kendo-spacing-3\\.5') || '0.875rem') * (parseFloat(getComputedStyle(document.documentElement).fontSize) || 16)); // convert rem to px
439
+ const gapSizesInfo = gapNumbersSizes;
440
+ return { padding, gapNumbersSizes, gapSizesInfo };
441
+ };
442
+ /**
443
+ * @hidden
444
+ */
445
+ const createMeasurementSpan = (renderer, container, className) => {
446
+ const span = renderer.createElement('span');
447
+ renderer.appendChild(container, span);
448
+ renderer.addClass(span, className);
449
+ return span;
450
+ };
451
+ /**
452
+ * @hidden
453
+ */
454
+ const copyComputedStyles = (renderer, source, destination) => {
455
+ const computedStyle = getComputedStyle(source);
456
+ const importantStyles = [
457
+ 'font-family', 'font-size', 'font-weight', 'font-style',
458
+ 'letter-spacing', 'text-transform', 'white-space', 'word-spacing',
459
+ 'padding-left', 'padding-right', 'margin-left', 'margin-right',
460
+ 'border-left-width', 'border-right-width', 'box-sizing'
461
+ ];
462
+ importantStyles.forEach(style => {
463
+ renderer.setStyle(destination, style, computedStyle.getPropertyValue(style));
464
+ });
465
+ };
466
+ /**
467
+ *
468
+ * @hidden
469
+ */
470
+ const positionOffScreen = (renderer, element) => {
471
+ renderer.setStyle(element, 'position', 'absolute');
472
+ renderer.setStyle(element, 'visibility', 'hidden');
473
+ renderer.setStyle(element, 'left', '-9999px');
474
+ renderer.setStyle(element, 'top', '-9999px');
475
+ renderer.setStyle(element, 'display', 'flex');
476
+ };
428
477
 
429
478
  /**
430
479
  * @hidden
@@ -639,6 +688,18 @@ class PagerPageSizesComponent extends PagerElementComponent {
639
688
  element;
640
689
  ngZone;
641
690
  dropDownList;
691
+ _showItemsText = true;
692
+ /**
693
+ * Controls the visibility of the page text label.
694
+ * @hidden
695
+ */
696
+ get showItemsText() {
697
+ return this._showItemsText;
698
+ }
699
+ set showItemsText(value) {
700
+ this._showItemsText = value;
701
+ this.cd.markForCheck();
702
+ }
642
703
  /**
643
704
  * The page sizes collection. Can contain numbers and [PageSizeItem]({% slug api_pager_pagesizeitem %}) objects.
644
705
  *
@@ -790,6 +851,12 @@ class PagerPageSizesComponent extends PagerElementComponent {
790
851
  * * `none`
791
852
  */
792
853
  size = DEFAULT_SIZE;
854
+ /**
855
+ * Toggles the adaptiveness of the internal DropDownList.
856
+ *
857
+ * @default 'auto'
858
+ */
859
+ adaptiveMode = 'auto';
793
860
  /**
794
861
  * @hidden
795
862
  *
@@ -836,7 +903,7 @@ class PagerPageSizesComponent extends PagerElementComponent {
836
903
  }
837
904
  }
838
905
  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 });
839
- 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: `
906
+ 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: `
840
907
  <kendo-dropdownlist kendoPagerFocusable
841
908
  #dropdownlist
842
909
  [size]="size"
@@ -846,9 +913,10 @@ class PagerPageSizesComponent extends PagerElementComponent {
846
913
  [valuePrimitive]="true"
847
914
  [value]="pageSize"
848
915
  (valueChange)="pageSizeChange($event, dropdownlist)"
916
+ [adaptiveMode]="adaptiveMode"
849
917
  [attr.aria-label]="textFor('itemsPerPage')"></kendo-dropdownlist>
850
- {{ textFor('itemsPerPage') }}
851
- `, 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
918
+ <ng-container *ngIf="showItemsText">{{ textFor('itemsPerPage') }}</ng-container>
919
+ `, 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 });
852
920
  }
853
921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
854
922
  type: Component,
@@ -865,19 +933,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
865
933
  [valuePrimitive]="true"
866
934
  [value]="pageSize"
867
935
  (valueChange)="pageSizeChange($event, dropdownlist)"
936
+ [adaptiveMode]="adaptiveMode"
868
937
  [attr.aria-label]="textFor('itemsPerPage')"></kendo-dropdownlist>
869
- {{ textFor('itemsPerPage') }}
938
+ <ng-container *ngIf="showItemsText">{{ textFor('itemsPerPage') }}</ng-container>
870
939
  `,
871
940
  standalone: true,
872
- imports: [DropDownListComponent, PagerFocusableDirective]
941
+ imports: [DropDownListComponent, PagerFocusableDirective, NgIf]
873
942
  }]
874
943
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { dropDownList: [{
875
944
  type: ViewChild,
876
945
  args: ['dropdownlist', { static: true }]
946
+ }], showItemsText: [{
947
+ type: Input
877
948
  }], pageSizes: [{
878
949
  type: Input
879
950
  }], size: [{
880
951
  type: Input
952
+ }], adaptiveMode: [{
953
+ type: Input
881
954
  }], classes: [{
882
955
  type: HostBinding,
883
956
  args: ["class.k-pager-sizes"]
@@ -1068,30 +1141,6 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
1068
1141
  }
1069
1142
  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 });
1070
1143
  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: `
1071
- <select kendoPagerFocusable #select
1072
- class="k-hidden k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
1073
- [attr.title]="pageChooserLabel"
1074
- [attr.aria-label]="pageChooserLabel"
1075
- (change)="onSelectChange($event)">
1076
- <option *ngIf="start > 1"
1077
- value="previousButtons"
1078
- [selected]="false"
1079
- [attr.aria-label]="pageLabel(start - 1)">...
1080
- </option>
1081
- <option *ngFor="let num of buttons"
1082
- [value]="num.toString()"
1083
- [selected]="num === currentPage"
1084
- [attr.aria-label]="pageLabel(num)"
1085
- [attr.aria-current]="currentPage === num ? 'page' : undefined"
1086
- [ngClass]="{'k-selected':currentPage === num}">
1087
- {{num}}
1088
- </option>
1089
- <option *ngIf="end < totalPages"
1090
- value="nextButtons"
1091
- [selected]="false"
1092
- [attr.aria-label]="pageLabel(end + 1)">...
1093
- </option>
1094
- </select>
1095
1144
  <div class="k-pager-numbers" #numbers>
1096
1145
  <button *ngIf="start > 1"
1097
1146
  type="button"
@@ -1131,7 +1180,7 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
1131
1180
  [attr.title]="pageLabel(end + 1)"
1132
1181
  (click)="changePage(end)">...</button>
1133
1182
  </div>
1134
- `, 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 });
1183
+ `, 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 });
1135
1184
  }
1136
1185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{
1137
1186
  type: Component,
@@ -1139,30 +1188,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1139
1188
  changeDetection: ChangeDetectionStrategy.OnPush,
1140
1189
  selector: 'kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons',
1141
1190
  template: `
1142
- <select kendoPagerFocusable #select
1143
- class="k-hidden k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
1144
- [attr.title]="pageChooserLabel"
1145
- [attr.aria-label]="pageChooserLabel"
1146
- (change)="onSelectChange($event)">
1147
- <option *ngIf="start > 1"
1148
- value="previousButtons"
1149
- [selected]="false"
1150
- [attr.aria-label]="pageLabel(start - 1)">...
1151
- </option>
1152
- <option *ngFor="let num of buttons"
1153
- [value]="num.toString()"
1154
- [selected]="num === currentPage"
1155
- [attr.aria-label]="pageLabel(num)"
1156
- [attr.aria-current]="currentPage === num ? 'page' : undefined"
1157
- [ngClass]="{'k-selected':currentPage === num}">
1158
- {{num}}
1159
- </option>
1160
- <option *ngIf="end < totalPages"
1161
- value="nextButtons"
1162
- [selected]="false"
1163
- [attr.aria-label]="pageLabel(end + 1)">...
1164
- </option>
1165
- </select>
1166
1191
  <div class="k-pager-numbers" #numbers>
1167
1192
  <button *ngIf="start > 1"
1168
1193
  type="button"
@@ -1204,7 +1229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1204
1229
  </div>
1205
1230
  `,
1206
1231
  standalone: true,
1207
- imports: [PagerFocusableDirective, NgIf, NgFor, NgClass, ButtonComponent]
1232
+ imports: [PagerFocusableDirective, NgIf, NgFor, ButtonComponent]
1208
1233
  }]
1209
1234
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: i0.Renderer2 }]; }, propDecorators: { selectElement: [{
1210
1235
  type: ViewChild,
@@ -1344,6 +1369,11 @@ class PagerInputComponent extends PagerElementComponent {
1344
1369
  zone;
1345
1370
  renderer;
1346
1371
  numericInput;
1372
+ /**
1373
+ * Controls the visibility of the page text label.
1374
+ * @hidden
1375
+ */
1376
+ showPageText = true;
1347
1377
  /**
1348
1378
  * Specifies the padding of the internal numeric input element.
1349
1379
  *
@@ -1417,9 +1447,9 @@ class PagerInputComponent extends PagerElementComponent {
1417
1447
  return this.totalPages !== 0;
1418
1448
  }
1419
1449
  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 });
1420
- 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: `
1450
+ 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: `
1421
1451
  <span class="k-pager-input">
1422
- {{textFor('page')}}
1452
+ <ng-container *ngIf="showPageText">{{textFor('page')}}</ng-container>
1423
1453
  <kendo-numerictextbox kendoPagerFocusable
1424
1454
  [spinners]="false"
1425
1455
  [decimals]="0"
@@ -1441,7 +1471,7 @@ class PagerInputComponent extends PagerElementComponent {
1441
1471
  </kendo-numerictextbox>
1442
1472
  {{textFor('of')}} {{totalPages}}
1443
1473
  </span>
1444
- `, 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"] }] });
1474
+ `, 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"] }] });
1445
1475
  }
1446
1476
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputComponent, decorators: [{
1447
1477
  type: Component,
@@ -1449,7 +1479,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1449
1479
  selector: 'kendo-datapager-input, kendo-pager-input',
1450
1480
  template: `
1451
1481
  <span class="k-pager-input">
1452
- {{textFor('page')}}
1482
+ <ng-container *ngIf="showPageText">{{textFor('page')}}</ng-container>
1453
1483
  <kendo-numerictextbox kendoPagerFocusable
1454
1484
  [spinners]="false"
1455
1485
  [decimals]="0"
@@ -1473,11 +1503,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1473
1503
  </span>
1474
1504
  `,
1475
1505
  standalone: true,
1476
- imports: [NgClass, NumericTextBoxComponent, PagerFocusableDirective, EventsOutsideAngularDirective]
1506
+ imports: [NgClass, NgIf, NumericTextBoxComponent, PagerFocusableDirective, EventsOutsideAngularDirective]
1477
1507
  }]
1478
1508
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { numericInput: [{
1479
1509
  type: ViewChild,
1480
1510
  args: [NumericTextBoxComponent, { static: true }]
1511
+ }], showPageText: [{
1512
+ type: Input
1481
1513
  }], size: [{
1482
1514
  type: Input
1483
1515
  }] } });
@@ -1550,28 +1582,40 @@ const packageMetadata = {
1550
1582
  productName: 'Kendo UI for Angular',
1551
1583
  productCode: 'KENDOUIANGULAR',
1552
1584
  productCodes: ['KENDOUIANGULAR'],
1553
- publishDate: 1747069694,
1554
- version: '19.0.0-develop.12',
1585
+ publishDate: 1747133510,
1586
+ version: '19.0.0-develop.13',
1555
1587
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
1556
1588
  };
1557
1589
 
1558
- /**
1559
- * @hidden
1560
- */
1561
- const RESPONSIVE_BREAKPOINT_MEDIUM = 600;
1562
- /**
1563
- * @hidden
1564
- */
1565
- const RESPONSIVE_BREAKPOINT_LARGE = 768;
1566
-
1567
1590
  class PagerComponent {
1568
1591
  pagerContext;
1569
1592
  element;
1570
1593
  localization;
1571
1594
  renderer;
1572
1595
  ngZone;
1596
+ cdr;
1573
1597
  navigationService;
1574
1598
  template;
1599
+ set numericButtons(buttons) {
1600
+ const newWidth = buttons ? buttons.nativeElement?.offsetWidth : 0;
1601
+ if (buttons && newWidth !== this.pagerDimensions.numericButtonsWidth) {
1602
+ this.pagerDimensions.numericButtonsWidth = newWidth;
1603
+ }
1604
+ }
1605
+ set pagerInput(input) {
1606
+ const newWidth = input ? input.nativeElement?.offsetWidth : 0;
1607
+ if (input && newWidth !== this.pagerDimensions.inputWidth) {
1608
+ this.pagerDimensions.inputWidth = newWidth;
1609
+ }
1610
+ }
1611
+ pagerInputComponent;
1612
+ set pageSizes(sizes) {
1613
+ const newWidth = sizes ? sizes.nativeElement?.offsetWidth : 0;
1614
+ if (sizes && newWidth !== this.pagerDimensions.pageSizesWidth) {
1615
+ this.pagerDimensions.pageSizesWidth = newWidth;
1616
+ }
1617
+ }
1618
+ pageSizesComponent;
1575
1619
  /**
1576
1620
  * @hidden
1577
1621
  */
@@ -1660,12 +1704,17 @@ class PagerComponent {
1660
1704
  return this._size;
1661
1705
  }
1662
1706
  /**
1663
- * @hidden
1664
- * Toggles the Pager responsive functionality.
1707
+ * Toggles the Pager responsive functionality ([see example](slug:responsive_pager)).
1665
1708
  *
1666
1709
  * @default true
1667
1710
  */
1668
1711
  responsive = true;
1712
+ /**
1713
+ * Toggles the Pager adaptiveness functionality ([see example](slug:adaptive_mode_pager)).
1714
+ *
1715
+ * @default 'auto'
1716
+ */
1717
+ adaptiveMode = 'auto';
1669
1718
  /**
1670
1719
  * Fires when the current page of the Pager is changed ([see example](slug:overview_pager)).
1671
1720
  * You have to handle the event yourself and page the data.
@@ -1709,6 +1758,14 @@ class PagerComponent {
1709
1758
  context.currentPage = this.currentPage;
1710
1759
  return context;
1711
1760
  }
1761
+ /**
1762
+ * @hidden
1763
+ */
1764
+ showInput = false;
1765
+ /**
1766
+ * @hidden
1767
+ */
1768
+ initialized = false;
1712
1769
  subscriptions = new Subscription();
1713
1770
  _templateContext = {};
1714
1771
  _pageSizeValues = DEFAULT_PAGE_SIZE_VALUES;
@@ -1716,12 +1773,29 @@ class PagerComponent {
1716
1773
  isInnerNavigationEnabled = false;
1717
1774
  _navigable = false;
1718
1775
  _size = DEFAULT_SIZE;
1719
- constructor(pagerContext, element, localization, renderer, ngZone, navigationService) {
1776
+ /**
1777
+ * Stores the measurements of various Pager elements.
1778
+ * These dimensions are used for responsive layout calculations.
1779
+ * @hidden
1780
+ */
1781
+ pagerDimensions = {
1782
+ padding: 0,
1783
+ numericButtonsWidth: 0,
1784
+ inputWidth: 0,
1785
+ pageSizesWidth: 0,
1786
+ sizesTextWidth: 0,
1787
+ pageTextWidth: 0,
1788
+ infoTextWidth: 0,
1789
+ gapNumbersSizes: 0,
1790
+ gapSizesInfo: 0
1791
+ };
1792
+ constructor(pagerContext, element, localization, renderer, ngZone, cdr, navigationService) {
1720
1793
  this.pagerContext = pagerContext;
1721
1794
  this.element = element;
1722
1795
  this.localization = localization;
1723
1796
  this.renderer = renderer;
1724
1797
  this.ngZone = ngZone;
1798
+ this.cdr = cdr;
1725
1799
  this.navigationService = navigationService;
1726
1800
  validatePackage(packageMetadata);
1727
1801
  this.direction = localization.rtl ? 'rtl' : 'ltr';
@@ -1738,6 +1812,8 @@ class PagerComponent {
1738
1812
  this.subscriptions.add(this.pagerContext.pageSizeChange.subscribe(this.changePageSize.bind(this)));
1739
1813
  this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {
1740
1814
  this.direction = rtl ? 'rtl' : 'ltr';
1815
+ this.measureAllTextWidths();
1816
+ this.responsive && this.resizeHandler();
1741
1817
  }));
1742
1818
  this.subscriptions.add(this.navigationService.innerNavigationChange.subscribe(this.innerNavigationChange.bind(this)));
1743
1819
  if (this.navigable) {
@@ -1746,14 +1822,34 @@ class PagerComponent {
1746
1822
  this.subscriptions.add(this.renderer.listen(wrapper, 'keydown', this.keyDownHandler.bind(this)));
1747
1823
  });
1748
1824
  }
1825
+ if (this.type === 'input') {
1826
+ this.showInput = true;
1827
+ }
1828
+ }
1829
+ get maxItems() {
1830
+ return Math.min(this.currentPage * this.pageSize, this.total);
1749
1831
  }
1750
1832
  ngAfterViewInit() {
1751
- this.responsive && this.resizeHandler();
1752
1833
  this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
1753
1834
  this.subscriptions.add(this.template.changes.subscribe(() => {
1835
+ this.measureAllTextWidths();
1754
1836
  this.responsive && this.resizeHandler();
1755
1837
  }));
1756
1838
  this.handleClasses(this.size, 'size');
1839
+ this.measureAllTextWidths();
1840
+ const padding = calculatePadding(this.element.nativeElement);
1841
+ this.pagerDimensions.padding = padding.padding;
1842
+ this.pagerDimensions.gapNumbersSizes = padding.gapNumbersSizes;
1843
+ this.pagerDimensions.gapSizesInfo = padding.gapSizesInfo;
1844
+ if (!isDocumentAvailable()) {
1845
+ this.initialized = true;
1846
+ return;
1847
+ }
1848
+ this.responsive && this.resizeHandler();
1849
+ setTimeout(() => {
1850
+ this.initialized = true;
1851
+ this.cdr.markForCheck();
1852
+ }, 0);
1757
1853
  }
1758
1854
  ngOnChanges(changes) {
1759
1855
  if (anyChanged(["pageSize", "skip", "total"], changes, false)) {
@@ -1765,7 +1861,14 @@ class PagerComponent {
1765
1861
  this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
1766
1862
  }
1767
1863
  if (changes['responsive']) {
1864
+ this.measureAllTextWidths();
1768
1865
  this.responsive && this.resizeHandler();
1866
+ if (!this.responsive) {
1867
+ this.showInput = this.type === 'input';
1868
+ }
1869
+ }
1870
+ if (changes['type']) {
1871
+ this.showNumericButtonsResponsive();
1769
1872
  }
1770
1873
  }
1771
1874
  ngOnDestroy() {
@@ -1807,40 +1910,37 @@ class PagerComponent {
1807
1910
  if (this.template?.first && !this.responsive) {
1808
1911
  return;
1809
1912
  }
1810
- const width = this.element.nativeElement.offsetWidth;
1913
+ if (!isDocumentAvailable() || !this.element?.nativeElement) {
1914
+ this.initialized = true;
1915
+ return;
1916
+ }
1917
+ let pagerWidth = this.element.nativeElement.offsetWidth;
1918
+ if (pagerWidth <= 0) {
1919
+ return;
1920
+ }
1811
1921
  this.ngZone.runOutsideAngular(() => {
1812
1922
  setTimeout(() => {
1813
- const numericButtonsElement = this.element.nativeElement.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
1923
+ if (this.template?.first || !this.responsive) {
1924
+ return;
1925
+ }
1926
+ const numericButtonsWrapperElement = this.element.nativeElement.querySelector('.k-pager-numbers-wrap');
1814
1927
  const pagerInfoElement = this.element.nativeElement.querySelector('.k-pager-info');
1815
1928
  const pagerPageSizes = this.element.nativeElement.querySelector('.k-pager-sizes');
1816
- if (numericButtonsElement) {
1817
- const selectElement = numericButtonsElement.querySelector('select');
1818
- const numbersElement = numericButtonsElement.querySelector('.k-pager-numbers');
1819
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1820
- this.renderer.removeClass(selectElement, 'k-hidden');
1821
- this.renderer.addClass(numbersElement, 'k-hidden');
1822
- }
1823
- else {
1824
- this.renderer.addClass(selectElement, 'k-hidden');
1825
- this.renderer.removeClass(numbersElement, 'k-hidden');
1826
- }
1929
+ let elementsWidths = numericButtonsWrapperElement?.offsetWidth + (pagerPageSizes?.offsetWidth || 0) + (pagerInfoElement?.offsetWidth > 0 ? Math.min(this.pagerDimensions.infoTextWidth) : 0);
1930
+ if (this.isElementVisible(pagerInfoElement)) {
1931
+ elementsWidths += this.pagerDimensions.gapSizesInfo;
1932
+ }
1933
+ pagerWidth -= this.pagerDimensions.padding;
1934
+ if (this.isElementVisible(pagerPageSizes)) {
1935
+ pagerWidth -= this.pagerDimensions.gapNumbersSizes;
1827
1936
  }
1828
- if (pagerInfoElement) {
1829
- if (width < RESPONSIVE_BREAKPOINT_LARGE) {
1830
- this.renderer.addClass(pagerInfoElement, 'k-hidden');
1831
- }
1832
- else {
1833
- this.renderer.removeClass(pagerInfoElement, 'k-hidden');
1834
- }
1937
+ if (Math.ceil(elementsWidths) <= pagerWidth) {
1938
+ this.showElementsInOrder(pagerWidth, elementsWidths);
1835
1939
  }
1836
- if (pagerPageSizes) {
1837
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1838
- this.renderer.addClass(pagerPageSizes, 'k-hidden');
1839
- }
1840
- else {
1841
- this.renderer.removeClass(pagerPageSizes, 'k-hidden');
1842
- }
1940
+ else {
1941
+ this.hideElementsInOrder(pagerWidth, elementsWidths);
1843
1942
  }
1943
+ !this.initialized && this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialized = true);
1844
1944
  });
1845
1945
  });
1846
1946
  };
@@ -1918,8 +2018,172 @@ class PagerComponent {
1918
2018
  this.renderer.addClass(elem, classes.toAdd);
1919
2019
  }
1920
2020
  }
1921
- 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 });
1922
- 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: [
2021
+ showElementsInOrder(availableWidth, currentWidth) {
2022
+ const el = this.element.nativeElement;
2023
+ const numericButtonsElement = el.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
2024
+ const pagerInfoElement = el.querySelector('.k-pager-info');
2025
+ const pagerPageSizes = el.querySelector('.k-pager-sizes');
2026
+ const pagerInput = el.querySelector('kendo-pager-input');
2027
+ const pagerSizesDropDown = el.querySelector('.k-pager-sizes .k-dropdownlist');
2028
+ if (this.type === 'input' && this.isElementVisible(pagerInfoElement) || this.isElementVisible(numericButtonsElement)) {
2029
+ return;
2030
+ }
2031
+ if (!this.isElementVisible(pagerPageSizes)) {
2032
+ const addDropDownWidth = currentWidth + this.pagerDimensions.pageSizesWidth + this.pagerDimensions.gapNumbersSizes - this.pagerDimensions.sizesTextWidth;
2033
+ if (addDropDownWidth > availableWidth)
2034
+ return;
2035
+ this.ngZone.run(() => this.pageSizesComponent && (this.pageSizesComponent.showItemsText = false));
2036
+ this.showElement(pagerPageSizes);
2037
+ currentWidth = addDropDownWidth;
2038
+ if (currentWidth >= availableWidth)
2039
+ return;
2040
+ }
2041
+ if (this.isElementVisible(pagerPageSizes) && this.pageSizesComponent && !this.pageSizesComponent.showItemsText) {
2042
+ const addPageSizesText = currentWidth - pagerSizesDropDown?.offsetWidth + this.pagerDimensions.pageSizesWidth;
2043
+ if (addPageSizesText > availableWidth)
2044
+ return;
2045
+ this.ngZone.run(() => this.pageSizesComponent.showItemsText = true);
2046
+ currentWidth = addPageSizesText;
2047
+ if (currentWidth >= availableWidth)
2048
+ return;
2049
+ }
2050
+ if (this.isElementVisible(pagerPageSizes) && this.pageSizesComponent?.showItemsText && this.pagerInputComponent && !this.pagerInputComponent.showPageText) {
2051
+ const addPageText = currentWidth - pagerInput?.offsetWidth + this.pagerDimensions.inputWidth;
2052
+ if (addPageText > availableWidth)
2053
+ return;
2054
+ this.ngZone.run(() => this.pagerInputComponent.showPageText = true);
2055
+ currentWidth = addPageText;
2056
+ if (currentWidth >= availableWidth)
2057
+ return;
2058
+ }
2059
+ if (this.isElementVisible(pagerPageSizes) && this.pagerInputComponent?.showPageText) {
2060
+ const addInfoText = currentWidth + this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo;
2061
+ if (addInfoText > availableWidth)
2062
+ return;
2063
+ this.ngZone.run(() => {
2064
+ this.showElement(pagerInfoElement);
2065
+ });
2066
+ currentWidth = addInfoText;
2067
+ }
2068
+ if (this.isElementVisible(pagerInfoElement) && this.type === 'numeric') {
2069
+ const addNumericButtons = currentWidth - this.pagerDimensions.inputWidth + this.pagerDimensions.numericButtonsWidth;
2070
+ if (addNumericButtons > availableWidth)
2071
+ return;
2072
+ this.showElement(numericButtonsElement);
2073
+ this.ngZone.run(() => {
2074
+ this.showInput = false;
2075
+ this.cdr.markForCheck();
2076
+ });
2077
+ }
2078
+ }
2079
+ hideElementsInOrder(availableWidth, currentWidth) {
2080
+ const el = this.element.nativeElement;
2081
+ const numericButtonsElement = el.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
2082
+ const pagerInfoElement = el.querySelector('.k-pager-info');
2083
+ const pagerPageSizes = el.querySelector('.k-pager-sizes');
2084
+ const pagerSizesDropDown = el.querySelector('.k-pager-sizes .k-dropdownlist');
2085
+ if (this.isElementVisible(numericButtonsElement)) {
2086
+ this.hideElement(numericButtonsElement);
2087
+ this.ngZone.run(() => this.showInput = true);
2088
+ currentWidth += this.pagerDimensions.inputWidth - this.pagerDimensions.numericButtonsWidth;
2089
+ if (currentWidth <= availableWidth)
2090
+ return;
2091
+ }
2092
+ if (this.isElementVisible(pagerInfoElement)) {
2093
+ this.hideElement(pagerInfoElement);
2094
+ currentWidth -= this.pagerDimensions.infoTextWidth;
2095
+ if (currentWidth <= availableWidth)
2096
+ return;
2097
+ }
2098
+ if (this.pagerInputComponent?.showPageText) {
2099
+ this.ngZone.run(() => this.pagerInputComponent.showPageText = false);
2100
+ currentWidth = currentWidth - this.pagerDimensions.pageTextWidth;
2101
+ if (currentWidth <= availableWidth)
2102
+ return;
2103
+ }
2104
+ if (this.isElementVisible(pagerPageSizes) && this.pageSizesComponent?.showItemsText) {
2105
+ this.ngZone.run(() => this.pageSizesComponent.showItemsText = false);
2106
+ currentWidth = currentWidth - this.pagerDimensions.pageSizesWidth + pagerSizesDropDown?.offsetWidth;
2107
+ if (currentWidth <= availableWidth)
2108
+ return;
2109
+ }
2110
+ this.hideElement(pagerPageSizes);
2111
+ }
2112
+ isElementVisible(element) {
2113
+ return element && !element?.classList.contains('k-hidden');
2114
+ }
2115
+ hideElement(element) {
2116
+ if (element) {
2117
+ this.renderer.addClass(element, 'k-hidden');
2118
+ }
2119
+ }
2120
+ showElement(element) {
2121
+ if (element) {
2122
+ this.renderer.removeClass(element, 'k-hidden');
2123
+ }
2124
+ }
2125
+ measureAllTextWidths() {
2126
+ if (!isDocumentAvailable()) {
2127
+ return;
2128
+ }
2129
+ const el = this.element.nativeElement;
2130
+ const existingInfo = el.querySelector('.k-pager-info');
2131
+ const existingInput = el.querySelector('.k-pager-input');
2132
+ const existingSizes = el.querySelector('.k-pager-sizes');
2133
+ // create a single measurement container
2134
+ const measureContainer = this.renderer.createElement('div');
2135
+ positionOffScreen(this.renderer, measureContainer);
2136
+ this.renderer.appendChild(this.element.nativeElement, measureContainer);
2137
+ const infoSpan = createMeasurementSpan(this.renderer, measureContainer, 'k-pager-info');
2138
+ const pageSpan = createMeasurementSpan(this.renderer, measureContainer, 'k-pager-input');
2139
+ const sizesSpan = createMeasurementSpan(this.renderer, measureContainer, 'k-pager-sizes');
2140
+ const infoText = `${this.currentPage} - ${this.maxItems} ${this.localization.get('of')} ${this.total} ${this.localization.get('items')}`;
2141
+ this.renderer.setProperty(infoSpan, 'textContent', infoText);
2142
+ this.renderer.setProperty(pageSpan, 'textContent', this.localization.get('page'));
2143
+ this.renderer.setProperty(sizesSpan, 'textContent', this.localization.get('itemsPerPage'));
2144
+ // copy computed styles if available
2145
+ if (existingInfo)
2146
+ copyComputedStyles(this.renderer, existingInfo, infoSpan);
2147
+ if (existingInput)
2148
+ copyComputedStyles(this.renderer, existingInput, pageSpan);
2149
+ if (existingSizes)
2150
+ copyComputedStyles(this.renderer, existingSizes, sizesSpan);
2151
+ // force a reflow to ensure measurements are accurate
2152
+ measureContainer.getBoundingClientRect();
2153
+ this.pagerDimensions.infoTextWidth = infoSpan?.offsetWidth;
2154
+ if (this.pagerDimensions.inputWidth && this.pagerDimensions.pageTextWidth) {
2155
+ this.pagerDimensions.inputWidth = this.pagerDimensions.inputWidth - this.pagerDimensions.pageTextWidth + pageSpan.offsetWidth;
2156
+ }
2157
+ this.pagerDimensions.pageTextWidth = pageSpan?.offsetWidth;
2158
+ if (this.pagerDimensions.pageSizesWidth && this.pagerDimensions.sizesTextWidth) {
2159
+ this.pagerDimensions.pageSizesWidth = this.pagerDimensions.pageSizesWidth - this.pagerDimensions.sizesTextWidth + sizesSpan.offsetWidth;
2160
+ }
2161
+ this.pagerDimensions.sizesTextWidth = sizesSpan?.offsetWidth;
2162
+ this.renderer.removeChild(this.element.nativeElement, measureContainer);
2163
+ }
2164
+ showNumericButtonsResponsive() {
2165
+ if (!this.responsive || (!this.numericButtons && !this.pagerInput) || !isDocumentAvailable()) {
2166
+ this.showInput = this.type === 'input';
2167
+ return;
2168
+ }
2169
+ const pagerInfoElement = this.element.nativeElement.querySelector('.k-pager-info');
2170
+ if (this.type === 'input' || !this.isElementVisible(pagerInfoElement)) {
2171
+ this.showInput = true;
2172
+ return;
2173
+ }
2174
+ const numericButtonsElement = this.element.nativeElement.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
2175
+ if (this.isElementVisible(numericButtonsElement)) {
2176
+ this.showInput = false;
2177
+ return;
2178
+ }
2179
+ const pagerWidth = this.element.nativeElement?.offsetWidth;
2180
+ const numericButtonsWrapperElement = this.element.nativeElement.querySelector('.k-pager-numbers-wrap');
2181
+ const elementsWidths = numericButtonsWrapperElement?.offsetWidth + this.pagerDimensions.pageSizesWidth + this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo;
2182
+ const hasAvailableWidth = pagerWidth > elementsWidths - this.pagerDimensions.inputWidth + this.pagerDimensions.numericButtonsWidth;
2183
+ this.showInput = !hasAvailableWidth;
2184
+ }
2185
+ 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 });
2186
+ 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" }, 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: [
1923
2187
  LocalizationService,
1924
2188
  PagerContextService,
1925
2189
  PagerNavigationService,
@@ -1927,7 +2191,7 @@ class PagerComponent {
1927
2191
  provide: L10N_PREFIX,
1928
2192
  useValue: 'kendo.pager'
1929
2193
  }
1930
- ], queries: [{ propertyName: "template", predicate: PagerTemplateDirective }], exportAs: ["kendoDataPager", "kendoPager"], usesOnChanges: true, ngImport: i0, template: `
2194
+ ], 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: `
1931
2195
  <ng-container kendoPagerLocalizedMessages
1932
2196
  i18n-ariaLabel="kendo.pager.ariaLabel|The value of the aria-label attribute of the Pager"
1933
2197
  ariaLabel="{{ 'Page navigation, page {currentPage} of {totalPages}' }}"
@@ -1972,25 +2236,27 @@ class PagerComponent {
1972
2236
  [ngTemplateOutletContext]="templateContext">
1973
2237
  </ng-container>
1974
2238
  <ng-template #default>
1975
- <div class="k-pager-numbers-wrap">
2239
+ <div class="k-pager-numbers-wrap" [ngStyle]="{opacity: initialized ? '1' : '0'}">
1976
2240
  <kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
1977
2241
  <kendo-pager-numeric-buttons
1978
2242
  [size]="size"
1979
2243
  *ngIf="type === 'numeric' && buttonCount > 0"
1980
2244
  [buttonCount]="buttonCount">
1981
2245
  </kendo-pager-numeric-buttons>
1982
- <kendo-pager-input [size]="size" *ngIf="type === 'input'"></kendo-pager-input>
2246
+ <kendo-pager-input [size]="size" *ngIf="showInput"></kendo-pager-input>
1983
2247
  <kendo-pager-next-buttons [size]="size" *ngIf="previousNext"></kendo-pager-next-buttons>
1984
2248
  </div>
1985
2249
  <kendo-pager-page-sizes *ngIf="_pageSizeValues.length"
2250
+ [ngStyle]="{opacity: initialized ? '1' : '0'}"
1986
2251
  [size]="size"
1987
- [pageSizes]="_pageSizeValues">
2252
+ [pageSizes]="_pageSizeValues"
2253
+ [adaptiveMode]="adaptiveMode">
1988
2254
  </kendo-pager-page-sizes>
1989
- <kendo-pager-info *ngIf="info">
2255
+ <kendo-pager-info *ngIf="info" [ngStyle]="{opacity: initialized ? '1' : '0'}">
1990
2256
  </kendo-pager-info>
1991
2257
  </ng-template>
1992
2258
  <kendo-resize-sensor *ngIf="responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
1993
- `, 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"] }] });
2259
+ `, 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"] }] });
1994
2260
  }
1995
2261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, decorators: [{
1996
2262
  type: Component,
@@ -2051,39 +2317,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2051
2317
  [ngTemplateOutletContext]="templateContext">
2052
2318
  </ng-container>
2053
2319
  <ng-template #default>
2054
- <div class="k-pager-numbers-wrap">
2320
+ <div class="k-pager-numbers-wrap" [ngStyle]="{opacity: initialized ? '1' : '0'}">
2055
2321
  <kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
2056
2322
  <kendo-pager-numeric-buttons
2057
2323
  [size]="size"
2058
2324
  *ngIf="type === 'numeric' && buttonCount > 0"
2059
2325
  [buttonCount]="buttonCount">
2060
2326
  </kendo-pager-numeric-buttons>
2061
- <kendo-pager-input [size]="size" *ngIf="type === 'input'"></kendo-pager-input>
2327
+ <kendo-pager-input [size]="size" *ngIf="showInput"></kendo-pager-input>
2062
2328
  <kendo-pager-next-buttons [size]="size" *ngIf="previousNext"></kendo-pager-next-buttons>
2063
2329
  </div>
2064
2330
  <kendo-pager-page-sizes *ngIf="_pageSizeValues.length"
2331
+ [ngStyle]="{opacity: initialized ? '1' : '0'}"
2065
2332
  [size]="size"
2066
- [pageSizes]="_pageSizeValues">
2333
+ [pageSizes]="_pageSizeValues"
2334
+ [adaptiveMode]="adaptiveMode">
2067
2335
  </kendo-pager-page-sizes>
2068
- <kendo-pager-info *ngIf="info">
2336
+ <kendo-pager-info *ngIf="info" [ngStyle]="{opacity: initialized ? '1' : '0'}">
2069
2337
  </kendo-pager-info>
2070
2338
  </ng-template>
2071
2339
  <kendo-resize-sensor *ngIf="responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
2072
2340
  `,
2073
2341
  standalone: true,
2074
- imports: [LocalizedMessagesDirective, NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerPageSizesComponent, PagerInfoComponent, ResizeSensorComponent]
2342
+ imports: [LocalizedMessagesDirective, NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerPageSizesComponent, PagerInfoComponent, ResizeSensorComponent, NgStyle]
2075
2343
  }]
2076
2344
  }], ctorParameters: function () { return [{ type: PagerContextService, decorators: [{
2077
2345
  type: Optional
2078
2346
  }, {
2079
2347
  type: SkipSelf
2080
- }] }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: PagerNavigationService, decorators: [{
2348
+ }] }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: PagerNavigationService, decorators: [{
2081
2349
  type: Optional
2082
2350
  }, {
2083
2351
  type: SkipSelf
2084
2352
  }] }]; }, propDecorators: { template: [{
2085
2353
  type: ContentChildren,
2086
2354
  args: [PagerTemplateDirective]
2355
+ }], numericButtons: [{
2356
+ type: ViewChild,
2357
+ args: [PagerNumericButtonsComponent, { read: ElementRef }]
2358
+ }], pagerInput: [{
2359
+ type: ViewChild,
2360
+ args: [PagerInputComponent, { read: ElementRef }]
2361
+ }], pagerInputComponent: [{
2362
+ type: ViewChild,
2363
+ args: [PagerInputComponent]
2364
+ }], pageSizes: [{
2365
+ type: ViewChild,
2366
+ args: [PagerPageSizesComponent, { read: ElementRef }]
2367
+ }], pageSizesComponent: [{
2368
+ type: ViewChild,
2369
+ args: [PagerPageSizesComponent]
2087
2370
  }], externalTemplate: [{
2088
2371
  type: Input
2089
2372
  }], total: [{
@@ -2108,6 +2391,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2108
2391
  type: Input
2109
2392
  }], responsive: [{
2110
2393
  type: Input
2394
+ }], adaptiveMode: [{
2395
+ type: Input
2111
2396
  }], pageChange: [{
2112
2397
  type: Output
2113
2398
  }], pageSizeChange: [{