@progress/kendo-angular-pager 17.0.0-develop.33 → 17.0.0-develop.35

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.
Files changed (43) hide show
  1. package/directives.d.ts +2 -1
  2. package/esm2022/directives.mjs +3 -1
  3. package/esm2022/index.mjs +3 -0
  4. package/esm2022/package-metadata.mjs +2 -2
  5. package/esm2022/pager/focusable.directive.mjs +4 -1
  6. package/esm2022/pager/localization/custom-messages.component.mjs +2 -2
  7. package/esm2022/pager/localization/localized-messages.directive.mjs +2 -2
  8. package/esm2022/pager/localization/messages.mjs +15 -2
  9. package/esm2022/pager/navigation.service.mjs +8 -4
  10. package/esm2022/pager/pager-context.service.mjs +2 -1
  11. package/esm2022/pager/pager-element.component.mjs +2 -1
  12. package/esm2022/pager/pager-info.component.mjs +5 -9
  13. package/esm2022/pager/pager-input.component.mjs +2 -2
  14. package/esm2022/pager/pager-next-buttons.component.mjs +10 -6
  15. package/esm2022/pager/pager-numeric-buttons.component.mjs +4 -6
  16. package/esm2022/pager/pager-page-sizes.component.mjs +6 -6
  17. package/esm2022/pager/pager-prev-buttons.component.mjs +18 -10
  18. package/esm2022/pager/pager-template.directive.mjs +10 -10
  19. package/esm2022/pager/pager.component.mjs +126 -79
  20. package/esm2022/pager/pager.module.mjs +2 -1
  21. package/esm2022/pager/spacer.component.mjs +49 -0
  22. package/esm2022/util.mjs +11 -7
  23. package/fesm2022/progress-kendo-angular-pager.mjs +274 -152
  24. package/index.d.ts +3 -0
  25. package/package.json +7 -7
  26. package/pager/common/pager-type.d.ts +2 -2
  27. package/pager/focusable.directive.d.ts +1 -1
  28. package/pager/localization/custom-messages.component.d.ts +1 -1
  29. package/pager/localization/localized-messages.directive.d.ts +1 -1
  30. package/pager/localization/messages.d.ts +12 -1
  31. package/pager/pager-context.service.d.ts +2 -0
  32. package/pager/pager-info.component.d.ts +2 -3
  33. package/pager/pager-input.component.d.ts +1 -1
  34. package/pager/pager-next-buttons.component.d.ts +1 -1
  35. package/pager/pager-numeric-buttons.component.d.ts +1 -1
  36. package/pager/pager-page-sizes.component.d.ts +5 -5
  37. package/pager/pager-prev-buttons.component.d.ts +1 -1
  38. package/pager/pager-template.directive.d.ts +9 -9
  39. package/pager/pager.component.d.ts +30 -11
  40. package/pager/pager.module.d.ts +2 -1
  41. package/pager/spacer.component.d.ts +24 -0
  42. package/schematics/ngAdd/index.js +6 -6
  43. package/util.d.ts +4 -0
@@ -3,14 +3,14 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { Directive, Input, forwardRef, Component, ChangeDetectionStrategy, ViewChild, HostBinding, Optional, ElementRef, EventEmitter, ContentChildren, Output, HostListener, NgModule } from '@angular/core';
6
+ import { Directive, Input, forwardRef, Component, ChangeDetectionStrategy, ViewChild, HostBinding, Optional, ElementRef, EventEmitter, inject, SkipSelf, ContentChildren, Output, HostListener, NgModule } from '@angular/core';
7
7
  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
12
  import { ButtonComponent } from '@progress/kendo-angular-buttons';
12
13
  import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
13
- import { Keys, EventsOutsideAngularDirective, anyChanged, ResizeSensorComponent, ResizeBatchService } from '@progress/kendo-angular-common';
14
14
  import { NgIf, NgFor, NgClass, NgTemplateOutlet } from '@angular/common';
15
15
  import { NumericTextBoxComponent } from '@progress/kendo-angular-inputs';
16
16
  import { validatePackage } from '@progress/kendo-licensing';
@@ -63,6 +63,17 @@ class PageSizeChangeEvent extends PreventableEvent {
63
63
  * @hidden
64
64
  */
65
65
  class Messages extends ComponentMessages {
66
+ /**
67
+ * The label of the pager. Follows the pattern **Page navigation, page {currentPage} of {totalPages}** by default.
68
+ * Тhe default label text when the current page is 1, and the total number of pages is 10 will be
69
+ * **Page navigation, page 1 of 10**.
70
+ *
71
+ * The message consists of several parts - the current page number, the total number of pages, and a localizable string.
72
+ * To allow for reordering its parts, the `ariaLabel` input accepts a string with placeholders for the current page
73
+ * and total number of pages. The `{currentPage}` and `{totalPages}` placeholders will be replaced
74
+ * internally with the respective actual values.
75
+ */
76
+ ariaLabel;
66
77
  /**
67
78
  * The label for the **First page** button.
68
79
  */
@@ -108,7 +119,7 @@ class Messages extends ComponentMessages {
108
119
  */
109
120
  inputLabel;
110
121
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
111
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: Messages, selector: "kendoPagerMessages", inputs: { firstPage: "firstPage", lastPage: "lastPage", previousPage: "previousPage", nextPage: "nextPage", page: "page", pageNumberInputTitle: "pageNumberInputTitle", itemsPerPage: "itemsPerPage", of: "of", items: "items", selectPage: "selectPage", inputLabel: "inputLabel" }, usesInheritance: true, ngImport: i0 });
122
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: Messages, selector: "kendoPagerMessages", inputs: { ariaLabel: "ariaLabel", firstPage: "firstPage", lastPage: "lastPage", previousPage: "previousPage", nextPage: "nextPage", page: "page", pageNumberInputTitle: "pageNumberInputTitle", itemsPerPage: "itemsPerPage", of: "of", items: "items", selectPage: "selectPage", inputLabel: "inputLabel" }, usesInheritance: true, ngImport: i0 });
112
123
  }
113
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Messages, decorators: [{
114
125
  type: Directive,
@@ -116,7 +127,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
116
127
  // eslint-disable-next-line @angular-eslint/directive-selector
117
128
  selector: 'kendoPagerMessages'
118
129
  }]
