@progress/kendo-angular-pager 21.4.1-develop.1 → 22.0.0-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/fesm2022/progress-kendo-angular-pager.mjs +49 -49
- package/package.json +12 -20
- package/pager/localization/messages.d.ts +1 -1
- package/pager/pager-element.component.d.ts +1 -1
- package/schematics/ngAdd/index.js +6 -6
- package/esm2022/directives.mjs +0 -45
- package/esm2022/index.mjs +0 -21
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/pager/change-event-args.interface.mjs +0 -5
- package/esm2022/pager/common/pager-classes.mjs +0 -5
- package/esm2022/pager/common/pager-size.mjs +0 -5
- package/esm2022/pager/common/pager-type.mjs +0 -5
- package/esm2022/pager/common/responsive-element.mjs +0 -5
- package/esm2022/pager/focusable.directive.mjs +0 -68
- package/esm2022/pager/localization/custom-messages.component.mjs +0 -55
- package/esm2022/pager/localization/localized-messages.directive.mjs +0 -39
- package/esm2022/pager/localization/messages.mjs +0 -100
- package/esm2022/pager/navigation.service.mjs +0 -39
- package/esm2022/pager/pager-context.service.mjs +0 -46
- package/esm2022/pager/pager-element.component.mjs +0 -113
- package/esm2022/pager/pager-info.component.mjs +0 -79
- package/esm2022/pager/pager-input.component.mjs +0 -177
- package/esm2022/pager/pager-next-buttons.component.mjs +0 -136
- package/esm2022/pager/pager-numeric-buttons.component.mjs +0 -257
- package/esm2022/pager/pager-page-sizes.component.mjs +0 -197
- package/esm2022/pager/pager-prev-buttons.component.mjs +0 -140
- package/esm2022/pager/pager-template.directive.mjs +0 -45
- package/esm2022/pager/pager.component.mjs +0 -1104
- package/esm2022/pager/pager.module.mjs +0 -65
- package/esm2022/pager/pagesize-item.interface.mjs +0 -5
- package/esm2022/pager/pagesizechange-event.mjs +0 -24
- package/esm2022/pager/preventable-event.mjs +0 -25
- package/esm2022/pager/spacer.component.mjs +0 -70
- package/esm2022/progress-kendo-angular-pager.mjs +0 -8
- package/esm2022/util.mjs +0 -124
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
// eslint-disable no-access-missing-member
|
|
6
|
-
import { Component, ChangeDetectionStrategy, ChangeDetectorRef, Input } from '@angular/core';
|
|
7
|
-
import { PagerContextService } from "./pager-context.service";
|
|
8
|
-
import { PagerElementComponent } from './pager-element.component';
|
|
9
|
-
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
10
|
-
import { DEFAULT_SIZE } from '../util';
|
|
11
|
-
import { PagerFocusableDirective } from './focusable.directive';
|
|
12
|
-
import { ButtonComponent } from '@progress/kendo-angular-buttons';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@progress/kendo-angular-l10n";
|
|
15
|
-
import * as i2 from "./pager-context.service";
|
|
16
|
-
/**
|
|
17
|
-
* Represents the Kendo UI Pager Next Buttons component for Angular. Displays buttons for navigating to the next and to the last page ([see example]({% slug pager_settings %})).
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```html
|
|
21
|
-
* <kendo-pager [skip]="skip" [pageSize]="pageSize" [total]="total">
|
|
22
|
-
* <ng-template kendoPagerTemplate>
|
|
23
|
-
* <kendo-pager-next-buttons></kendo-pager-next-buttons>
|
|
24
|
-
* </ng-template>
|
|
25
|
-
* </kendo-pager>
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export class PagerNextButtonsComponent extends PagerElementComponent {
|
|
29
|
-
/**
|
|
30
|
-
* @hidden
|
|
31
|
-
*
|
|
32
|
-
* @readonly
|
|
33
|
-
* @type {boolean}
|
|
34
|
-
* @memberOf PagerNextButtonsComponent
|
|
35
|
-
*/
|
|
36
|
-
get disabled() {
|
|
37
|
-
return this.currentPage === this.totalPages || !this.total;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Specifies the padding of the navigation buttons.
|
|
41
|
-
*
|
|
42
|
-
* @default 'medium'
|
|
43
|
-
*/
|
|
44
|
-
size = DEFAULT_SIZE;
|
|
45
|
-
constructor(localization, pagerContext, cd) {
|
|
46
|
-
super(localization, pagerContext, cd);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* @hidden
|
|
50
|
-
*/
|
|
51
|
-
onClick(isLast = false) {
|
|
52
|
-
if (this.disabled) {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
const targetPage = isLast ? this.totalPages - 1 : this.currentPage;
|
|
56
|
-
return this.currentPage !== this.totalPages ? this.changePage(targetPage) : false;
|
|
57
|
-
}
|
|
58
|
-
onChanges({ total, skip, pageSize }) {
|
|
59
|
-
this.total = total;
|
|
60
|
-
this.skip = skip;
|
|
61
|
-
this.pageSize = pageSize;
|
|
62
|
-
this.cd.markForCheck();
|
|
63
|
-
}
|
|
64
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PagerNextButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: i2.PagerContextService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PagerNextButtonsComponent, isStandalone: true, selector: "kendo-datapager-next-buttons, kendo-pager-next-buttons", inputs: { size: "size" }, usesInheritance: true, ngImport: i0, template: `
|
|
66
|
-
<button kendoButton kendoPagerFocusable
|
|
67
|
-
type="button"
|
|
68
|
-
[size]="size"
|
|
69
|
-
[icon]="nextArrowIcons[0]"
|
|
70
|
-
[svgIcon]="nextArrowSVGIcons[0]"
|
|
71
|
-
fillMode="flat"
|
|
72
|
-
rounded="none"
|
|
73
|
-
class="k-pager-nav"
|
|
74
|
-
[attr.aria-disabled]="disabled"
|
|
75
|
-
[class.k-disabled]="disabled"
|
|
76
|
-
[title]="textFor('nextPage')"
|
|
77
|
-
[attr.aria-label]="textFor('nextPage')"
|
|
78
|
-
(click)="onClick()">
|
|
79
|
-
</button>
|
|
80
|
-
<button kendoButton kendoPagerFocusable
|
|
81
|
-
type="button"
|
|
82
|
-
[size]="size"
|
|
83
|
-
[icon]="nextArrowIcons[1]"
|
|
84
|
-
[svgIcon]="nextArrowSVGIcons[1]"
|
|
85
|
-
fillMode="flat"
|
|
86
|
-
rounded="none"
|
|
87
|
-
class="k-pager-nav k-pager-last"
|
|
88
|
-
[attr.aria-disabled]="disabled"
|
|
89
|
-
[class.k-disabled]="disabled"
|
|
90
|
-
[title]="textFor('lastPage')"
|
|
91
|
-
[attr.aria-label]="textFor('lastPage')"
|
|
92
|
-
(click)="onClick(true)">
|
|
93
|
-
</button>
|
|
94
|
-
`, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
95
|
-
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PagerNextButtonsComponent, decorators: [{
|
|
97
|
-
type: Component,
|
|
98
|
-
args: [{
|
|
99
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
100
|
-
selector: 'kendo-datapager-next-buttons, kendo-pager-next-buttons',
|
|
101
|
-
template: `
|
|
102
|
-
<button kendoButton kendoPagerFocusable
|
|
103
|
-
type="button"
|
|
104
|
-
[size]="size"
|
|
105
|
-
[icon]="nextArrowIcons[0]"
|
|
106
|
-
[svgIcon]="nextArrowSVGIcons[0]"
|
|
107
|
-
fillMode="flat"
|
|
108
|
-
rounded="none"
|
|
109
|
-
class="k-pager-nav"
|
|
110
|
-
[attr.aria-disabled]="disabled"
|
|
111
|
-
[class.k-disabled]="disabled"
|
|
112
|
-
[title]="textFor('nextPage')"
|
|
113
|
-
[attr.aria-label]="textFor('nextPage')"
|
|
114
|
-
(click)="onClick()">
|
|
115
|
-
</button>
|
|
116
|
-
<button kendoButton kendoPagerFocusable
|
|
117
|
-
type="button"
|
|
118
|
-
[size]="size"
|
|
119
|
-
[icon]="nextArrowIcons[1]"
|
|
120
|
-
[svgIcon]="nextArrowSVGIcons[1]"
|
|
121
|
-
fillMode="flat"
|
|
122
|
-
rounded="none"
|
|
123
|
-
class="k-pager-nav k-pager-last"
|
|
124
|
-
[attr.aria-disabled]="disabled"
|
|
125
|
-
[class.k-disabled]="disabled"
|
|
126
|
-
[title]="textFor('lastPage')"
|
|
127
|
-
[attr.aria-label]="textFor('lastPage')"
|
|
128
|
-
(click)="onClick(true)">
|
|
129
|
-
</button>
|
|
130
|
-
`,
|
|
131
|
-
standalone: true,
|
|
132
|
-
imports: [ButtonComponent, PagerFocusableDirective]
|
|
133
|
-
}]
|
|
134
|
-
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i2.PagerContextService }, { type: i0.ChangeDetectorRef }], propDecorators: { size: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}] } });
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild, Renderer2, ElementRef } from '@angular/core';
|
|
6
|
-
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
7
|
-
import { PagerContextService } from './pager-context.service';
|
|
8
|
-
import { PagerElementComponent } from './pager-element.component';
|
|
9
|
-
import { DEFAULT_SIZE, getStylingClasses } from '../util';
|
|
10
|
-
import { ButtonComponent } from '@progress/kendo-angular-buttons';
|
|
11
|
-
import { PagerFocusableDirective } from './focusable.directive';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@progress/kendo-angular-l10n";
|
|
14
|
-
import * as i2 from "./pager-context.service";
|
|
15
|
-
/**
|
|
16
|
-
* Represents the Kendo UI Pager Numeric Buttons component for Angular. Displays numeric buttons to enable navigation between the pages.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```html
|
|
20
|
-
* <kendo-pager [skip]="skip" [pageSize]="pageSize" [total]="total">
|
|
21
|
-
* <ng-template kendoPagerTemplate>
|
|
22
|
-
* <kendo-pager-numeric-buttons [buttonCount]="5"></kendo-pager-numeric-buttons>
|
|
23
|
-
* </ng-template>
|
|
24
|
-
* </kendo-pager>
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export class PagerNumericButtonsComponent extends PagerElementComponent {
|
|
28
|
-
pagerContext;
|
|
29
|
-
renderer;
|
|
30
|
-
selectElement;
|
|
31
|
-
numbersElement;
|
|
32
|
-
/**
|
|
33
|
-
* Specifies the count of the displayed buttons.
|
|
34
|
-
*
|
|
35
|
-
* @type {number}
|
|
36
|
-
* @memberOf PagerNumericButtonsComponent
|
|
37
|
-
*/
|
|
38
|
-
buttonCount;
|
|
39
|
-
/**
|
|
40
|
-
* Specifies the padding of the numeric buttons.
|
|
41
|
-
*
|
|
42
|
-
* @default 'medium'
|
|
43
|
-
*/
|
|
44
|
-
set size(size) {
|
|
45
|
-
const newSize = size ? size : DEFAULT_SIZE;
|
|
46
|
-
this.handleClasses(newSize, 'size');
|
|
47
|
-
this._size = newSize;
|
|
48
|
-
}
|
|
49
|
-
get size() {
|
|
50
|
-
return this._size;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* @hidden
|
|
54
|
-
*
|
|
55
|
-
* @readonly
|
|
56
|
-
* @type {number[]}
|
|
57
|
-
* @memberOf PagerNumericButtonsComponent
|
|
58
|
-
*/
|
|
59
|
-
get buttons() {
|
|
60
|
-
const result = [];
|
|
61
|
-
for (let idx = this.start; idx <= this.end; idx++) {
|
|
62
|
-
result.push(idx);
|
|
63
|
-
}
|
|
64
|
-
return result;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* @hidden
|
|
68
|
-
*/
|
|
69
|
-
get end() {
|
|
70
|
-
return Math.min((this.start + this.buttonCount) - 1, this.totalPages);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* @hidden
|
|
74
|
-
*/
|
|
75
|
-
get start() {
|
|
76
|
-
const page = this.currentPage;
|
|
77
|
-
const buttonCount = this.buttonCount;
|
|
78
|
-
if (page > buttonCount) {
|
|
79
|
-
const reminder = (page % buttonCount);
|
|
80
|
-
return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;
|
|
81
|
-
}
|
|
82
|
-
return 1;
|
|
83
|
-
}
|
|
84
|
-
constructor(localization, cd, pagerContext, renderer) {
|
|
85
|
-
super(localization, pagerContext, cd);
|
|
86
|
-
this.pagerContext = pagerContext;
|
|
87
|
-
this.renderer = renderer;
|
|
88
|
-
}
|
|
89
|
-
_size = DEFAULT_SIZE;
|
|
90
|
-
ngAfterViewInit() {
|
|
91
|
-
this.handleClasses(this.size, 'size');
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* @hidden
|
|
95
|
-
*/
|
|
96
|
-
pageLabel(num) {
|
|
97
|
-
const pageText = this.textFor('page');
|
|
98
|
-
if (pageText) {
|
|
99
|
-
return pageText + ' ' + num;
|
|
100
|
-
}
|
|
101
|
-
return num.toString();
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* @hidden
|
|
105
|
-
*/
|
|
106
|
-
onSelectChange(e) {
|
|
107
|
-
const target = e.target;
|
|
108
|
-
const valueAsNumber = Number(target.value);
|
|
109
|
-
if (!Number.isNaN(valueAsNumber)) {
|
|
110
|
-
this.changePage(valueAsNumber - 1);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
if (target.value === 'previousButtons') {
|
|
114
|
-
this.changePage(this.start - 2);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
this.changePage(this.end);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
onChanges({ total, skip, pageSize }) {
|
|
122
|
-
this.total = total;
|
|
123
|
-
this.skip = skip;
|
|
124
|
-
this.pageSize = pageSize;
|
|
125
|
-
this.cd.markForCheck();
|
|
126
|
-
}
|
|
127
|
-
get pageChooserLabel() {
|
|
128
|
-
return this.textFor('selectPage');
|
|
129
|
-
}
|
|
130
|
-
handleClasses(value, input) {
|
|
131
|
-
const elem = this.selectElement?.nativeElement;
|
|
132
|
-
const classes = getStylingClasses('picker', input, this[input], value);
|
|
133
|
-
if (!elem) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
if (classes.toRemove) {
|
|
137
|
-
this.renderer.removeClass(elem, classes.toRemove);
|
|
138
|
-
}
|
|
139
|
-
if (classes.toAdd) {
|
|
140
|
-
this.renderer.addClass(elem, classes.toAdd);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PagerNumericButtonsComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PagerContextService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PagerNumericButtonsComponent, isStandalone: true, selector: "kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons", inputs: { buttonCount: "buttonCount", size: "size" }, viewQueries: [{ propertyName: "selectElement", first: true, predicate: ["select"], descendants: true, read: ElementRef }, { propertyName: "numbersElement", first: true, predicate: ["numbers"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
|
|
145
|
-
<div class="k-pager-numbers" #numbers>
|
|
146
|
-
@if (start > 1) {
|
|
147
|
-
<button
|
|
148
|
-
type="button"
|
|
149
|
-
kendoPagerFocusable
|
|
150
|
-
kendoButton
|
|
151
|
-
[size]="size"
|
|
152
|
-
fillMode="flat"
|
|
153
|
-
themeColor="primary"
|
|
154
|
-
rounded="none"
|
|
155
|
-
[attr.aria-label]="pageLabel(start - 1)"
|
|
156
|
-
[attr.title]="pageLabel(start - 1)"
|
|
157
|
-
(click)="changePage(start - 2)">...</button>
|
|
158
|
-
}
|
|
159
|
-
@for (num of buttons; track num) {
|
|
160
|
-
<button
|
|
161
|
-
type="button"
|
|
162
|
-
kendoPagerFocusable
|
|
163
|
-
kendoButton
|
|
164
|
-
[size]="size"
|
|
165
|
-
fillMode="flat"
|
|
166
|
-
themeColor="primary"
|
|
167
|
-
rounded="none"
|
|
168
|
-
[attr.aria-label]="pageLabel(num)"
|
|
169
|
-
[attr.title]="pageLabel(num)"
|
|
170
|
-
[attr.aria-current]="currentPage === num ? 'page' : undefined"
|
|
171
|
-
[selected]="currentPage === num"
|
|
172
|
-
(click)="currentPage === num ? false : changePage(num - 1)">
|
|
173
|
-
{{num}}
|
|
174
|
-
</button>
|
|
175
|
-
}
|
|
176
|
-
@if (end < totalPages) {
|
|
177
|
-
<button
|
|
178
|
-
type="button"
|
|
179
|
-
kendoPagerFocusable
|
|
180
|
-
kendoButton
|
|
181
|
-
[size]="size"
|
|
182
|
-
fillMode="flat"
|
|
183
|
-
themeColor="primary"
|
|
184
|
-
rounded="none"
|
|
185
|
-
[attr.aria-label]="pageLabel(end + 1)"
|
|
186
|
-
[attr.title]="pageLabel(end + 1)"
|
|
187
|
-
(click)="changePage(end)">...</button>
|
|
188
|
-
}
|
|
189
|
-
</div>
|
|
190
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
191
|
-
}
|
|
192
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PagerNumericButtonsComponent, decorators: [{
|
|
193
|
-
type: Component,
|
|
194
|
-
args: [{
|
|
195
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
196
|
-
selector: 'kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons',
|
|
197
|
-
template: `
|
|
198
|
-
<div class="k-pager-numbers" #numbers>
|
|
199
|
-
@if (start > 1) {
|
|
200
|
-
<button
|
|
201
|
-
type="button"
|
|
202
|
-
kendoPagerFocusable
|
|
203
|
-
kendoButton
|
|
204
|
-
[size]="size"
|
|
205
|
-
fillMode="flat"
|
|
206
|
-
themeColor="primary"
|
|
207
|
-
rounded="none"
|
|
208
|
-
[attr.aria-label]="pageLabel(start - 1)"
|
|
209
|
-
[attr.title]="pageLabel(start - 1)"
|
|
210
|
-
(click)="changePage(start - 2)">...</button>
|
|
211
|
-
}
|
|
212
|
-
@for (num of buttons; track num) {
|
|
213
|
-
<button
|
|
214
|
-
type="button"
|
|
215
|
-
kendoPagerFocusable
|
|
216
|
-
kendoButton
|
|
217
|
-
[size]="size"
|
|
218
|
-
fillMode="flat"
|
|
219
|
-
themeColor="primary"
|
|
220
|
-
rounded="none"
|
|
221
|
-
[attr.aria-label]="pageLabel(num)"
|
|
222
|
-
[attr.title]="pageLabel(num)"
|
|
223
|
-
[attr.aria-current]="currentPage === num ? 'page' : undefined"
|
|
224
|
-
[selected]="currentPage === num"
|
|
225
|
-
(click)="currentPage === num ? false : changePage(num - 1)">
|
|
226
|
-
{{num}}
|
|
227
|
-
</button>
|
|
228
|
-
}
|
|
229
|
-
@if (end < totalPages) {
|
|
230
|
-
<button
|
|
231
|
-
type="button"
|
|
232
|
-
kendoPagerFocusable
|
|
233
|
-
kendoButton
|
|
234
|
-
[size]="size"
|
|
235
|
-
fillMode="flat"
|
|
236
|
-
themeColor="primary"
|
|
237
|
-
rounded="none"
|
|
238
|
-
[attr.aria-label]="pageLabel(end + 1)"
|
|
239
|
-
[attr.title]="pageLabel(end + 1)"
|
|
240
|
-
(click)="changePage(end)">...</button>
|
|
241
|
-
}
|
|
242
|
-
</div>
|
|
243
|
-
`,
|
|
244
|
-
standalone: true,
|
|
245
|
-
imports: [PagerFocusableDirective, ButtonComponent]
|
|
246
|
-
}]
|
|
247
|
-
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PagerContextService }, { type: i0.Renderer2 }], propDecorators: { selectElement: [{
|
|
248
|
-
type: ViewChild,
|
|
249
|
-
args: ['select', { read: ElementRef }]
|
|
250
|
-
}], numbersElement: [{
|
|
251
|
-
type: ViewChild,
|
|
252
|
-
args: ['numbers', { read: ElementRef }]
|
|
253
|
-
}], buttonCount: [{
|
|
254
|
-
type: Input
|
|
255
|
-
}], size: [{
|
|
256
|
-
type: Input
|
|
257
|
-
}] } });
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 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, ChangeDetectorRef, ChangeDetectionStrategy, HostBinding, Input, ViewChild, ElementRef, NgZone } from '@angular/core';
|
|
6
|
-
import { PagerElementComponent } from './pager-element.component';
|
|
7
|
-
import { LocalizationService } from '@progress/kendo-angular-l10n';
|
|
8
|
-
import { PagerContextService } from "./pager-context.service";
|
|
9
|
-
import { PageSizeChangeEvent } from './pagesizechange-event';
|
|
10
|
-
import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
|
|
11
|
-
import { Keys } from '@progress/kendo-angular-common';
|
|
12
|
-
import { DEFAULT_PAGE_SIZE_VALUES, DEFAULT_SIZE } from '../util';
|
|
13
|
-
import { PagerFocusableDirective } from './focusable.directive';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "@progress/kendo-angular-l10n";
|
|
16
|
-
import * as i2 from "./pager-context.service";
|
|
17
|
-
/**
|
|
18
|
-
* Represents the Kendo UI Pager Page Sizes component for Angular. Displays a drop-down list for the page size selection ([see example]({% slug pager_settings %})).
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```html
|
|
22
|
-
* <kendo-pager [skip]="skip" [pageSize]="pageSize" [total]="total">
|
|
23
|
-
* <ng-template kendoPagerTemplate>
|
|
24
|
-
* <kendo-pager-page-sizes [pageSizes]="[10, 20, 50]"></kendo-pager-page-sizes>
|
|
25
|
-
* </ng-template>
|
|
26
|
-
* </kendo-pager>
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export class PagerPageSizesComponent extends PagerElementComponent {
|
|
30
|
-
pagerContext;
|
|
31
|
-
element;
|
|
32
|
-
ngZone;
|
|
33
|
-
dropDownList;
|
|
34
|
-
_showItemsText = true;
|
|
35
|
-
/**
|
|
36
|
-
* Controls the visibility of the page text label.
|
|
37
|
-
* @hidden
|
|
38
|
-
*/
|
|
39
|
-
get showItemsText() {
|
|
40
|
-
return this._showItemsText;
|
|
41
|
-
}
|
|
42
|
-
set showItemsText(value) {
|
|
43
|
-
this._showItemsText = value;
|
|
44
|
-
this.cd.markForCheck();
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Specifies the page sizes collection. You can include numbers and [`PageSizeItem`]({% slug api_pager_pagesizeitem %}) objects.
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```html
|
|
51
|
-
* <kendo-pager [skip]="0" [pageSize]="10" [total]="100">
|
|
52
|
-
* <ng-template kendoPagerTemplate>
|
|
53
|
-
* <kendo-pager-page-sizes [pageSizes]="[5, 10, 20, { text: 'All', value: 'all' }]"></kendo-pager-page-sizes>
|
|
54
|
-
* </ng-template>
|
|
55
|
-
* </kendo-pager>
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
set pageSizes(pageSizes) {
|
|
59
|
-
let normalizedItems = [];
|
|
60
|
-
if (Array.isArray(pageSizes)) {
|
|
61
|
-
pageSizes.forEach(item => {
|
|
62
|
-
if (typeof item === 'number') {
|
|
63
|
-
normalizedItems.push({
|
|
64
|
-
text: item.toString(),
|
|
65
|
-
value: item
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
normalizedItems.push(item);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
normalizedItems = DEFAULT_PAGE_SIZE_VALUES;
|
|
75
|
-
}
|
|
76
|
-
if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {
|
|
77
|
-
normalizedItems = [{ text: this.pageSize.toString(), value: this.pageSize }, ...normalizedItems];
|
|
78
|
-
}
|
|
79
|
-
this._pageSizes = normalizedItems;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Specifies the padding of the DropDownList component.
|
|
83
|
-
*
|
|
84
|
-
* @default 'medium'
|
|
85
|
-
*/
|
|
86
|
-
size = DEFAULT_SIZE;
|
|
87
|
-
/**
|
|
88
|
-
* Specifies the adaptive mode of the internal `DropDownList` component.
|
|
89
|
-
*
|
|
90
|
-
* @default 'auto'
|
|
91
|
-
*/
|
|
92
|
-
adaptiveMode = 'auto';
|
|
93
|
-
/**
|
|
94
|
-
* @hidden
|
|
95
|
-
*
|
|
96
|
-
* @readonly
|
|
97
|
-
*/
|
|
98
|
-
get classes() {
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
_pageSizes = [];
|
|
102
|
-
constructor(localization, cd, pagerContext, element, ngZone) {
|
|
103
|
-
super(localization, pagerContext, cd);
|
|
104
|
-
this.pagerContext = pagerContext;
|
|
105
|
-
this.element = element;
|
|
106
|
-
this.ngZone = ngZone;
|
|
107
|
-
}
|
|
108
|
-
ngAfterViewInit() {
|
|
109
|
-
this.ngZone.runOutsideAngular(() => {
|
|
110
|
-
this.element.nativeElement.addEventListener('keydown', this.keyDownHandler.bind(this), true);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
ngOnDestroy() {
|
|
114
|
-
this.element.nativeElement.removeEventListener('keydown', this.keyDownHandler);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* @hidden
|
|
118
|
-
*/
|
|
119
|
-
pageSizeChange(value, dropdownlist) {
|
|
120
|
-
const event = new PageSizeChangeEvent(value);
|
|
121
|
-
this.pagerContext.changePageSize(event);
|
|
122
|
-
if (event.isDefaultPrevented()) {
|
|
123
|
-
dropdownlist.writeValue(this.pageSize);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
onChanges({ total, skip, pageSize, isAllSelected }) {
|
|
127
|
-
this.total = total;
|
|
128
|
-
this.skip = skip;
|
|
129
|
-
const normalizedPageSize = typeof pageSize === 'number' ? pageSize : this.total;
|
|
130
|
-
this.pageSize = isAllSelected ? 'all' : normalizedPageSize;
|
|
131
|
-
this.cd.markForCheck();
|
|
132
|
-
}
|
|
133
|
-
keyDownHandler(ev) {
|
|
134
|
-
if (ev.code === Keys.Escape && this.dropDownList.isOpen) {
|
|
135
|
-
ev.stopPropagation();
|
|
136
|
-
this.dropDownList.toggle(false);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PagerPageSizesComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PagerContextService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PagerPageSizesComponent, isStandalone: true, selector: "kendo-datapager-page-sizes, kendo-pager-page-sizes", inputs: { showItemsText: "showItemsText", pageSizes: "pageSizes", size: "size", adaptiveMode: "adaptiveMode" }, host: { properties: { "class.k-pager-sizes": "this.classes" } }, viewQueries: [{ propertyName: "dropDownList", first: true, predicate: ["dropdownlist"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
141
|
-
<kendo-dropdownlist kendoPagerFocusable
|
|
142
|
-
#dropdownlist
|
|
143
|
-
[size]="size"
|
|
144
|
-
[data]="_pageSizes"
|
|
145
|
-
textField="text"
|
|
146
|
-
valueField="value"
|
|
147
|
-
[valuePrimitive]="true"
|
|
148
|
-
[value]="pageSize"
|
|
149
|
-
(valueChange)="pageSizeChange($event, dropdownlist)"
|
|
150
|
-
[adaptiveMode]="adaptiveMode"
|
|
151
|
-
[attr.aria-label]="textFor('itemsPerPage')">
|
|
152
|
-
</kendo-dropdownlist>
|
|
153
|
-
@if (showItemsText) {
|
|
154
|
-
{{ textFor('itemsPerPage') }}
|
|
155
|
-
}
|
|
156
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: PagerFocusableDirective, selector: "[kendoPagerFocusable]", exportAs: ["kendoPagerFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
157
|
-
}
|
|
158
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PagerPageSizesComponent, decorators: [{
|
|
159
|
-
type: Component,
|
|
160
|
-
args: [{
|
|
161
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
162
|
-
selector: 'kendo-datapager-page-sizes, kendo-pager-page-sizes',
|
|
163
|
-
template: `
|
|
164
|
-
<kendo-dropdownlist kendoPagerFocusable
|
|
165
|
-
#dropdownlist
|
|
166
|
-
[size]="size"
|
|
167
|
-
[data]="_pageSizes"
|
|
168
|
-
textField="text"
|
|
169
|
-
valueField="value"
|
|
170
|
-
[valuePrimitive]="true"
|
|
171
|
-
[value]="pageSize"
|
|
172
|
-
(valueChange)="pageSizeChange($event, dropdownlist)"
|
|
173
|
-
[adaptiveMode]="adaptiveMode"
|
|
174
|
-
[attr.aria-label]="textFor('itemsPerPage')">
|
|
175
|
-
</kendo-dropdownlist>
|
|
176
|
-
@if (showItemsText) {
|
|
177
|
-
{{ textFor('itemsPerPage') }}
|
|
178
|
-
}
|
|
179
|
-
`,
|
|
180
|
-
standalone: true,
|
|
181
|
-
imports: [DropDownListComponent, PagerFocusableDirective]
|
|
182
|
-
}]
|
|
183
|
-
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PagerContextService }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dropDownList: [{
|
|
184
|
-
type: ViewChild,
|
|
185
|
-
args: ['dropdownlist', { static: true }]
|
|
186
|
-
}], showItemsText: [{
|
|
187
|
-
type: Input
|
|
188
|
-
}], pageSizes: [{
|
|
189
|
-
type: Input
|
|
190
|
-
}], size: [{
|
|
191
|
-
type: Input
|
|
192
|
-
}], adaptiveMode: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}], classes: [{
|
|
195
|
-
type: HostBinding,
|
|
196
|
-
args: ["class.k-pager-sizes"]
|
|
197
|
-
}] } });
|