@progress/kendo-angular-pager 17.0.0-develop.8 → 17.0.0

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 (57) hide show
  1. package/README.md +26 -17
  2. package/directives.d.ts +2 -1
  3. package/{esm2020 → esm2022}/directives.mjs +3 -1
  4. package/{esm2020 → esm2022}/index.mjs +3 -0
  5. package/{esm2020 → esm2022}/package-metadata.mjs +2 -2
  6. package/{esm2020 → esm2022}/pager/focusable.directive.mjs +11 -5
  7. package/{esm2020 → esm2022}/pager/localization/custom-messages.component.mjs +10 -9
  8. package/{esm2020 → esm2022}/pager/localization/localized-messages.directive.mjs +10 -9
  9. package/esm2022/pager/localization/messages.mjs +100 -0
  10. package/{esm2020 → esm2022}/pager/navigation.service.mjs +10 -8
  11. package/{esm2020 → esm2022}/pager/pager-context.service.mjs +8 -6
  12. package/{esm2020 → esm2022}/pager/pager-element.component.mjs +24 -16
  13. package/{esm2020 → esm2022}/pager/pager-info.component.mjs +9 -12
  14. package/{esm2020 → esm2022}/pager/pager-input.component.mjs +57 -53
  15. package/{esm2020 → esm2022}/pager/pager-next-buttons.component.mjs +26 -22
  16. package/{esm2020 → esm2022}/pager/pager-numeric-buttons.component.mjs +24 -15
  17. package/{esm2020 → esm2022}/pager/pager-page-sizes.component.mjs +30 -26
  18. package/{esm2020 → esm2022}/pager/pager-prev-buttons.component.mjs +31 -23
  19. package/{esm2020 → esm2022}/pager/pager-template.directive.mjs +13 -12
  20. package/{esm2020 → esm2022}/pager/pager.component.mjs +224 -161
  21. package/esm2022/pager/pager.module.mjs +65 -0
  22. package/{esm2020 → esm2022}/pager/pagesizechange-event.mjs +4 -0
  23. package/{esm2020 → esm2022}/pager/preventable-event.mjs +1 -3
  24. package/esm2022/pager/spacer.component.mjs +49 -0
  25. package/{esm2020 → esm2022}/util.mjs +11 -7
  26. package/{fesm2020 → fesm2022}/progress-kendo-angular-pager.mjs +639 -404
  27. package/index.d.ts +3 -0
  28. package/package.json +15 -21
  29. package/pager/common/pager-size.d.ts +1 -1
  30. package/pager/common/pager-type.d.ts +3 -3
  31. package/pager/focusable.directive.d.ts +1 -1
  32. package/pager/localization/custom-messages.component.d.ts +1 -1
  33. package/pager/localization/localized-messages.directive.d.ts +1 -1
  34. package/pager/localization/messages.d.ts +12 -1
  35. package/pager/pager-context.service.d.ts +3 -1
  36. package/pager/pager-info.component.d.ts +2 -3
  37. package/pager/pager-input.component.d.ts +1 -1
  38. package/pager/pager-next-buttons.component.d.ts +1 -1
  39. package/pager/pager-numeric-buttons.component.d.ts +1 -1
  40. package/pager/pager-page-sizes.component.d.ts +5 -5
  41. package/pager/pager-prev-buttons.component.d.ts +1 -1
  42. package/pager/pager-template.directive.d.ts +9 -9
  43. package/pager/pager.component.d.ts +30 -11
  44. package/pager/pager.module.d.ts +22 -2
  45. package/pager/spacer.component.d.ts +24 -0
  46. package/schematics/ngAdd/index.js +7 -7
  47. package/util.d.ts +4 -0
  48. package/esm2020/pager/localization/messages.mjs +0 -43
  49. package/esm2020/pager/pager.module.mjs +0 -45
  50. package/fesm2015/progress-kendo-angular-pager.mjs +0 -1991
  51. /package/{esm2020 → esm2022}/pager/change-event-args.interface.mjs +0 -0
  52. /package/{esm2020 → esm2022}/pager/common/constants.mjs +0 -0
  53. /package/{esm2020 → esm2022}/pager/common/pager-classes.mjs +0 -0
  54. /package/{esm2020 → esm2022}/pager/common/pager-size.mjs +0 -0
  55. /package/{esm2020 → esm2022}/pager/common/pager-type.mjs +0 -0
  56. /package/{esm2020 → esm2022}/pager/pagesize-item.interface.mjs +0 -0
  57. /package/{esm2020 → esm2022}/progress-kendo-angular-pager.mjs +0 -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';
@@ -21,9 +21,7 @@ import { PopupService } from '@progress/kendo-angular-popup';
21
21
  * @hidden
22
22
  */
23
23
  class PreventableEvent {
24
- constructor() {
25
- this.prevented = false;
26
- }
24
+ prevented = false;
27
25
  /**
28
26
  * Prevents the default action for a specified event.
29
27
  * In this way, the source component suppresses the built-in behavior that follows the event.
@@ -46,6 +44,10 @@ class PreventableEvent {
46
44
  * is changed from the UI. If you cancel the event, the change is prevented.
47
45
  */
48
46
  class PageSizeChangeEvent extends PreventableEvent {
47
+ /**
48
+ * The newly selected page size.
49
+ */
50
+ newPageSize;
49
51
  /**
50
52
  * Constructs the event arguments for the `pageSizeChange` event.
51
53
  * @param newPageSize - The newly selected page size.
@@ -61,16 +63,73 @@ class PageSizeChangeEvent extends PreventableEvent {
61
63
  * @hidden
62
64
  */
63
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;
77
+ /**
78
+ * The label for the **First page** button.
79
+ */
80
+ firstPage;
81
+ /**
82
+ * The label for the **Last page** button.
83
+ */
84
+ lastPage;
85
+ /**
86
+ * The label for the **Previous page** button.
87
+ */
88
+ previousPage;
89
+ /**
90
+ * The label for the **Next page** button.
91
+ */
92
+ nextPage;
93
+ /**
94
+ * The label displayed before the pager input.
95
+ */
96
+ page;
97
+ /**
98
+ * The title attribute of the page number input element.
99
+ */
100
+ pageNumberInputTitle;
101
+ /**
102
+ * The label displayed after the page-size selector.
103
+ */
104
+ itemsPerPage;
105
+ /**
106
+ * The label before the total-page number.
107
+ */
108
+ of;
109
+ /**
110
+ * The label after the total-page number.
111
+ */
112
+ items;
113
+ /**
114
+ * The text of the title and aria-label attributes applied to the page chooser.
115
+ */
116
+ selectPage;
117
+ /**
118
+ * The text of the aria-label attribute applied to the input element for entering the page number."
119
+ */
120
+ inputLabel;
121
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
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 });
64
123
  }