119
- }], propDecorators: { firstPage: [{
130
+ }], propDecorators: { ariaLabel: [{
131
+ type: Input
132
+ }], firstPage: [{
120
133
  type: Input
121
134
  }], lastPage: [{
122
135
  type: Input
@@ -154,7 +167,7 @@ class CustomMessagesComponent extends Messages {
154
167
  return true;
155
168
  }
156
169
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
157
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CustomMessagesComponent, isStandalone: true, selector: "kendo-datapager-messages", providers: [
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CustomMessagesComponent, isStandalone: true, selector: "kendo-datapager-messages, kendo-pager-messages", providers: [
158
171
  {
159
172
  provide: Messages,
160
173
  useExisting: forwardRef(() => CustomMessagesComponent)
@@ -170,7 +183,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
170
183
  useExisting: forwardRef(() => CustomMessagesComponent)
171
184
  }
172
185
  ],
173
- selector: 'kendo-datapager-messages',
186
+ selector: 'kendo-datapager-messages, kendo-pager-messages',
174
187
  template: ``,
175
188
  standalone: true
176
189
  }]
@@ -186,7 +199,7 @@ class LocalizedMessagesDirective extends Messages {
186
199
  this.service = service;
187
200
  }
188
201
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
189
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: LocalizedMessagesDirective, isStandalone: true, selector: "[kendoDataPagerLocalizedMessages]", providers: [
202
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: LocalizedMessagesDirective, isStandalone: true, selector: "[kendoPagerLocalizedMessages]", providers: [
190
203
  {
191
204
  provide: Messages,
192
205
  useExisting: forwardRef(() => LocalizedMessagesDirective)
@@ -202,7 +215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
202
215
  useExisting: forwardRef(() => LocalizedMessagesDirective)
203
216
  }
204
217
  ],
205
- selector: '[kendoDataPagerLocalizedMessages]',
218
+ selector: '[kendoPagerLocalizedMessages]',
206
219
  standalone: true
207
220
  }]
208
221
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
@@ -214,6 +227,7 @@ class PagerContextService {
214
227
  total;
215
228
  skip;
216
229
  pageSize;
230
+ localization;
217
231
  changes = new Subject();
218
232
  pageChange = new Subject();
219
233
  pageSizeChange = new Subject();
@@ -234,7 +248,7 @@ class PagerContextService {
234
248
  }
235
249
  nextPage() {
236
250
  const nextPage = this.currentPage + 1;
237
- if (nextPage * this.pageSize <= this.total) {
251
+ if (nextPage * this.pageSize < this.total) {
238
252
  this.changePage(nextPage);
239
253
  }
240
254
  }
@@ -298,7 +312,8 @@ class PagerElementComponent {
298
312
  * @memberOf PagerElementComponent
299
313
  */
300
314
  textFor(key) {
301
- return this.localization.get(key);
315
+ const isPagerLocalization = this.localization.prefix === 'kendo.pager';
316
+ return this.localization.get(isPagerLocalization ? key : `pager${key[0].toLocaleUpperCase()}${key.slice(1)}`);
302
317
  }
303
318
  /**
304
319
  * @hidden
@@ -366,16 +381,16 @@ const getAllFocusableChildren = (parent) => {
366
381
  * @hidden
367
382
  */
368
383
  const focusableSelector = [
369
- 'a[href]:not([disabled])',
370
- 'area[href]:not([disabled])',
371
- 'input:not([disabled])',
372
- 'select:not([disabled])',
373
- 'textarea:not([disabled])',
374
- 'button',
384
+ 'a[href]:not([disabled]):not([aria-hidden="true"])',
385
+ 'area[href]:not([disabled]):not([aria-hidden="true"])',
386
+ 'input:not([disabled]):not([aria-hidden="true"])',
387
+ 'select:not([disabled]):not([aria-hidden="true"])',
388
+ 'textarea:not([disabled]):not([aria-hidden="true"])',
389
+ 'button:not([aria-hidden="true"])',
375
390
  'iframe:not([disabled])',
376
391
  'object:not([disabled])',
377
392
  'embed:not([disabled])',
378
- '*[tabindex]:not([disabled])',
393
+ '*[tabindex]:not([disabled]):not([aria-hidden="true"])',
379
394
  '*[contenteditable]:not([disabled]):not([contenteditable="false"])'
380
395
  ].join(',');
381
396
  /**
@@ -403,6 +418,10 @@ const getStylingClasses = (componentType, stylingOption, previousValue, newValue
403
418
  break;
404
419
  }
405
420
  };
421
+ /**
422
+ * @hidden
423
+ */
424
+ const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\{\\s*${name}\\s*\}`, 'g'), value);
406
425
 
407
426
  /**
408
427
  * @hidden
@@ -428,14 +447,17 @@ class PagerNavigationService {
428
447
  }
429
448
  getFirstAndLastFocusable(wrapper) {
430
449
  const all = getAllFocusableChildren(wrapper);
431
- const firstFocusable = all.length > 0 ? all[0] : parent;
432
- const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;
433
- return [firstFocusable, lastFocusable];
450
+ const firstFocusable = all.length > 0 ? all[0] : wrapper;
451
+ const lastFocusable = all.length > 0 ? all[all.length - 1] : wrapper;
452
+ return [
453
+ isFocusable(firstFocusable) ? firstFocusable : firstFocusable.querySelector(focusableSelector),
454
+ isFocusable(lastFocusable) ? lastFocusable : lastFocusable.querySelector(focusableSelector)
455
+ ];
434
456
  }
435
457
  }
436
458
 
437
459
  /**
438
- * Place the directive on custom focusable elements in the [`kendoDataPagerTemplate`]({% slug api_pager_pagertemplatedirective %}) to include them in the built-in Pager keyboard navigation.
460
+ * Place the directive on custom focusable elements in the [`kendoPagerTemplate`]({% slug api_pager_pagertemplatedirective %}) to include them in the built-in Pager keyboard navigation.
439
461
  */
440
462
  class PagerFocusableDirective {
441
463
  navigationService;
@@ -448,6 +470,9 @@ class PagerFocusableDirective {
448
470
  this.renderer = renderer;
449
471
  }
450
472
  ngOnInit() {
473
+ if (!(this.nativeElement instanceof HTMLElement)) {
474
+ return;
475
+ }
451
476
  this.subscriptions.add(this.navigationService.innerNavigationChange.subscribe(this.innerNavigationChange.bind(this)));
452
477
  }
453
478
  ngOnDestroy() {
@@ -516,11 +541,13 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
516
541
  this.cd.markForCheck();
517
542
  }
518
543
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
519
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerPrevButtonsComponent, isStandalone: true, selector: "kendo-datapager-prev-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
544
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerPrevButtonsComponent, isStandalone: true, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
520
545
  <button
521
- type="button" kendoButton kendoPagerFocusable
546
+ type="button" kendoButton
547
+ kendoPagerFocusable
522
548
  class="k-pager-nav k-pager-first"
523
- [disabled]="disabled"
549
+ [attr.aria-disabled]="disabled"
550
+ [class.k-disabled]="disabled"
524
551
  [icon]="prevArrowIcons[0]"
525
552
  [svgIcon]="prevArrowSVGIcons[0]"
526
553
  fillMode="flat"
@@ -531,9 +558,11 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
531
558
  (click)="currentPage !== 1 ? changePage(0) : false">
532
559
  </button>
533
560
  <button
534
- type="button" kendoButton kendoPagerFocusable
561
+ type="button" kendoButton
562
+ kendoPagerFocusable
535
563
  class="k-pager-nav"
536
- [disabled]="disabled"
564
+ [attr.aria-disabled]="disabled"
565
+ [class.k-disabled]="disabled"
537
566
  [icon]="prevArrowIcons[1]"
538
567
  [svgIcon]="prevArrowSVGIcons[1]"
539
568
  fillMode="flat"
@@ -549,12 +578,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
549
578
  type: Component,
550
579
  args: [{
551
580
  changeDetection: ChangeDetectionStrategy.OnPush,
552
- selector: 'kendo-datapager-prev-buttons',
581
+ selector: 'kendo-datapager-prev-buttons, kendo-pager-prev-buttons',
553
582
  template: `
554
583
  <button
555
- type="button" kendoButton kendoPagerFocusable
584
+ type="button" kendoButton
585
+ kendoPagerFocusable
556
586
  class="k-pager-nav k-pager-first"
557
- [disabled]="disabled"
587
+ [attr.aria-disabled]="disabled"
588
+ [class.k-disabled]="disabled"
558
589
  [icon]="prevArrowIcons[0]"
559
590
  [svgIcon]="prevArrowSVGIcons[0]"
560
591
  fillMode="flat"
@@ -565,9 +596,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
565
596
  (click)="currentPage !== 1 ? changePage(0) : false">
566
597
  </button>
567
598
  <button
568
- type="button" kendoButton kendoPagerFocusable
599
+ type="button" kendoButton
600
+ kendoPagerFocusable
569
601
  class="k-pager-nav"
570
- [disabled]="disabled"
602
+ [attr.aria-disabled]="disabled"
603
+ [class.k-disabled]="disabled"
571
604
  [icon]="prevArrowIcons[1]"
572
605
  [svgIcon]="prevArrowSVGIcons[1]"
573
606
  fillMode="flat"
@@ -606,15 +639,15 @@ class PagerPageSizesComponent extends PagerElementComponent {
606
639
  * <span>{{item.ProductID}}. </span>
607
640
  * <span>{{item.ProductName}}</span>
608
641
  * </div>
609
- * <kendo-datapager
642
+ * <kendo-pager
610
643
  * [skip]="skip"
611
644
  * [pageSize]="pageSize"
612
645
  * [total]="total"
613
646
  * (pageChange)="onPageChange($event)">
614
- * <ng-template kendoDataPagerTemplate>
615
- * <kendo-datapager-page-sizes [pageSizes]="pagesizes"></kendo-datapager-page-sizes>
647
+ * <ng-template kendoPagerTemplate>
648
+ * <kendo-pager-page-sizes [pageSizes]="pagesizes"></kendo-pager-page-sizes>
616
649
  * </ng-template>
617
- * </kendo-datapager>
650
+ * </kendo-pager>
618
651
  * `
619
652
  * })
620
653
  * class AppComponent {
@@ -790,7 +823,7 @@ class PagerPageSizesComponent extends PagerElementComponent {
790
823
  }
791
824
  }
792
825
  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 });
793
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerPageSizesComponent, isStandalone: true, selector: "kendo-datapager-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: `
826
+ 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: `
794
827
  <kendo-dropdownlist kendoPagerFocusable
795
828
  #dropdownlist
796
829
  [size]="size"
@@ -808,7 +841,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
808
841
  type: Component,
809
842
  args: [{
810
843
  changeDetection: ChangeDetectionStrategy.OnPush,
811
- selector: 'kendo-datapager-page-sizes',
844
+ selector: 'kendo-datapager-page-sizes, kendo-pager-page-sizes',
812
845
  template: `
813
846
  <kendo-dropdownlist kendoPagerFocusable
814
847
  #dropdownlist
@@ -839,7 +872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
839
872
 
840
873
  /**
841
874
  * Represents the pager template which helps to customize the pager appearance. To define a pager
842
- * template, nest an `<ng-template>` tag with the `kendoDataPagerTemplate` directive inside `<kendo-datapager>`.
875
+ * template, nest an `<ng-template>` tag with the `kendoPagerTemplate` directive inside `<kendo-pager>`.
843
876
  *
844
877
  * The template context provides the following fields:
845
878
  * * `currentPage`&mdash;The index of the displayed page.
@@ -854,15 +887,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
854
887
  * _@Component({
855
888
  * selector: 'my-app',
856
889
  * template: `
857
- * <kendo-datapager [total]="total" [pageSize]="pageSize" [skip]="skip" (pageChange)="onPageChange($event)">
858
- * <ng-template kendoDataPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
859
- * <kendo-datapager-prev-buttons></kendo-datapager-prev-buttons>
860
- * <kendo-datapager-numeric-buttons [buttonCount]="10"></kendo-datapager-numeric-buttons>
861
- * <kendo-datapager-next-buttons></kendo-datapager-next-buttons>
862
- * <kendo-datapager-info></kendo-datapager-info>
890
+ * <kendo-pager [total]="total" [pageSize]="pageSize" [skip]="skip" (pageChange)="onPageChange($event)">
891
+ * <ng-template kendoPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
892
+ * <kendo-pager-prev-buttons></kendo-pager-prev-buttons>
893
+ * <kendo-pager-numeric-buttons [buttonCount]="10"></kendo-pager-numeric-buttons>
894
+ * <kendo-pager-next-buttons></kendo-pager-next-buttons>
895
+ * <kendo-pager-info></kendo-pager-info>
863
896
  * Current page: {{currentPage}}
864
897
  * </ng-template>
865
- * </kendo-datapager>
898
+ * </kendo-pager>
866
899
  * `
867
900
  * })
868
901
  *
@@ -885,12 +918,12 @@ class PagerTemplateDirective {
885
918
  this.templateRef = templateRef;
886
919
  }
887
920
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
888
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagerTemplateDirective, isStandalone: true, selector: "[kendoDataPagerTemplate]", ngImport: i0 });
921
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagerTemplateDirective, isStandalone: true, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]", ngImport: i0 });
889
922
  }
890
923
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerTemplateDirective, decorators: [{
891
924
  type: Directive,
892
925
  args: [{
893
- selector: '[kendoDataPagerTemplate]',
926
+ selector: '[kendoDataPagerTemplate], [kendoPagerTemplate]',
894
927
  standalone: true
895
928
  }]
896
929
  }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
@@ -1021,10 +1054,9 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
1021
1054
  }
1022
1055
  }
1023
1056
  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 });
1024
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerNumericButtonsComponent, isStandalone: true, selector: "kendo-datapager-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: `
1057
+ 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: `
1025
1058
  <select kendoPagerFocusable #select
1026
- class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
1027
- [style.display]="'none'"
1059
+ class="k-hidden k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
1028
1060
  [attr.title]="pageChooserLabel"
1029
1061
  [attr.aria-label]="pageChooserLabel"
1030
1062
  (change)="onSelectChange($event)">
@@ -1092,11 +1124,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1092
1124
  type: Component,
1093
1125
  args: [{
1094
1126
  changeDetection: ChangeDetectionStrategy.OnPush,
1095
- selector: 'kendo-datapager-numeric-buttons',
1127
+ selector: 'kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons',
1096
1128
  template: `
1097
1129
  <select kendoPagerFocusable #select
1098
- class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
1099
- [style.display]="'none'"
1130
+ class="k-hidden k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
1100
1131
  [attr.title]="pageChooserLabel"
1101
1132
  [attr.aria-label]="pageChooserLabel"
1102
1133
  (change)="onSelectChange($event)">
@@ -1209,7 +1240,7 @@ class PagerNextButtonsComponent extends PagerElementComponent {
1209
1240
  this.cd.markForCheck();
1210
1241
  }
1211
1242
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNextButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1212
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerNextButtonsComponent, isStandalone: true, selector: "kendo-datapager-next-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
1243
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerNextButtonsComponent, isStandalone: true, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
1213
1244
  <button kendoButton kendoPagerFocusable
1214
1245
  type="button"
1215
1246
  [size]="size"
@@ -1218,7 +1249,8 @@ class PagerNextButtonsComponent extends PagerElementComponent {
1218
1249
  fillMode="flat"
1219
1250
  rounded="none"
1220
1251
  class="k-pager-nav"
1221
- [disabled]="disabled"
1252
+ [attr.aria-disabled]="disabled"
1253
+ [class.k-disabled]="disabled"
1222
1254
  [title]="textFor('nextPage')"
1223
1255
  [attr.aria-label]="textFor('nextPage')"
1224
1256
  (click)="currentPage !== totalPages ? changePage(currentPage) : false">
@@ -1231,7 +1263,8 @@ class PagerNextButtonsComponent extends PagerElementComponent {
1231
1263
  fillMode="flat"
1232
1264
  rounded="none"
1233
1265
  class="k-pager-nav k-pager-last"
1234
- [disabled]="disabled"
1266
+ [attr.aria-disabled]="disabled"
1267
+ [class.k-disabled]="disabled"
1235
1268
  [title]="textFor('lastPage')"
1236
1269
  [attr.aria-label]="textFor('lastPage')"
1237
1270
  (click)="currentPage !== totalPages ? changePage(totalPages-1) : false">
@@ -1242,7 +1275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1242
1275
  type: Component,
1243
1276
  args: [{
1244
1277
  changeDetection: ChangeDetectionStrategy.OnPush,
1245
- selector: 'kendo-datapager-next-buttons',
1278
+ selector: 'kendo-datapager-next-buttons, kendo-pager-next-buttons',
1246
1279
  template: `
1247
1280
  <button kendoButton kendoPagerFocusable
1248
1281
  type="button"
@@ -1252,7 +1285,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1252
1285
  fillMode="flat"
1253
1286
  rounded="none"
1254
1287
  class="k-pager-nav"
1255
- [disabled]="disabled"
1288
+ [attr.aria-disabled]="disabled"
1289
+ [class.k-disabled]="disabled"
1256
1290
  [title]="textFor('nextPage')"
1257
1291
  [attr.aria-label]="textFor('nextPage')"
1258
1292
  (click)="currentPage !== totalPages ? changePage(currentPage) : false">
@@ -1265,7 +1299,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1265
1299
  fillMode="flat"
1266
1300
  rounded="none"
1267
1301
  class="k-pager-nav k-pager-last"
1268
- [disabled]="disabled"
1302
+ [attr.aria-disabled]="disabled"
1303
+ [class.k-disabled]="disabled"
1269
1304
  [title]="textFor('lastPage')"
1270
1305
  [attr.aria-label]="textFor('lastPage')"
1271
1306
  (click)="currentPage !== totalPages ? changePage(totalPages-1) : false">
@@ -1359,7 +1394,7 @@ class PagerInputComponent extends PagerElementComponent {
1359
1394
  return this.totalPages !== 0;
1360
1395
  }
1361
1396
  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 });
1362
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerInputComponent, isStandalone: true, selector: "kendo-datapager-input", inputs: { size: "size" }, viewQueries: [{ propertyName: "numericInput", first: true, predicate: NumericTextBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
1397
+ 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: `
1363
1398
  <span class="k-pager-input">
1364
1399
  {{textFor('page')}}
1365
1400
  <kendo-numerictextbox kendoPagerFocusable
@@ -1388,7 +1423,7 @@ class PagerInputComponent extends PagerElementComponent {
1388
1423
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputComponent, decorators: [{
1389
1424
  type: Component,
1390
1425
  args: [{
1391
- selector: 'kendo-datapager-input',
1426
+ selector: 'kendo-datapager-input, kendo-pager-input',
1392
1427
  template: `
1393
1428
  <span class="k-pager-input">
1394
1429
  {{textFor('page')}}
@@ -1429,7 +1464,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1429
1464
  * Displays information about the current page and the total number of records ([see example]({% slug pager_settings %})).
1430
1465
  */
1431
1466
  class PagerInfoComponent extends PagerElementComponent {
1432
- pagerContext;
1433
1467
  /**
1434
1468
  * @hidden
1435
1469
  *
@@ -1459,12 +1493,9 @@ class PagerInfoComponent extends PagerElementComponent {
1459
1493
  * @type {boolean}
1460
1494
  * @memberOf PagerInfoComponent
1461
1495
  */
1462
- get classes() {
1463
- return true;
1464
- }
1496
+ hostClass = true;
1465
1497
  constructor(localization, cd, pagerContext) {
1466
1498
  super(localization, pagerContext, cd);
1467
- this.pagerContext = pagerContext;
1468
1499
  }
1469
1500
  onChanges({ total, skip, pageSize }) {
1470
1501
  this.total = total;
@@ -1473,19 +1504,19 @@ class PagerInfoComponent extends PagerElementComponent {
1473
1504
  this.cd.markForCheck();
1474
1505
  }
1475
1506
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInfoComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });
1476
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerInfoComponent, isStandalone: true, selector: "kendo-datapager-info", host: { properties: { "class.k-pager-info": "this.classes" } }, usesInheritance: true, ngImport: i0, template: `{{currentPageText}} - {{maxItems}} {{textFor('of')}} {{total}} {{textFor('items')}}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1507
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerInfoComponent, isStandalone: true, selector: "kendo-datapager-info, kendo-pager-info", host: { properties: { "class.k-pager-info": "this.hostClass" } }, usesInheritance: true, ngImport: i0, template: `{{currentPageText}} - {{maxItems}} {{textFor('of')}} {{total}} {{textFor('items')}}`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1477
1508
  }
1478
1509
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInfoComponent, decorators: [{
1479
1510
  type: Component,
1480
1511
  args: [{
1481
1512
  changeDetection: ChangeDetectionStrategy.OnPush,
1482
- selector: 'kendo-datapager-info',
1513
+ selector: 'kendo-datapager-info, kendo-pager-info',
1483
1514
  template: `{{currentPageText}} - {{maxItems}} {{textFor('of')}} {{total}} {{textFor('items')}}`,
1484
1515
  standalone: true
1485
1516
  }]
1486
- }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{
1517
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { hostClass: [{
1487
1518
  type: HostBinding,
1488
- args: ["class.k-pager-info"]
1519
+ args: ['class.k-pager-info']
1489
1520
  }] } });
1490
1521
 
1491
1522
  /**
@@ -1495,8 +1526,8 @@ const packageMetadata = {
1495
1526
  name: '@progress/kendo-angular-pager',
1496
1527
  productName: 'Kendo UI for Angular',
1497
1528
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
1498
- publishDate: 1730709988,
1499
- version: '17.0.0-develop.33',
1529
+ publishDate: 1730714595,
1530
+ version: '17.0.0-develop.35',
1500
1531
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
1501
1532
  };
1502
1533
 
@@ -1516,17 +1547,21 @@ class PagerComponent {
1516
1547
  renderer;
1517
1548
  ngZone;
1518
1549
  navigationService;
1519
- resizeSensor;
1520
- pagerInfo;
1521
- pagerPageSizes;
1522
- numericButtons;
1523
1550
  template;
1551
+ /**
1552
+ * @hidden
1553
+ */
1554
+ externalTemplate;
1524
1555
  /**
1525
1556
  * Represents the total number of data items in the collection.
1557
+ *
1558
+ * @default 0
1526
1559
  */
1527
1560
  total = 0;
1528
1561
  /**
1529
1562
  * Defines the number of data items to be skipped.
1563
+ *
1564
+ * @default 0
1530
1565
  */
1531
1566
  skip = 0;
1532
1567
  /**
@@ -1535,14 +1570,20 @@ class PagerComponent {
1535
1570
  pageSize;
1536
1571
  /**
1537
1572
  * Sets the maximum numeric buttons count before the buttons are collapsed.
1573
+ *
1574
+ * @default 10
1538
1575
  */
1539
1576
  buttonCount = 10;
1540
1577
  /**
1541
1578
  * Toggles the information about the current page and the total number of records.
1579
+ *
1580
+ * @default true
1542
1581
  */
1543
1582
  info = true;
1544
1583
  /**
1545
1584
  * Defines the type of the pager.
1585
+ *
1586
+ * @default 'numeric'
1546
1587
  */
1547
1588
  type = 'numeric';
1548
1589
  /**
@@ -1559,6 +1600,8 @@ class PagerComponent {
1559
1600
  }
1560
1601
  /**
1561
1602
  * Toggles the **Previous** and **Next** buttons.
1603
+ *
1604
+ * @default true
1562
1605
  */
1563
1606
  previousNext = true;
1564
1607
  /**
@@ -1590,6 +1633,13 @@ class PagerComponent {
1590
1633
  get size() {
1591
1634
  return this._size;
1592
1635
  }
1636
+ /**
1637
+ * @hidden
1638
+ * Toggles the Pager responsive functionality.
1639
+ *
1640
+ * @default true
1641
+ */
1642
+ responsive = true;
1593
1643
  /**
1594
1644
  * Fires when the current page of the Pager is changed ([see example](slug:overview_pager)).
1595
1645
  * You have to handle the event yourself and page the data.
@@ -1605,7 +1655,9 @@ class PagerComponent {
1605
1655
  widgetRole = 'application';
1606
1656
  roleDescription = 'pager';
1607
1657
  keyShortcuts = 'Enter ArrowRight ArrowLeft';
1608
- hostTabindex = '0';
1658
+ get hostTabindex() {
1659
+ return this.navigable ? '0' : '-1';
1660
+ }
1609
1661
  get dir() {
1610
1662
  return this.direction;
1611
1663
  }
@@ -1647,11 +1699,17 @@ class PagerComponent {
1647
1699
  this.navigationService = navigationService;
1648
1700
  validatePackage(packageMetadata);
1649
1701
  this.direction = localization.rtl ? 'rtl' : 'ltr';
1702
+ if (!navigationService) {
1703
+ this.navigationService = inject(PagerNavigationService);
1704
+ }
1705
+ if (!pagerContext) {
1706
+ this.pagerContext = inject(PagerContextService);
1707
+ }
1708
+ this.pagerContext.localization = localization;
1650
1709
  }
1651
1710
  ngOnInit() {
1652
1711
  this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));
1653
1712
  this.subscriptions.add(this.pagerContext.pageSizeChange.subscribe(this.changePageSize.bind(this)));
1654
- this.subscriptions.add(this.resizeSensor.resize.subscribe(() => this.resizeHandler()));
1655
1713
  this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {
1656
1714
  this.direction = rtl ? 'rtl' : 'ltr';
1657
1715
  }));
@@ -1664,10 +1722,10 @@ class PagerComponent {
1664
1722
  }
1665
1723
  }
1666
1724
  ngAfterViewInit() {
1667
- this.resizeHandler();
1725
+ this.responsive && this.resizeHandler();
1668
1726
  this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
1669
1727
  this.subscriptions.add(this.template.changes.subscribe(() => {
1670
- this.resizeHandler();
1728
+ this.responsive && this.resizeHandler();
1671
1729
  }));
1672
1730
  this.handleClasses(this.size, 'size');
1673
1731
  }
@@ -1680,6 +1738,9 @@ class PagerComponent {
1680
1738
  });
1681
1739
  this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
1682
1740
  }
1741
+ if (changes['responsive']) {
1742
+ this.responsive && this.resizeHandler();
1743
+ }
1683
1744
  }
1684
1745
  ngOnDestroy() {
1685
1746
  this.subscriptions.unsubscribe();
@@ -1713,48 +1774,53 @@ class PagerComponent {
1713
1774
  this.pageChange.emit({ skip: this.skip, take: event.newPageSize });
1714
1775
  }
1715
1776
  }
1777
+ /**
1778
+ * @hidden
1779
+ */
1716
1780
  resizeHandler = () => {
1717
- if (this.template?.first) {
1781
+ if (this.template?.first && !this.responsive) {
1718
1782
  return;
1719
1783
  }
1720
1784
  const width = this.element.nativeElement.offsetWidth;
1721
1785
  this.ngZone.runOutsideAngular(() => {
1722
1786
  setTimeout(() => {
1723
- if (this.numericButtons) {
1724
- const selectElement = this.numericButtons.selectElement.nativeElement;
1725
- const numbersElement = this.numericButtons.numbersElement.nativeElement;
1726
- this.renderer.removeStyle(numbersElement, 'display');
1727
- this.renderer.setStyle(selectElement, 'display', 'none');
1728
- this.renderer.addClass(selectElement, 'k-hidden');
1787
+ const numericButtonsElement = this.element.nativeElement.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
1788
+ const pagerInfoElement = this.element.nativeElement.querySelector('.k-pager-info');
1789
+ const pagerPageSizes = this.element.nativeElement.querySelector('.k-pager-sizes');
1790
+ if (numericButtonsElement) {
1791
+ const selectElement = numericButtonsElement.querySelector('select');
1792
+ const numbersElement = numericButtonsElement.querySelector('.k-pager-numbers');
1729
1793
  if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1730
- this.renderer.removeStyle(selectElement, 'display');
1731
1794
  this.renderer.removeClass(selectElement, 'k-hidden');
1732
- this.renderer.setStyle(numbersElement, 'display', 'none');
1795
+ this.renderer.addClass(numbersElement, 'k-hidden');
1733
1796
  }
1734
1797
  else {
1735
1798
  this.renderer.addClass(selectElement, 'k-hidden');
1799
+ this.renderer.removeClass(numbersElement, 'k-hidden');
1736
1800
  }
1737
1801
  }
1738
- if (this.pagerInfo) {
1739
- this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
1802
+ if (pagerInfoElement) {
1740
1803
  if (width < RESPONSIVE_BREAKPOINT_LARGE) {
1741
- this.renderer.setStyle(this.pagerInfo.nativeElement, 'display', 'none');
1804
+ this.renderer.addClass(pagerInfoElement, 'k-hidden');
1805
+ }
1806
+ else {
1807
+ this.renderer.removeClass(pagerInfoElement, 'k-hidden');
1742
1808
  }
1743
1809
  }
1744
- if (this.pagerPageSizes) {
1745
- this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
1810
+ if (pagerPageSizes) {
1746
1811
  if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1747
- this.renderer.setStyle(this.pagerPageSizes.nativeElement, 'display', 'none');
1812
+ this.renderer.addClass(pagerPageSizes, 'k-hidden');
1813
+ }
1814
+ else {
1815
+ this.renderer.removeClass(pagerPageSizes, 'k-hidden');
1748
1816
  }
1749
1817
  }
1750
1818
  });
1751
1819
  });
1752
1820
  };
1753
- textFor(value) {
1754
- return this.localization.get(value);
1755
- }
1756
1821
  get ariaLabel() {
1757
- return `${this.textFor('page')} ${this.currentPage} ${this.textFor('of')} ${this.totalPages}`;
1822
+ const localizationMsg = this.localization.get('ariaLabel') || '';
1823
+ return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());
1758
1824
  }
1759
1825
  keyDownHandler(e) {
1760
1826
  const target = e.target;
@@ -1770,11 +1836,17 @@ class PagerComponent {
1770
1836
  const isLastPage = this.currentPage === this.totalPages;
1771
1837
  this.ngZone.run(() => {
1772
1838
  if (isHome) {
1839
+ if (e.target !== wrapper) {
1840
+ return;
1841
+ }
1773
1842
  e.preventDefault();
1774
1843
  !isFirstPage && this.pagerContext.changePage(0);
1775
1844
  }
1776
1845
  else if (isEnd) {
1777
1846
  e.preventDefault();
1847
+ if (e.target !== wrapper) {
1848
+ return;
1849
+ }
1778
1850
  !isLastPage && this.pagerContext.changePage(this.totalPages - 1);
1779
1851
  }
1780
1852
  else if (this.isInnerNavigationEnabled) {
@@ -1787,6 +1859,9 @@ class PagerComponent {
1787
1859
  }
1788
1860
  }
1789
1861
  else {
1862
+ if (e.target !== wrapper) {
1863
+ return;
1864
+ }
1790
1865
  if (isArrowLeftOrPageUp) {
1791
1866
  e.preventDefault();
1792
1867
  !isFirstPage && this.pagerContext.prevPage();
@@ -1796,9 +1871,6 @@ class PagerComponent {
1796
1871
  !isLastPage && this.pagerContext.nextPage();
1797
1872
  }
1798
1873
  else if (isEnter) {
1799
- if (e.target !== wrapper) {
1800
- return;
1801
- }
1802
1874
  e.preventDefault();
1803
1875
  const [firstFocusable] = this.navigationService.getFirstAndLastFocusable(wrapper);
1804
1876
  this.navigationService.toggleInnerNavigation(true);
@@ -1820,8 +1892,8 @@ class PagerComponent {
1820
1892
  this.renderer.addClass(elem, classes.toAdd);
1821
1893
  }
1822
1894
  }
1823
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, deps: [{ token: PagerContextService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: PagerNavigationService }], target: i0.ɵɵFactoryTarget.Component });
1824
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerComponent, isStandalone: true, selector: "kendo-datapager", inputs: { total: "total", skip: "skip", pageSize: "pageSize", buttonCount: "buttonCount", info: "info", type: "type", pageSizeValues: "pageSizeValues", previousNext: "previousNext", navigable: "navigable", size: "size" }, 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: [
1895
+ 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 });
1896
+ 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: [
1825
1897
  LocalizationService,
1826
1898
  PagerContextService,
1827
1899
  PagerNavigationService,
@@ -1829,8 +1901,11 @@ class PagerComponent {
1829
1901
  provide: L10N_PREFIX,
1830
1902
  useValue: 'kendo.pager'
1831
1903
  }
1832
- ], queries: [{ propertyName: "template", predicate: PagerTemplateDirective }], viewQueries: [{ propertyName: "resizeSensor", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }, { propertyName: "pagerInfo", first: true, predicate: PagerInfoComponent, descendants: true, read: ElementRef }, { propertyName: "pagerPageSizes", first: true, predicate: PagerPageSizesComponent, descendants: true, read: ElementRef }, { propertyName: "numericButtons", first: true, predicate: PagerNumericButtonsComponent, descendants: true }], exportAs: ["kendoDataPager"], usesOnChanges: true, ngImport: i0, template: `
1833
- <ng-container kendoDataPagerLocalizedMessages
1904
+ ], queries: [{ propertyName: "template", predicate: PagerTemplateDirective }], exportAs: ["kendoDataPager", "kendoPager"], usesOnChanges: true, ngImport: i0, template: `
1905
+ <ng-container kendoPagerLocalizedMessages
1906
+ i18n-ariaLabel="kendo.pager.ariaLabel|The value of the aria-label attribute of the Pager"
1907
+ ariaLabel="{{ 'Page navigation, page {currentPage} of {totalPages}' }}"
1908
+
1834
1909
  i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
1835
1910
  firstPage="Go to the first page"
1836
1911
 
@@ -1866,36 +1941,36 @@ class PagerComponent {
1866
1941
  >
1867
1942
  </ng-container>
1868
1943
  <ng-container
1869
- *ngIf="template.first?.templateRef"
1944
+ *ngIf="template.first?.templateRef; else default"
1870
1945
  [ngTemplateOutlet]="template.first?.templateRef"
1871
1946
  [ngTemplateOutletContext]="templateContext">
1872
1947
  </ng-container>
1873
- <ng-container *ngIf="!template?.first?.templateRef">
1948
+ <ng-template #default>
1874
1949
  <div class="k-pager-numbers-wrap">
1875
- <kendo-datapager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-prev-buttons>
1876
- <kendo-datapager-numeric-buttons
1950
+ <kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
1951
+ <kendo-pager-numeric-buttons
1877
1952
  [size]="size"
1878
1953
  *ngIf="type === 'numeric' && buttonCount > 0"
1879
1954
  [buttonCount]="buttonCount">
1880
- </kendo-datapager-numeric-buttons>
1881
- <kendo-datapager-input [size]="size" *ngIf="type === 'input'"></kendo-datapager-input>
1882
- <kendo-datapager-next-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-next-buttons>
1955
+ </kendo-pager-numeric-buttons>
1956
+ <kendo-pager-input [size]="size" *ngIf="type === 'input'"></kendo-pager-input>
1957
+ <kendo-pager-next-buttons [size]="size" *ngIf="previousNext"></kendo-pager-next-buttons>
1883
1958
  </div>
1884
- <kendo-datapager-page-sizes *ngIf="pageSizeValues"
1959
+ <kendo-pager-page-sizes *ngIf="pageSizeValues"
1885
1960
  [size]="size"
1886
1961
  [pageSizes]="pageSizeValues">
1887
- </kendo-datapager-page-sizes>
1888
- <kendo-datapager-info *ngIf='info'>
1889
- </kendo-datapager-info>
1890
- </ng-container>
1891
- <kendo-resize-sensor></kendo-resize-sensor>
1892
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoDataPagerLocalizedMessages]" }, { 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", inputs: ["size"] }, { kind: "component", type: PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: PagerInputComponent, selector: "kendo-datapager-input", inputs: ["size"] }, { kind: "component", type: PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons", inputs: ["size"] }, { kind: "component", type: PagerPageSizesComponent, selector: "kendo-datapager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: PagerInfoComponent, selector: "kendo-datapager-info" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
1962
+ </kendo-pager-page-sizes>
1963
+ <kendo-pager-info *ngIf="info">
1964
+ </kendo-pager-info>
1965
+ </ng-template>
1966
+ <kendo-resize-sensor *ngIf="responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
1967
+ `, 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"] }] });
1893
1968
  }
1894
1969
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, decorators: [{
1895
1970
  type: Component,
1896
1971
  args: [{
1897
- selector: 'kendo-datapager',
1898
- exportAs: 'kendoDataPager',
1972
+ selector: 'kendo-datapager, kendo-pager',
1973
+ exportAs: 'kendoDataPager, kendoPager',
1899
1974
  providers: [
1900
1975
  LocalizationService,
1901
1976
  PagerContextService,
@@ -1906,7 +1981,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1906
1981
  }
1907
1982
  ],
1908
1983
  template: `
1909
- <ng-container kendoDataPagerLocalizedMessages
1984
+ <ng-container kendoPagerLocalizedMessages
1985
+ i18n-ariaLabel="kendo.pager.ariaLabel|The value of the aria-label attribute of the Pager"
1986
+ ariaLabel="{{ 'Page navigation, page {currentPage} of {totalPages}' }}"
1987
+
1910
1988
  i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
1911
1989
  firstPage="Go to the first page"
1912
1990
 
@@ -1942,48 +2020,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1942
2020
  >
1943
2021
  </ng-container>
1944
2022
  <ng-container
1945
- *ngIf="template.first?.templateRef"
2023
+ *ngIf="template.first?.templateRef; else default"
1946
2024
  [ngTemplateOutlet]="template.first?.templateRef"
1947
2025
  [ngTemplateOutletContext]="templateContext">
1948
2026
  </ng-container>
1949
- <ng-container *ngIf="!template?.first?.templateRef">
2027
+ <ng-template #default>
1950
2028
  <div class="k-pager-numbers-wrap">
1951
- <kendo-datapager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-prev-buttons>
1952
- <kendo-datapager-numeric-buttons
2029
+ <kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
2030
+ <kendo-pager-numeric-buttons
1953
2031
  [size]="size"
1954
2032
  *ngIf="type === 'numeric' && buttonCount > 0"
1955
2033
  [buttonCount]="buttonCount">
1956
- </kendo-datapager-numeric-buttons>
1957
- <kendo-datapager-input [size]="size" *ngIf="type === 'input'"></kendo-datapager-input>
1958
- <kendo-datapager-next-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-next-buttons>
2034
+ </kendo-pager-numeric-buttons>
2035
+ <kendo-pager-input [size]="size" *ngIf="type === 'input'"></kendo-pager-input>
2036
+ <kendo-pager-next-buttons [size]="size" *ngIf="previousNext"></kendo-pager-next-buttons>
1959
2037
  </div>
1960
- <kendo-datapager-page-sizes *ngIf="pageSizeValues"
2038
+ <kendo-pager-page-sizes *ngIf="pageSizeValues"
1961
2039
  [size]="size"
1962
2040
  [pageSizes]="pageSizeValues">
1963
- </kendo-datapager-page-sizes>
1964
- <kendo-datapager-info *ngIf='info'>
1965
- </kendo-datapager-info>
1966
- </ng-container>
1967
- <kendo-resize-sensor></kendo-resize-sensor>
2041
+ </kendo-pager-page-sizes>
2042
+ <kendo-pager-info *ngIf="info">
2043
+ </kendo-pager-info>
2044
+ </ng-template>
2045
+ <kendo-resize-sensor *ngIf="responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
1968
2046
  `,
1969
2047
  standalone: true,
1970
2048
  imports: [LocalizedMessagesDirective, NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerPageSizesComponent, PagerInfoComponent, ResizeSensorComponent]
1971
2049
  }]
1972
- }], ctorParameters: function () { return [{ type: PagerContextService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: PagerNavigationService }]; }, propDecorators: { resizeSensor: [{
1973
- type: ViewChild,
1974
- args: [ResizeSensorComponent, { static: true }]
1975
- }], pagerInfo: [{
1976
- type: ViewChild,
1977
- args: [PagerInfoComponent, { read: ElementRef }]
1978
- }], pagerPageSizes: [{
1979
- type: ViewChild,
1980
- args: [PagerPageSizesComponent, { read: ElementRef }]
1981
- }], numericButtons: [{
1982
- type: ViewChild,
1983
- args: [PagerNumericButtonsComponent]
1984
- }], template: [{
2050
+ }], ctorParameters: function () { return [{ type: PagerContextService, decorators: [{
2051
+ type: Optional
2052
+ }, {
2053
+ type: SkipSelf
2054
+ }] }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: PagerNavigationService, decorators: [{
2055
+ type: Optional
2056
+ }, {
2057
+ type: SkipSelf
2058
+ }] }]; }, propDecorators: { template: [{
1985
2059
  type: ContentChildren,
1986
2060
  args: [PagerTemplateDirective]
2061
+ }], externalTemplate: [{
2062
+ type: Input
1987
2063
  }], total: [{
1988
2064
  type: Input
1989
2065
  }], skip: [{
@@ -2004,6 +2080,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2004
2080
  type: Input
2005
2081
  }], size: [{
2006
2082
  type: Input
2083
+ }], responsive: [{
2084
+ type: Input
2007
2085
  }], pageChange: [{
2008
2086
  type: Output
2009
2087
  }], pageSizeChange: [{
@@ -2031,6 +2109,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2031
2109
  args: ['focusin', ['$event']]
2032
2110
  }] } });
2033
2111
 
2112
+ /**
2113
+ * Represents the Kendo UI PagerSpacer component for Angular.
2114
+ * Used to give additional white space between the Pager inner elements,
2115
+ * and provides a way for customizing the spacer width.
2116
+ */
2117
+ class PagerSpacerComponent {
2118
+ hostClass = true;
2119
+ get sizedClass() {
2120
+ return isPresent(this.width);
2121
+ }
2122
+ get flexBasisStyle() {
2123
+ return this.width;
2124
+ }
2125
+ /**
2126
+ * Specifies the width of the PagerSpacer.
2127
+ * Accepts the [string values of the CSS `flex-basis` property](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis).
2128
+ *
2129
+ * If not set, the PagerSpacer will take all the available space.
2130
+ */
2131
+ width;
2132
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2133
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerSpacerComponent, isStandalone: true, selector: "kendo-pager-spacer", inputs: { width: "width" }, host: { properties: { "class.k-spacer": "this.hostClass", "class.k-spacer-sized": "this.sizedClass", "style.flexBasis": "this.flexBasisStyle" } }, ngImport: i0, template: ``, isInline: true });
2134
+ }
2135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerSpacerComponent, decorators: [{
2136
+ type: Component,
2137
+ args: [{
2138
+ selector: 'kendo-pager-spacer',
2139
+ template: ``,
2140
+ standalone: true
2141
+ }]
2142
+ }], propDecorators: { hostClass: [{
2143
+ type: HostBinding,
2144
+ args: ['class.k-spacer']
2145
+ }], sizedClass: [{
2146
+ type: HostBinding,
2147
+ args: ['class.k-spacer-sized']
2148
+ }], flexBasisStyle: [{
2149
+ type: HostBinding,
2150
+ args: ['style.flexBasis']
2151
+ }], width: [{
2152
+ type: Input
2153
+ }] } });
2154
+
2034
2155
  /**
2035
2156
  * Utility array that contains all `@progress/kendo-angular-pager` related components and directives
2036
2157
  */
