@progress/kendo-angular-pager 4.1.0-dev.202211250852 → 11.0.0-develop.100

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 (68) hide show
  1. package/LICENSE.md +1 -1
  2. package/NOTICE.txt +4 -4
  3. package/README.md +1 -1
  4. package/{esm2015/main.js → esm2020/index.mjs} +1 -1
  5. package/{esm2015/package-metadata.js → esm2020/package-metadata.mjs} +3 -3
  6. package/{esm2015/pager/change-event-args.interface.js → esm2020/pager/change-event-args.interface.mjs} +1 -1
  7. package/{esm2015/pager/common/constants.js → esm2020/pager/common/constants.mjs} +1 -1
  8. package/{esm2015/pager/pagesize-item.interface.js → esm2020/pager/common/pager-classes.mjs} +1 -1
  9. package/{esm2015/pager/common/pager-type.js → esm2020/pager/common/pager-size.mjs} +1 -1
  10. package/esm2020/pager/common/pager-type.mjs +5 -0
  11. package/{esm2015/pager/focusable.directive.js → esm2020/pager/focusable.directive.mjs} +6 -5
  12. package/{esm2015/pager/localization/custom-messages.component.js → esm2020/pager/localization/custom-messages.component.mjs} +5 -4
  13. package/{esm2015/pager/localization/localized-messages.directive.js → esm2020/pager/localization/localized-messages.directive.mjs} +5 -4
  14. package/{esm2015/pager/localization/messages.js → esm2020/pager/localization/messages.mjs} +4 -4
  15. package/{esm2015/pager/navigation.service.js → esm2020/pager/navigation.service.mjs} +1 -1
  16. package/{esm2015/pager/pager-context.service.js → esm2020/pager/pager-context.service.mjs} +1 -1
  17. package/{esm2015/pager/pager-element.component.js → esm2020/pager/pager-element.component.mjs} +7 -5
  18. package/{esm2015/pager/pager-info.component.js → esm2020/pager/pager-info.component.mjs} +7 -8
  19. package/{esm2015/pager/pager-input.component.js → esm2020/pager/pager-input.component.mjs} +23 -6
  20. package/esm2020/pager/pager-next-buttons.component.mjs +124 -0
  21. package/esm2020/pager/pager-numeric-buttons.component.mjs +273 -0
  22. package/{esm2015/pager/pager-page-sizes.component.js → esm2020/pager/pager-page-sizes.component.mjs} +25 -8
  23. package/esm2020/pager/pager-prev-buttons.component.mjs +124 -0
  24. package/{esm2015/pager/pager-template.directive.js → esm2020/pager/pager-template.directive.mjs} +5 -5
  25. package/{esm2015/pager/pager.component.js → esm2020/pager/pager.component.mjs} +72 -35
  26. package/{esm2015/pager/pager.module.js → esm2020/pager/pager.module.mjs} +8 -5
  27. package/esm2020/pager/pagesize-item.interface.mjs +5 -0
  28. package/{esm2015/pager/pagesizechange-event.js → esm2020/pager/pagesizechange-event.mjs} +1 -1
  29. package/{esm2015/pager/preventable-event.js → esm2020/pager/preventable-event.mjs} +1 -1
  30. package/{esm2015/kendo-angular-pager.js → esm2020/progress-kendo-angular-pager.mjs} +2 -2
  31. package/{esm2015/util.js → esm2020/util.mjs} +26 -1
  32. package/fesm2015/progress-kendo-angular-pager.mjs +1966 -0
  33. package/{fesm2015/kendo-angular-pager.js → fesm2020/progress-kendo-angular-pager.mjs} +417 -210
  34. package/{main.d.ts → index.d.ts} +2 -1
  35. package/package-metadata.d.ts +1 -1
  36. package/package.json +30 -55
  37. package/pager/change-event-args.interface.d.ts +1 -1
  38. package/pager/common/constants.d.ts +1 -1
  39. package/pager/common/pager-classes.d.ts +11 -0
  40. package/pager/common/pager-size.d.ts +9 -0
  41. package/pager/common/pager-type.d.ts +1 -1
  42. package/pager/focusable.directive.d.ts +1 -1
  43. package/pager/localization/custom-messages.component.d.ts +1 -1
  44. package/pager/localization/localized-messages.directive.d.ts +1 -1
  45. package/pager/localization/messages.d.ts +1 -1
  46. package/pager/navigation.service.d.ts +1 -1
  47. package/pager/pager-context.service.d.ts +1 -1
  48. package/pager/pager-element.component.d.ts +1 -1
  49. package/pager/pager-info.component.d.ts +1 -1
  50. package/pager/pager-input.component.d.ts +13 -2
  51. package/pager/pager-next-buttons.component.d.ts +22 -2
  52. package/pager/pager-numeric-buttons.component.d.ts +21 -5
  53. package/pager/pager-page-sizes.component.d.ts +13 -2
  54. package/pager/pager-prev-buttons.component.d.ts +22 -2
  55. package/pager/pager-template.directive.d.ts +1 -1
  56. package/pager/pager.component.d.ts +19 -5
  57. package/pager/pager.module.d.ts +4 -3
  58. package/pager/pagesize-item.interface.d.ts +1 -1
  59. package/pager/pagesizechange-event.d.ts +1 -1
  60. package/pager/preventable-event.d.ts +1 -1
  61. package/{kendo-angular-pager.d.ts → progress-kendo-angular-pager.d.ts} +2 -2
  62. package/schematics/ngAdd/index.js +4 -6
  63. package/util.d.ts +13 -1
  64. package/bundles/kendo-angular-pager.umd.js +0 -5
  65. package/esm2015/pager/pager-next-buttons.component.js +0 -87
  66. package/esm2015/pager/pager-numeric-buttons.component.js +0 -217
  67. package/esm2015/pager/pager-prev-buttons.component.js +0 -87
  68. package/schematics/ngAdd/index.js.map +0 -1
