@progress/kendo-angular-pager 17.0.0-develop.34 → 17.0.0-develop.35
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/directives.d.ts +2 -1
- package/esm2022/directives.mjs +3 -1
- package/esm2022/index.mjs +3 -0
- package/esm2022/package-metadata.mjs +2 -2
- package/esm2022/pager/focusable.directive.mjs +4 -1
- package/esm2022/pager/localization/custom-messages.component.mjs +2 -2
- package/esm2022/pager/localization/localized-messages.directive.mjs +2 -2
- package/esm2022/pager/localization/messages.mjs +15 -2
- package/esm2022/pager/navigation.service.mjs +8 -4
- package/esm2022/pager/pager-context.service.mjs +2 -1
- package/esm2022/pager/pager-element.component.mjs +2 -1
- package/esm2022/pager/pager-info.component.mjs +5 -9
- package/esm2022/pager/pager-input.component.mjs +2 -2
- package/esm2022/pager/pager-next-buttons.component.mjs +10 -6
- package/esm2022/pager/pager-numeric-buttons.component.mjs +4 -6
- package/esm2022/pager/pager-page-sizes.component.mjs +6 -6
- package/esm2022/pager/pager-prev-buttons.component.mjs +18 -10
- package/esm2022/pager/pager-template.directive.mjs +10 -10
- package/esm2022/pager/pager.component.mjs +126 -79
- package/esm2022/pager/pager.module.mjs +2 -1
- package/esm2022/pager/spacer.component.mjs +49 -0
- package/esm2022/util.mjs +11 -7
- package/fesm2022/progress-kendo-angular-pager.mjs +274 -152
- package/index.d.ts +3 -0
- package/package.json +7 -7
- package/pager/common/pager-type.d.ts +2 -2
- 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 +2 -0
- 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 +2 -1
- package/pager/spacer.component.d.ts +24 -0
- package/schematics/ngAdd/index.js +6 -6
- package/util.d.ts +4 -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';
|
|
@@ -32,17 +32,21 @@ export class PagerComponent {
|
|
|
32
32
|
renderer;
|
|
33
33
|
ngZone;
|
|
34
34
|
navigationService;
|
|
35
|
-
resizeSensor;
|
|
36
|
-
pagerInfo;
|
|
37
|
-
pagerPageSizes;
|
|
38
|
-
numericButtons;
|
|
39
35
|
template;
|
|
36
|
+
/**
|
|
37
|
+
* @hidden
|
|
38
|
+
*/
|
|
39
|
+
externalTemplate;
|
|
40
40
|
/**
|
|
41
41
|
* Represents the total number of data items in the collection.
|
|
42
|
+
*
|
|
43
|
+
* @default 0
|
|
42
44
|
*/
|
|
43
45
|
total = 0;
|
|
44
46
|
/**
|
|
45
47
|
* Defines the number of data items to be skipped.
|
|
48
|
+
*
|
|
49
|
+
* @default 0
|
|
46
50
|
*/
|
|
47
51
|
skip = 0;
|
|
48
52
|
/**
|
|
@@ -51,14 +55,20 @@ export class PagerComponent {
|
|
|
51
55
|
pageSize;
|
|
52
56
|
/**
|
|
53
57
|
* Sets the maximum numeric buttons count before the buttons are collapsed.
|
|
58
|
+
*
|
|
59
|
+
* @default 10
|
|
54
60
|
*/
|
|
55
61
|
buttonCount = 10;
|
|
56
62
|
/**
|
|
57
63
|
* Toggles the information about the current page and the total number of records.
|
|
64
|
+
*
|
|
65
|
+
* @default true
|
|
58
66
|
*/
|
|
59
67
|
info = true;
|
|
60
68
|
/**
|
|
61
69
|
* Defines the type of the pager.
|
|
70
|
+
*
|
|
71
|
+
* @default 'numeric'
|
|
62
72
|
*/
|
|
63
73
|
type = 'numeric';
|
|
64
74
|
/**
|
|
@@ -75,6 +85,8 @@ export class PagerComponent {
|
|
|
75
85
|
}
|
|
76
86
|
/**
|
|
77
87
|
* Toggles the **Previous** and **Next** buttons.
|
|
88
|
+
*
|
|
89
|
+
* @default true
|
|
78
90
|
*/
|
|
79
91
|
previousNext = true;
|
|
80
92
|
/**
|
|
@@ -106,6 +118,13 @@ export class PagerComponent {
|
|
|
106
118
|
get size() {
|
|
107
119
|
return this._size;
|
|
108
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* @hidden
|
|
123
|
+
* Toggles the Pager responsive functionality.
|
|
124
|
+
*
|
|
125
|
+
* @default true
|
|
126
|
+
*/
|
|
127
|
+
responsive = true;
|
|
109
128
|
/**
|
|
110
129
|
* Fires when the current page of the Pager is changed ([see example](slug:overview_pager)).
|
|
111
130
|
* You have to handle the event yourself and page the data.
|
|
@@ -121,7 +140,9 @@ export class PagerComponent {
|
|
|
121
140
|
widgetRole = 'application';
|
|
122
141
|
roleDescription = 'pager';
|
|
123
142
|
keyShortcuts = 'Enter ArrowRight ArrowLeft';
|
|
124
|
-
hostTabindex
|
|
143
|
+
get hostTabindex() {
|
|
144
|
+
return this.navigable ? '0' : '-1';
|
|
145
|
+
}
|
|
125
146
|
get dir() {
|
|
126
147
|
return this.direction;
|
|
127
148
|
}
|
|
@@ -163,11 +184,17 @@ export class PagerComponent {
|
|
|
163
184
|
this.navigationService = navigationService;
|
|
164
185
|
validatePackage(packageMetadata);
|
|
165
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;
|
|
166
194
|
}
|
|
167
195
|
ngOnInit() {
|
|
168
196
|
this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));
|
|
169
197
|
this.subscriptions.add(this.pagerContext.pageSizeChange.subscribe(this.changePageSize.bind(this)));
|
|
170
|
-
this.subscriptions.add(this.resizeSensor.resize.subscribe(() => this.resizeHandler()));
|
|
171
198
|
this.subscriptions.add(this.localization.changes.subscribe(({ rtl }) => {
|
|
172
199
|
this.direction = rtl ? 'rtl' : 'ltr';
|
|
173
200
|
}));
|
|
@@ -180,10 +207,10 @@ export class PagerComponent {
|
|
|
180
207
|
}
|
|
181
208
|
}
|
|
182
209
|
ngAfterViewInit() {
|
|
183
|
-
this.resizeHandler();
|
|
210
|
+
this.responsive && this.resizeHandler();
|
|
184
211
|
this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
|
|
185
212
|
this.subscriptions.add(this.template.changes.subscribe(() => {
|
|
186
|
-
this.resizeHandler();
|
|
213
|
+
this.responsive && this.resizeHandler();
|
|
187
214
|
}));
|
|
188
215
|
this.handleClasses(this.size, 'size');
|
|
189
216
|
}
|
|
@@ -196,6 +223,9 @@ export class PagerComponent {
|
|
|
196
223
|
});
|
|
197
224
|
this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.ariaLabel);
|
|
198
225
|
}
|
|
226
|
+
if (changes['responsive']) {
|
|
227
|
+
this.responsive && this.resizeHandler();
|
|
228
|
+
}
|
|
199
229
|
}
|
|
200
230
|
ngOnDestroy() {
|
|
201
231
|
this.subscriptions.unsubscribe();
|
|
@@ -229,48 +259,53 @@ export class PagerComponent {
|
|
|
229
259
|
this.pageChange.emit({ skip: this.skip, take: event.newPageSize });
|
|
230
260
|
}
|
|
231
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* @hidden
|
|
264
|
+
*/
|
|
232
265
|
resizeHandler = () => {
|
|
233
|
-
if (this.template?.first) {
|
|
266
|
+
if (this.template?.first && !this.responsive) {
|
|
234
267
|
return;
|
|
235
268
|
}
|
|
236
269
|
const width = this.element.nativeElement.offsetWidth;
|
|
237
270
|
this.ngZone.runOutsideAngular(() => {
|
|
238
271
|
setTimeout(() => {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
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');
|
|
245
278
|
if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
|
|
246
|
-
this.renderer.removeStyle(selectElement, 'display');
|
|
247
279
|
this.renderer.removeClass(selectElement, 'k-hidden');
|
|
248
|
-
this.renderer.
|
|
280
|
+
this.renderer.addClass(numbersElement, 'k-hidden');
|
|
249
281
|
}
|
|
250
282
|
else {
|
|
251
283
|
this.renderer.addClass(selectElement, 'k-hidden');
|
|
284
|
+
this.renderer.removeClass(numbersElement, 'k-hidden');
|
|
252
285
|
}
|
|
253
286
|
}
|
|
254
|
-
if (
|
|
255
|
-
this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');
|
|
287
|
+
if (pagerInfoElement) {
|
|
256
288
|
if (width < RESPONSIVE_BREAKPOINT_LARGE) {
|
|
257
|
-
this.renderer.
|
|
289
|
+
this.renderer.addClass(pagerInfoElement, 'k-hidden');
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
this.renderer.removeClass(pagerInfoElement, 'k-hidden');
|
|
258
293
|
}
|
|
259
294
|
}
|
|
260
|
-
if (
|
|
261
|
-
this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');
|
|
295
|
+
if (pagerPageSizes) {
|
|
262
296
|
if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {
|
|
263
|
-
this.renderer.
|
|
297
|
+
this.renderer.addClass(pagerPageSizes, 'k-hidden');
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
this.renderer.removeClass(pagerPageSizes, 'k-hidden');
|
|
264
301
|
}
|
|
265
302
|
}
|
|
266
303
|
});
|
|
267
304
|
});
|
|
268
305
|
};
|
|
269
|
-
textFor(value) {
|
|
270
|
-
return this.localization.get(value);
|
|
271
|
-
}
|
|
272
306
|
get ariaLabel() {
|
|
273
|
-
|
|
307
|
+
const localizationMsg = this.localization.get('ariaLabel') || '';
|
|
308
|
+
return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());
|
|
274
309
|
}
|
|
275
310
|
keyDownHandler(e) {
|
|
276
311
|
const target = e.target;
|
|
@@ -286,11 +321,17 @@ export class PagerComponent {
|
|
|
286
321
|
const isLastPage = this.currentPage === this.totalPages;
|
|
287
322
|
this.ngZone.run(() => {
|
|
288
323
|
if (isHome) {
|
|
324
|
+
if (e.target !== wrapper) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
289
327
|
e.preventDefault();
|
|
290
328
|
!isFirstPage && this.pagerContext.changePage(0);
|
|
291
329
|
}
|
|
292
330
|
else if (isEnd) {
|
|
293
331
|
e.preventDefault();
|
|
332
|
+
if (e.target !== wrapper) {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
294
335
|
!isLastPage && this.pagerContext.changePage(this.totalPages - 1);
|
|
295
336
|
}
|
|
296
337
|
else if (this.isInnerNavigationEnabled) {
|
|
@@ -303,6 +344,9 @@ export class PagerComponent {
|
|
|
303
344
|
}
|
|
304
345
|
}
|
|
305
346
|
else {
|
|
347
|
+
if (e.target !== wrapper) {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
306
350
|
if (isArrowLeftOrPageUp) {
|
|
307
351
|
e.preventDefault();
|
|
308
352
|
!isFirstPage && this.pagerContext.prevPage();
|
|
@@ -312,9 +356,6 @@ export class PagerComponent {
|
|
|
312
356
|
!isLastPage && this.pagerContext.nextPage();
|
|
313
357
|
}
|
|
314
358
|
else if (isEnter) {
|
|
315
|
-
if (e.target !== wrapper) {
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
359
|
e.preventDefault();
|
|
319
360
|
const [firstFocusable] = this.navigationService.getFirstAndLastFocusable(wrapper);
|
|
320
361
|
this.navigationService.toggleInnerNavigation(true);
|
|
@@ -336,8 +377,8 @@ export class PagerComponent {
|
|
|
336
377
|
this.renderer.addClass(elem, classes.toAdd);
|
|
337
378
|
}
|
|
338
379
|
}
|
|
339
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", 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 });
|
|
340
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: [
|
|
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: [
|
|
341
382
|
LocalizationService,
|
|
342
383
|
PagerContextService,
|
|
343
384
|
PagerNavigationService,
|
|
@@ -345,8 +386,11 @@ export class PagerComponent {
|
|
|
345
386
|
provide: L10N_PREFIX,
|
|
346
387
|
useValue: 'kendo.pager'
|
|
347
388
|
}
|
|
348
|
-
], queries: [{ propertyName: "template", predicate: PagerTemplateDirective }],
|
|
349
|
-
<ng-container
|
|
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
|
+
|
|
350
394
|
i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
|
|
351
395
|
firstPage="Go to the first page"
|
|
352
396
|
|
|
@@ -382,36 +426,36 @@ export class PagerComponent {
|
|
|
382
426
|
>
|
|
383
427
|
</ng-container>
|
|
384
428
|
<ng-container
|
|
385
|
-
*ngIf="template.first?.templateRef"
|
|
429
|
+
*ngIf="template.first?.templateRef; else default"
|
|
386
430
|
[ngTemplateOutlet]="template.first?.templateRef"
|
|
387
431
|
[ngTemplateOutletContext]="templateContext">
|
|
388
432
|
</ng-container>
|
|
389
|
-
<ng-
|
|
433
|
+
<ng-template #default>
|
|
390
434
|
<div class="k-pager-numbers-wrap">
|
|
391
|
-
<kendo-
|
|
392
|
-
<kendo-
|
|
435
|
+
<kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
|
|
436
|
+
<kendo-pager-numeric-buttons
|
|
393
437
|
[size]="size"
|
|
394
438
|
*ngIf="type === 'numeric' && buttonCount > 0"
|
|
395
439
|
[buttonCount]="buttonCount">
|
|
396
|
-
</kendo-
|
|
397
|
-
<kendo-
|
|
398
|
-
<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>
|
|
399
443
|
</div>
|
|
400
|
-
<kendo-
|
|
444
|
+
<kendo-pager-page-sizes *ngIf="pageSizeValues"
|
|
401
445
|
[size]="size"
|
|
402
446
|
[pageSizes]="pageSizeValues">
|
|
403
|
-
</kendo-
|
|
404
|
-
<kendo-
|
|
405
|
-
</kendo-
|
|
406
|
-
</ng-
|
|
407
|
-
<kendo-resize-sensor></kendo-resize-sensor>
|
|
408
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[
|
|
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"] }] });
|
|
409
453
|
}
|
|
410
454
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerComponent, decorators: [{
|
|
411
455
|
type: Component,
|
|
412
456
|
args: [{
|
|
413
|
-
selector: 'kendo-datapager',
|
|
414
|
-
exportAs: 'kendoDataPager',
|
|
457
|
+
selector: 'kendo-datapager, kendo-pager',
|
|
458
|
+
exportAs: 'kendoDataPager, kendoPager',
|
|
415
459
|
providers: [
|
|
416
460
|
LocalizationService,
|
|
417
461
|
PagerContextService,
|
|
@@ -422,7 +466,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
422
466
|
}
|
|
423
467
|
],
|
|
424
468
|
template: `
|
|
425
|
-
<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
|
+
|
|
426
473
|
i18n-firstPage="kendo.pager.firstPage|The label for the first page button in the Pager"
|
|
427
474
|
firstPage="Go to the first page"
|
|
428
475
|
|
|
@@ -458,48 +505,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
458
505
|
>
|
|
459
506
|
</ng-container>
|
|
460
507
|
<ng-container
|
|
461
|
-
*ngIf="template.first?.templateRef"
|
|
508
|
+
*ngIf="template.first?.templateRef; else default"
|
|
462
509
|
[ngTemplateOutlet]="template.first?.templateRef"
|
|
463
510
|
[ngTemplateOutletContext]="templateContext">
|
|
464
511
|
</ng-container>
|
|
465
|
-
<ng-
|
|
512
|
+
<ng-template #default>
|
|
466
513
|
<div class="k-pager-numbers-wrap">
|
|
467
|
-
<kendo-
|
|
468
|
-
<kendo-
|
|
514
|
+
<kendo-pager-prev-buttons [size]="size" *ngIf="previousNext"></kendo-pager-prev-buttons>
|
|
515
|
+
<kendo-pager-numeric-buttons
|
|
469
516
|
[size]="size"
|
|
470
517
|
*ngIf="type === 'numeric' && buttonCount > 0"
|
|
471
518
|
[buttonCount]="buttonCount">
|
|
472
|
-
</kendo-
|
|
473
|
-
<kendo-
|
|
474
|
-
<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>
|
|
475
522
|
</div>
|
|
476
|
-
<kendo-
|
|
523
|
+
<kendo-pager-page-sizes *ngIf="pageSizeValues"
|
|
477
524
|
[size]="size"
|
|
478
525
|
[pageSizes]="pageSizeValues">
|
|
479
|
-
</kendo-
|
|
480
|
-
<kendo-
|
|
481
|
-
</kendo-
|
|
482
|
-
</ng-
|
|
483
|
-
<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>
|
|
484
531
|
`,
|
|
485
532
|
standalone: true,
|
|
486
533
|
imports: [LocalizedMessagesDirective, NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerPageSizesComponent, PagerInfoComponent, ResizeSensorComponent]
|
|
487
534
|
}]
|
|
488
|
-
}], ctorParameters: function () { return [{ type: i1.PagerContextService
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
type:
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
}], numericButtons: [{
|
|
498
|
-
type: ViewChild,
|
|
499
|
-
args: [PagerNumericButtonsComponent]
|
|
500
|
-
}], 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: [{
|
|
501
544
|
type: ContentChildren,
|
|
502
545
|
args: [PagerTemplateDirective]
|
|
546
|
+
}], externalTemplate: [{
|
|
547
|
+
type: Input
|
|
503
548
|
}], total: [{
|
|
504
549
|
type: Input
|
|
505
550
|
}], skip: [{
|
|
@@ -520,6 +565,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
520
565
|
type: Input
|
|
521
566
|
}], size: [{
|
|
522
567
|
type: Input
|
|
568
|
+
}], responsive: [{
|
|
569
|
+
type: Input
|
|
523
570
|
}], pageChange: [{
|
|
524
571
|
type: Output
|
|
525
572
|
}], pageSizeChange: [{
|
|
@@ -18,13 +18,14 @@ import * as i7 from "./pager-page-sizes.component";
|
|
|
18
18
|
import * as i8 from "./pager-prev-buttons.component";
|
|
19
19
|
import * as i9 from "./pager-template.directive";
|
|
20
20
|
import * as i10 from "./pager.component";
|
|
21
|
+
import * as i11 from "./spacer.component";
|
|
21
22
|
// IMPORTANT: NgModule export kept for backwards compatibility
|
|
22
23
|
/**
|
|
23
24
|
* @hidden
|
|
24
25
|
*/
|
|
25
26
|
export class PagerModule {
|
|
26
27
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
27
|
-
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], exports: [i1.CustomMessagesComponent, i2.PagerFocusableDirective, i3.PagerInfoComponent, i4.PagerInputComponent, i5.PagerNextButtonsComponent, i6.PagerNumericButtonsComponent, i7.PagerPageSizesComponent, i8.PagerPrevButtonsComponent, i9.PagerTemplateDirective, i10.PagerComponent] });
|
|
28
|
+
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] });
|
|
28
29
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerModule, providers: [
|
|
29
30
|
IconsService,
|
|
30
31
|
PopupService,
|
|
@@ -0,0 +1,49 @@
|
|
|
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 { Component, HostBinding, Input } from '@angular/core';
|
|
6
|
+
import { isPresent } from '@progress/kendo-angular-common';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* Represents the Kendo UI PagerSpacer component for Angular.
|
|
10
|
+
* Used to give additional white space between the Pager inner elements,
|
|
11
|
+
* and provides a way for customizing the spacer width.
|
|
12
|
+
*/
|
|
13
|
+
export class PagerSpacerComponent {
|
|
14
|
+
hostClass = true;
|
|
15
|
+
get sizedClass() {
|
|
16
|
+
return isPresent(this.width);
|
|
17
|
+
}
|
|
18
|
+
get flexBasisStyle() {
|
|
19
|
+
return this.width;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Specifies the width of the PagerSpacer.
|
|
23
|
+
* Accepts the [string values of the CSS `flex-basis` property](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis).
|
|
24
|
+
*
|
|
25
|
+
* If not set, the PagerSpacer will take all the available space.
|
|
26
|
+
*/
|
|
27
|
+
width;
|
|
28
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PagerSpacerComponent, isStandalone: true, selector: "kendo-pager-spacer", inputs: { width: "width" }, host: { properties: { "class.k-spacer": "this.hostClass", "class.k-spacer-sized": "this.sizedClass", "style.flexBasis": "this.flexBasisStyle" } }, ngImport: i0, template: ``, isInline: true });
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PagerSpacerComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{
|
|
34
|
+
selector: 'kendo-pager-spacer',
|
|
35
|
+
template: ``,
|
|
36
|
+
standalone: true
|
|
37
|
+
}]
|
|
38
|
+
}], propDecorators: { hostClass: [{
|
|
39
|
+
type: HostBinding,
|
|
40
|
+
args: ['class.k-spacer']
|
|
41
|
+
}], sizedClass: [{
|
|
42
|
+
type: HostBinding,
|
|
43
|
+
args: ['class.k-spacer-sized']
|
|
44
|
+
}], flexBasisStyle: [{
|
|
45
|
+
type: HostBinding,
|
|
46
|
+
args: ['style.flexBasis']
|
|
47
|
+
}], width: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}] } });
|
package/esm2022/util.mjs
CHANGED
|
@@ -20,16 +20,16 @@ export const getAllFocusableChildren = (parent) => {
|
|
|
20
20
|
* @hidden
|
|
21
21
|
*/
|
|
22
22
|
export const focusableSelector = [
|
|
23
|
-
'a[href]:not([disabled])',
|
|
24
|
-
'area[href]:not([disabled])',
|
|
25
|
-
'input:not([disabled])',
|
|
26
|
-
'select:not([disabled])',
|
|
27
|
-
'textarea:not([disabled])',
|
|
28
|
-
'button',
|
|
23
|
+
'a[href]:not([disabled]):not([aria-hidden="true"])',
|
|
24
|
+
'area[href]:not([disabled]):not([aria-hidden="true"])',
|
|
25
|
+
'input:not([disabled]):not([aria-hidden="true"])',
|
|
26
|
+
'select:not([disabled]):not([aria-hidden="true"])',
|
|
27
|
+
'textarea:not([disabled]):not([aria-hidden="true"])',
|
|
28
|
+
'button:not([aria-hidden="true"])',
|
|
29
29
|
'iframe:not([disabled])',
|
|
30
30
|
'object:not([disabled])',
|
|
31
31
|
'embed:not([disabled])',
|
|
32
|
-
'*[tabindex]:not([disabled])',
|
|
32
|
+
'*[tabindex]:not([disabled]):not([aria-hidden="true"])',
|
|
33
33
|
'*[contenteditable]:not([disabled]):not([contenteditable="false"])'
|
|
34
34
|
].join(',');
|
|
35
35
|
/**
|
|
@@ -57,3 +57,7 @@ export const getStylingClasses = (componentType, stylingOption, previousValue, n
|
|
|
57
57
|
break;
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* @hidden
|
|
62
|
+
*/
|
|
63
|
+
export const replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\{\\s*${name}\\s*\}`, 'g'), value);
|