@@ -2044,7 +2165,8 @@ const KENDO_PAGER = [
2044
2165
  PagerPageSizesComponent,
2045
2166
  PagerPrevButtonsComponent,
2046
2167
  PagerTemplateDirective,
2047
- PagerComponent
2168
+ PagerComponent,
2169
+ PagerSpacerComponent
2048
2170
  ];
2049
2171
 
2050
2172
  // IMPORTANT: NgModule export kept for backwards compatibility
@@ -2053,7 +2175,7 @@ const KENDO_PAGER = [
2053
2175
  */
2054
2176
  class PagerModule {
2055
2177
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2056
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, imports: [CustomMessagesComponent, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PagerComponent], exports: [CustomMessagesComponent, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PagerComponent] });
2178
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, imports: [CustomMessagesComponent, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PagerComponent, PagerSpacerComponent], exports: [CustomMessagesComponent, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PagerComponent, PagerSpacerComponent] });
2057
2179
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, providers: [
2058
2180
  IconsService,
2059
2181
  PopupService,
@@ -2077,5 +2199,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2077
2199
  * Generated bundle index. Do not edit.
2078
2200
  */
2079
2201
 
2080
- export { CustomMessagesComponent, KENDO_PAGER, LocalizedMessagesDirective, PageSizeChangeEvent, PagerComponent, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective };
2202
+ export { CustomMessagesComponent, KENDO_PAGER, LocalizedMessagesDirective, PageSizeChangeEvent, PagerComponent, PagerContextService, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerModule, PagerNavigationService, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerSpacerComponent, PagerTemplateDirective };
2081
2203