@@ -0,0 +1,1966 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import * as i0 from '@angular/core';
6
+ import { Directive, Input, forwardRef, Component, ChangeDetectionStrategy, ViewChild, HostBinding, Optional, ElementRef, EventEmitter, ContentChild, Output, HostListener, NgModule } from '@angular/core';
7
+ import * as i1 from '@progress/kendo-angular-l10n';
8
+ import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
9
+ import { Subject, Subscription } from 'rxjs';
10
+ import { caretAltLeftIcon, caretAltToLeftIcon, caretAltRightIcon, caretAltToRightIcon } from '@progress/kendo-svg-icons';
11
+ import * as i3 from '@progress/kendo-angular-buttons';
12
+ import { ButtonsModule } from '@progress/kendo-angular-buttons';
13
+ import * as i6 from '@progress/kendo-angular-common';
14
+ import { Keys, anyChanged, ResizeSensorComponent, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';
15
+ import * as i3$1 from '@progress/kendo-angular-dropdowns';
16
+ import { DropDownListModule } from '@progress/kendo-angular-dropdowns';
17
+ import * as i5 from '@angular/common';
18
+ import { CommonModule } from '@angular/common';
19
+ import * as i3$2 from '@progress/kendo-angular-inputs';
20
+ import { NumericTextBoxComponent, NumericTextBoxModule } from '@progress/kendo-angular-inputs';
21
+ import { validatePackage } from '@progress/kendo-licensing';
22
+
23
+ /**
24
+ * @hidden
25
+ */
26
+ class PreventableEvent {
27
+ constructor() {
28
+ this.prevented = false;
29
+ }
30
+ /**
31
+ * Prevents the default action for a specified event.
32
+ * In this way, the source component suppresses the built-in behavior that follows the event.
33
+ */
34
+ preventDefault() {
35
+ this.prevented = true;
36
+ }
37
+ /**
38
+ * If the event is prevented by any of its subscribers, returns `true`.
39
+ *
40
+ * @returns `true` if the default action was prevented. Otherwise, returns `false`.
41
+ */
42
+ isDefaultPrevented() {
43
+ return this.prevented;
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Arguments for the `pageSizeChange` event. The `pageSizeChange` event fires when the page size
49
+ * is changed from the UI. If you cancel the event, the change is prevented.
50
+ */
51
+ class PageSizeChangeEvent extends PreventableEvent {
52
+ /**
53
+ * Constructs the event arguments for the `pageSizeChange` event.
54
+ * @param newPageSize - The newly selected page size.
55
+ * @hidden
56
+ */
57
+ constructor(newPageSize) {
58
+ super();
59
+ this.newPageSize = newPageSize;
60
+ }
61
+ }
62
+
63
+ /**
64
+ * @hidden
65
+ */
66
+ class Messages extends ComponentMessages {
67
+ }
68
+ Messages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
69
+ Messages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", 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 });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Messages, decorators: [{
71
+ type: Directive,
72
+ args: [{
73
+ // eslint-disable-next-line @angular-eslint/directive-selector
74
+ selector: 'kendoPagerMessages'
75
+ }]
76
+ }], propDecorators: { firstPage: [{
77
+ type: Input
78
+ }], lastPage: [{
79
+ type: Input
80
+ }], previousPage: [{
81
+ type: Input
82
+ }], nextPage: [{
83
+ type: Input
84
+ }], page: [{
85
+ type: Input
86
+ }], pageNumberInputTitle: [{
87
+ type: Input
88
+ }], itemsPerPage: [{
89
+ type: Input
90
+ }], of: [{
91
+ type: Input
92
+ }], items: [{
93
+ type: Input
94
+ }], selectPage: [{
95
+ type: Input
96
+ }], inputLabel: [{
97
+ type: Input
98
+ }] } });
99
+
100
+ /**
101
+ * Custom component messages override default component messages
102
+ * ([see example]({% slug pager_globalization %}#toc-messages)).
103
+ */
104
+ class CustomMessagesComponent extends Messages {
105
+ constructor(service) {
106
+ super();
107
+ this.service = service;
108
+ }
109
+ get override() {
110
+ return true;
111
+ }
112
+ }
113
+ CustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CustomMessagesComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
114
+ CustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CustomMessagesComponent, selector: "kendo-datapager-messages", providers: [
115
+ {
116
+ provide: Messages,
117
+ useExisting: forwardRef(() => CustomMessagesComponent)
118
+ }
119
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CustomMessagesComponent, decorators: [{
121
+ type: Component,
122
+ args: [{
123
+ providers: [
124
+ {
125
+ provide: Messages,
126
+ useExisting: forwardRef(() => CustomMessagesComponent)
127
+ }
128
+ ],
129
+ selector: 'kendo-datapager-messages',
130
+ template: ``
131
+ }]
132
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
133
+
134
+ /**
135
+ * @hidden
136
+ */
137
+ class LocalizedMessagesDirective extends Messages {
138
+ constructor(service) {
139
+ super();
140
+ this.service = service;
141
+ }
142
+ }
143
+ LocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LocalizedMessagesDirective, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
144
+ LocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: LocalizedMessagesDirective, selector: "[kendoDataPagerLocalizedMessages]", providers: [
145
+ {
146
+ provide: Messages,
147
+ useExisting: forwardRef(() => LocalizedMessagesDirective)
148
+ }
149
+ ], usesInheritance: true, ngImport: i0 });
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LocalizedMessagesDirective, decorators: [{
151
+ type: Directive,
152
+ args: [{
153
+ providers: [
154
+ {
155
+ provide: Messages,
156
+ useExisting: forwardRef(() => LocalizedMessagesDirective)
157
+ }
158
+ ],
159
+ selector: '[kendoDataPagerLocalizedMessages]'
160
+ }]
161
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
162
+
163
+ /**
164
+ * @hidden
165
+ */
166
+ class PagerContextService {
167
+ constructor() {
168
+ this.changes = new Subject();
169
+ this.pageChange = new Subject();
170
+ this.pageSizeChange = new Subject();
171
+ }
172
+ get currentPage() {
173
+ return this.skip / this.pageSize;
174
+ }
175
+ notifyChanges(changes) {
176
+ this.total = changes.total;
177
+ this.pageSize = changes.pageSize;
178
+ this.skip = changes.skip;
179
+ this.changes.next(changes);
180
+ }
181
+ changePage(page) {
182
+ this.pageChange.next({ skip: page * this.pageSize, take: this.pageSize });
183
+ }
184
+ changePageSize(event) {
185
+ this.pageSizeChange.next(event);
186
+ }
187
+ nextPage() {
188
+ const nextPage = this.currentPage + 1;
189
+ if (nextPage * this.pageSize <= this.total) {
190
+ this.changePage(nextPage);
191
+ }
192
+ }
193
+ prevPage() {
194
+ const prevPage = this.currentPage - 1;
195
+ if (prevPage * this.pageSize >= 0) {
196
+ this.changePage(prevPage);
197
+ }
198
+ }
199
+ }
200
+
201
+ /**
202
+ * @hidden
203
+ */
204
+ class PagerElementComponent {
205
+ constructor(localization, pagerContext, cd) {
206
+ this.localization = localization;
207
+ this.pagerContext = pagerContext;
208
+ this.cd = cd;
209
+ this.total = this.pagerContext.total;
210
+ this.skip = this.pagerContext.skip;
211
+ this.pageSize = this.pagerContext.pageSize;
212
+ }
213
+ /**
214
+ * @hidden
215
+ *
216
+ * @readonly
217
+ * @type {number}
218
+ * @memberOf PagerElementComponent
219
+ */
220
+ get currentPage() {
221
+ return Math.floor((this.skip || 0) / this.pageSize) + 1;
222
+ }
223
+ /**
224
+ * @hidden
225
+ *
226
+ * @readonly
227
+ * @type {number}
228
+ * @memberOf PagerElementComponent
229
+ */
230
+ get totalPages() {
231
+ return Math.ceil((this.total || 0) / this.pageSize);
232
+ }
233
+ /**
234
+ * @hidden
235
+ *
236
+ * @param {string} key
237
+ * @returns {string}
238
+ *
239
+ * @memberOf PagerElementComponent
240
+ */
241
+ textFor(key) {
242
+ return this.localization.get(key);
243
+ }
244
+ /**
245
+ * @hidden
246
+ *
247
+ * @param {number} page
248
+ *
249
+ * @memberOf PagerElementComponent
250
+ */
251
+ changePage(page) {
252
+ this.pagerContext.changePage(page);
253
+ return false;
254
+ }
255
+ /**
256
+ * @hidden
257
+ *
258
+ * @memberOf PagerElementComponent
259
+ */
260
+ ngOnInit() {
261
+ this.subscriptions = this.pagerContext.changes.subscribe(this.onChanges.bind(this));
262
+ this.subscriptions.add(this.localization.changes.subscribe(() => this.cd.markForCheck()));
263
+ }
264
+ ngOnDestroy() {
265
+ if (this.subscriptions) {
266
+ this.subscriptions.unsubscribe();
267
+ }
268
+ }
269
+ }
270
+ PagerElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerElementComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
271
+ PagerElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PagerElementComponent, selector: "kendo-pager-element", ngImport: i0, template: ``, isInline: true });
272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerElementComponent, decorators: [{
273
+ type: Component,
274
+ args: [{
275
+ selector: 'kendo-pager-element',
276
+ template: ``
277
+ }]
278
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; } });
279
+
280
+ /**
281
+ * @hidden
282
+ */
283
+ const DEFAULT_PAGE_SIZE_VALUES = [5, 10, 20];
284
+ /**
285
+ * @hidden
286
+ */
287
+ const focusableDirectiveSelector = '[kendoPagerFocusable]';
288
+ /**
289
+ * @hidden
290
+ */
291
+ const getAllFocusableChildren = (parent) => {
292
+ return parent.querySelectorAll(focusableDirectiveSelector);
293
+ };
294
+ /**
295
+ * @hidden
296
+ */
297
+ const focusableSelector = [
298
+ 'a[href]:not([disabled])',
299
+ 'area[href]:not([disabled])',
300
+ 'input:not([disabled])',
301
+ 'select:not([disabled])',
302
+ 'textarea:not([disabled])',
303
+ 'button',
304
+ 'iframe:not([disabled])',
305
+ 'object:not([disabled])',
306
+ 'embed:not([disabled])',
307
+ '*[tabindex]:not([disabled])',
308
+ '*[contenteditable]:not([disabled]):not([contenteditable="false"])'
309
+ ].join(',');
310
+ /**
311
+ * @hidden
312
+ */
313
+ const DEFAULT_SIZE = 'medium';
314
+ const SIZES = {
315
+ small: 'sm',
316
+ medium: 'md',
317
+ large: 'lg'
318
+ };
319
+ /**
320
+ * @hidden
321
+ *
322
+ * Returns the styling classes to be added and removed
323
+ */
324
+ const getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {
325
+ switch (stylingOption) {
326
+ case 'size':
327
+ return {
328
+ toRemove: `k-${componentType}-${SIZES[previousValue]}`,
329
+ toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''
330
+ };
331
+ default:
332
+ break;
333
+ }
334
+ };
335
+
336
+ /**
337
+ * @hidden
338
+ */
339
+ class PagerNavigationService {
340
+ constructor() {
341
+ this.isNavigable = false;
342
+ this.innerNavigationChange = new Subject();
343
+ }
344
+ toggleInnerNavigation(value) {
345
+ this.innerNavigationChange.next(value);
346
+ }
347
+ keepFocusWithinComponent(wrapper, target, event) {
348
+ const [firstFocusable, lastFocusable] = this.getFirstAndLastFocusable(wrapper);
349
+ const tabAfterLastFocusable = !event.shiftKey && target === lastFocusable;
350
+ const shiftTabAfterFirstFocusable = event.shiftKey && target === firstFocusable;
351
+ if (tabAfterLastFocusable) {
352
+ event.preventDefault();
353
+ firstFocusable.focus();
354
+ }
355
+ if (shiftTabAfterFirstFocusable) {
356
+ event.preventDefault();
357
+ lastFocusable.focus();
358
+ }
359
+ }
360
+ getFirstAndLastFocusable(wrapper) {
361
+ const all = getAllFocusableChildren(wrapper);
362
+ const firstFocusable = all.length > 0 ? all[0] : parent;
363
+ const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;
364
+ return [firstFocusable, lastFocusable];
365
+ }
366
+ }
367
+
368
+ /**
369
+ * Place the directive on custom focusable elements in the [`kendoDataPagerTemplate`]({% slug api_pager_pagertemplatedirective %}) to include them in the built-in Pager keyboard navigation.
370
+ */
371
+ class PagerFocusableDirective {
372
+ constructor(navigationService, element, renderer) {
373
+ this.navigationService = navigationService;
374
+ this.element = element;
375
+ this.renderer = renderer;
376
+ this.subscriptions = new Subscription();
377
+ }
378
+ ngOnInit() {
379
+ this.subscriptions.add(this.navigationService.innerNavigationChange.subscribe(this.innerNavigationChange.bind(this)));
380
+ }
381
+ ngOnDestroy() {
382
+ this.subscriptions.unsubscribe();
383
+ }
384
+ get nativeElement() {
385
+ return this.element.nativeElement;
386
+ }
387
+ innerNavigationChange(value) {
388
+ if (!this.navigationService.isNavigable) {
389
+ return;
390
+ }
391
+ const index = value ? '0' : '-1';
392
+ if (this.nativeElement.matches(focusableSelector)) {
393
+ this.renderer.setAttribute(this.nativeElement, 'tabindex', index);
394
+ }
395
+ const focusableElements = this.nativeElement.querySelectorAll(focusableSelector);
396
+ focusableElements.forEach(el => {
397
+ this.renderer.setAttribute(el, 'tabindex', index);
398
+ });
399
+ }
400
+ }
401
+ PagerFocusableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerFocusableDirective, deps: [{ token: PagerNavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
402
+ PagerFocusableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"], ngImport: i0 });
403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerFocusableDirective, decorators: [{
404
+ type: Directive,
405
+ args: [{
406
+ selector: '[kendoPagerFocusable]',
407
+ exportAs: 'kendoPagerFocusable'
408
+ }]
409
+ }], ctorParameters: function () { return [{ type: PagerNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; } });
410
+
411
+ // eslint-disable no-access-missing-member
412
+ /**
413
+ * Displays buttons for navigating to the first and to the previous page ([see example]({% slug pager_settings %})).
414
+ */
415
+ class PagerPrevButtonsComponent extends PagerElementComponent {
416
+ constructor(localization, pagerContext, cd) {
417
+ super(localization, pagerContext, cd);
418
+ /**
419
+ * @hidden
420
+ */
421
+ this.caretAltLeftIcon = caretAltLeftIcon;
422
+ /**
423
+ * @hidden
424
+ */
425
+ this.caretAltToLeftIcon = caretAltToLeftIcon;
426
+ /**
427
+ * Specifies the padding of the buttons.
428
+ *
429
+ * The possible values are:
430
+ * * `small`
431
+ * * `medium` (default)
432
+ * * `large`
433
+ * * `none`
434
+ */
435
+ this.size = DEFAULT_SIZE;
436
+ }
437
+ /**
438
+ * @hidden
439
+ *
440
+ * @readonly
441
+ * @type {boolean}
442
+ * @memberOf PagerPrevButtonsComponent
443
+ */
444
+ get disabled() {
445
+ return this.currentPage === 1 || !this.total;
446
+ }
447
+ onChanges({ total, skip, pageSize }) {
448
+ this.total = total;
449
+ this.skip = skip;
450
+ this.pageSize = pageSize;
451
+ this.cd.markForCheck();
452
+ }
453
+ }
454
+ PagerPrevButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerPrevButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
455
+ PagerPrevButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
456
+ <button
457
+ type="button" kendoButton kendoPagerFocusable
458
+ class="k-pager-nav k-pager-first"
459
+ [disabled]="disabled"
460
+ icon="caret-alt-to-left"
461
+ [svgIcon]="caretAltToLeftIcon"
462
+ fillMode="flat"
463
+ rounded="none"
464
+ [size]="size"
465
+ [title]="textFor('firstPage')"
466
+ [attr.aria-label]="textFor('firstPage')"
467
+ (click)="currentPage !== 1 ? changePage(0) : false">
468
+ </button>
469
+ <button
470
+ type="button" kendoButton kendoPagerFocusable
471
+ class="k-pager-nav"
472
+ [disabled]="disabled"
473
+ icon="caret-alt-left"
474
+ [svgIcon]="caretAltLeftIcon"
475
+ fillMode="flat"
476
+ rounded="none"
477
+ [size]="size"
478
+ [title]="textFor('previousPage')"
479
+ [attr.aria-label]="textFor('previousPage')"
480
+ (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
481
+ </button>
482
+ `, isInline: true, components: [{ type: i3.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
483
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerPrevButtonsComponent, decorators: [{
484
+ type: Component,
485
+ args: [{
486
+ changeDetection: ChangeDetectionStrategy.OnPush,
487
+ selector: 'kendo-datapager-prev-buttons',
488
+ template: `
489
+ <button
490
+ type="button" kendoButton kendoPagerFocusable
491
+ class="k-pager-nav k-pager-first"
492
+ [disabled]="disabled"
493
+ icon="caret-alt-to-left"
494
+ [svgIcon]="caretAltToLeftIcon"
495
+ fillMode="flat"
496
+ rounded="none"
497
+ [size]="size"
498
+ [title]="textFor('firstPage')"
499
+ [attr.aria-label]="textFor('firstPage')"
500
+ (click)="currentPage !== 1 ? changePage(0) : false">
501
+ </button>
502
+ <button
503
+ type="button" kendoButton kendoPagerFocusable
504
+ class="k-pager-nav"
505
+ [disabled]="disabled"
506
+ icon="caret-alt-left"
507
+ [svgIcon]="caretAltLeftIcon"
508
+ fillMode="flat"
509
+ rounded="none"
510
+ [size]="size"
511
+ [title]="textFor('previousPage')"
512
+ [attr.aria-label]="textFor('previousPage')"
513
+ (click)="currentPage !== 1 ? changePage(currentPage-2) : false">
514
+ </button>
515
+ `
516
+ }]
517
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { size: [{
518
+ type: Input
519
+ }] } });
520
+
521
+ /**
522
+ * Displays a drop-down list for the page size selection ([see example]({% slug pager_settings %})).
523
+ */
524
+ class PagerPageSizesComponent extends PagerElementComponent {
525
+ constructor(localization, cd, pagerContext, element, ngZone) {
526
+ super(localization, pagerContext, cd);
527
+ this.pagerContext = pagerContext;
528
+ this.element = element;
529
+ this.ngZone = ngZone;
530
+ /**
531
+ * Specifies the padding of the dropdown.
532
+ *
533
+ * The possible values are:
534
+ * * `small`
535
+ * * `medium` (default)
536
+ * * `large`
537
+ * * `none`
538
+ */
539
+ this.size = DEFAULT_SIZE;
540
+ this._pageSizes = [];
541
+ }
542
+ /**
543
+ * The page sizes collection. Can contain numbers and [PageSizeItem]({% slug api_pager_pagesizeitem %}) objects.
544
+ *
545
+ * @example
546
+ *
547
+ * ```ts-preview
548
+ * _@Component({
549
+ * selector: 'my-app',
550
+ * template: `
551
+ * <div *ngFor="let item of pagedData" style="border: 1px solid black; padding: 10px;">
552
+ * <span>{{item.ProductID}}. </span>
553
+ * <span>{{item.ProductName}}</span>
554
+ * </div>
555
+ * <kendo-datapager
556
+ * [skip]="skip"
557
+ * [pageSize]="pageSize"
558
+ * [total]="total"
559
+ * (pageChange)="onPageChange($event)">
560
+ * <ng-template kendoDataPagerTemplate>
561
+ * <kendo-datapager-page-sizes [pageSizes]="pagesizes"></kendo-datapager-page-sizes>
562
+ * </ng-template>
563
+ * </kendo-datapager>
564
+ * `
565
+ * })
566
+ * class AppComponent {
567
+ * public data: any[] = products;
568
+ * public pagedData = [];
569
+ * public skip = 0;
570
+ * public pageSize = 2;
571
+ * public total = products.length;
572
+ * public pagesizes = [{text: 'One', value: 1}, {text: 'Two', value: 2}, {text: 'All', value : 'all'}];
573
+ *
574
+ * public ngOnInit() {
575
+ * this.pageData();
576
+ * }
577
+ *
578
+ * public onPageChange(e) {
579
+ * this.skip = e.skip;
580
+ * this.pageSize = e.take;
581
+ * this.pageData();
582
+ * }
583
+ *
584
+ * private pageData() {
585
+ * this.pagedData = this.data.slice(this.skip, this.skip + this.pageSize);
586
+ * }
587
+ * }
588
+ *
589
+ * const products = [{
590
+ * 'ProductID' : 1,
591
+ * 'ProductName' : "Chai",
592
+ * 'SupplierID' : 1,
593
+ * 'CategoryID' : 1,
594
+ * 'QuantityPerUnit' : "10 boxes x 20 bags",
595
+ * 'UnitPrice' : 18.0000,
596
+ * 'UnitsInStock' : 39,
597
+ * 'UnitsOnOrder' : 0,
598
+ * 'ReorderLevel' : 10,
599
+ * 'Discontinued' : false
600
+ *
601
+ * }, {
602
+ * 'ProductID' : 2,
603
+ * 'ProductName' : "Chang",
604
+ * 'SupplierID' : 1,
605
+ * 'CategoryID' : 1,
606
+ * 'QuantityPerUnit' : "24 - 12 oz bottles",
607
+ * 'UnitPrice' : 19.0000,
608
+ * 'UnitsInStock' : 17,
609
+ * 'UnitsOnOrder' : 40,
610
+ * 'ReorderLevel' : 25,
611
+ * 'Discontinued' : false
612
+ * }, {
613
+ * 'ProductID' : 3,
614
+ * 'ProductName' : "Aniseed Syrup",
615
+ * 'SupplierID' : 1,
616
+ * 'CategoryID' : 2,
617
+ * 'QuantityPerUnit' : "12 - 550 ml bottles",
618
+ * 'UnitPrice' : 10.0000,
619
+ * 'UnitsInStock' : 13,
620
+ * 'UnitsOnOrder' : 70,
621
+ * 'ReorderLevel' : 25,
622
+ * 'Discontinued' : false
623
+ * }, {
624
+ * 'ProductID' : 4,
625
+ * 'ProductName' : "Chef Anton\'s Cajun Seasoning",
626
+ * 'SupplierID' : 2,
627
+ * 'CategoryID' : 2,
628
+ * 'QuantityPerUnit' : "48 - 6 oz jars",
629
+ * 'UnitPrice' : 22.0000,
630
+ * 'UnitsInStock' : 53,
631
+ * 'UnitsOnOrder' : 0,
632
+ * 'ReorderLevel' : 0,
633
+ * 'Discontinued' : false
634
+ * }, {
635
+ * 'ProductID' : 5,
636
+ * 'ProductName' : "Chef Anton\'s Gumbo Mix",
637
+ * 'SupplierID' : 2,
638
+ * 'CategoryID' : 2,
639
+ * 'QuantityPerUnit' : "36 boxes",
640
+ * 'UnitPrice' : 21.3500,
641
+ * 'UnitsInStock' : 0,
642
+ * 'UnitsOnOrder' : 0,
643
+ * 'ReorderLevel' : 0,
644
+ * 'Discontinued' : true
645
+ * }, {
646
+ * 'ProductID' : 6,
647
+ * 'ProductName' : "Grandma\'s Boysenberry Spread",
648
+ * 'SupplierID' : 3,
649
+ * 'CategoryID' : 2,
650
+ * 'QuantityPerUnit' : "12 - 8 oz jars",
651
+ * 'UnitPrice' : 25.0000,
652
+ * 'UnitsInStock' : 120,
653
+ * 'UnitsOnOrder' : 0,
654
+ * 'ReorderLevel' : 25,
655
+ * 'Discontinued' : false
656
+ * }];
657
+ * ```
658
+ *
659
+ */
660
+ set pageSizes(pageSizes) {
661
+ let normalizedItems = [];
662
+ if (Array.isArray(pageSizes)) {
663
+ pageSizes.forEach(item => {
664
+ if (typeof item === 'number') {
665
+ normalizedItems.push({
666
+ text: item.toString(),
667
+ value: item
668
+ });
669
+ }
670
+ else {
671
+ normalizedItems.push(item);
672
+ }
673
+ });
674
+ }
675
+ if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {
676
+ normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];
677
+ }
678
+ this._pageSizes = normalizedItems;
679
+ }
680
+ get pageSizes() {
681
+ return this._pageSizes;
682
+ }
683
+ /**
684
+ * @hidden
685
+ *
686
+ * @readonly
687
+ */
688
+ get classes() {
689
+ return true;
690
+ }
691
+ ngAfterViewInit() {
692
+ this.dropDownList.wrapper.nativeElement.setAttribute('aria-label', this.textFor('itemsPerPage'));
693
+ this.ngZone.runOutsideAngular(() => {
694
+ this.element.nativeElement.addEventListener('keydown', this.keyDownHandler.bind(this), true);
695
+ });
696
+ }
697
+ ngOnDestroy() {
698
+ this.element.nativeElement.removeEventListener('keydown', this.keyDownHandler);
699
+ }
700
+ /**
701
+ * @hidden
702
+ */
703
+ pageSizeChange(value, dropdownlist) {
704
+ const event = new PageSizeChangeEvent(value);
705
+ this.pagerContext.changePageSize(event);
706
+ if (event.isDefaultPrevented()) {
707
+ dropdownlist.writeValue(this.pageSize);
708
+ }
709
+ }
710
+ onChanges({ total, skip, pageSize }) {
711
+ this.total = total;
712
+ this.skip = skip;
713
+ this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;
714
+ this.cd.markForCheck();
715
+ }
716
+ keyDownHandler(ev) {
717
+ if (ev.keyCode === Keys.Escape && this.dropDownList.isOpen) {
718
+ ev.stopPropagation();
719
+ this.dropDownList.toggle(false);
720
+ }
721
+ }
722
+ }
723
+ PagerPageSizesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
724
+ PagerPageSizesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PagerPageSizesComponent, 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: `
725
+ <kendo-dropdownlist kendoPagerFocusable
726
+ class="k-dropdown"
727
+ #dropdownlist
728
+ [size]="size"
729
+ [data]="pageSizes"
730
+ textField="text"
731
+ valueField="value"
732
+ [valuePrimitive]="true"
733
+ [value]="pageSize"
734
+ (valueChange)="pageSizeChange($event, dropdownlist)"></kendo-dropdownlist>
735
+ {{ textFor('itemsPerPage') }}
736
+ `, isInline: true, components: [{ type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
737
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
738
+ type: Component,
739
+ args: [{
740
+ changeDetection: ChangeDetectionStrategy.OnPush,
741
+ selector: 'kendo-datapager-page-sizes',
742
+ template: `
743
+ <kendo-dropdownlist kendoPagerFocusable
744
+ class="k-dropdown"
745
+ #dropdownlist
746
+ [size]="size"
747
+ [data]="pageSizes"
748
+ textField="text"
749
+ valueField="value"
750
+ [valuePrimitive]="true"
751
+ [value]="pageSize"
752
+ (valueChange)="pageSizeChange($event, dropdownlist)"></kendo-dropdownlist>
753
+ {{ textFor('itemsPerPage') }}
754
+ `
755
+ }]
756
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { dropDownList: [{
757
+ type: ViewChild,
758
+ args: ['dropdownlist', { static: true }]
759
+ }], pageSizes: [{
760
+ type: Input
761
+ }], size: [{
762
+ type: Input
763
+ }], classes: [{
764
+ type: HostBinding,
765
+ args: ["class.k-pager-sizes"]
766
+ }] } });
767
+
768
+ /**
769
+ * Represents the pager template which helps to customize the pager appearance. To define a pager
770
+ * template, nest an `<ng-template>` tag with the `kendoDataPagerTemplate` directive inside `<kendo-datapager>`.
771
+ *
772
+ * The template context provides the following fields:
773
+ * * `currentPage`&mdash;The index of the displayed page.
774
+ * * `pageSize`&mdash;The value of the current `pageSize`.
775
+ * * `skip`&mdash;The current skip value.
776
+ * * `total`&mdash;The total number of records.
777
+ * * `totalPages`&mdash;The total number of available pages.
778
+ *
779
+ * @example
780
+ * ```ts-preview
781
+ *
782
+ * _@Component({
783
+ * selector: 'my-app',
784
+ * template: `
785
+ * <kendo-datapager [total]="total" [pageSize]="pageSize" [skip]="skip" (pageChange)="onPageChange($event)">
786
+ * <ng-template kendoDataPagerTemplate let-totalPages="totalPages" let-currentPage="currentPage">
787
+ * <kendo-datapager-prev-buttons></kendo-datapager-prev-buttons>
788
+ * <kendo-datapager-numeric-buttons [buttonCount]="10"></kendo-datapager-numeric-buttons>
789
+ * <kendo-datapager-next-buttons></kendo-datapager-next-buttons>
790
+ * <kendo-datapager-info></kendo-datapager-info>
791
+ * Current page: {{currentPage}}
792
+ * </ng-template>
793
+ * </kendo-datapager>
794
+ * `
795
+ * })
796
+ *
797
+ * class AppComponent {
798
+ * public skip = 0;
799
+ * public pageSize = 10;
800
+ * public total = 100;
801
+ *
802
+ * public onPageChange(e: any): void {
803
+ * this.skip = e.skip;
804
+ * this.pageSize = e.take;
805
+ * }
806
+ * }
807
+ *
808
+ * ```
809
+ */
810
+ class PagerTemplateDirective {
811
+ constructor(templateRef) {
812
+ this.templateRef = templateRef;
813
+ }
814
+ }
815
+ PagerTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
816
+ PagerTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: PagerTemplateDirective, selector: "[kendoDataPagerTemplate]", ngImport: i0 });
817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerTemplateDirective, decorators: [{
818
+ type: Directive,
819
+ args: [{
820
+ selector: '[kendoDataPagerTemplate]'
821
+ }]
822
+ }], ctorParameters: function () {
823
+ return [{ type: i0.TemplateRef, decorators: [{
824
+ type: Optional
825
+ }] }];
826
+ } });
827
+
828
+ /**
829
+ * Displays numeric buttons to enable navigation between the pages.
830
+ */
831
+ class PagerNumericButtonsComponent extends PagerElementComponent {
832
+ constructor(localization, cd, pagerContext, renderer) {
833
+ super(localization, pagerContext, cd);
834
+ this.pagerContext = pagerContext;
835
+ this.renderer = renderer;
836
+ this._size = DEFAULT_SIZE;
837
+ }
838
+ /**
839
+ * Specifies the padding of the numeric buttons.
840
+ *
841
+ * The possible values are:
842
+ * * `small`
843
+ * * `medium` (default)
844
+ * * `large`
845
+ * * `none`
846
+ */
847
+ set size(size) {
848
+ const newSize = size ? size : DEFAULT_SIZE;
849
+ this.handleClasses(newSize, 'size');
850
+ this._size = newSize;
851
+ }
852
+ get size() {
853
+ return this._size;
854
+ }
855
+ /**
856
+ * @hidden
857
+ *
858
+ * @readonly
859
+ * @type {number[]}
860
+ * @memberOf PagerNumericButtonsComponent
861
+ */
862
+ get buttons() {
863
+ const result = [];
864
+ for (let idx = this.start; idx <= this.end; idx++) {
865
+ result.push(idx);
866
+ }
867
+ return result;
868
+ }
869
+ /**
870
+ * @hidden
871
+ */
872
+ get end() {
873
+ return Math.min((this.start + this.buttonCount) - 1, this.totalPages);
874
+ }
875
+ /**
876
+ * @hidden
877
+ */
878
+ get start() {
879
+ const page = this.currentPage;
880
+ const buttonCount = this.buttonCount;
881
+ if (page > buttonCount) {
882
+ const reminder = (page % buttonCount);
883
+ return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;
884
+ }
885
+ return 1;
886
+ }
887
+ ngAfterViewInit() {
888
+ this.handleClasses(this.size, 'size');
889
+ }
890
+ /**
891
+ * @hidden
892
+ */
893
+ pageLabel(num) {
894
+ const pageText = this.textFor('page');
895
+ if (pageText) {
896
+ return pageText + ' ' + num;
897
+ }
898
+ return num.toString();
899
+ }
900
+ /**
901
+ * @hidden
902
+ */
903
+ onSelectChange(e) {
904
+ const target = e.target;
905
+ const valueAsNumber = Number(target.value);
906
+ if (!Number.isNaN(valueAsNumber)) {
907
+ this.changePage(valueAsNumber - 1);
908
+ }
909
+ else {
910
+ if (target.value === 'previousButtons') {
911
+ this.changePage(this.start - 2);
912
+ }
913
+ else {
914
+ this.changePage(this.end);
915
+ }
916
+ }
917
+ }
918
+ onChanges({ total, skip, pageSize }) {
919
+ this.total = total;
920
+ this.skip = skip;
921
+ this.pageSize = pageSize;
922
+ this.cd.markForCheck();
923
+ }
924
+ get pageChooserLabel() {
925
+ return this.textFor('selectPage');
926
+ }
927
+ handleClasses(value, input) {
928
+ var _a;
929
+ const elem = (_a = this.selectElement) === null || _a === void 0 ? void 0 : _a.nativeElement;
930
+ const classes = getStylingClasses('picker', input, this[input], value);
931
+ if (!elem) {
932
+ return;
933
+ }
934
+ if (classes.toRemove) {
935
+ this.renderer.removeClass(elem, classes.toRemove);
936
+ }
937
+ if (classes.toAdd) {
938
+ this.renderer.addClass(elem, classes.toAdd);
939
+ }
940
+ }
941
+ }
942
+ PagerNumericButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
943
+ PagerNumericButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons", inputs: { buttonCount: "buttonCount", size: "size" }, viewQueries: [{ propertyName: "selectElement", first: true, predicate: ["select"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
944
+ <select kendoPagerFocusable #select
945
+ class="k-dropdown-list k-dropdown k-picker k-rounded-md"
946
+ [attr.title]="pageChooserLabel"
947
+ [attr.aria-label]="pageChooserLabel"
948
+ (change)="onSelectChange($event)">
949
+ <option *ngIf="start > 1"
950
+ value="previousButtons"
951
+ [selected]="false"
952
+ [attr.aria-label]="pageLabel(start - 1)">...
953
+ </option>
954
+ <option *ngFor="let num of buttons"
955
+ [value]="num.toString()"
956
+ [selected]="num === currentPage"
957
+ [attr.aria-label]="pageLabel(num)"
958
+ [attr.aria-current]="currentPage === num ? 'page' : undefined"
959
+ [ngClass]="{'k-selected':currentPage === num}">
960
+ {{num}}
961
+ </option>
962
+ <option *ngIf="end < totalPages"
963
+ value="nextButtons"
964
+ [selected]="false"
965
+ [attr.aria-label]="pageLabel(end + 1)">...
966
+ </option>
967
+ </select>
968
+ <div [ngClass]="{'k-pager-numbers': true}">
969
+ <button *ngIf="start > 1"
970
+ type="button"
971
+ kendoPagerFocusable
972
+ kendoButton
973
+ [size]="size"
974
+ fillMode="flat"
975
+ themeColor="primary"
976
+ rounded="none"
977
+ [attr.aria-label]="pageLabel(start - 1)"
978
+ [attr.title]="pageLabel(start - 1)"
979
+ (click)="changePage(start - 2)">...</button>
980
+ <button *ngFor="let num of buttons"
981
+ type="button"
982
+ kendoPagerFocusable
983
+ kendoButton
984
+ [size]="size"
985
+ fillMode="flat"
986
+ themeColor="primary"
987
+ rounded="none"
988
+ [attr.aria-label]="pageLabel(num)"
989
+ [attr.title]="pageLabel(num)"
990
+ [attr.aria-current]="currentPage === num ? 'page' : undefined"
991
+ [selected]="currentPage === num"
992
+ (click)="changePage(num - 1)">
993
+ {{num}}
994
+ </button>
995
+ <button *ngIf="end < totalPages"
996
+ type="button"
997
+ kendoPagerFocusable
998
+ kendoButton
999
+ [size]="size"
1000
+ fillMode="flat"
1001
+ themeColor="primary"
1002
+ rounded="none"
1003
+ [attr.aria-label]="pageLabel(end + 1)"
1004
+ [attr.title]="pageLabel(end + 1)"
1005
+ (click)="changePage(end)">...</button>
1006
+ </div>
1007
+ `, isInline: true, components: [{ type: i3.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1008
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{
1009
+ type: Component,
1010
+ args: [{
1011
+ changeDetection: ChangeDetectionStrategy.OnPush,
1012
+ selector: 'kendo-datapager-numeric-buttons',
1013
+ template: `
1014
+ <select kendoPagerFocusable #select
1015
+ class="k-dropdown-list k-dropdown k-picker k-rounded-md"
1016
+ [attr.title]="pageChooserLabel"
1017
+ [attr.aria-label]="pageChooserLabel"
1018
+ (change)="onSelectChange($event)">
1019
+ <option *ngIf="start > 1"
1020
+ value="previousButtons"
1021
+ [selected]="false"
1022
+ [attr.aria-label]="pageLabel(start - 1)">...
1023
+ </option>
1024
+ <option *ngFor="let num of buttons"
1025
+ [value]="num.toString()"
1026
+ [selected]="num === currentPage"
1027
+ [attr.aria-label]="pageLabel(num)"
1028
+ [attr.aria-current]="currentPage === num ? 'page' : undefined"
1029
+ [ngClass]="{'k-selected':currentPage === num}">
1030
+ {{num}}
1031
+ </option>
1032
+ <option *ngIf="end < totalPages"
1033
+ value="nextButtons"
1034
+ [selected]="false"
1035
+ [attr.aria-label]="pageLabel(end + 1)">...
1036
+ </option>
1037
+ </select>
1038
+ <div [ngClass]="{'k-pager-numbers': true}">
1039
+ <button *ngIf="start > 1"
1040
+ type="button"
1041
+ kendoPagerFocusable
1042
+ kendoButton
1043
+ [size]="size"
1044
+ fillMode="flat"
1045
+ themeColor="primary"
1046
+ rounded="none"
1047
+ [attr.aria-label]="pageLabel(start - 1)"
1048
+ [attr.title]="pageLabel(start - 1)"
1049
+ (click)="changePage(start - 2)">...</button>
1050
+ <button *ngFor="let num of buttons"
1051
+ type="button"
1052
+ kendoPagerFocusable
1053
+ kendoButton
1054
+ [size]="size"
1055
+ fillMode="flat"
1056
+ themeColor="primary"
1057
+ rounded="none"
1058
+ [attr.aria-label]="pageLabel(num)"
1059
+ [attr.title]="pageLabel(num)"
1060
+ [attr.aria-current]="currentPage === num ? 'page' : undefined"
1061
+ [selected]="currentPage === num"
1062
+ (click)="changePage(num - 1)">
1063
+ {{num}}
1064
+ </button>
1065
+ <button *ngIf="end < totalPages"
1066
+ type="button"
1067
+ kendoPagerFocusable
1068
+ kendoButton
1069
+ [size]="size"
1070
+ fillMode="flat"
1071
+ themeColor="primary"
1072
+ rounded="none"
1073
+ [attr.aria-label]="pageLabel(end + 1)"
1074
+ [attr.title]="pageLabel(end + 1)"
1075
+ (click)="changePage(end)">...</button>
1076
+ </div>
1077
+ `
1078
+ }]
1079
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }, { type: i0.Renderer2 }]; }, propDecorators: { selectElement: [{
1080
+ type: ViewChild,
1081
+ args: ['select', { read: ElementRef }]
1082
+ }], buttonCount: [{
1083
+ type: Input
1084
+ }], size: [{
1085
+ type: Input
1086
+ }] } });
1087
+
1088
+ // eslint-disable no-access-missing-member
1089
+ /**
1090
+ * Displays buttons for navigating to the next and to the last page ([see example]({% slug pager_settings %})).
1091
+ */
1092
+ class PagerNextButtonsComponent extends PagerElementComponent {
1093
+ constructor(localization, pagerContext, cd) {
1094
+ super(localization, pagerContext, cd);
1095
+ /**
1096
+ * @hidden
1097
+ */
1098
+ this.caretAltRightIcon = caretAltRightIcon;
1099
+ /**
1100
+ * @hidden
1101
+ */
1102
+ this.caretAltToRightIcon = caretAltToRightIcon;
1103
+ /**
1104
+ * Specifies the padding of the buttons.
1105
+ *
1106
+ * The possible values are:
1107
+ * * `small`
1108
+ * * `medium` (default)
1109
+ * * `large`
1110
+ * * `none`
1111
+ */
1112
+ this.size = DEFAULT_SIZE;
1113
+ }
1114
+ /**
1115
+ * @hidden
1116
+ *
1117
+ * @readonly
1118
+ * @type {boolean}
1119
+ * @memberOf PagerNextButtonsComponent
1120
+ */
1121
+ get disabled() {
1122
+ return this.currentPage === this.totalPages || !this.total;
1123
+ }
1124
+ onChanges({ total, skip, pageSize }) {
1125
+ this.total = total;
1126
+ this.skip = skip;
1127
+ this.pageSize = pageSize;
1128
+ this.cd.markForCheck();
1129
+ }
1130
+ }
1131
+ PagerNextButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerNextButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1132
+ PagerNextButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
1133
+ <button kendoButton kendoPagerFocusable
1134
+ type="button"
1135
+ [size]="size"
1136
+ icon="caret-alt-right"
1137
+ [svgIcon]="caretAltRightIcon"
1138
+ fillMode="flat"
1139
+ rounded="none"
1140
+ class="k-pager-nav"
1141
+ [disabled]="disabled"
1142
+ [title]="textFor('nextPage')"
1143
+ [attr.aria-label]="textFor('nextPage')"
1144
+ (click)="currentPage !== totalPages ? changePage(currentPage) : false">
1145
+ </button>
1146
+ <button kendoButton kendoPagerFocusable
1147
+ type="button"
1148
+ [size]="size"
1149
+ icon="caret-alt-to-right"
1150
+ [svgIcon]="caretAltToRightIcon"
1151
+ fillMode="flat"
1152
+ rounded="none"
1153
+ class="k-pager-nav k-pager-last"
1154
+ [disabled]="disabled"
1155
+ [title]="textFor('lastPage')"
1156
+ [attr.aria-label]="textFor('lastPage')"
1157
+ (click)="currentPage !== totalPages ? changePage(totalPages-1) : false">
1158
+ </button>
1159
+ `, isInline: true, components: [{ type: i3.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{
1161
+ type: Component,
1162
+ args: [{
1163
+ changeDetection: ChangeDetectionStrategy.OnPush,
1164
+ selector: 'kendo-datapager-next-buttons',
1165
+ template: `
1166
+ <button kendoButton kendoPagerFocusable
1167
+ type="button"
1168
+ [size]="size"
1169
+ icon="caret-alt-right"
1170
+ [svgIcon]="caretAltRightIcon"
1171
+ fillMode="flat"
1172
+ rounded="none"
1173
+ class="k-pager-nav"
1174
+ [disabled]="disabled"
1175
+ [title]="textFor('nextPage')"
1176
+ [attr.aria-label]="textFor('nextPage')"
1177
+ (click)="currentPage !== totalPages ? changePage(currentPage) : false">
1178
+ </button>
1179
+ <button kendoButton kendoPagerFocusable
1180
+ type="button"
1181
+ [size]="size"
1182
+ icon="caret-alt-to-right"
1183
+ [svgIcon]="caretAltToRightIcon"
1184
+ fillMode="flat"
1185
+ rounded="none"
1186
+ class="k-pager-nav k-pager-last"
1187
+ [disabled]="disabled"
1188
+ [title]="textFor('lastPage')"
1189
+ [attr.aria-label]="textFor('lastPage')"
1190
+ (click)="currentPage !== totalPages ? changePage(totalPages-1) : false">
1191
+ </button>
1192
+ `
1193
+ }]
1194
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { size: [{
1195
+ type: Input
1196
+ }] } });
1197
+
1198
+ /**
1199
+ * Displays an input element which allows the typing and rendering of page numbers.
1200
+ */
1201
+ class PagerInputComponent extends PagerElementComponent {
1202
+ constructor(localization, pagerContext, zone, cd, renderer) {
1203
+ super(localization, pagerContext, cd);
1204
+ this.pagerContext = pagerContext;
1205
+ this.zone = zone;
1206
+ this.renderer = renderer;
1207
+ /**
1208
+ * Specifies the padding of the internal numeric input element.
1209
+ *
1210
+ * The possible values are:
1211
+ * * `small`
1212
+ * * `medium` (default)
1213
+ * * `large`
1214
+ * * `none`
1215
+ */
1216
+ this.size = DEFAULT_SIZE;
1217
+ /**
1218
+ * @hidden
1219
+ *
1220
+ * @param {string} value
1221
+ *
1222
+ * @memberOf PagerInputComponent
1223
+ */
1224
+ this.handleKeyDown = (event) => {
1225
+ const incomingValue = this.numericInput.value || this.current;
1226
+ // eslint-disable import/no-deprecated
1227
+ if (event.keyCode === Keys.Enter) {
1228
+ event.preventDefault();
1229
+ if (incomingValue !== this.current) {
1230
+ this.zone.run(() => {
1231
+ this.changePage(incomingValue - 1);
1232
+ });
1233
+ }
1234
+ }
1235
+ };
1236
+ /**
1237
+ * @hidden
1238
+ *
1239
+ * @param {string} value
1240
+ *
1241
+ * @memberOf PagerInputComponent
1242
+ */
1243
+ this.handleBlur = () => {
1244
+ const inputValue = this.numericInput.value;
1245
+ if (!inputValue) {
1246
+ this.numericInput.writeValue(this.current);
1247
+ return;
1248
+ }
1249
+ if (inputValue !== this.current) {
1250
+ this.zone.run(() => {
1251
+ this.changePage(inputValue - 1);
1252
+ });
1253
+ }
1254
+ };
1255
+ }
1256
+ /**
1257
+ * @hidden
1258
+ */
1259
+ get current() {
1260
+ return this.hasPages ? this.currentPage : 0;
1261
+ }
1262
+ /**
1263
+ * @hidden
1264
+ */
1265
+ get hasPages() {
1266
+ return this.totalPages !== 0;
1267
+ }
1268
+ ngAfterViewInit() {
1269
+ const innerNumericInput = this.numericInput.numericInput.nativeElement;
1270
+ this.renderer.setAttribute(innerNumericInput, 'aria-label', this.textFor('inputLabel'));
1271
+ }
1272
+ onChanges({ total, skip, pageSize }) {
1273
+ this.total = total;
1274
+ this.skip = skip;
1275
+ this.pageSize = pageSize;
1276
+ this.cd.markForCheck();
1277
+ }
1278
+ }
1279
+ PagerInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerInputComponent, deps: [{ token: i1.LocalizationService }, { token: PagerContextService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
1280
+ PagerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PagerInputComponent, selector: "kendo-datapager-input", inputs: { size: "size" }, viewQueries: [{ propertyName: "numericInput", first: true, predicate: NumericTextBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
1281
+ <span [ngClass]="{'k-pager-input': true, 'k-label': true}">
1282
+ {{textFor('page')}}
1283
+ <kendo-numerictextbox kendoPagerFocusable
1284
+ [spinners]="false"
1285
+ [decimals]="0"
1286
+ format="n0"
1287
+ [size]="size"
1288
+ [disabled]="!hasPages"
1289
+ [value]="current"
1290
+ [min]="hasPages ? 1 : 0"
1291
+ [max]="totalPages"
1292
+ [autoCorrect]="true"
1293
+ [title]="textFor('pageNumberInputTitle')"
1294
+ [kendoEventsOutsideAngular]="{
1295
+ keydown: handleKeyDown,
1296
+ focusout: handleBlur
1297
+ }">
1298
+ </kendo-numerictextbox>
1299
+ {{textFor('of')}} {{totalPages}}
1300
+ </span>
1301
+ `, isInline: true, components: [{ type: i3$2.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"], outputs: ["valueChange", "focus", "blur"], exportAs: ["kendoNumericTextBox"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }, { type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
1302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerInputComponent, decorators: [{
1303
+ type: Component,
1304
+ args: [{
1305
+ selector: 'kendo-datapager-input',
1306
+ template: `
1307
+ <span [ngClass]="{'k-pager-input': true, 'k-label': true}">
1308
+ {{textFor('page')}}
1309
+ <kendo-numerictextbox kendoPagerFocusable
1310
+ [spinners]="false"
1311
+ [decimals]="0"
1312
+ format="n0"
1313
+ [size]="size"
1314
+ [disabled]="!hasPages"
1315
+ [value]="current"
1316
+ [min]="hasPages ? 1 : 0"
1317
+ [max]="totalPages"
1318
+ [autoCorrect]="true"
1319
+ [title]="textFor('pageNumberInputTitle')"
1320
+ [kendoEventsOutsideAngular]="{
1321
+ keydown: handleKeyDown,
1322
+ focusout: handleBlur
1323
+ }">
1324
+ </kendo-numerictextbox>
1325
+ {{textFor('of')}} {{totalPages}}
1326
+ </span>
1327
+ `
1328
+ }]
1329
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: PagerContextService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { numericInput: [{
1330
+ type: ViewChild,
1331
+ args: [NumericTextBoxComponent, { static: true }]
1332
+ }], size: [{
1333
+ type: Input
1334
+ }] } });
1335
+
1336
+ // eslint-disable no-access-missing-member
1337
+ /**
1338
+ * Displays information about the current page and the total number of records ([see example]({% slug pager_settings %})).
1339
+ */
1340
+ class PagerInfoComponent extends PagerElementComponent {
1341
+ constructor(localization, cd, pagerContext) {
1342
+ super(localization, pagerContext, cd);
1343
+ this.pagerContext = pagerContext;
1344
+ }
1345
+ /**
1346
+ * @hidden
1347
+ *
1348
+ * @readonly
1349
+ * @type {number}
1350
+ * @memberOf PagerInfoComponent
1351
+ */
1352
+ get maxItems() {
1353
+ return Math.min(this.currentPage * this.pageSize, this.total);
1354
+ }
1355
+ /**
1356
+ * @hidden
1357
+ *
1358
+ * @readonly
1359
+ * @type {number}
1360
+ * @memberOf PagerInfoComponent
1361
+ */
1362
+ get currentPageText() {
1363
+ return this.total ?
1364
+ (this.currentPage - 1) * this.pageSize + 1 :
1365
+ 0;
1366
+ }
1367
+ /**
1368
+ * @hidden
1369
+ *
1370
+ * @readonly
1371
+ * @type {boolean}
1372
+ * @memberOf PagerInfoComponent
1373
+ */
1374
+ get classes() {
1375
+ return true;
1376
+ }
1377
+ onChanges({ total, skip, pageSize }) {
1378
+ this.total = total;
1379
+ this.skip = skip;
1380
+ this.pageSize = pageSize;
1381
+ this.cd.markForCheck();
1382
+ }
1383
+ }
1384
+ PagerInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerInfoComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: PagerContextService }], target: i0.ɵɵFactoryTarget.Component });
1385
+ PagerInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PagerInfoComponent, 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 });
1386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerInfoComponent, decorators: [{
1387
+ type: Component,
1388
+ args: [{
1389
+ changeDetection: ChangeDetectionStrategy.OnPush,
1390
+ selector: 'kendo-datapager-info',
1391
+ template: `{{currentPageText}} - {{maxItems}} {{textFor('of')}} {{total}} {{textFor('items')}}`
1392
+ }]
1393
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: PagerContextService }]; }, propDecorators: { classes: [{
1394
+ type: HostBinding,
1395
+ args: ["class.k-pager-info"]
1396
+ }] } });
1397
+
1398
+ /**
1399
+ * @hidden
1400
+ */
1401
+ const RESPONSIVE_BREAKPOINT_MEDIUM = 600;
1402
+ /**
1403
+ * @hidden
1404
+ */
1405
+ const RESPONSIVE_BREAKPOINT_LARGE = 768;
1406
+
1407
+ /**
1408
+ * @hidden
1409
+ */
1410
+ const packageMetadata = {
1411
+ name: '@progress/kendo-angular-pager',
1412
+ productName: 'Kendo UI for Angular',
1413
+ productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
1414
+ publishDate: 1673469356,
1415
+ version: '',
1416
+ licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
1417
+ };
1418
+
1419
+ class PagerComponent {
1420
+ constructor(pagerContext, element, localization, renderer, ngZone, navigationService) {
1421
+ this.pagerContext = pagerContext;
1422
+ this.element = element;
1423
+ this.localization = localization;
1424
+ this.renderer = renderer;
1425
+ this.ngZone = ngZone;
1426
+ this.navigationService = navigationService;
1427
+ /**
1428
+ * Represents the total number of data items in the collection.
1429
+ */
1430
+ this.total = 0;
1431
+ /**
1432
+ * Defines the number of data items to be skipped.
1433
+ */
1434
+ this.skip = 0;
1435
+ /**
1436
+ * Sets the maximum numeric buttons count before the buttons are collapsed.
1437
+ */
1438
+ this.buttonCount = 10;
1439
+ /**
1440
+ * Toggles the information about the current page and the total number of records.
1441
+ */
1442
+ this.info = true;
1443
+ /**
1444
+ * Defines the type of the pager.
1445
+ */
1446
+ this.type = 'numeric';
1447
+ /**
1448
+ * Toggles the **Previous** and **Next** buttons.
1449
+ */
1450
+ this.previousNext = true;
1451
+ /**
1452
+ * Fires when the current page of the Pager is changed ([see example]({% slug overview_pager %}#toc-basic-usage)).
1453
+ * You have to handle the event yourself and page the data.
1454
+ */
1455
+ this.pageChange = new EventEmitter();
1456
+ /**
1457
+ * Fires when the page size of the Pager is changed.
1458
+ * You have to handle the event yourself and page the data.
1459
+ * If the event is prevented, the page size will remain unchanged ([see example]({% slug pager_events %})).
1460
+ */
1461
+ this.pageSizeChange = new EventEmitter();
1462
+ this.pagerClass = true;
1463
+ this.widgetRole = 'application';
1464
+ this.roleDescription = 'pager';
1465
+ this.keyShortcuts = 'Enter ArrowRight ArrowLeft';
1466
+ this.hostTabindex = '0';
1467
+ this.subscriptions = new Subscription();
1468
+ this._templateContext = {};
1469
+ this._pageSizeValues = DEFAULT_PAGE_SIZE_VALUES;
1470
+ this.isInnerNavigationEnabled = false;
1471
+ this._navigable = false;
1472
+ this._size = DEFAULT_SIZE;
1473
+ this.resizeHandler = () => {
1474
+ if (this.template) {
1475
+ return;
1476
+ }
1477
+ const element = this.element.nativeElement;
1478
+ const width = element.offsetWidth;
1479
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
1480
+ element.classList.remove('k-pager-mobile-md');
1481
+ element.classList.add('k-pager-mobile-sm');
1482
+ }
1483
+ else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {
1484
+ element.classList.add('k-pager-mobile-md');
1485
+ element.classList.remove('k-pager-mobile-sm');
1486
+ }
1487
+ else {
1488
+ element.classList.remove('k-pager-mobile-md');
1489
+ element.classList.remove('k-pager-mobile-sm');
1490
+ }
1491
+ };
1492
+ validatePackage(packageMetadata);
1493
+ this.direction = localization.rtl ? 'rtl' : 'ltr';
1494
+ }
1495
+ /**
1496
+ * Shows a dropdown for selecting the page size.
1497
+ * When set to `true`, the dropdown will contain the default list of options - 5, 10, 20.
1498
+ * To customize the list of options, set `pageSizeValues` to an array of the desired values.
1499
+ * The array can contain numbers and [PageSizeItem]({% slug api_pager_pagesizeitem %}) objects.
1500
+ */
1501
+ set pageSizeValues(pageSizeValues) {
1502
+ this._pageSizeValues = Array.isArray(pageSizeValues) ? pageSizeValues : pageSizeValues ? DEFAULT_PAGE_SIZE_VALUES : false;
1503
+ }
1504
+ get pageSizeValues() {
1505
+ return this._pageSizeValues;
1506
+ }
1507
+ /**
1508
+ * If set to `true`, the user can use dedicated shortcuts to interact with the Pager ([see example]({% slug keyboard_navigation_pager %})).
1509
+ * By default, navigation is disabled and the Pager content is accessible in the normal tab sequence.
1510
+ * @default false
1511
+ */
1512
+ set navigable(value) {
1513
+ this._navigable = value;
1514
+ this.navigationService.isNavigable = value;
1515
+ }
1516
+ ;
1517
+ get navigable() {
1518
+ return this._navigable;
1519
+ }
1520
+ ;
1521
+ /**
1522
+ * Specifies the padding of all Pager elements.
1523
+ *
1524
+ * The possible values are:
1525
+ * * `small`
1526
+ * * `medium` (default)
1527
+ * * `large`
1528
+ * * `none`
1529
+ */
1530
+ set size(size) {
1531
+ const newSize = size ? size : DEFAULT_SIZE;
1532
+ this.handleClasses(newSize, 'size');
1533
+ this._size = newSize;
1534
+ }
1535
+ get size() {
1536
+ return this._size;
1537
+ }
1538
+ get dir() {
1539
+ return this.direction;
1540
+ }
1541
+ /**
1542
+ * @hidden
1543
+ */
1544
+ focusHandler(ev) {
1545
+ const isInnerNavigationEnabled = ev.target !== this.element.nativeElement;
1546
+ this.navigationService.toggleInnerNavigation(isInnerNavigationEnabled);
1547
+ }
1548
+ get totalPages() {
1549
+ return Math.ceil((this.total || 0) / this.pageSize);
1550
+ }
1551
+ get currentPage() {
1552
+ return Math.floor((this.skip || 0) / this.pageSize) + 1;
1553
+ }
1554
+ get templateContext() {
1555
+ const context = this._templateContext;
1556
+ context.totalPages = this.totalPages;
1557
+ context.total = this.total;
1558
+ context.skip = this.skip;
1559
+ context.pageSize = this.pageSize;
1560
+ context.currentPage = this.currentPage;
1561
+ return context;
1562
+ }
1563
+ ngOnInit() {
1564
+ this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));
1565
+ this.subscriptions.add(this.pagerContext.pageSizeChange.subscribe(this.changePageSize.bind(this)));
1566
+ this.subscriptions.add(this.resizeSensor.resize.subscribe(() => this.resizeHandler()));
1567
+ this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {
1568
+ this.direction = rtl ? 'rtl' : 'ltr';
1569
+ }));
1570
+ this.subscriptions.add(this.navigationService.innerNavigationChange.subscribe(this.innerNavigationChange.bind(this)));
1571
+ if (this.navigable) {
1572
+ const wrapper = this.element.nativeElement;
1573
+ this.ngZone.runOutsideAngular(() => {
1574
+ this.subscriptions.add(this.renderer.listen(wrapper, 'keydown', this.keyDownHandler.bind(this)));
1575
+ });
1576
+ }
1577
+ }
1578
+ ngAfterViewInit() {
1579
+ this.resizeHandler();
1580
+ this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
1581
+ this.handleClasses(this.size, 'size');
1582
+ }
1583
+ ngOnChanges(changes) {
1584
+ if (anyChanged(["pageSize", "skip", "total"], changes, false)) {
1585
+ this.pagerContext.notifyChanges({
1586
+ pageSize: this.pageSize,
1587
+ skip: this.skip,
1588
+ total: this.total
1589
+ });
1590
+ this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
1591
+ }
1592
+ }
1593
+ ngOnDestroy() {
1594
+ this.subscriptions.unsubscribe();
1595
+ }
1596
+ /**
1597
+ * @hidden
1598
+ */
1599
+ changePage(event) {
1600
+ this.pageChange.emit(event);
1601
+ }
1602
+ /**
1603
+ * @hidden
1604
+ */
1605
+ changePageSize(event) {
1606
+ this.pageSizeChange.emit(event);
1607
+ if (!event.isDefaultPrevented()) {
1608
+ if (event.newPageSize === 'all') {
1609
+ this.pageChange.emit({ skip: 0, take: this.total });
1610
+ }
1611
+ else {
1612
+ this.pageChange.emit({ skip: 0, take: event.newPageSize });
1613
+ }
1614
+ }
1615
+ }
1616
+ /**
1617
+ * @hidden
1618
+ */
1619
+ onPageSizeChange(event) {
1620
+ this.pageSizeChange.emit(event);
1621
+ if (!event.isDefaultPrevented()) {
1622
+ this.pageChange.emit({ skip: this.skip, take: event.newPageSize });
1623
+ }
1624
+ }
1625
+ textFor(value) {
1626
+ return this.localization.get(value);
1627
+ }
1628
+ get ariaLabel() {
1629
+ return `${this.textFor('page')} ${this.currentPage} ${this.textFor('of')} ${this.totalPages}`;
1630
+ }
1631
+ keyDownHandler(e) {
1632
+ const target = e.target;
1633
+ const wrapper = this.element.nativeElement;
1634
+ const isArrowLeftOrPageUp = e.keyCode === Keys.ArrowLeft || e.keyCode === Keys.PageUp;
1635
+ const isArrowRightOrPageDown = e.keyCode === Keys.ArrowRight || e.keyCode === Keys.PageDown;
1636
+ const isEnter = e.keyCode === Keys.Enter;
1637
+ const isHome = e.keyCode === Keys.Home;
1638
+ const isEnd = e.keyCode === Keys.End;
1639
+ const isEsc = e.keyCode === Keys.Escape;
1640
+ const isTab = e.keyCode === Keys.Tab;
1641
+ const isFirstPage = this.currentPage === 1;
1642
+ const isLastPage = this.currentPage === this.totalPages;
1643
+ this.ngZone.run(() => {
1644
+ if (isHome) {
1645
+ e.preventDefault();
1646
+ !isFirstPage && this.pagerContext.changePage(0);
1647
+ }
1648
+ else if (isEnd) {
1649
+ e.preventDefault();
1650
+ !isLastPage && this.pagerContext.changePage(this.totalPages - 1);
1651
+ }
1652
+ else if (this.isInnerNavigationEnabled) {
1653
+ if (isEsc) {
1654
+ this.navigationService.toggleInnerNavigation(false);
1655
+ wrapper.focus();
1656
+ }
1657
+ else if (isTab) {
1658
+ this.navigationService.keepFocusWithinComponent(wrapper, target, e);
1659
+ }
1660
+ }
1661
+ else {
1662
+ if (isArrowLeftOrPageUp) {
1663
+ e.preventDefault();
1664
+ !isFirstPage && this.pagerContext.prevPage();
1665
+ }
1666
+ else if (isArrowRightOrPageDown) {
1667
+ e.preventDefault();
1668
+ !isLastPage && this.pagerContext.nextPage();
1669
+ }
1670
+ else if (isEnter) {
1671
+ if (e.target !== wrapper) {
1672
+ return;
1673
+ }
1674
+ e.preventDefault();
1675
+ const [firstFocusable] = this.navigationService.getFirstAndLastFocusable(wrapper);
1676
+ this.navigationService.toggleInnerNavigation(true);
1677
+ firstFocusable === null || firstFocusable === void 0 ? void 0 : firstFocusable.focus();
1678
+ }
1679
+ }
1680
+ });
1681
+ }
1682
+ innerNavigationChange(value) {
1683
+ this.isInnerNavigationEnabled = value;
1684
+ }
1685
+ handleClasses(value, input) {
1686
+ const elem = this.element.nativeElement;
1687
+ const classes = getStylingClasses('pager', input, this[input], value);
1688
+ if (classes.toRemove) {
1689
+ this.renderer.removeClass(elem, classes.toRemove);
1690
+ }
1691
+ if (classes.toAdd) {
1692
+ this.renderer.addClass(elem, classes.toAdd);
1693
+ }
1694
+ }
1695
+ }
1696
+ PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", 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 });
1697
+ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PagerComponent, 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: [
1698
+ LocalizationService,
1699
+ PagerContextService,
1700
+ PagerNavigationService
1701
+ ], queries: [{ propertyName: "template", first: true, predicate: PagerTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "resizeSensor", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }], exportAs: ["kendoDataPager"], usesOnChanges: true, ngImport: i0, template: `
1702
+ <ng-container kendoDataPagerLocalizedMessages
1703
+ i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
1704
+ firstPage="Go to the first page"
1705
+
1706
+ i18n-previousPage="kendo.pager.previousPage|The label for the previous page button in the Pager"
1707
+ previousPage="Go to the previous page"
1708
+
1709
+ i18n-nextPage="kendo.pager.nextPage|The label for the next page button in the Pager"
1710
+ nextPage="Go to the next page"
1711
+
1712
+ i18n-lastPage="kendo.pager.lastPage|The label for the last page button in the Pager"
1713
+ lastPage="Go to the last page"
1714
+
1715
+ i18n-page="kendo.pager.page|The label before the current page number in the Pager"
1716
+ page="Page"
1717
+
1718
+ i18n-of="kendo.pager.of|The label before the total pages number in the Pager"
1719
+ of="of"
1720
+
1721
+ i18n-pageNumberInputTitle="kendo.pager.pageNumberInputTitle|The label for the pager input in the Pager"
1722
+ pageNumberInputTitle="Page Number"
1723
+
1724
+ i18n-items="kendo.pager.items|The label after the total pages number in the Pager"
1725
+ items="items"
1726
+
1727
+ i18n-itemsPerPage="kendo.pager.itemsPerPage|The label for the page size chooser in the Pager"
1728
+ itemsPerPage="items per page"
1729
+
1730
+ i18n-selectPage="kendo.pager.selectPage|The text of the title and aria-label attributes applied to the page chooser in the Pager"
1731
+ selectPage="Select page"
1732
+
1733
+ i18n-inputLabel="kendo.pager.inputLabel|The text of the aria-label attribute applied to the input element for entering the page number."
1734
+ inputLabel="Type a page number"
1735
+ >
1736
+ </ng-container>
1737
+ <ng-container
1738
+ *ngIf="template?.templateRef"
1739
+ [ngTemplateOutlet]="template.templateRef"
1740
+ [ngTemplateOutletContext]="templateContext">
1741
+ </ng-container>
1742
+ <ng-container *ngIf="!template?.templateRef">
1743
+ <div class="k-pager-numbers-wrap">
1744
+ <kendo-datapager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-prev-buttons>
1745
+ <kendo-datapager-numeric-buttons
1746
+ [size]="size"
1747
+ *ngIf="type === 'numeric' && buttonCount > 0"
1748
+ [buttonCount]="buttonCount">
1749
+ </kendo-datapager-numeric-buttons>
1750
+ <kendo-datapager-input [size]="size" *ngIf="type === 'input'"></kendo-datapager-input>
1751
+ <kendo-datapager-next-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-next-buttons>
1752
+ </div>
1753
+ <kendo-datapager-page-sizes [size]="size" *ngIf="pageSizeValues" [pageSizes]="pageSizeValues"></kendo-datapager-page-sizes>
1754
+ <kendo-datapager-info *ngIf='info'></kendo-datapager-info>
1755
+ </ng-container>
1756
+ <kendo-resize-sensor></kendo-resize-sensor>
1757
+ `, isInline: true, components: [{ type: PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons", inputs: ["size"] }, { type: PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons", inputs: ["buttonCount", "size"] }, { type: PagerInputComponent, selector: "kendo-datapager-input", inputs: ["size"] }, { type: PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons", inputs: ["size"] }, { type: PagerPageSizesComponent, selector: "kendo-datapager-page-sizes", inputs: ["pageSizes", "size"] }, { type: PagerInfoComponent, selector: "kendo-datapager-info" }, { type: i6.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoDataPagerLocalizedMessages]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
1758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerComponent, decorators: [{
1759
+ type: Component,
1760
+ args: [{
1761
+ selector: 'kendo-datapager',
1762
+ exportAs: 'kendoDataPager',
1763
+ providers: [
1764
+ LocalizationService,
1765
+ PagerContextService,
1766
+ PagerNavigationService
1767
+ ],
1768
+ template: `
1769
+ <ng-container kendoDataPagerLocalizedMessages
1770
+ i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
1771
+ firstPage="Go to the first page"
1772
+
1773
+ i18n-previousPage="kendo.pager.previousPage|The label for the previous page button in the Pager"
1774
+ previousPage="Go to the previous page"
1775
+
1776
+ i18n-nextPage="kendo.pager.nextPage|The label for the next page button in the Pager"
1777
+ nextPage="Go to the next page"
1778
+
1779
+ i18n-lastPage="kendo.pager.lastPage|The label for the last page button in the Pager"
1780
+ lastPage="Go to the last page"
1781
+
1782
+ i18n-page="kendo.pager.page|The label before the current page number in the Pager"
1783
+ page="Page"
1784
+
1785
+ i18n-of="kendo.pager.of|The label before the total pages number in the Pager"
1786
+ of="of"
1787
+
1788
+ i18n-pageNumberInputTitle="kendo.pager.pageNumberInputTitle|The label for the pager input in the Pager"
1789
+ pageNumberInputTitle="Page Number"
1790
+
1791
+ i18n-items="kendo.pager.items|The label after the total pages number in the Pager"
1792
+ items="items"
1793
+
1794
+ i18n-itemsPerPage="kendo.pager.itemsPerPage|The label for the page size chooser in the Pager"
1795
+ itemsPerPage="items per page"
1796
+
1797
+ i18n-selectPage="kendo.pager.selectPage|The text of the title and aria-label attributes applied to the page chooser in the Pager"
1798
+ selectPage="Select page"
1799
+
1800
+ i18n-inputLabel="kendo.pager.inputLabel|The text of the aria-label attribute applied to the input element for entering the page number."
1801
+ inputLabel="Type a page number"
1802
+ >
1803
+ </ng-container>
1804
+ <ng-container
1805
+ *ngIf="template?.templateRef"
1806
+ [ngTemplateOutlet]="template.templateRef"
1807
+ [ngTemplateOutletContext]="templateContext">
1808
+ </ng-container>
1809
+ <ng-container *ngIf="!template?.templateRef">
1810
+ <div class="k-pager-numbers-wrap">
1811
+ <kendo-datapager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-prev-buttons>
1812
+ <kendo-datapager-numeric-buttons
1813
+ [size]="size"
1814
+ *ngIf="type === 'numeric' && buttonCount > 0"
1815
+ [buttonCount]="buttonCount">
1816
+ </kendo-datapager-numeric-buttons>
1817
+ <kendo-datapager-input [size]="size" *ngIf="type === 'input'"></kendo-datapager-input>
1818
+ <kendo-datapager-next-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-next-buttons>
1819
+ </div>
1820
+ <kendo-datapager-page-sizes [size]="size" *ngIf="pageSizeValues" [pageSizes]="pageSizeValues"></kendo-datapager-page-sizes>
1821
+ <kendo-datapager-info *ngIf='info'></kendo-datapager-info>
1822
+ </ng-container>
1823
+ <kendo-resize-sensor></kendo-resize-sensor>
1824
+ `
1825
+ }]
1826
+ }], ctorParameters: function () { return [{ type: PagerContextService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: PagerNavigationService }]; }, propDecorators: { resizeSensor: [{
1827
+ type: ViewChild,
1828
+ args: [ResizeSensorComponent, { static: true }]
1829
+ }], template: [{
1830
+ type: ContentChild,
1831
+ args: [PagerTemplateDirective, { static: false }]
1832
+ }], total: [{
1833
+ type: Input
1834
+ }], skip: [{
1835
+ type: Input
1836
+ }], pageSize: [{
1837
+ type: Input
1838
+ }], buttonCount: [{
1839
+ type: Input
1840
+ }], info: [{
1841
+ type: Input
1842
+ }], type: [{
1843
+ type: Input
1844
+ }], pageSizeValues: [{
1845
+ type: Input
1846
+ }], previousNext: [{
1847
+ type: Input
1848
+ }], navigable: [{
1849
+ type: Input
1850
+ }], size: [{
1851
+ type: Input
1852
+ }], pageChange: [{
1853
+ type: Output
1854
+ }], pageSizeChange: [{
1855
+ type: Output
1856
+ }], pagerClass: [{
1857
+ type: HostBinding,
1858
+ args: ['class.k-pager']
1859
+ }], widgetRole: [{
1860
+ type: HostBinding,
1861
+ args: ['attr.role']
1862
+ }], roleDescription: [{
1863
+ type: HostBinding,
1864
+ args: ['attr.aria-roledescription']
1865
+ }], keyShortcuts: [{
1866
+ type: HostBinding,
1867
+ args: ['attr.aria-keyshortcuts']
1868
+ }], hostTabindex: [{
1869
+ type: HostBinding,
1870
+ args: ['attr.tabindex']
1871
+ }], dir: [{
1872
+ type: HostBinding,
1873
+ args: ['attr.dir']
1874
+ }], focusHandler: [{
1875
+ type: HostListener,
1876
+ args: ['focusin', ['$event']]
1877
+ }] } });
1878
+
1879
+ const importedModules = [
1880
+ CommonModule,
1881
+ NumericTextBoxModule,
1882
+ DropDownListModule,
1883
+ ButtonsModule,
1884
+ EventsModule,
1885
+ ResizeSensorModule
1886
+ ];
1887
+ const INTERNAL_COMPONENTS = [
1888
+ PagerComponent,
1889
+ PagerPrevButtonsComponent,
1890
+ PagerNextButtonsComponent,
1891
+ PagerNumericButtonsComponent,
1892
+ PagerInputComponent,
1893
+ PagerInfoComponent,
1894
+ PagerPageSizesComponent,
1895
+ PagerTemplateDirective,
1896
+ LocalizedMessagesDirective,
1897
+ CustomMessagesComponent,
1898
+ PagerFocusableDirective
1899
+ ];
1900
+ const providers = [
1901
+ {
1902
+ provide: L10N_PREFIX,
1903
+ useValue: 'kendo.pager'
1904
+ }
1905
+ ];
1906
+ /**
1907
+ * @hidden
1908
+ */
1909
+ class PagerModule {
1910
+ static exports() {
1911
+ return [
1912
+ PagerComponent,
1913
+ PagerPrevButtonsComponent,
1914
+ PagerNextButtonsComponent,
1915
+ PagerNumericButtonsComponent,
1916
+ PagerInputComponent,
1917
+ PagerInfoComponent,
1918
+ PagerPageSizesComponent,
1919
+ PagerTemplateDirective
1920
+ ];
1921
+ }
1922
+ }
1923
+ PagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1924
+ PagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerModule, declarations: [PagerComponent,
1925
+ PagerPrevButtonsComponent,
1926
+ PagerNextButtonsComponent,
1927
+ PagerNumericButtonsComponent,
1928
+ PagerInputComponent,
1929
+ PagerInfoComponent,
1930
+ PagerPageSizesComponent,
1931
+ PagerTemplateDirective,
1932
+ LocalizedMessagesDirective,
1933
+ CustomMessagesComponent,
1934
+ PagerFocusableDirective], imports: [CommonModule,
1935
+ NumericTextBoxModule,
1936
+ DropDownListModule,
1937
+ ButtonsModule,
1938
+ EventsModule,
1939
+ ResizeSensorModule], exports: [PagerComponent,
1940
+ PagerPrevButtonsComponent,
1941
+ PagerNextButtonsComponent,
1942
+ PagerNumericButtonsComponent,
1943
+ PagerInputComponent,
1944
+ PagerInfoComponent,
1945
+ PagerPageSizesComponent,
1946
+ PagerTemplateDirective,
1947
+ LocalizedMessagesDirective,
1948
+ CustomMessagesComponent,
1949
+ PagerFocusableDirective] });
1950
+ PagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerModule, providers: [providers], imports: [[...importedModules]] });
1951
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PagerModule, decorators: [{
1952
+ type: NgModule,
1953
+ args: [{
1954
+ declarations: [INTERNAL_COMPONENTS],
1955
+ exports: [INTERNAL_COMPONENTS],
1956
+ imports: [...importedModules],
1957
+ providers: [providers]
1958
+ }]
1959
+ }] });
1960
+
1961
+ /**
1962
+ * Generated bundle index. Do not edit.
1963
+ */
1964
+
1965
+ export { CustomMessagesComponent, LocalizedMessagesDirective, PageSizeChangeEvent, PagerComponent, PagerFocusableDirective, PagerInfoComponent, PagerInputComponent, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective };
1966
+