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

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