@progress/kendo-angular-pager 17.0.0-develop.4 → 17.0.0-develop.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +26 -17
  2. package/directives.d.ts +2 -1
  3. package/{esm2020 → esm2022}/directives.mjs +3 -1
  4. package/{esm2020 → esm2022}/index.mjs +3 -0
  5. package/{esm2020 → esm2022}/package-metadata.mjs +2 -2
  6. package/{esm2020 → esm2022}/pager/focusable.directive.mjs +11 -5
  7. package/{esm2020 → esm2022}/pager/localization/custom-messages.component.mjs +10 -9
  8. package/{esm2020 → esm2022}/pager/localization/localized-messages.directive.mjs +10 -9
  9. package/esm2022/pager/localization/messages.mjs +100 -0
  10. package/{esm2020 → esm2022}/pager/navigation.service.mjs +10 -8
  11. package/{esm2020 → esm2022}/pager/pager-context.service.mjs +8 -6
  12. package/{esm2020 → esm2022}/pager/pager-element.component.mjs +24 -16
  13. package/{esm2020 → esm2022}/pager/pager-info.component.mjs +9 -12
  14. package/{esm2020 → esm2022}/pager/pager-input.component.mjs +60 -56
  15. package/{esm2020 → esm2022}/pager/pager-next-buttons.component.mjs +27 -23
  16. package/{esm2020 → esm2022}/pager/pager-numeric-buttons.component.mjs +25 -16
  17. package/{esm2020 → esm2022}/pager/pager-page-sizes.component.mjs +30 -26
  18. package/{esm2020 → esm2022}/pager/pager-prev-buttons.component.mjs +32 -24
  19. package/{esm2020 → esm2022}/pager/pager-template.directive.mjs +13 -12
  20. package/{esm2020 → esm2022}/pager/pager.component.mjs +224 -161
  21. package/esm2022/pager/pager.module.mjs +65 -0
  22. package/{esm2020 → esm2022}/pager/pagesizechange-event.mjs +4 -0
  23. package/{esm2020 → esm2022}/pager/preventable-event.mjs +1 -3
  24. package/esm2022/pager/spacer.component.mjs +49 -0
  25. package/{esm2020 → esm2022}/util.mjs +11 -7
  26. package/{fesm2020 → fesm2022}/progress-kendo-angular-pager.mjs +645 -410
  27. package/index.d.ts +3 -0
  28. package/package.json +15 -21
  29. package/pager/common/pager-size.d.ts +1 -1
  30. package/pager/common/pager-type.d.ts +3 -3
  31. package/pager/focusable.directive.d.ts +1 -1
  32. package/pager/localization/custom-messages.component.d.ts +1 -1
  33. package/pager/localization/localized-messages.directive.d.ts +1 -1
  34. package/pager/localization/messages.d.ts +12 -1
  35. package/pager/pager-context.service.d.ts +3 -1
  36. package/pager/pager-info.component.d.ts +2 -3
  37. package/pager/pager-input.component.d.ts +1 -1
  38. package/pager/pager-next-buttons.component.d.ts +1 -1
  39. package/pager/pager-numeric-buttons.component.d.ts +1 -1
  40. package/pager/pager-page-sizes.component.d.ts +5 -5
  41. package/pager/pager-prev-buttons.component.d.ts +1 -1
  42. package/pager/pager-template.directive.d.ts +9 -9
  43. package/pager/pager.component.d.ts +30 -11
  44. package/pager/pager.module.d.ts +22 -2
  45. package/pager/spacer.component.d.ts +24 -0
  46. package/schematics/ngAdd/index.js +6 -6
  47. package/util.d.ts +4 -0
  48. package/esm2020/pager/localization/messages.mjs +0 -43
  49. package/esm2020/pager/pager.module.mjs +0 -45
  50. package/fesm2015/progress-kendo-angular-pager.mjs +0 -1991
  51. /package/{esm2020 → esm2022}/pager/change-event-args.interface.mjs +0 -0
  52. /package/{esm2020 → esm2022}/pager/common/constants.mjs +0 -0
  53. /package/{esm2020 → esm2022}/pager/common/pager-classes.mjs +0 -0
  54. /package/{esm2020 → esm2022}/pager/common/pager-size.mjs +0 -0
  55. /package/{esm2020 → esm2022}/pager/common/pager-type.mjs +0 -0
  56. /package/{esm2020 → esm2022}/pager/pagesize-item.interface.mjs +0 -0
  57. /package/{esm2020 → esm2022}/progress-kendo-angular-pager.mjs +0 -0