65
- Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
66
- Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", 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 });
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: Messages, decorators: [{
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Messages, decorators: [{
68
125
  type: Directive,
69
126
  args: [{
70
127
  // eslint-disable-next-line @angular-eslint/directive-selector
71
128
  selector: 'kendoPagerMessages'
72
129
  }]
73
- }], propDecorators: { firstPage: [{
130
+ }], propDecorators: { ariaLabel: [{
131
+ type: Input
132
+ }], firstPage: [{
74
133
  type: Input
75
134
  }], lastPage: [{
76
135
  type: Input
@@ -99,6 +158,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
99
158
  * ([see example]({% slug pager_globalization %}#toc-messages)).
100
159
  */
101
160
  class CustomMessagesComponent extends Messages {
161
+ service;
102
162
  constructor(service) {
103
163
  super();
104
164
  this.service = service;
@@ -106,15 +166,15 @@ class CustomMessagesComponent extends Messages {
106
166
  get override() {
107
167
  return true;
108
168
  }
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 });
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: [
171
+ {
172
+ provide: Messages,
173
+ useExisting: forwardRef(() => CustomMessagesComponent)
174
+ }
175
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
109
176
  }
110
- CustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
111
- CustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CustomMessagesComponent, isStandalone: true, selector: "kendo-datapager-messages", providers: [
112
- {
113
- provide: Messages,
114
- useExisting: forwardRef(() => CustomMessagesComponent)
115
- }
116
- ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomMessagesComponent, decorators: [{
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CustomMessagesComponent, decorators: [{
118
178
  type: Component,
119
179
  args: [{
120
180
  providers: [
@@ -123,7 +183,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
123
183
  useExisting: forwardRef(() => CustomMessagesComponent)
124
184
  }
125
185
  ],
126
- selector: 'kendo-datapager-messages',
186
+ selector: 'kendo-datapager-messages, kendo-pager-messages',
127
187
  template: ``,
128
188
  standalone: true
129
189
  }]
@@ -133,19 +193,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
133
193
  * @hidden
134
194
  */
135
195
  class LocalizedMessagesDirective extends Messages {
196
+ service;
136
197
  constructor(service) {
137
198
  super();
138
199
  this.service = service;
139
200
  }
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 });
202
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: LocalizedMessagesDirective, isStandalone: true, selector: "[kendoPagerLocalizedMessages]", providers: [
203
+ {
204
+ provide: Messages,
205
+ useExisting: forwardRef(() => LocalizedMessagesDirective)
206
+ }
207
+ ], usesInheritance: true, ngImport: i0 });
140
208
  }
141
- LocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
142
- LocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: LocalizedMessagesDirective, isStandalone: true, selector: "[kendoDataPagerLocalizedMessages]", providers: [
143
- {
144
- provide: Messages,
145
- useExisting: forwardRef(() => LocalizedMessagesDirective)
146
- }
147
- ], usesInheritance: true, ngImport: i0 });
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{
149
210
  type: Directive,
150
211
  args: [{
151
212
  providers: [
@@ -154,7 +215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
154
215
  useExisting: forwardRef(() => LocalizedMessagesDirective)
155
216
  }
156
217
  ],
157
- selector: '[kendoDataPagerLocalizedMessages]',
218
+ selector: '[kendoPagerLocalizedMessages]',
158
219
  standalone: true
159
220
  }]
160
221
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
@@ -163,11 +224,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
163
224
  * @hidden
164
225
  */
165
226
  class PagerContextService {
166
- constructor() {
167
- this.changes = new Subject();
168
- this.pageChange = new Subject();
169
- this.pageSizeChange = new Subject();
170
- }
227
+ total;
228
+ skip;
229
+ pageSize;
230
+ localization;
231
+ changes = new Subject();
232
+ pageChange = new Subject();
233
+ pageSizeChange = new Subject();
171
234
  get currentPage() {
172
235
  return this.skip / this.pageSize;
173
236
  }
@@ -185,7 +248,7 @@ class PagerContextService {
185
248
  }
186
249
  nextPage() {
187
250
  const nextPage = this.currentPage + 1;
188
- if (nextPage * this.pageSize <= this.total) {
251
+ if (nextPage * this.pageSize < this.total) {
189
252
  this.changePage(nextPage);
190
253
  }
191
254
  }
@@ -201,18 +264,16 @@ class PagerContextService {
201
264
  * @hidden
202
265
  */
203
266
  class PagerElementComponent {
204
- constructor(localization, pagerContext, cd) {
205
- this.localization = localization;
206
- this.pagerContext = pagerContext;
207
- this.cd = cd;
208
- this.total = this.pagerContext.total;
209
- this.skip = this.pagerContext.skip;
210
- this.pageSize = this.pagerContext.pageSize;
211
- this.caretAltLeftIcon = caretAltLeftIcon;
212
- this.caretAltToLeftIcon = caretAltToLeftIcon;
213
- this.caretAltRightIcon = caretAltRightIcon;
214
- this.caretAltToRightIcon = caretAltToRightIcon;
215
- }
267
+ localization;
268
+ pagerContext;
269
+ cd;
270
+ total;
271
+ skip;
272
+ pageSize;
273
+ caretAltLeftIcon = caretAltLeftIcon;
274
+ caretAltToLeftIcon = caretAltToLeftIcon;
275
+ caretAltRightIcon = caretAltRightIcon;
276
+ caretAltToRightIcon = caretAltToRightIcon;
216
277
  /**
217
278
  * @hidden
218
279
  *
@@ -233,6 +294,15 @@ class PagerElementComponent {
233
294
  get totalPages() {
234
295
  return Math.ceil((this.total || 0) / this.pageSize);
235
296
  }
297
+ subscriptions;
298
+ constructor(localization, pagerContext, cd) {
299
+ this.localization = localization;
300
+ this.pagerContext = pagerContext;
301
+ this.cd = cd;
302
+ this.total = pagerContext.total;
303
+ this.skip = pagerContext.skip;
304
+ this.pageSize = pagerContext.pageSize;
305
+ }
236
306
  /**
237
307
  * @hidden
238
308
  *
@@ -242,7 +312,8 @@ class PagerElementComponent {
242
312
  * @memberOf PagerElementComponent
243
313
  */
244
314
  textFor(key) {
245
- 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)}`);
246
317
  }
247
318
  /**
248
319
  * @hidden
@@ -281,10 +352,10 @@ class PagerElementComponent {
281
352
  get nextArrowSVGIcons() {
282
353
  return !this.localization.rtl ? [this.caretAltRightIcon, this.caretAltToRightIcon] : [this.caretAltLeftIcon, this.caretAltToLeftIcon];
283
354
  }
355
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerElementComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
356
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerElementComponent, selector: "kendo-pager-element", ngImport: i0, template: ``, isInline: true });
284
357
  }
285
- PagerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerElementComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
286
- PagerElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PagerElementComponent, selector: "kendo-pager-element", ngImport: i0, template: ``, isInline: true });
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerElementComponent, decorators: [{
358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerElementComponent, decorators: [{
288
359
  type: Component,
289
360
  args: [{
290
361
  selector: 'kendo-pager-element',
@@ -310,16 +381,16 @@ const getAllFocusableChildren = (parent) => {
310
381
  * @hidden
311
382
  */
312
383
  const focusableSelector = [
313
- 'a[href]:not([disabled])',
314
- 'area[href]:not([disabled])',
315
- 'input:not([disabled])',
316
- 'select:not([disabled])',
317
- 'textarea:not([disabled])',
318
- '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"])',
319
390
  'iframe:not([disabled])',
320
391
  'object:not([disabled])',
321
392
  'embed:not([disabled])',
322
- '*[tabindex]:not([disabled])',
393
+ '*[tabindex]:not([disabled]):not([aria-hidden="true"])',
323
394
  '*[contenteditable]:not([disabled]):not([contenteditable="false"])'
324
395
  ].join(',');
325
396
  /**
@@ -347,15 +418,17 @@ const getStylingClasses = (componentType, stylingOption, previousValue, newValue
347
418
  break;
348
419
  }
349
420
  };
421
+ /**
422
+ * @hidden
423
+ */
424
+ const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\{\\s*${name}\\s*\}`, 'g'), value);
350
425
 
351
426
  /**
352
427
  * @hidden
353
428
  */
354
429
  class PagerNavigationService {
355
- constructor() {
356
- this.isNavigable = false;
357
- this.innerNavigationChange = new Subject();
358
- }
430
+ isNavigable = false;
431
+ innerNavigationChange = new Subject();
359
432
  toggleInnerNavigation(value) {
360
433
  this.innerNavigationChange.next(value);
361
434
  }
@@ -374,23 +447,32 @@ class PagerNavigationService {
374
447
  }
375
448
  getFirstAndLastFocusable(wrapper) {
376
449
  const all = getAllFocusableChildren(wrapper);
377
- const firstFocusable = all.length > 0 ? all[0] : parent;
378
- const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;
379
- 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
+ ];
380
456
  }
381
457
  }
382
458
 
383
459
  /**
384
- * 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.
385
461
  */
386
462
  class PagerFocusableDirective {
463
+ navigationService;
464
+ element;
465
+ renderer;
466
+ subscriptions = new Subscription();
387
467
  constructor(navigationService, element, renderer) {
388
468
  this.navigationService = navigationService;
389
469
  this.element = element;
390
470
  this.renderer = renderer;
391
- this.subscriptions = new Subscription();
392
471
  }
393
472
  ngOnInit() {
473
+ if (!(this.nativeElement instanceof HTMLElement)) {
474
+ return;
475
+ }
394
476
  this.subscriptions.add(this.navigationService.innerNavigationChange.subscribe(this.innerNavigationChange.bind(this)));
395
477
  }
396
478
  ngOnDestroy() {
@@ -412,10 +494,10 @@ class PagerFocusableDirective {
412
494
  this.renderer.setAttribute(el, 'tabindex', index);
413
495
  });
414
496
  }
497
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerFocusableDirective, deps: [{ token: PagerNavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
498
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagerFocusableDirective, isStandalone: true, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"], ngImport: i0 });
415
499
  }
416
- PagerFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerFocusableDirective, deps: [{ token: PagerNavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
417
- PagerFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: PagerFocusableDirective, isStandalone: true, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"], ngImport: i0 });
418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerFocusableDirective, decorators: [{
500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerFocusableDirective, decorators: [{
419
501
  type: Directive,
420
502
  args: [{
421
503
  selector: '[kendoPagerFocusable]',
@@ -431,17 +513,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
431
513
  class PagerPrevButtonsComponent extends PagerElementComponent {
432
514
  constructor(localization, pagerContext, cd) {
433
515
  super(localization, pagerContext, cd);
434
- /**
435
- * Specifies the padding of the buttons.
436
- *
437
- * The possible values are:
438
- * * `small`
439
- * * `medium` (default)
440
- * * `large`
441
- * * `none`
442
- */
443
- this.size = DEFAULT_SIZE;
444
516
  }
517
+ /**
518
+ * Specifies the padding of the buttons.
519
+ *
520
+ * The possible values are:
521
+ * * `small`
522
+ * * `medium` (default)
523
+ * * `large`
524
+ * * `none`
525
+ */
526
+ size = DEFAULT_SIZE;
445
527
  /**
446
528
  * @hidden
447
529
  *
@@ -458,13 +540,14 @@ class PagerPrevButtonsComponent extends PagerElementComponent {
458
540
  this.pageSize = pageSize;
459
541
  this.cd.markForCheck();
460
542
  }
461
- }
462
- PagerPrevButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
463
- PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PagerPrevButtonsComponent, isStandalone: true, selector: "kendo-datapager-prev-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
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 });
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: `
464
545
  <button
465
- type="button" kendoButton kendoPagerFocusable
546
+ type="button" kendoButton
547
+ kendoPagerFocusable
466
548
  class="k-pager-nav k-pager-first"
467
- [disabled]="disabled"
549
+ [attr.aria-disabled]="disabled"
550
+ [class.k-disabled]="disabled"
468
551
  [icon]="prevArrowIcons[0]"
469
552
  [svgIcon]="prevArrowSVGIcons[0]"
470
553
  fillMode="flat"
@@ -475,9 +558,11 @@ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
475
558
  (click)="currentPage !== 1 ? changePage(0) : false">
476
559
  </button>
477
560
  <button
478
- type="button" kendoButton kendoPagerFocusable
561
+ type="button" kendoButton
562
+ kendoPagerFocusable
479
563
  class="k-pager-nav"
480
- [disabled]="disabled"
564
+ [attr.aria-disabled]="disabled"
565
+ [class.k-disabled]="disabled"
481
566
  [icon]="prevArrowIcons[1]"
482
567
  [svgIcon]="prevArrowSVGIcons[1]"
483
568
  fillMode="flat"
@@ -488,16 +573,19 @@ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
488
573
  (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
489
574
  </button>
490
575
  `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
491
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
576
+ }
577
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
492
578
  type: Component,
493
579
  args: [{
494
580
  changeDetection: ChangeDetectionStrategy.OnPush,
495
- selector: 'kendo-datapager-prev-buttons',
581
+ selector: 'kendo-datapager-prev-buttons, kendo-pager-prev-buttons',
496
582
  template: `
497
583
  <button
498
- type="button" kendoButton kendoPagerFocusable
584
+ type="button" kendoButton
585
+ kendoPagerFocusable
499
586
  class="k-pager-nav k-pager-first"
500
- [disabled]="disabled"
587
+ [attr.aria-disabled]="disabled"
588
+ [class.k-disabled]="disabled"
501
589
  [icon]="prevArrowIcons[0]"
502
590
  [svgIcon]="prevArrowSVGIcons[0]"
503
591
  fillMode="flat"
@@ -508,9 +596,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
508
596
  (click)="currentPage !== 1 ? changePage(0) : false">
509
597
  </button>
510
598
  <button
511
- type="button" kendoButton kendoPagerFocusable
599
+ type="button" kendoButton
600
+ kendoPagerFocusable
512
601
  class="k-pager-nav"
513
- [disabled]="disabled"
602
+ [attr.aria-disabled]="disabled"
603
+ [class.k-disabled]="disabled"
514
604
  [icon]="prevArrowIcons[1]"
515
605
  [svgIcon]="prevArrowSVGIcons[1]"
516
606
  fillMode="flat"
@@ -532,23 +622,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
532
622
  * Displays a drop-down list for the page size selection ([see example]({% slug pager_settings %})).
533
623
  */
534
624
  class PagerPageSizesComponent extends PagerElementComponent {
535
- constructor(localization, cd, pagerContext, element, ngZone) {
536
- super(localization, pagerContext, cd);
537
- this.pagerContext = pagerContext;
538
- this.element = element;
539
- this.ngZone = ngZone;
540
- /**
541
- * Specifies the padding of the dropdown.
542
- *
543
- * The possible values are:
544
- * * `small`
545
- * * `medium` (default)
546
- * * `large`
547
- * * `none`
548
- */
549
- this.size = DEFAULT_SIZE;
550
- this._pageSizes = [];
551
- }
625
+ pagerContext;
626
+ element;
627
+ ngZone;
628
+ dropDownList;
552
629
  /**
553
630
  * The page sizes collection. Can contain numbers and [PageSizeItem]({% slug api_pager_pagesizeitem %}) objects.
554
631
  *
@@ -562,15 +639,15 @@ class PagerPageSizesComponent extends PagerElementComponent {
562
639
  * <span>{{item.ProductID}}. </span>
563
640
  * <span>{{item.ProductName}}</span>
564
641
  * </div>
565
- * <kendo-datapager
642
+ * <kendo-pager
566
643
  * [skip]="skip"
567
644
  * [pageSize]="pageSize"
568
645
  * [total]="total"
569
646
  * (pageChange)="onPageChange($event)">
570
- * <ng-template kendoDataPagerTemplate>
571
- * <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>
572
649
  * </ng-template>
573
- * </kendo-datapager>
650
+ * </kendo-pager>
574
651
  * `
575
652
  * })
576
653
  * class AppComponent {
@@ -690,6 +767,16 @@ class PagerPageSizesComponent extends PagerElementComponent {
690
767
  get pageSizes() {
691
768
  return this._pageSizes;
692
769
  }
770
+ /**
771
+ * Specifies the padding of the dropdown.
772
+ *
773
+ * The possible values are:
774
+ * * `small`
775
+ * * `medium` (default)
776
+ * * `large`
777
+ * * `none`
778
+ */
779
+ size = DEFAULT_SIZE;
693
780
  /**
694
781
  * @hidden
695
782
  *
@@ -698,6 +785,13 @@ class PagerPageSizesComponent extends PagerElementComponent {
698
785
  get classes() {
699
786
  return true;
700
787
  }
788
+ _pageSizes = [];
789
+ constructor(localization, cd, pagerContext, element, ngZone) {
790
+ super(localization, pagerContext, cd);
791
+ this.pagerContext = pagerContext;
792
+ this.element = element;
793
+ this.ngZone = ngZone;
794
+ }
701
795
  ngAfterViewInit() {
702
796
  this.ngZone.runOutsideAngular(() => {
703
797
  this.element.nativeElement.addEventListener('keydown', this.keyDownHandler.bind(this), true);
@@ -728,9 +822,8 @@ class PagerPageSizesComponent extends PagerElementComponent {
728
822
  this.dropDownList.toggle(false);
729
823
  }
730
824
  }
731
- }
732
- PagerPageSizesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
733
- PagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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: `
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 });
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: `
734
827
  <kendo-dropdownlist kendoPagerFocusable
735
828
  #dropdownlist
736
829
  [size]="size"
@@ -743,11 +836,12 @@ PagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
743
836
  [attr.aria-label]="textFor('itemsPerPage')"></kendo-dropdownlist>
744
837
  {{ textFor('itemsPerPage') }}
745
838
  `, isInline: true, dependencies: [{ kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
746
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
839
+ }
840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
747
841
  type: Component,
748
842
  args: [{
749
843
  changeDetection: ChangeDetectionStrategy.OnPush,
750
- selector: 'kendo-datapager-page-sizes',
844
+ selector: 'kendo-datapager-page-sizes, kendo-pager-page-sizes',
751
845
  template: `
752
846
  <kendo-dropdownlist kendoPagerFocusable
753
847
  #dropdownlist
@@ -778,7 +872,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
778
872
 
779
873
  /**
780
874
  * Represents the pager template which helps to customize the pager appearance. To define a pager
781
- * 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>`.
782
876
  *
783
877
  * The template context provides the following fields:
784
878
  * * `currentPage`&mdash;The index of the displayed page.
@@ -793,15 +887,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
793
887
  * _@Component({
794
888
  * selector: 'my-app',
795
889
  * template: `
796
- * <kendo-datapager [total]="total" [pageSize]="pageSize" [skip]="skip" (pageChange)="onPageChange($event)">
797
- * <ng-template kendoDataPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
798
- * <kendo-datapager-prev-buttons></kendo-datapager-prev-buttons>
799
- * <kendo-datapager-numeric-buttons [buttonCount]="10"></kendo-datapager-numeric-buttons>
800
- * <kendo-datapager-next-buttons></kendo-datapager-next-buttons>
801
- * <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>
802
896
  * Current page: {{currentPage}}
803
897
  * </ng-template>
804
- * </kendo-datapager>
898
+ * </kendo-pager>
805
899
  * `
806
900
  * })
807
901
  *
@@ -819,16 +913,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
819
913
  * ```
820
914
  */
821
915
  class PagerTemplateDirective {
916
+ templateRef;
822
917
  constructor(templateRef) {
823
918
  this.templateRef = templateRef;
824
919
  }
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 });
921
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PagerTemplateDirective, isStandalone: true, selector: "[kendoDataPagerTemplate], [kendoPagerTemplate]", ngImport: i0 });
825
922
  }
826
- PagerTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
827
- PagerTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: PagerTemplateDirective, isStandalone: true, selector: "[kendoDataPagerTemplate]", ngImport: i0 });
828
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerTemplateDirective, decorators: [{
923
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerTemplateDirective, decorators: [{
829
924
  type: Directive,
830
925
  args: [{
831
- selector: '[kendoDataPagerTemplate]',
926
+ selector: '[kendoDataPagerTemplate], [kendoPagerTemplate]',
832
927
  standalone: true
833
928
  }]
834
929
  }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
@@ -839,12 +934,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
839
934
  * Displays numeric buttons to enable navigation between the pages.
840
935
  */
841
936
  class PagerNumericButtonsComponent extends PagerElementComponent {
842
- constructor(localization, cd, pagerContext, renderer) {
843
- super(localization, pagerContext, cd);
844
- this.pagerContext = pagerContext;
845
- this.renderer = renderer;
846
- this._size = DEFAULT_SIZE;
847
- }
937
+ pagerContext;
938
+ renderer;
939
+ selectElement;
940
+ numbersElement;
941
+ /**
942
+ * The count of the displayed buttons.
943
+ *
944
+ * @type {number}
945
+ * @memberOf PagerNumericButtonsComponent
946
+ */
947
+ buttonCount;
848
948
  /**
849
949
  * Specifies the padding of the numeric buttons.
850
950
  *
@@ -894,6 +994,12 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
894
994
  }
895
995
  return 1;
896
996
  }
997
+ constructor(localization, cd, pagerContext, renderer) {
998
+ super(localization, pagerContext, cd);
999
+ this.pagerContext = pagerContext;
1000
+ this.renderer = renderer;
1001
+ }
1002
+ _size = DEFAULT_SIZE;
897
1003
  ngAfterViewInit() {
898
1004
  this.handleClasses(this.size, 'size');
899
1005
  }
@@ -947,12 +1053,10 @@ class PagerNumericButtonsComponent extends PagerElementComponent {
947
1053
  this.renderer.addClass(elem, classes.toAdd);
948
1054
  }
949
1055
  }
950
- }
951
- PagerNumericButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
952
- PagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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: `
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 });
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: `
953
1058
  <select kendoPagerFocusable #select
954
- class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
955
- [style.display]="'none'"
1059
+ class="k-hidden k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
956
1060
  [attr.title]="pageChooserLabel"
957
1061
  [attr.aria-label]="pageChooserLabel"
958
1062
  (change)="onSelectChange($event)">
@@ -1015,15 +1119,15 @@ PagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14
1015
1119
  (click)="changePage(end)">...</button>
1016
1120
  </div>
1017
1121
  `, 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 });
1018
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{
1122
+ }
1123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{
1019
1124
  type: Component,
1020
1125
  args: [{
1021
1126
  changeDetection: ChangeDetectionStrategy.OnPush,
1022
- selector: 'kendo-datapager-numeric-buttons',
1127
+ selector: 'kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons',
1023
1128
  template: `
1024
1129
  <select kendoPagerFocusable #select
1025
- class="k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
1026
- [style.display]="'none'"
1130
+ class="k-hidden k-dropdown-list k-dropdown k-picker k-picker-solid k-rounded-md"
1027
1131
  [attr.title]="pageChooserLabel"
1028
1132
  [attr.aria-label]="pageChooserLabel"
1029
1133
  (change)="onSelectChange($event)">
@@ -1106,19 +1210,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1106
1210
  * Displays buttons for navigating to the next and to the last page ([see example]({% slug pager_settings %})).
1107
1211
  */
1108
1212
  class PagerNextButtonsComponent extends PagerElementComponent {
1109
- constructor(localization, pagerContext, cd) {
1110
- super(localization, pagerContext, cd);
1111
- /**
1112
- * Specifies the padding of the buttons.
1113
- *
1114
- * The possible values are:
1115
- * * `small`
1116
- * * `medium` (default)
1117
- * * `large`
1118
- * * `none`
1119
- */
1120
- this.size = DEFAULT_SIZE;
1121
- }
1122
1213
  /**
1123
1214
  * @hidden
1124
1215
  *
@@ -1129,15 +1220,27 @@ class PagerNextButtonsComponent extends PagerElementComponent {
1129
1220
  get disabled() {
1130
1221
  return this.currentPage === this.totalPages || !this.total;
1131
1222
  }
1223
+ /**
1224
+ * Specifies the padding of the buttons.
1225
+ *
1226
+ * The possible values are:
1227
+ * * `small`
1228
+ * * `medium` (default)
1229
+ * * `large`
1230
+ * * `none`
1231
+ */
1232
+ size = DEFAULT_SIZE;
1233
+ constructor(localization, pagerContext, cd) {
1234
+ super(localization, pagerContext, cd);
1235
+ }
1132
1236
  onChanges({ total, skip, pageSize }) {
1133
1237
  this.total = total;
1134
1238
  this.skip = skip;
1135
1239
  this.pageSize = pageSize;
1136
1240
  this.cd.markForCheck();
1137
1241
  }
1138
- }
1139
- PagerNextButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerNextButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1140
- PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PagerNextButtonsComponent, isStandalone: true, selector: "kendo-datapager-next-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
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 });
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: `
1141
1244
  <button kendoButton kendoPagerFocusable
1142
1245
  type="button"
1143
1246
  [size]="size"
@@ -1146,7 +1249,8 @@ PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
1146
1249
  fillMode="flat"
1147
1250
  rounded="none"
1148
1251
  class="k-pager-nav"
1149
- [disabled]="disabled"
1252
+ [attr.aria-disabled]="disabled"
1253
+ [class.k-disabled]="disabled"
1150
1254
  [title]="textFor('nextPage')"
1151
1255
  [attr.aria-label]="textFor('nextPage')"
1152
1256
  (click)="currentPage !== totalPages ? changePage(currentPage) : false">
@@ -1159,17 +1263,19 @@ PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
1159
1263
  fillMode="flat"
1160
1264
  rounded="none"
1161
1265
  class="k-pager-nav k-pager-last"
1162
- [disabled]="disabled"
1266
+ [attr.aria-disabled]="disabled"
1267
+ [class.k-disabled]="disabled"
1163
1268
  [title]="textFor('lastPage')"
1164
1269
  [attr.aria-label]="textFor('lastPage')"
1165
1270
  (click)="currentPage !== totalPages ? changePage(totalPages-1) : false">
1166
1271
  </button>
1167
1272
  `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{
1273
+ }
1274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{
1169
1275
  type: Component,
1170
1276
  args: [{
1171
1277
  changeDetection: ChangeDetectionStrategy.OnPush,
1172
- selector: 'kendo-datapager-next-buttons',
1278
+ selector: 'kendo-datapager-next-buttons, kendo-pager-next-buttons',
1173
1279
  template: `
1174
1280
  <button kendoButton kendoPagerFocusable
1175
1281
  type="button"
@@ -1179,7 +1285,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1179
1285
  fillMode="flat"
1180
1286
  rounded="none"
1181
1287
  class="k-pager-nav"
1182
- [disabled]="disabled"
1288
+ [attr.aria-disabled]="disabled"
1289
+ [class.k-disabled]="disabled"
1183
1290
  [title]="textFor('nextPage')"
1184
1291
  [attr.aria-label]="textFor('nextPage')"
1185
1292
  (click)="currentPage !== totalPages ? changePage(currentPage) : false">
@@ -1192,7 +1299,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1192
1299
  fillMode="flat"
1193
1300
  rounded="none"
1194
1301
  class="k-pager-nav k-pager-last"
1195
- [disabled]="disabled"
1302
+ [attr.aria-disabled]="disabled"
1303
+ [class.k-disabled]="disabled"
1196
1304
  [title]="textFor('lastPage')"
1197
1305
  [attr.aria-label]="textFor('lastPage')"
1198
1306
  (click)="currentPage !== totalPages ? changePage(totalPages-1) : false">
@@ -1209,59 +1317,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1209
1317
  * Displays an input element which allows the typing and rendering of page numbers.
1210
1318
  */
1211
1319
  class PagerInputComponent extends PagerElementComponent {
1320
+ pagerContext;
1321
+ zone;
1322
+ renderer;
1323
+ numericInput;
1324
+ /**
1325
+ * Specifies the padding of the internal numeric input element.
1326
+ *
1327
+ * The possible values are:
1328
+ * * `small`
1329
+ * * `medium` (default)
1330
+ * * `large`
1331
+ * * `none`
1332
+ */
1333
+ size = DEFAULT_SIZE;
1212
1334
  constructor(localization, pagerContext, zone, cd, renderer) {
1213
1335
  super(localization, pagerContext, cd);
1214
1336
  this.pagerContext = pagerContext;
1215
1337
  this.zone = zone;
1216
1338
  this.renderer = renderer;
1217
- /**
1218
- * Specifies the padding of the internal numeric input element.
1219
- *
1220
- * The possible values are:
1221
- * * `small`
1222
- * * `medium` (default)
1223
- * * `large`
1224
- * * `none`
1225
- */
1226
- this.size = DEFAULT_SIZE;
1227
- /**
1228
- * @hidden
1229
- *
1230
- * @param {string} value
1231
- *
1232
- * @memberOf PagerInputComponent
1233
- */
1234
- this.handleKeyDown = (event) => {
1235
- const incomingValue = this.numericInput.value || this.current;
1236
- // eslint-disable import/no-deprecated
1237
- if (event.keyCode === Keys.Enter) {
1238
- event.preventDefault();
1239
- if (incomingValue !== this.current) {
1240
- this.zone.run(() => {
1241
- this.changePage(incomingValue - 1);
1242
- });
1243
- }
1244
- }
1245
- };
1246
- /**
1247
- * @hidden
1248
- *
1249
- * @param {string} value
1250
- *
1251
- * @memberOf PagerInputComponent
1252
- */
1253
- this.handleBlur = () => {
1254
- const inputValue = this.numericInput.value;
1255
- if (!inputValue) {
1256
- this.numericInput.writeValue(this.current);
1257
- return;
1258
- }
1259
- if (inputValue !== this.current) {
1260
- this.zone.run(() => {
1261
- this.changePage(inputValue - 1);
1262
- });
1263
- }
1264
- };
1265
1339
  }
1266
1340
  onChanges({ total, skip, pageSize }) {
1267
1341
  this.total = total;
@@ -1269,6 +1343,44 @@ class PagerInputComponent extends PagerElementComponent {
1269
1343
  this.pageSize = pageSize;
1270
1344
  this.cd.markForCheck();
1271
1345
  }
1346
+ /**
1347
+ * @hidden
1348
+ *
1349
+ * @param {string} value
1350
+ *
1351
+ * @memberOf PagerInputComponent
1352
+ */
1353
+ handleKeyDown = (event) => {
1354
+ const incomingValue = this.numericInput.value || this.current;
1355
+ // eslint-disable import/no-deprecated
1356
+ if (event.keyCode === Keys.Enter) {
1357
+ event.preventDefault();
1358
+ if (incomingValue !== this.current) {
1359
+ this.zone.run(() => {
1360
+ this.changePage(incomingValue - 1);
1361
+ });
1362
+ }
1363
+ }
1364
+ };
1365
+ /**
1366
+ * @hidden
1367
+ *
1368
+ * @param {string} value
1369
+ *
1370
+ * @memberOf PagerInputComponent
1371
+ */
1372
+ handleBlur = () => {
1373
+ const inputValue = this.numericInput.value;
1374
+ if (!inputValue) {
1375
+ this.numericInput.writeValue(this.current);
1376
+ return;
1377
+ }
1378
+ if (inputValue !== this.current) {
1379
+ this.zone.run(() => {
1380
+ this.changePage(inputValue - 1);
1381
+ });
1382
+ }
1383
+ };
1272
1384
  /**
1273
1385
  * @hidden
1274
1386
  */
@@ -1281,9 +1393,8 @@ class PagerInputComponent extends PagerElementComponent {
1281
1393
  get hasPages() {
1282
1394
  return this.totalPages !== 0;
1283
1395
  }
1284
- }
1285
- PagerInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerInputComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
1286
- PagerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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: `
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 });
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: `
1287
1398
  <span class="k-pager-input">
1288
1399
  {{textFor('page')}}
1289
1400
  <kendo-numerictextbox kendoPagerFocusable
@@ -1308,10 +1419,11 @@ PagerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
1308
1419
  {{textFor('of')}} {{totalPages}}
1309
1420
  </span>
1310
1421
  `, 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"] }] });
1311
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerInputComponent, decorators: [{
1422
+ }
1423
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInputComponent, decorators: [{
1312
1424
  type: Component,
1313
1425
  args: [{
1314
- selector: 'kendo-datapager-input',
1426
+ selector: 'kendo-datapager-input, kendo-pager-input',
1315
1427
  template: `
1316
1428
  <span class="k-pager-input">
1317
1429
  {{textFor('page')}}
@@ -1352,10 +1464,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1352
1464
  * Displays information about the current page and the total number of records ([see example]({% slug pager_settings %})).
1353
1465
  */
1354
1466
  class PagerInfoComponent extends PagerElementComponent {
1355
- constructor(localization, cd, pagerContext) {
1356
- super(localization, pagerContext, cd);
1357
- this.pagerContext = pagerContext;
1358
- }
1359
1467
  /**
1360
1468
  * @hidden
1361
1469
  *
@@ -1385,8 +1493,9 @@ class PagerInfoComponent extends PagerElementComponent {
1385
1493
  * @type {boolean}
1386
1494
  * @memberOf PagerInfoComponent
1387
1495
  */
1388
- get classes() {
1389
- return true;
1496
+ hostClass = true;
1497
+ constructor(localization, cd, pagerContext) {
1498
+ super(localization, pagerContext, cd);
1390
1499
  }
1391
1500
  onChanges({ total, skip, pageSize }) {
1392
1501
  this.total = total;
@@ -1394,20 +1503,20 @@ class PagerInfoComponent extends PagerElementComponent {
1394
1503
  this.pageSize = pageSize;
1395
1504
  this.cd.markForCheck();
1396
1505
  }
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 });
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 });
1397
1508
  }
1398
- PagerInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerInfoComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });
1399
- PagerInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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 });
1400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerInfoComponent, decorators: [{
1509
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerInfoComponent, decorators: [{
1401
1510
  type: Component,
1402
1511
  args: [{
1403
1512
  changeDetection: ChangeDetectionStrategy.OnPush,
1404
- selector: 'kendo-datapager-info',
1513
+ selector: 'kendo-datapager-info, kendo-pager-info',
1405
1514
  template: `{{currentPageText}} - {{maxItems}} {{textFor('of')}} {{total}} {{textFor('items')}}`,
1406
1515
  standalone: true
1407
1516
  }]
1408
- }], 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: [{
1409
1518
  type: HostBinding,
1410
- args: ["class.k-pager-info"]
1519
+ args: ['class.k-pager-info']
1411
1520
  }] } });
1412
1521
 
1413
1522
  /**
@@ -1417,8 +1526,8 @@ const packageMetadata = {
1417
1526
  name: '@progress/kendo-angular-pager',
1418
1527
  productName: 'Kendo UI for Angular',
1419
1528
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
1420
- publishDate: 1729170185,
1421
- version: '17.0.0-develop.8',
1529
+ publishDate: 1731414064,
1530
+ version: '17.0.0',
1422
1531
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
1423
1532
  };
1424
1533
 
@@ -1432,99 +1541,51 @@ const RESPONSIVE_BREAKPOINT_MEDIUM = 600;
1432
1541
  const RESPONSIVE_BREAKPOINT_LARGE = 768;
1433
1542
 
1434
1543
  class PagerComponent {
1435
- constructor(pagerContext, element, localization, renderer, ngZone, navigationService) {
1436
- this.pagerContext = pagerContext;
1437
- this.element = element;
1438
- this.localization = localization;
1439
- this.renderer = renderer;
1440
- this.ngZone = ngZone;
1441
- this.navigationService = navigationService;
1442
- /**
1443
- * Represents the total number of data items in the collection.
1444
- */
1445
- this.total = 0;
1446
- /**
1447
- * Defines the number of data items to be skipped.
1448
- */
1449
- this.skip = 0;
1450
- /**
1451
- * Sets the maximum numeric buttons count before the buttons are collapsed.
1452
- */
1453
- this.buttonCount = 10;
1454
- /**
1455
- * Toggles the information about the current page and the total number of records.
1456
- */
1457
- this.info = true;
1458
- /**
1459
- * Defines the type of the pager.
1460
- */
1461
- this.type = 'numeric';
1462
- /**
1463
- * Toggles the **Previous** and **Next** buttons.
1464
- */
1465
- this.previousNext = true;
1466
- /**
1467
- * Fires when the current page of the Pager is changed ([see example](slug:overview_pager)).
1468
- * You have to handle the event yourself and page the data.
1469
- */
1470
- this.pageChange = new EventEmitter();
1471
- /**
1472
- * Fires when the page size of the Pager is changed.
1473
- * You have to handle the event yourself and page the data.
1474
- * If the event is prevented, the page size will remain unchanged ([see example]({% slug pager_events %})).
1475
- */
1476
- this.pageSizeChange = new EventEmitter();
1477
- this.pagerClass = true;
1478
- this.widgetRole = 'application';
1479
- this.roleDescription = 'pager';
1480
- this.keyShortcuts = 'Enter ArrowRight ArrowLeft';
1481
- this.hostTabindex = '0';
1482
- this.subscriptions = new Subscription();
1483
- this._templateContext = {};
1484
- this._pageSizeValues = DEFAULT_PAGE_SIZE_VALUES;
1485
- this.isInnerNavigationEnabled = false;
1486
- this._navigable = false;
1487
- this._size = DEFAULT_SIZE;
1488
- this.resizeHandler = () => {
1489
- if (this.template?.first) {
1490
- return;
1491
- }
1492
- const width = this.element.nativeElement.offsetWidth;
1493
- this.ngZone.runOutsideAngular(() => {
1494
- setTimeout(() => {
1495
- if (this.numericButtons) {
1496
- const selectElement = this.numericButtons.selectElement.nativeElement;
1497
- const numbersElement = this.numericButtons.numbersElement.nativeElement;
1498
- this.renderer.removeStyle(numbersElement, 'display');
1499
- this.renderer.setStyle(selectElement, 'display', 'none');
1500
- this.renderer.addClass(selectElement, 'k-hidden');
1501
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1502
- this.renderer.removeStyle(selectElement, 'display');
1503
- this.renderer.removeClass(selectElement, 'k-hidden');
1504
- this.renderer.setStyle(numbersElement, 'display', 'none');
1505
- }
1506
- else {
1507
- this.renderer.addClass(selectElement, 'k-hidden');
1508
- }
1509
- }
1510
- if (this.pagerInfo) {
1511
- this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
1512
- if (width < RESPONSIVE_BREAKPOINT_LARGE) {
1513
- this.renderer.setStyle(this.pagerInfo.nativeElement, 'display', 'none');
1514
- }
1515
- }
1516
- if (this.pagerPageSizes) {
1517
- this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
1518
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1519
- this.renderer.setStyle(this.pagerPageSizes.nativeElement, 'display', 'none');
1520
- }
1521
- }
1522
- });
1523
- });
1524
- };
1525
- validatePackage(packageMetadata);
1526
- this.direction = localization.rtl ? 'rtl' : 'ltr';
1527
- }
1544
+ pagerContext;
1545
+ element;
1546
+ localization;
1547
+ renderer;
1548
+ ngZone;
1549
+ navigationService;
1550
+ template;
1551
+ /**
1552
+ * @hidden
1553
+ */
1554
+ externalTemplate;
1555
+ /**
1556
+ * Represents the total number of data items in the collection.
1557
+ *
1558
+ * @default 0
1559
+ */
1560
+ total = 0;
1561
+ /**
1562
+ * Defines the number of data items to be skipped.
1563
+ *
1564
+ * @default 0
1565
+ */
1566
+ skip = 0;
1567
+ /**
1568
+ * Defines the number of data items per page.
1569
+ */
1570
+ pageSize;
1571
+ /**
1572
+ * Sets the maximum numeric buttons count before the buttons are collapsed.
1573
+ *
1574
+ * @default 10
1575
+ */
1576
+ buttonCount = 10;
1577
+ /**
1578
+ * Toggles the information about the current page and the total number of records.
1579
+ *
1580
+ * @default true
1581
+ */
1582
+ info = true;
1583
+ /**
1584
+ * Defines the type of the pager.
1585
+ *
1586
+ * @default 'numeric'
1587
+ */
1588
+ type = 'numeric';
1528
1589
  /**
1529
1590
  * Shows a dropdown for selecting the page size.
1530
1591
  * When set to `true`, the dropdown will contain the default list of options - 5, 10, 20.
@@ -1537,6 +1598,12 @@ class PagerComponent {
1537
1598
  get pageSizeValues() {
1538
1599
  return this._pageSizeValues;
1539
1600
  }
1601
+ /**
1602
+ * Toggles the **Previous** and **Next** buttons.
1603
+ *
1604
+ * @default true
1605
+ */
1606
+ previousNext = true;
1540
1607
  /**
1541
1608
  * If set to `true`, the user can use dedicated shortcuts to interact with the Pager ([see example]({% slug keyboard_navigation_pager %})).
1542
1609
  * By default, navigation is disabled and the Pager content is accessible in the normal tab sequence.
@@ -1566,6 +1633,31 @@ class PagerComponent {
1566
1633
  get size() {
1567
1634
  return this._size;
1568
1635
  }
1636
+ /**
1637
+ * @hidden
1638
+ * Toggles the Pager responsive functionality.
1639
+ *
1640
+ * @default true
1641
+ */
1642
+ responsive = true;
1643
+ /**
1644
+ * Fires when the current page of the Pager is changed ([see example](slug:overview_pager)).
1645
+ * You have to handle the event yourself and page the data.
1646
+ */
1647
+ pageChange = new EventEmitter();
1648
+ /**
1649
+ * Fires when the page size of the Pager is changed.
1650
+ * You have to handle the event yourself and page the data.
1651
+ * If the event is prevented, the page size will remain unchanged ([see example]({% slug pager_events %})).
1652
+ */
1653
+ pageSizeChange = new EventEmitter();
1654
+ pagerClass = true;
1655
+ widgetRole = 'application';
1656
+ roleDescription = 'pager';
1657
+ keyShortcuts = 'Enter ArrowRight ArrowLeft';
1658
+ get hostTabindex() {
1659
+ return this.navigable ? '0' : '-1';
1660
+ }
1569
1661
  get dir() {
1570
1662
  return this.direction;
1571
1663
  }
@@ -1591,10 +1683,33 @@ class PagerComponent {
1591
1683
  context.currentPage = this.currentPage;
1592
1684
  return context;
1593
1685
  }
1686
+ subscriptions = new Subscription();
1687
+ _templateContext = {};
1688
+ _pageSizeValues = DEFAULT_PAGE_SIZE_VALUES;
1689
+ direction;
1690
+ isInnerNavigationEnabled = false;
1691
+ _navigable = false;
1692
+ _size = DEFAULT_SIZE;
1693
+ constructor(pagerContext, element, localization, renderer, ngZone, navigationService) {
1694
+ this.pagerContext = pagerContext;
1695
+ this.element = element;
1696
+ this.localization = localization;
1697
+ this.renderer = renderer;
1698
+ this.ngZone = ngZone;
1699
+ this.navigationService = navigationService;
1700
+ validatePackage(packageMetadata);
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;
1709
+ }
1594
1710
  ngOnInit() {
1595
1711
  this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));
1596
1712
  this.subscriptions.add(this.pagerContext.pageSizeChange.subscribe(this.changePageSize.bind(this)));
1597
- this.subscriptions.add(this.resizeSensor.resize.subscribe(() => this.resizeHandler()));
1598
1713
  this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {
1599
1714
  this.direction = rtl ? 'rtl' : 'ltr';
1600
1715
  }));
@@ -1607,10 +1722,10 @@ class PagerComponent {
1607
1722
  }
1608
1723
  }
1609
1724
  ngAfterViewInit() {
1610
- this.resizeHandler();
1725
+ this.responsive && this.resizeHandler();
1611
1726
  this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
1612
1727
  this.subscriptions.add(this.template.changes.subscribe(() => {
1613
- this.resizeHandler();
1728
+ this.responsive && this.resizeHandler();
1614
1729
  }));
1615
1730
  this.handleClasses(this.size, 'size');
1616
1731
  }
@@ -1623,6 +1738,9 @@ class PagerComponent {
1623
1738
  });
1624
1739
  this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
1625
1740
  }
1741
+ if (changes['responsive']) {
1742
+ this.responsive && this.resizeHandler();
1743
+ }
1626
1744
  }
1627
1745
  ngOnDestroy() {
1628
1746
  this.subscriptions.unsubscribe();
@@ -1656,11 +1774,53 @@ class PagerComponent {
1656
1774
  this.pageChange.emit({ skip: this.skip, take: event.newPageSize });
1657
1775
  }
1658
1776
  }
1659
- textFor(value) {
1660
- return this.localization.get(value);
1661
- }
1777
+ /**
1778
+ * @hidden
1779
+ */
1780
+ resizeHandler = () => {
1781
+ if (this.template?.first && !this.responsive) {
1782
+ return;
1783
+ }
1784
+ const width = this.element.nativeElement.offsetWidth;
1785
+ this.ngZone.runOutsideAngular(() => {
1786
+ setTimeout(() => {
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');
1793
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1794
+ this.renderer.removeClass(selectElement, 'k-hidden');
1795
+ this.renderer.addClass(numbersElement, 'k-hidden');
1796
+ }
1797
+ else {
1798
+ this.renderer.addClass(selectElement, 'k-hidden');
1799
+ this.renderer.removeClass(numbersElement, 'k-hidden');
1800
+ }
1801
+ }
1802
+ if (pagerInfoElement) {
1803
+ if (width < RESPONSIVE_BREAKPOINT_LARGE) {
1804
+ this.renderer.addClass(pagerInfoElement, 'k-hidden');
1805
+ }
1806
+ else {
1807
+ this.renderer.removeClass(pagerInfoElement, 'k-hidden');
1808
+ }
1809
+ }
1810
+ if (pagerPageSizes) {
1811
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1812
+ this.renderer.addClass(pagerPageSizes, 'k-hidden');
1813
+ }
1814
+ else {
1815
+ this.renderer.removeClass(pagerPageSizes, 'k-hidden');
1816
+ }
1817
+ }
1818
+ });
1819
+ });
1820
+ };
1662
1821
  get ariaLabel() {
1663
- 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());
1664
1824
  }
1665
1825
  keyDownHandler(e) {
1666
1826
  const target = e.target;
@@ -1676,11 +1836,17 @@ class PagerComponent {
1676
1836
  const isLastPage = this.currentPage === this.totalPages;
1677
1837
  this.ngZone.run(() => {
1678
1838
  if (isHome) {
1839
+ if (e.target !== wrapper) {
1840
+ return;
1841
+ }
1679
1842
  e.preventDefault();
1680
1843
  !isFirstPage && this.pagerContext.changePage(0);
1681
1844
  }
1682
1845
  else if (isEnd) {
1683
1846
  e.preventDefault();
1847
+ if (e.target !== wrapper) {
1848
+ return;
1849
+ }
1684
1850
  !isLastPage && this.pagerContext.changePage(this.totalPages - 1);
1685
1851
  }
1686
1852
  else if (this.isInnerNavigationEnabled) {
@@ -1693,6 +1859,9 @@ class PagerComponent {
1693
1859
  }
1694
1860
  }
1695
1861
  else {
1862
+ if (e.target !== wrapper) {
1863
+ return;
1864
+ }
1696
1865
  if (isArrowLeftOrPageUp) {
1697
1866
  e.preventDefault();
1698
1867
  !isFirstPage && this.pagerContext.prevPage();
@@ -1702,9 +1871,6 @@ class PagerComponent {
1702
1871
  !isLastPage && this.pagerContext.nextPage();
1703
1872
  }
1704
1873
  else if (isEnter) {
1705
- if (e.target !== wrapper) {
1706
- return;
1707
- }
1708
1874
  e.preventDefault();
1709
1875
  const [firstFocusable] = this.navigationService.getFirstAndLastFocusable(wrapper);
1710
1876
  this.navigationService.toggleInnerNavigation(true);
@@ -1726,18 +1892,20 @@ class PagerComponent {
1726
1892
  this.renderer.addClass(elem, classes.toAdd);
1727
1893
  }
1728
1894
  }
1729
- }
1730
- PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", 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 });
1731
- PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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: [
1732
- LocalizationService,
1733
- PagerContextService,
1734
- PagerNavigationService,
1735
- {
1736
- provide: L10N_PREFIX,
1737
- useValue: 'kendo.pager'
1738
- }
1739
- ], 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: `
1740
- <ng-container kendoDataPagerLocalizedMessages
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: [
1897
+ LocalizationService,
1898
+ PagerContextService,
1899
+ PagerNavigationService,
1900
+ {
1901
+ provide: L10N_PREFIX,
1902
+ useValue: 'kendo.pager'
1903
+ }
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
+
1741
1909
  i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
1742
1910
  firstPage="Go to the first page"
1743
1911
 
@@ -1773,35 +1941,36 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
1773
1941
  >
1774
1942
  </ng-container>
1775
1943
  <ng-container
1776
- *ngIf="template.first?.templateRef"
1944
+ *ngIf="template.first?.templateRef; else default"
1777
1945
  [ngTemplateOutlet]="template.first?.templateRef"
1778
1946
  [ngTemplateOutletContext]="templateContext">
1779
1947
  </ng-container>
1780
- <ng-container *ngIf="!template?.first?.templateRef">
1948
+ <ng-template #default>
1781
1949
  <div class="k-pager-numbers-wrap">
1782
- <kendo-datapager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-prev-buttons>
1783
- <kendo-datapager-numeric-buttons
1950
+ <kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
1951
+ <kendo-pager-numeric-buttons
1784
1952
  [size]="size"
1785
1953
  *ngIf="type === 'numeric' && buttonCount > 0"
1786
1954
  [buttonCount]="buttonCount">
1787
- </kendo-datapager-numeric-buttons>
1788
- <kendo-datapager-input [size]="size" *ngIf="type === 'input'"></kendo-datapager-input>
1789
- <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>
1790
1958
  </div>
1791
- <kendo-datapager-page-sizes *ngIf="pageSizeValues"
1959
+ <kendo-pager-page-sizes *ngIf="pageSizeValues"
1792
1960
  [size]="size"
1793
1961
  [pageSizes]="pageSizeValues">
1794
- </kendo-datapager-page-sizes>
1795
- <kendo-datapager-info *ngIf='info'>
1796
- </kendo-datapager-info>
1797
- </ng-container>
1798
- <kendo-resize-sensor></kendo-resize-sensor>
1799
- `, 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"] }] });
1800
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerComponent, decorators: [{
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"] }] });
1968
+ }
1969
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, decorators: [{
1801
1970
  type: Component,
1802
1971
  args: [{
1803
- selector: 'kendo-datapager',
1804
- exportAs: 'kendoDataPager',
1972
+ selector: 'kendo-datapager, kendo-pager',
1973
+ exportAs: 'kendoDataPager, kendoPager',
1805
1974
  providers: [
1806
1975
  LocalizationService,
1807
1976
  PagerContextService,
@@ -1812,7 +1981,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1812
1981
  }
1813
1982
  ],
1814
1983
  template: `
1815
- <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
+
1816
1988
  i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
1817
1989
  firstPage="Go to the first page"
1818
1990
 
@@ -1848,48 +2020,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1848
2020
  >
1849
2021
  </ng-container>
1850
2022
  <ng-container
1851
- *ngIf="template.first?.templateRef"
2023
+ *ngIf="template.first?.templateRef; else default"
1852
2024
  [ngTemplateOutlet]="template.first?.templateRef"
1853
2025
  [ngTemplateOutletContext]="templateContext">
1854
2026
  </ng-container>
1855
- <ng-container *ngIf="!template?.first?.templateRef">
2027
+ <ng-template #default>
1856
2028
  <div class="k-pager-numbers-wrap">
1857
- <kendo-datapager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-prev-buttons>
1858
- <kendo-datapager-numeric-buttons
2029
+ <kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
2030
+ <kendo-pager-numeric-buttons
1859
2031
  [size]="size"
1860
2032
  *ngIf="type === 'numeric' && buttonCount > 0"
1861
2033
  [buttonCount]="buttonCount">
1862
- </kendo-datapager-numeric-buttons>
1863
- <kendo-datapager-input [size]="size" *ngIf="type === 'input'"></kendo-datapager-input>
1864
- <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>
1865
2037
  </div>
1866
- <kendo-datapager-page-sizes *ngIf="pageSizeValues"
2038
+ <kendo-pager-page-sizes *ngIf="pageSizeValues"
1867
2039
  [size]="size"
1868
2040
  [pageSizes]="pageSizeValues">
1869
- </kendo-datapager-page-sizes>
1870
- <kendo-datapager-info *ngIf='info'>
1871
- </kendo-datapager-info>
1872
- </ng-container>
1873
- <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>
1874
2046
  `,
1875
2047
  standalone: true,
1876
2048
  imports: [LocalizedMessagesDirective, NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerPageSizesComponent, PagerInfoComponent, ResizeSensorComponent]
1877
2049
  }]
1878
- }], ctorParameters: function () { return [{ type: PagerContextService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: PagerNavigationService }]; }, propDecorators: { resizeSensor: [{
1879
- type: ViewChild,
1880
- args: [ResizeSensorComponent, { static: true }]
1881
- }], pagerInfo: [{
1882
- type: ViewChild,
1883
- args: [PagerInfoComponent, { read: ElementRef }]
1884
- }], pagerPageSizes: [{
1885
- type: ViewChild,
1886
- args: [PagerPageSizesComponent, { read: ElementRef }]
1887
- }], numericButtons: [{
1888
- type: ViewChild,
1889
- args: [PagerNumericButtonsComponent]
1890
- }], 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: [{
1891
2059
  type: ContentChildren,
1892
2060
  args: [PagerTemplateDirective]
2061
+ }], externalTemplate: [{
2062
+ type: Input
1893
2063
  }], total: [{
1894
2064
  type: Input
1895
2065
  }], skip: [{
@@ -1910,6 +2080,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1910
2080
  type: Input
1911
2081
  }], size: [{
1912
2082
  type: Input
2083
+ }], responsive: [{
2084
+ type: Input
1913
2085
  }], pageChange: [{
1914
2086
  type: Output
1915
2087
  }], pageSizeChange: [{
@@ -1937,6 +2109,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1937
2109
  args: ['focusin', ['$event']]
1938
2110
  }] } });
1939
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
+
1940
2155
  /**
1941
2156
  * Utility array that contains all `@progress/kendo-angular-pager` related components and directives
1942
2157
  */
@@ -1950,23 +2165,43 @@ const KENDO_PAGER = [
1950
2165
  PagerPageSizesComponent,
1951
2166
  PagerPrevButtonsComponent,
1952
2167
  PagerTemplateDirective,
1953
- PagerComponent
2168
+ PagerComponent,
2169
+ PagerSpacerComponent
1954
2170
  ];
1955
2171
 
1956
- // IMPORTANT: NgModule export kept for backwards compatibility
2172
+ //IMPORTANT: NgModule export kept for backwards compatibility
1957
2173
  /**
1958
- * @hidden
2174
+ * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
2175
+ * definition for the Pager component. Imports `PagerModule` into the
2176
+ * [root module](link:site.data.urls.angular['ngmodules']#angular-modularity)
2177
+ * of your application or into any other sub-module that will use the Pager component.
2178
+ *
2179
+ * @example
2180
+ * ```ts-no-run
2181
+ * import { NgModule } from '@angular/core';
2182
+ * import { BrowserModule } from '@angular/platform-browser';
2183
+ * import { PagerModule } from '@progress/kendo-angular-pager';
2184
+ * import { AppComponent } from './app.component';
2185
+ *
2186
+ * _@NgModule({
2187
+ * bootstrap: [AppComponent],
2188
+ * declarations: [AppComponent],
2189
+ * imports: [BrowserModule, PagerModule]
2190
+ * })
2191
+ * export class AppModule {
2192
+ * }
2193
+ * ```
1959
2194
  */
1960
2195
  class PagerModule {
2196
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2197
+ 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] });
2198
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, providers: [
2199
+ IconsService,
2200
+ PopupService,
2201
+ ResizeBatchService
2202
+ ], imports: [PagerInputComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerComponent] });
1961
2203
  }
1962
- PagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1963
- PagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", 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] });
1964
- PagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerModule, providers: [
1965
- IconsService,
1966
- PopupService,
1967
- ResizeBatchService
1968
- ], imports: [CustomMessagesComponent, PagerInfoComponent, PagerInputComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerComponent] });
1969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerModule, decorators: [{
2204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, decorators: [{
1970
2205
  type: NgModule,
1971
2206
  args: [{
1972
2207
  exports: [...KENDO_PAGER],
@@ -1983,5 +2218,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1983
2218
  * Generated bundle index. Do not edit.
1984
2219
  */
1985
2220
 
1986
- export { CustomMessagesComponent, KENDO_PAGER, LocalizedMessagesDirective, PageSizeChangeEvent, PagerComponent, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective };
2221
+ export { CustomMessagesComponent, KENDO_PAGER, LocalizedMessagesDirective, PageSizeChangeEvent, PagerComponent, PagerContextService, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerModule, PagerNavigationService, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerSpacerComponent, PagerTemplateDirective };
1987
2222