@progress/kendo-angular-pager 17.0.0-develop.9 → 17.0.1-develop.1
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.
- package/README.md +26 -17
- package/directives.d.ts +2 -1
- package/{esm2020 → esm2022}/directives.mjs +3 -1
- package/{esm2020 → esm2022}/index.mjs +3 -0
- package/{esm2020 → esm2022}/package-metadata.mjs +2 -2
- package/{esm2020 → esm2022}/pager/focusable.directive.mjs +11 -5
- package/{esm2020 → esm2022}/pager/localization/custom-messages.component.mjs +10 -9
- package/{esm2020 → esm2022}/pager/localization/localized-messages.directive.mjs +10 -9
- package/esm2022/pager/localization/messages.mjs +100 -0
- package/{esm2020 → esm2022}/pager/navigation.service.mjs +10 -8
- package/{esm2020 → esm2022}/pager/pager-context.service.mjs +8 -6
- package/{esm2020 → esm2022}/pager/pager-element.component.mjs +24 -16
- package/{esm2020 → esm2022}/pager/pager-info.component.mjs +9 -12
- package/{esm2020 → esm2022}/pager/pager-input.component.mjs +57 -53
- package/{esm2020 → esm2022}/pager/pager-next-buttons.component.mjs +26 -22
- package/{esm2020 → esm2022}/pager/pager-numeric-buttons.component.mjs +24 -15
- package/{esm2020 → esm2022}/pager/pager-page-sizes.component.mjs +30 -26
- package/{esm2020 → esm2022}/pager/pager-prev-buttons.component.mjs +31 -23
- package/{esm2020 → esm2022}/pager/pager-template.directive.mjs +13 -12
- package/{esm2020 → esm2022}/pager/pager.component.mjs +224 -161
- package/esm2022/pager/pager.module.mjs +65 -0
- package/{esm2020 → esm2022}/pager/pagesizechange-event.mjs +4 -0
- package/{esm2020 → esm2022}/pager/preventable-event.mjs +1 -3
- package/esm2022/pager/spacer.component.mjs +49 -0
- package/{esm2020 → esm2022}/util.mjs +11 -7
- package/{fesm2020 → fesm2022}/progress-kendo-angular-pager.mjs +639 -404
- package/index.d.ts +3 -0
- package/package.json +15 -21
- package/pager/common/pager-size.d.ts +1 -1
- package/pager/common/pager-type.d.ts +3 -3
- package/pager/focusable.directive.d.ts +1 -1
- package/pager/localization/custom-messages.component.d.ts +1 -1
- package/pager/localization/localized-messages.directive.d.ts +1 -1
- package/pager/localization/messages.d.ts +12 -1
- package/pager/pager-context.service.d.ts +3 -1
- package/pager/pager-info.component.d.ts +2 -3
- package/pager/pager-input.component.d.ts +1 -1
- package/pager/pager-next-buttons.component.d.ts +1 -1
- package/pager/pager-numeric-buttons.component.d.ts +1 -1
- package/pager/pager-page-sizes.component.d.ts +5 -5
- package/pager/pager-prev-buttons.component.d.ts +1 -1
- package/pager/pager-template.directive.d.ts +9 -9
- package/pager/pager.component.d.ts +30 -11
- package/pager/pager.module.d.ts +22 -2
- package/pager/spacer.component.d.ts +24 -0
- package/schematics/ngAdd/index.js +7 -7
- package/util.d.ts +4 -0
- package/esm2020/pager/localization/messages.mjs +0 -43
- package/esm2020/pager/pager.module.mjs +0 -45
- package/fesm2015/progress-kendo-angular-pager.mjs +0 -1991
- /package/{esm2020 → esm2022}/pager/change-event-args.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/pager/common/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/pager/common/pager-classes.mjs +0 -0
- /package/{esm2020 → esm2022}/pager/common/pager-size.mjs +0 -0
- /package/{esm2020 → esm2022}/pager/common/pager-type.mjs +0 -0
- /package/{esm2020 → esm2022}/pager/pagesize-item.interface.mjs +0 -0
- /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,
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
254
|
-
|
|
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
|
-
|
|
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
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
|
|
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-
|
|
433
|
+
<ng-template #default>
|
|
375
434
|
<div class="k-pager-numbers-wrap">
|
|
376
|
-
<kendo-
|
|
377
|
-
<kendo-
|
|
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-
|
|
382
|
-
<kendo-
|
|
383
|
-
<kendo-
|
|
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-
|
|
444
|
+
<kendo-pager-page-sizes *ngIf="pageSizeValues"
|
|
386
445
|
[size]="size"
|
|
387
446
|
[pageSizes]="pageSizeValues">
|
|
388
|
-
</kendo-
|
|
389
|
-
<kendo-
|
|
390
|
-
</kendo-
|
|
391
|
-
</ng-
|
|
392
|
-
<kendo-resize-sensor></kendo-resize-sensor>
|
|
393
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[
|
|
394
|
-
|
|
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
|
|
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-
|
|
512
|
+
<ng-template #default>
|
|
450
513
|
<div class="k-pager-numbers-wrap">
|
|
451
|
-
<kendo-
|
|
452
|
-
<kendo-
|
|
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-
|
|
457
|
-
<kendo-
|
|
458
|
-
<kendo-
|
|
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-
|
|
523
|
+
<kendo-pager-page-sizes *ngIf="pageSizeValues"
|
|
461
524
|
[size]="size"
|
|
462
525
|
[pageSizes]="pageSizeValues">
|
|
463
|
-
</kendo-
|
|
464
|
-
<kendo-
|
|
465
|
-
</kendo-
|
|
466
|
-
</ng-
|
|
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
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
type:
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
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
|
-
|
|
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.
|