@@ -2,12 +2,12 @@
2
2
  * Copyright © 2024 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { Component, Input, EventEmitter, Output, HostBinding, ViewChild, ElementRef, Renderer2, NgZone, HostListener, ContentChildren, QueryList } from '@angular/core';
5
+ import { Component, Input, EventEmitter, Output, HostBinding, ElementRef, Renderer2, NgZone, HostListener, ContentChildren, QueryList, Optional, SkipSelf, inject } from '@angular/core';
6
6
  import { PagerTemplateDirective } from "./pager-template.directive";
7
7
  import { anyChanged, Keys, ResizeSensorComponent } from "@progress/kendo-angular-common";
8
8
  import { PagerContextService } from "./pager-context.service";
9
9
  import { Subscription } from "rxjs";
10
- import { DEFAULT_PAGE_SIZE_VALUES, getStylingClasses, DEFAULT_SIZE } from '../util';
10
+ import { DEFAULT_PAGE_SIZE_VALUES, getStylingClasses, DEFAULT_SIZE, replaceMessagePlaceholder } from '../util';
11
11
  import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
12
12
  import { validatePackage } from '@progress/kendo-licensing';
13
13
  import { packageMetadata } from '../package-metadata';
@@ -26,99 +26,51 @@ import * as i1 from "./pager-context.service";
26
26
  import * as i2 from "@progress/kendo-angular-l10n";
27
27
  import * as i3 from "./navigation.service";
28
28
  export class PagerComponent {
29
- constructor(pagerContext, element, localization, renderer, ngZone, navigationService) {
30
- this.pagerContext = pagerContext;
31
- this.element = element;
32
- this.localization = localization;
33
- this.renderer = renderer;
34
- this.ngZone = ngZone;
35
- this.navigationService = navigationService;
36
- /**
37
- * Represents the total number of data items in the collection.
38
- */
39
- this.total = 0;
40
- /**
41
- * Defines the number of data items to be skipped.
42
- */
43
- this.skip = 0;
44
- /**
45
- * Sets the maximum numeric buttons count before the buttons are collapsed.
46
- */
47
- this.buttonCount = 10;
48
- /**
49
- * Toggles the information about the current page and the total number of records.
50
- */
51
- this.info = true;
52
- /**
53
- * Defines the type of the pager.
54
- */
55
- this.type = 'numeric';
56
- /**
57
- * Toggles the **Previous** and **Next** buttons.
58
- */
59
- this.previousNext = true;
60
- /**
61
- * Fires when the current page of the Pager is changed ([see example](slug:overview_pager)).
62
- * You have to handle the event yourself and page the data.
63
- */
64
- this.pageChange = new EventEmitter();
65
- /**
66
- * Fires when the page size of the Pager is changed.
67
- * You have to handle the event yourself and page the data.
68
- * If the event is prevented, the page size will remain unchanged ([see example]({% slug pager_events %})).
69
- */
70
- this.pageSizeChange = new EventEmitter();
71
- this.pagerClass = true;
72
- this.widgetRole = 'application';
73
- this.roleDescription = 'pager';
74
- this.keyShortcuts = 'Enter ArrowRight ArrowLeft';
75
- this.hostTabindex = '0';
76
- this.subscriptions = new Subscription();
77
- this._templateContext = {};
78
- this._pageSizeValues = DEFAULT_PAGE_SIZE_VALUES;
79
- this.isInnerNavigationEnabled = false;
80
- this._navigable = false;
81
- this._size = DEFAULT_SIZE;
82
- this.resizeHandler = () => {
83
- if (this.template?.first) {
84
- return;
85
- }
86
- const width = this.element.nativeElement.offsetWidth;
87
- this.ngZone.runOutsideAngular(() => {
88
- setTimeout(() => {
89
- if (this.numericButtons) {
90
- const selectElement = this.numericButtons.selectElement.nativeElement;
91
- const numbersElement = this.numericButtons.numbersElement.nativeElement;
92
- this.renderer.removeStyle(numbersElement, 'display');
93
- this.renderer.setStyle(selectElement, 'display', 'none');
94
- this.renderer.addClass(selectElement, 'k-hidden');
95
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
96
- this.renderer.removeStyle(selectElement, 'display');
97
- this.renderer.removeClass(selectElement, 'k-hidden');
98
- this.renderer.setStyle(numbersElement, 'display', 'none');
99
- }
100
- else {
101
- this.renderer.addClass(selectElement, 'k-hidden');
102
- }
103
- }
104
- if (this.pagerInfo) {
105
- this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
106
- if (width < RESPONSIVE_BREAKPOINT_LARGE) {
107
- this.renderer.setStyle(this.pagerInfo.nativeElement, 'display', 'none');
108
- }
109
- }
110
- if (this.pagerPageSizes) {
111
- this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
112
- if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
113
- this.renderer.setStyle(this.pagerPageSizes.nativeElement, 'display', 'none');
114
- }
115
- }
116
- });
117
- });
118
- };
119
- validatePackage(packageMetadata);
120
- this.direction = localization.rtl ? 'rtl' : 'ltr';
121
- }
29
+ pagerContext;
30
+ element;
31
+ localization;
32
+ renderer;
33
+ ngZone;
34
+ navigationService;
35
+ template;
36
+ /**
37
+ * @hidden
38
+ */
39
+ externalTemplate;
40
+ /**
41
+ * Represents the total number of data items in the collection.
42
+ *
43
+ * @default 0
44
+ */
45
+ total = 0;
46
+ /**
47
+ * Defines the number of data items to be skipped.
48
+ *
49
+ * @default 0
50
+ */
51
+ skip = 0;
52
+ /**
53
+ * Defines the number of data items per page.
54
+ */
55
+ pageSize;
56
+ /**
57
+ * Sets the maximum numeric buttons count before the buttons are collapsed.
58
+ *
59
+ * @default 10
60
+ */
61
+ buttonCount = 10;
62
+ /**
63
+ * Toggles the information about the current page and the total number of records.
64
+ *
65
+ * @default true
66
+ */
67
+ info = true;
68
+ /**
69
+ * Defines the type of the pager.
70
+ *
71
+ * @default 'numeric'
72
+ */
73
+ type = 'numeric';
122
74
  /**
123
75
  * Shows a dropdown for selecting the page size.
124
76
  * When set to `true`, the dropdown will contain the default list of options - 5, 10, 20.
@@ -131,6 +83,12 @@ export class PagerComponent {
131
83
  get pageSizeValues() {
132
84
  return this._pageSizeValues;
133
85
  }
86
+ /**
87
+ * Toggles the **Previous** and **Next** buttons.
88
+ *
89
+ * @default true
90
+ */
91
+ previousNext = true;
134
92
  /**
135
93
  * If set to `true`, the user can use dedicated shortcuts to interact with the Pager ([see example]({% slug keyboard_navigation_pager %})).
136
94
  * By default, navigation is disabled and the Pager content is accessible in the normal tab sequence.
@@ -160,6 +118,31 @@ export class PagerComponent {
160
118
  get size() {
161
119
  return this._size;
162
120
  }
121
+ /**
122
+ * @hidden
123
+ * Toggles the Pager responsive functionality.
124
+ *
125
+ * @default true
126
+ */
127
+ responsive = true;
128
+ /**
129
+ * Fires when the current page of the Pager is changed ([see example](slug:overview_pager)).
130
+ * You have to handle the event yourself and page the data.
131
+ */
132
+ pageChange = new EventEmitter();
133
+ /**
134
+ * Fires when the page size of the Pager is changed.
135
+ * You have to handle the event yourself and page the data.
136
+ * If the event is prevented, the page size will remain unchanged ([see example]({% slug pager_events %})).
137
+ */
138
+ pageSizeChange = new EventEmitter();
139
+ pagerClass = true;
140
+ widgetRole = 'application';
141
+ roleDescription = 'pager';
142
+ keyShortcuts = 'Enter ArrowRight ArrowLeft';
143
+ get hostTabindex() {
144
+ return this.navigable ? '0' : '-1';
145
+ }
163
146
  get dir() {
164
147
  return this.direction;
165
148
  }
@@ -185,10 +168,33 @@ export class PagerComponent {
185
168
  context.currentPage = this.currentPage;
186
169
  return context;
187
170
  }
171
+ subscriptions = new Subscription();
172
+ _templateContext = {};
173
+ _pageSizeValues = DEFAULT_PAGE_SIZE_VALUES;
174
+ direction;
175
+ isInnerNavigationEnabled = false;
176
+ _navigable = false;
177
+ _size = DEFAULT_SIZE;
178
+ constructor(pagerContext, element, localization, renderer, ngZone, navigationService) {
179
+ this.pagerContext = pagerContext;
180
+ this.element = element;
181
+ this.localization = localization;
182
+ this.renderer = renderer;
183
+ this.ngZone = ngZone;
184
+ this.navigationService = navigationService;
185
+ validatePackage(packageMetadata);
186
+ this.direction = localization.rtl ? 'rtl' : 'ltr';
187
+ if (!navigationService) {
188
+ this.navigationService = inject(PagerNavigationService);
189
+ }
190
+ if (!pagerContext) {
191
+ this.pagerContext = inject(PagerContextService);
192
+ }
193
+ this.pagerContext.localization = localization;
194
+ }
188
195
  ngOnInit() {
189
196
  this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));
190
197
  this.subscriptions.add(this.pagerContext.pageSizeChange.subscribe(this.changePageSize.bind(this)));
191
- this.subscriptions.add(this.resizeSensor.resize.subscribe(() => this.resizeHandler()));
192
198
  this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {
193
199
  this.direction = rtl ? 'rtl' : 'ltr';
194
200
  }));
@@ -201,10 +207,10 @@ export class PagerComponent {
201
207
  }
202
208
  }
203
209
  ngAfterViewInit() {
204
- this.resizeHandler();
210
+ this.responsive && this.resizeHandler();
205
211
  this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
206
212
  this.subscriptions.add(this.template.changes.subscribe(() => {
207
- this.resizeHandler();
213
+ this.responsive && this.resizeHandler();
208
214
  }));
209
215
  this.handleClasses(this.size, 'size');
210
216
  }
@@ -217,6 +223,9 @@ export class PagerComponent {
217
223
  });
218
224
  this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
219
225
  }
226
+ if (changes['responsive']) {
227
+ this.responsive && this.resizeHandler();
228
+ }
220
229
  }
221
230
  ngOnDestroy() {
222
231
  this.subscriptions.unsubscribe();
@@ -250,11 +259,53 @@ export class PagerComponent {
250
259
  this.pageChange.emit({ skip: this.skip, take: event.newPageSize });
251
260
  }
252
261
  }
253
- textFor(value) {
254
- return this.localization.get(value);
255
- }
262
+ /**
263
+ * @hidden
264
+ */
265
+ resizeHandler = () => {
266
+ if (this.template?.first && !this.responsive) {
267
+ return;
268
+ }
269
+ const width = this.element.nativeElement.offsetWidth;
270
+ this.ngZone.runOutsideAngular(() => {
271
+ setTimeout(() => {
272
+ const numericButtonsElement = this.element.nativeElement.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
273
+ const pagerInfoElement = this.element.nativeElement.querySelector('.k-pager-info');
274
+ const pagerPageSizes = this.element.nativeElement.querySelector('.k-pager-sizes');
275
+ if (numericButtonsElement) {
276
+ const selectElement = numericButtonsElement.querySelector('select');
277
+ const numbersElement = numericButtonsElement.querySelector('.k-pager-numbers');
278
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
279
+ this.renderer.removeClass(selectElement, 'k-hidden');
280
+ this.renderer.addClass(numbersElement, 'k-hidden');
281
+ }
282
+ else {
283
+ this.renderer.addClass(selectElement, 'k-hidden');
284
+ this.renderer.removeClass(numbersElement, 'k-hidden');
285
+ }
286
+ }
287
+ if (pagerInfoElement) {
288
+ if (width < RESPONSIVE_BREAKPOINT_LARGE) {
289
+ this.renderer.addClass(pagerInfoElement, 'k-hidden');
290
+ }
291
+ else {
292
+ this.renderer.removeClass(pagerInfoElement, 'k-hidden');
293
+ }
294
+ }
295
+ if (pagerPageSizes) {
296
+ if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
297
+ this.renderer.addClass(pagerPageSizes, 'k-hidden');
298
+ }
299
+ else {
300
+ this.renderer.removeClass(pagerPageSizes, 'k-hidden');
301
+ }
302
+ }
303
+ });
304
+ });
305
+ };
256
306
  get ariaLabel() {
257
- return `${this.textFor('page')} ${this.currentPage} ${this.textFor('of')} ${this.totalPages}`;
307
+ const localizationMsg = this.localization.get('ariaLabel') || '';
308
+ return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());
258
309
  }
259
310
  keyDownHandler(e) {
260
311
  const target = e.target;
@@ -270,11 +321,17 @@ export class PagerComponent {
270
321
  const isLastPage = this.currentPage === this.totalPages;
271
322
  this.ngZone.run(() => {
272
323
  if (isHome) {
324
+ if (e.target !== wrapper) {
325
+ return;
326
+ }
273
327
  e.preventDefault();
274
328
  !isFirstPage && this.pagerContext.changePage(0);
275
329
  }
276
330
  else if (isEnd) {
277
331
  e.preventDefault();
332
+ if (e.target !== wrapper) {
333
+ return;
334
+ }
278
335
  !isLastPage && this.pagerContext.changePage(this.totalPages - 1);
279
336
  }
280
337
  else if (this.isInnerNavigationEnabled) {
@@ -287,6 +344,9 @@ export class PagerComponent {
287
344
  }
288
345
  }
289
346
  else {
347
+ if (e.target !== wrapper) {
348
+ return;
349
+ }
290
350
  if (isArrowLeftOrPageUp) {
291
351
  e.preventDefault();
292
352
  !isFirstPage && this.pagerContext.prevPage();
@@ -296,9 +356,6 @@ export class PagerComponent {
296
356
  !isLastPage && this.pagerContext.nextPage();
297
357
  }
298
358
  else if (isEnter) {
299
- if (e.target !== wrapper) {
300
- return;
301
- }
302
359
  e.preventDefault();
303
360
  const [firstFocusable] = this.navigationService.getFirstAndLastFocusable(wrapper);
304
361
  this.navigationService.toggleInnerNavigation(true);
@@ -320,18 +377,20 @@ export class PagerComponent {
320
377
  this.renderer.addClass(elem, classes.toAdd);
321
378
  }
322
379
  }
323
- }
324
- PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerComponent, deps: [{ token: i1.PagerContextService }, { token: i0.ElementRef }, { token: i2.LocalizationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i3.PagerNavigationService }], target: i0.ɵɵFactoryTarget.Component });
325
- PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PagerComponent, isStandalone: true, selector: "kendo-datapager", inputs: { total: "total", skip: "skip", pageSize: "pageSize", buttonCount: "buttonCount", info: "info", type: "type", pageSizeValues: "pageSizeValues", previousNext: "previousNext", navigable: "navigable", size: "size" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, host: { listeners: { "focusin": "focusHandler($event)" }, properties: { "class.k-pager": "this.pagerClass", "attr.role": "this.widgetRole", "attr.aria-roledescription": "this.roleDescription", "attr.aria-keyshortcuts": "this.keyShortcuts", "attr.tabindex": "this.hostTabindex", "attr.dir": "this.dir" } }, providers: [
326
- LocalizationService,
327
- PagerContextService,
328
- PagerNavigationService,
329
- {
330
- provide: L10N_PREFIX,
331
- useValue: 'kendo.pager'
332
- }
333
- ], queries: [{ propertyName: "template", predicate: PagerTemplateDirective }], viewQueries: [{ propertyName: "resizeSensor", first: true, predicate: ResizeSensorComponent, descendants: true, static: true }, { propertyName: "pagerInfo", first: true, predicate: PagerInfoComponent, descendants: true, read: ElementRef }, { propertyName: "pagerPageSizes", first: true, predicate: PagerPageSizesComponent, descendants: true, read: ElementRef }, { propertyName: "numericButtons", first: true, predicate: PagerNumericButtonsComponent, descendants: true }], exportAs: ["kendoDataPager"], usesOnChanges: true, ngImport: i0, template: `
334
- <ng-container kendoDataPagerLocalizedMessages
380
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, deps: [{ token: i1.PagerContextService, optional: true, skipSelf: true }, { token: i0.ElementRef }, { token: i2.LocalizationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i3.PagerNavigationService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
381
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerComponent, isStandalone: true, selector: "kendo-datapager, kendo-pager", inputs: { externalTemplate: "externalTemplate", total: "total", skip: "skip", pageSize: "pageSize", buttonCount: "buttonCount", info: "info", type: "type", pageSizeValues: "pageSizeValues", previousNext: "previousNext", navigable: "navigable", size: "size", responsive: "responsive" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, host: { listeners: { "focusin": "focusHandler($event)" }, properties: { "class.k-pager": "this.pagerClass", "attr.role": "this.widgetRole", "attr.aria-roledescription": "this.roleDescription", "attr.aria-keyshortcuts": "this.keyShortcuts", "attr.tabindex": "this.hostTabindex", "attr.dir": "this.dir" } }, providers: [
382
+ LocalizationService,
383
+ PagerContextService,
384
+ PagerNavigationService,
385
+ {
386
+ provide: L10N_PREFIX,
387
+ useValue: 'kendo.pager'
388
+ }
389
+ ], queries: [{ propertyName: "template", predicate: PagerTemplateDirective }], exportAs: ["kendoDataPager", "kendoPager"], usesOnChanges: true, ngImport: i0, template: `
390
+ <ng-container kendoPagerLocalizedMessages
391
+ i18n-ariaLabel="kendo.pager.ariaLabel|The value of the aria-label attribute of the Pager"
392
+ ariaLabel="{{ 'Page navigation, page {currentPage} of {totalPages}' }}"
393
+
335
394
  i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
336
395
  firstPage="Go to the first page"
337
396
 
@@ -367,35 +426,36 @@ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
367
426
  >
368
427
  </ng-container>
369
428
  <ng-container
370
- *ngIf="template.first?.templateRef"
429
+ *ngIf="template.first?.templateRef; else default"
371
430
  [ngTemplateOutlet]="template.first?.templateRef"
372
431
  [ngTemplateOutletContext]="templateContext">
373
432
  </ng-container>
374
- <ng-container *ngIf="!template?.first?.templateRef">
433
+ <ng-template #default>
375
434
  <div class="k-pager-numbers-wrap">
376
- <kendo-datapager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-prev-buttons>
377
- <kendo-datapager-numeric-buttons
435
+ <kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
436
+ <kendo-pager-numeric-buttons
378
437
  [size]="size"
379
438
  *ngIf="type === 'numeric' && buttonCount > 0"
380
439
  [buttonCount]="buttonCount">
381
- </kendo-datapager-numeric-buttons>
382
- <kendo-datapager-input [size]="size" *ngIf="type === 'input'"></kendo-datapager-input>
383
- <kendo-datapager-next-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-next-buttons>
440
+ </kendo-pager-numeric-buttons>
441
+ <kendo-pager-input [size]="size" *ngIf="type === 'input'"></kendo-pager-input>
442
+ <kendo-pager-next-buttons [size]="size" *ngIf="previousNext"></kendo-pager-next-buttons>
384
443
  </div>
385
- <kendo-datapager-page-sizes *ngIf="pageSizeValues"
444
+ <kendo-pager-page-sizes *ngIf="pageSizeValues"
386
445
  [size]="size"
387
446
  [pageSizes]="pageSizeValues">
388
- </kendo-datapager-page-sizes>
389
- <kendo-datapager-info *ngIf='info'>
390
- </kendo-datapager-info>
391
- </ng-container>
392
- <kendo-resize-sensor></kendo-resize-sensor>
393
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoDataPagerLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons", inputs: ["size"] }, { kind: "component", type: PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: PagerInputComponent, selector: "kendo-datapager-input", inputs: ["size"] }, { kind: "component", type: PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons", inputs: ["size"] }, { kind: "component", type: PagerPageSizesComponent, selector: "kendo-datapager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: PagerInfoComponent, selector: "kendo-datapager-info" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
394
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PagerComponent, decorators: [{
447
+ </kendo-pager-page-sizes>
448
+ <kendo-pager-info *ngIf="info">
449
+ </kendo-pager-info>
450
+ </ng-template>
451
+ <kendo-resize-sensor *ngIf="responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
452
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoPagerLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PagerPrevButtonsComponent, selector: "kendo-datapager-prev-buttons, kendo-pager-prev-buttons", inputs: ["size"] }, { kind: "component", type: PagerNumericButtonsComponent, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: ["buttonCount", "size"] }, { kind: "component", type: PagerInputComponent, selector: "kendo-datapager-input, kendo-pager-input", inputs: ["size"] }, { kind: "component", type: PagerNextButtonsComponent, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: ["size"] }, { kind: "component", type: PagerPageSizesComponent, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: ["pageSizes", "size"] }, { kind: "component", type: PagerInfoComponent, selector: "kendo-datapager-info, kendo-pager-info" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }] });
453
+ }
454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, decorators: [{
395
455
  type: Component,
396
456
  args: [{
397
- selector: 'kendo-datapager',
398
- exportAs: 'kendoDataPager',
457
+ selector: 'kendo-datapager, kendo-pager',
458
+ exportAs: 'kendoDataPager, kendoPager',
399
459
  providers: [
400
460
  LocalizationService,
401
461
  PagerContextService,
@@ -406,7 +466,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
406
466
  }
407
467
  ],
408
468
  template: `
409
- <ng-container kendoDataPagerLocalizedMessages
469
+ <ng-container kendoPagerLocalizedMessages
470
+ i18n-ariaLabel="kendo.pager.ariaLabel|The value of the aria-label attribute of the Pager"
471
+ ariaLabel="{{ 'Page navigation, page {currentPage} of {totalPages}' }}"
472
+
410
473
  i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
411
474
  firstPage="Go to the first page"
412
475
 
@@ -442,48 +505,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
442
505
  >
443
506
  </ng-container>
444
507
  <ng-container
445
- *ngIf="template.first?.templateRef"
508
+ *ngIf="template.first?.templateRef; else default"
446
509
  [ngTemplateOutlet]="template.first?.templateRef"
447
510
  [ngTemplateOutletContext]="templateContext">
448
511
  </ng-container>
449
- <ng-container *ngIf="!template?.first?.templateRef">
512
+ <ng-template #default>
450
513
  <div class="k-pager-numbers-wrap">
451
- <kendo-datapager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-prev-buttons>
452
- <kendo-datapager-numeric-buttons
514
+ <kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
515
+ <kendo-pager-numeric-buttons
453
516
  [size]="size"
454
517
  *ngIf="type === 'numeric' && buttonCount > 0"
455
518
  [buttonCount]="buttonCount">
456
- </kendo-datapager-numeric-buttons>
457
- <kendo-datapager-input [size]="size" *ngIf="type === 'input'"></kendo-datapager-input>
458
- <kendo-datapager-next-buttons [size]="size" *ngIf="previousNext"></kendo-datapager-next-buttons>
519
+ </kendo-pager-numeric-buttons>
520
+ <kendo-pager-input [size]="size" *ngIf="type === 'input'"></kendo-pager-input>
521
+ <kendo-pager-next-buttons [size]="size" *ngIf="previousNext"></kendo-pager-next-buttons>
459
522
  </div>
460
- <kendo-datapager-page-sizes *ngIf="pageSizeValues"
523
+ <kendo-pager-page-sizes *ngIf="pageSizeValues"
461
524
  [size]="size"
462
525
  [pageSizes]="pageSizeValues">
463
- </kendo-datapager-page-sizes>
464
- <kendo-datapager-info *ngIf='info'>
465
- </kendo-datapager-info>
466
- </ng-container>
467
- <kendo-resize-sensor></kendo-resize-sensor>
526
+ </kendo-pager-page-sizes>
527
+ <kendo-pager-info *ngIf="info">
528
+ </kendo-pager-info>
529
+ </ng-template>
530
+ <kendo-resize-sensor *ngIf="responsive" (resize)="resizeHandler()"></kendo-resize-sensor>
468
531
  `,
469
532
  standalone: true,
470
533
  imports: [LocalizedMessagesDirective, NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerPageSizesComponent, PagerInfoComponent, ResizeSensorComponent]
471
534
  }]
472
- }], ctorParameters: function () { return [{ type: i1.PagerContextService }, { type: i0.ElementRef }, { type: i2.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i3.PagerNavigationService }]; }, propDecorators: { resizeSensor: [{
473
- type: ViewChild,
474
- args: [ResizeSensorComponent, { static: true }]
475
- }], pagerInfo: [{
476
- type: ViewChild,
477
- args: [PagerInfoComponent, { read: ElementRef }]
478
- }], pagerPageSizes: [{
479
- type: ViewChild,
480
- args: [PagerPageSizesComponent, { read: ElementRef }]
481
- }], numericButtons: [{
482
- type: ViewChild,
483
- args: [PagerNumericButtonsComponent]
484
- }], template: [{
535
+ }], ctorParameters: function () { return [{ type: i1.PagerContextService, decorators: [{
536
+ type: Optional
537
+ }, {
538
+ type: SkipSelf
539
+ }] }, { type: i0.ElementRef }, { type: i2.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i3.PagerNavigationService, decorators: [{
540
+ type: Optional
541
+ }, {
542
+ type: SkipSelf
543
+ }] }]; }, propDecorators: { template: [{
485
544
  type: ContentChildren,
486
545
  args: [PagerTemplateDirective]
546
+ }], externalTemplate: [{
547
+ type: Input
487
548
  }], total: [{
488
549
  type: Input
489
550
  }], skip: [{
@@ -504,6 +565,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
504
565
  type: Input
505
566
  }], size: [{
506
567
  type: Input
568
+ }], responsive: [{
569
+ type: Input
507
570
  }], pageChange: [{
508
571
  type: Output
509
572
  }], pageSizeChange: [{
@@ -0,0 +1,65 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { NgModule } from '@angular/core';
6
+ import { ResizeBatchService } from '@progress/kendo-angular-common';
7
+ import { KENDO_PAGER } from '../directives';
8
+ import { IconsService } from '@progress/kendo-angular-icons';
9
+ import { PopupService } from '@progress/kendo-angular-popup';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "./localization/custom-messages.component";
12
+ import * as i2 from "./focusable.directive";
13
+ import * as i3 from "./pager-info.component";
14
+ import * as i4 from "./pager-input.component";
15
+ import * as i5 from "./pager-next-buttons.component";
16
+ import * as i6 from "./pager-numeric-buttons.component";
17
+ import * as i7 from "./pager-page-sizes.component";
18
+ import * as i8 from "./pager-prev-buttons.component";
19
+ import * as i9 from "./pager-template.directive";
20
+ import * as i10 from "./pager.component";
21
+ import * as i11 from "./spacer.component";
22
+ //IMPORTANT: NgModule export kept for backwards compatibility
23
+ /**
24
+ * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
25
+ * definition for the Pager component. Imports `PagerModule` into the
26
+ * [root module](link:site.data.urls.angular['ngmodules']#angular-modularity)
27
+ * of your application or into any other sub-module that will use the Pager component.
28
+ *
29
+ * @example
30
+ * ```ts-no-run
31
+ * import { NgModule } from '@angular/core';
32
+ * import { BrowserModule } from '@angular/platform-browser';
33
+ * import { PagerModule } from '@progress/kendo-angular-pager';
34
+ * import { AppComponent } from './app.component';
35
+ *
36
+ * _@NgModule({
37
+ * bootstrap: [AppComponent],
38
+ * declarations: [AppComponent],
39
+ * imports: [BrowserModule, PagerModule]
40
+ * })
41
+ * export class AppModule {
42
+ * }
43
+ * ```
44
+ */
45
+ export class PagerModule {
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
47
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, imports: [i1.CustomMessagesComponent, i2.PagerFocusableDirective, i3.PagerInfoComponent, i4.PagerInputComponent, i5.PagerNextButtonsComponent, i6.PagerNumericButtonsComponent, i7.PagerPageSizesComponent, i8.PagerPrevButtonsComponent, i9.PagerTemplateDirective, i10.PagerComponent, i11.PagerSpacerComponent], exports: [i1.CustomMessagesComponent, i2.PagerFocusableDirective, i3.PagerInfoComponent, i4.PagerInputComponent, i5.PagerNextButtonsComponent, i6.PagerNumericButtonsComponent, i7.PagerPageSizesComponent, i8.PagerPrevButtonsComponent, i9.PagerTemplateDirective, i10.PagerComponent, i11.PagerSpacerComponent] });
48
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, providers: [
49
+ IconsService,
50
+ PopupService,
51
+ ResizeBatchService
52
+ ], imports: [i4.PagerInputComponent, i5.PagerNextButtonsComponent, i6.PagerNumericButtonsComponent, i7.PagerPageSizesComponent, i8.PagerPrevButtonsComponent, i10.PagerComponent] });
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, decorators: [{
55
+ type: NgModule,
56
+ args: [{
57
+ exports: [...KENDO_PAGER],
58
+ imports: [...KENDO_PAGER],
59
+ providers: [
60
+ IconsService,
61
+ PopupService,
62
+ ResizeBatchService
63
+ ]
64
+ }]
65
+ }] });
@@ -8,6 +8,10 @@ import { PreventableEvent } from './preventable-event';
8
8
  * is changed from the UI. If you cancel the event, the change is prevented.
9
9
  */
10
10
  export class PageSizeChangeEvent extends PreventableEvent {
11
+ /**
12
+ * The newly selected page size.
13
+ */
14
+ newPageSize;
11
15
  /**
12
16
  * Constructs the event arguments for the `pageSizeChange` event.
13
17
  * @param newPageSize - The newly selected page size.
@@ -6,9 +6,7 @@
6
6
  * @hidden
7
7
  */
8
8
  export class PreventableEvent {
9
- constructor() {
10
- this.prevented = false;
11
- }
9
+ prevented = false;
12
10
  /**
13
11
  * Prevents the default action for a specified event.
14
12
  * In this way, the source component suppresses the built-in behavior that follows the event.