@progress/kendo-angular-pager 21.0.0-develop.12 → 21.0.0-develop.14
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/esm2022/package-metadata.mjs +2 -2
- package/esm2022/pager/common/responsive-element.mjs +5 -0
- package/esm2022/pager/pager.component.mjs +149 -125
- package/fesm2022/progress-kendo-angular-pager.mjs +151 -127
- package/package.json +8 -8
- package/pager/common/responsive-element.d.ts +15 -0
- package/pager/pager.component.d.ts +19 -3
- package/schematics/ngAdd/index.js +6 -6
|
@@ -10,7 +10,7 @@ export const packageMetadata = {
|
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCode: 'KENDOUIANGULAR',
|
|
12
12
|
productCodes: ['KENDOUIANGULAR'],
|
|
13
|
-
publishDate:
|
|
14
|
-
version: '21.0.0-develop.
|
|
13
|
+
publishDate: 1761929487,
|
|
14
|
+
version: '21.0.0-develop.14',
|
|
15
15
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
16
16
|
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
export {};
|
|
@@ -195,9 +195,9 @@ export class PagerComponent {
|
|
|
195
195
|
/**
|
|
196
196
|
* Determines whether the Pager adaptiveness functionality is enabled ([see example](slug:adaptive_mode_pager)).
|
|
197
197
|
*
|
|
198
|
-
* @default '
|
|
198
|
+
* @default 'none'
|
|
199
199
|
*/
|
|
200
|
-
adaptiveMode = '
|
|
200
|
+
adaptiveMode = 'none';
|
|
201
201
|
/**
|
|
202
202
|
* Fires when the current page of the Pager changes ([see example](slug:overview_pager)).
|
|
203
203
|
* You have to handle the event and page the data.
|
|
@@ -376,36 +376,23 @@ export class PagerComponent {
|
|
|
376
376
|
}
|
|
377
377
|
}));
|
|
378
378
|
this.handleClasses(this.size, 'size');
|
|
379
|
-
this.
|
|
380
|
-
if (!this.numericButtons) {
|
|
381
|
-
this.pagerDimensions.numericButtonsWidth = this.element.nativeElement.querySelector('.k-pager-numbers')?.offsetWidth ?? 0;
|
|
382
|
-
}
|
|
383
|
-
if (!this.pagerInput) {
|
|
384
|
-
this.pagerDimensions.inputWidth = this.element.nativeElement.querySelector('.k-pager-input')?.offsetWidth ?? 0;
|
|
385
|
-
}
|
|
386
|
-
if (!this.pageSizes) {
|
|
387
|
-
this.pagerDimensions.pageSizesWidth = this.element.nativeElement.querySelector('.k-pager-sizes')?.offsetWidth ?? 0;
|
|
388
|
-
}
|
|
389
|
-
const padding = calculatePadding(this.element.nativeElement);
|
|
390
|
-
this.pagerDimensions.padding = padding.padding;
|
|
391
|
-
this.pagerDimensions.gapNumbersSizes = padding.gapNumbersSizes;
|
|
392
|
-
this.pagerDimensions.gapSizesInfo = padding.gapSizesInfo;
|
|
379
|
+
this.setPagerDimensions();
|
|
393
380
|
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
394
381
|
if (this.type !== 'input') {
|
|
395
382
|
this.showInput = false;
|
|
396
383
|
}
|
|
384
|
+
this.responsive && this.resizeHandler();
|
|
397
385
|
});
|
|
398
386
|
if (!isDocumentAvailable()) {
|
|
399
387
|
this.initialized = true;
|
|
400
388
|
return;
|
|
401
389
|
}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
}, 0);
|
|
390
|
+
this.ngZone.runOutsideAngular(() => {
|
|
391
|
+
setTimeout(() => {
|
|
392
|
+
this.initialized = true;
|
|
393
|
+
this.cdr.markForCheck();
|
|
394
|
+
}, 0);
|
|
395
|
+
});
|
|
409
396
|
}
|
|
410
397
|
ngOnChanges(changes) {
|
|
411
398
|
if (anyChanged(["pageSize", "skip", "total"], changes, false)) {
|
|
@@ -447,7 +434,7 @@ export class PagerComponent {
|
|
|
447
434
|
}
|
|
448
435
|
if (!this.responsive) {
|
|
449
436
|
this.showInput = this.type === 'input';
|
|
450
|
-
this.
|
|
437
|
+
this.showElements(this.element.nativeElement.offsetWidth, this.pagerDimensions.width);
|
|
451
438
|
}
|
|
452
439
|
}
|
|
453
440
|
if (isChanged('type', changes, true)) {
|
|
@@ -518,8 +505,8 @@ export class PagerComponent {
|
|
|
518
505
|
return;
|
|
519
506
|
}
|
|
520
507
|
const numericButtonsWrapperElement = this.element.nativeElement.querySelector('.k-pager-numbers-wrap');
|
|
521
|
-
const pagerInfoElement = this.
|
|
522
|
-
const pagerPageSizes = this.
|
|
508
|
+
const pagerInfoElement = this.pagerInfoElement();
|
|
509
|
+
const pagerPageSizes = this.sizesDropDownElement();
|
|
523
510
|
let elementsWidths = numericButtonsWrapperElement?.offsetWidth + (pagerPageSizes?.offsetWidth || 0) + (pagerInfoElement?.offsetWidth > 0 ? Math.min(this.pagerDimensions.infoTextWidth) : 0);
|
|
524
511
|
if (this.isElementVisible(pagerInfoElement)) {
|
|
525
512
|
elementsWidths += this.pagerDimensions.gapSizesInfo;
|
|
@@ -528,18 +515,100 @@ export class PagerComponent {
|
|
|
528
515
|
if (this.isElementVisible(pagerPageSizes)) {
|
|
529
516
|
pagerWidth -= this.pagerDimensions.gapNumbersSizes;
|
|
530
517
|
}
|
|
531
|
-
if (
|
|
532
|
-
|
|
533
|
-
}
|
|
534
|
-
else {
|
|
535
|
-
this.hideElementsInOrder(pagerWidth, elementsWidths);
|
|
518
|
+
if (pagerWidth < 0) {
|
|
519
|
+
return;
|
|
536
520
|
}
|
|
521
|
+
this.showElements(pagerWidth, elementsWidths);
|
|
537
522
|
if (!this.initialized) {
|
|
538
523
|
this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialized = true);
|
|
539
524
|
}
|
|
540
525
|
});
|
|
541
526
|
});
|
|
542
527
|
};
|
|
528
|
+
// use selectors to get the element even when used in a template
|
|
529
|
+
sizesDropDownElement = () => this.element.nativeElement.querySelector('.k-pager-sizes');
|
|
530
|
+
pagerInputElement = () => this.element.nativeElement.querySelector('.k-pager-input');
|
|
531
|
+
pagerInfoElement = () => this.element.nativeElement.querySelector('.k-pager-info');
|
|
532
|
+
numericButtonsElement = () => this.element.nativeElement.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
|
|
533
|
+
responsiveDropDownElement = {
|
|
534
|
+
name: 'sizeDropDown',
|
|
535
|
+
isEnabled: () => this.showPageSizes,
|
|
536
|
+
isVisible: () => this.isElementVisible(this.sizesDropDownElement()),
|
|
537
|
+
width: () => this.pagerDimensions.pageSizesWidth + this.pagerDimensions.gapNumbersSizes - this.pagerDimensions.sizesTextWidth,
|
|
538
|
+
show: () => {
|
|
539
|
+
this.ngZone.run(() => this.showItemsText = false);
|
|
540
|
+
this.showElement(this.sizesDropDownElement());
|
|
541
|
+
},
|
|
542
|
+
hide: () => {
|
|
543
|
+
this.hideElement(this.sizesDropDownElement());
|
|
544
|
+
}
|
|
545
|
+
};
|
|
546
|
+
responsiveDropDownTextElement = {
|
|
547
|
+
name: 'itemsDropDownText',
|
|
548
|
+
isEnabled: () => this.showPageSizes,
|
|
549
|
+
isVisible: () => this.isElementVisible(this.sizesDropDownElement()) && this.showItemsText,
|
|
550
|
+
width: () => this.pagerDimensions.sizesTextWidth + this.pagerDimensions.gapPageText,
|
|
551
|
+
show: () => this.ngZone.run(() => this.showItemsText = true),
|
|
552
|
+
hide: () => this.ngZone.run(() => this.showItemsText = false)
|
|
553
|
+
};
|
|
554
|
+
responsivePageTextElement = {
|
|
555
|
+
name: 'pageText',
|
|
556
|
+
isEnabled: () => this.isElementVisible(this.pagerInputElement()),
|
|
557
|
+
isVisible: () => this.showPageText,
|
|
558
|
+
width: () => this.pagerDimensions.pageTextWidth + this.pagerDimensions.gapPageText,
|
|
559
|
+
show: () => this.ngZone.run(() => this.showPageText = true),
|
|
560
|
+
hide: () => this.ngZone.run(() => this.showPageText = false)
|
|
561
|
+
};
|
|
562
|
+
responsiveInfoTextElement = {
|
|
563
|
+
name: 'infoText',
|
|
564
|
+
isEnabled: () => this.info,
|
|
565
|
+
isVisible: () => this.isElementVisible(this.pagerInfoElement()),
|
|
566
|
+
width: () => this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo,
|
|
567
|
+
show: () => {
|
|
568
|
+
this.ngZone.run(() => {
|
|
569
|
+
this.showElement(this.pagerInfoElement());
|
|
570
|
+
});
|
|
571
|
+
},
|
|
572
|
+
hide: () => {
|
|
573
|
+
this.ngZone.run(() => {
|
|
574
|
+
this.hideElement(this.pagerInfoElement());
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
};
|
|
578
|
+
responsiveNumericButtonsElement = {
|
|
579
|
+
name: 'numericButtons',
|
|
580
|
+
isEnabled: () => this.type === 'numeric',
|
|
581
|
+
isVisible: () => this.isElementVisible(this.numericButtonsElement()),
|
|
582
|
+
width: () => this.pagerDimensions.numericButtonsWidth - this.pagerDimensions.inputWidth,
|
|
583
|
+
show: () => {
|
|
584
|
+
this.showElement(this.numericButtonsElement());
|
|
585
|
+
this.ngZone.run(() => {
|
|
586
|
+
this.showInput = false;
|
|
587
|
+
this.cdr.markForCheck();
|
|
588
|
+
});
|
|
589
|
+
},
|
|
590
|
+
hide: () => {
|
|
591
|
+
this.hideElement(this.numericButtonsElement());
|
|
592
|
+
this.ngZone.run(() => {
|
|
593
|
+
this.showInput = true;
|
|
594
|
+
this.showPageText = true;
|
|
595
|
+
this.cdr.markForCheck();
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
/**
|
|
600
|
+
* Contains all elements that are subject to responsive toggling.
|
|
601
|
+
* These elements will be shown or hidden based on the available space.
|
|
602
|
+
* The order of elements in the array defines the priority of visibility.
|
|
603
|
+
* This array allows us to work with the elements without performing element-specific logic in other methods.
|
|
604
|
+
*/
|
|
605
|
+
responsiveElements = [
|
|
606
|
+
this.responsiveDropDownElement,
|
|
607
|
+
this.responsiveDropDownTextElement,
|
|
608
|
+
this.responsivePageTextElement,
|
|
609
|
+
this.responsiveInfoTextElement,
|
|
610
|
+
this.responsiveNumericButtonsElement
|
|
611
|
+
];
|
|
543
612
|
get ariaLabel() {
|
|
544
613
|
const localizationMsg = this.localization.get('ariaLabel') || '';
|
|
545
614
|
return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());
|
|
@@ -631,96 +700,40 @@ export class PagerComponent {
|
|
|
631
700
|
this.renderer.addClass(elem, classes.toAdd);
|
|
632
701
|
}
|
|
633
702
|
}
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
if (checkOverflow && currentWidth >= availableWidth)
|
|
652
|
-
return;
|
|
653
|
-
}
|
|
654
|
-
if (this.showPageSizes && this.isElementVisible(pagerPageSizes) && !this.showItemsText) {
|
|
655
|
-
const addPageSizesText = currentWidth - pagerSizesDropDown?.offsetWidth + this.pagerDimensions.pageSizesWidth;
|
|
656
|
-
if (checkOverflow && addPageSizesText > availableWidth)
|
|
657
|
-
return;
|
|
658
|
-
this.ngZone.run(() => this.showItemsText = true);
|
|
659
|
-
currentWidth = addPageSizesText;
|
|
660
|
-
if (checkOverflow && currentWidth >= availableWidth)
|
|
661
|
-
return;
|
|
662
|
-
}
|
|
663
|
-
if (!this.showPageText && (!this.showPageSizes || (this.isElementVisible(pagerPageSizes) && this.showItemsText))) {
|
|
664
|
-
const addPageText = currentWidth + this.pagerDimensions.pageTextWidth + this.pagerDimensions.gapPageText;
|
|
665
|
-
if (checkOverflow && addPageText > availableWidth)
|
|
666
|
-
return;
|
|
667
|
-
this.ngZone.run(() => this.showPageText = true);
|
|
668
|
-
currentWidth = addPageText;
|
|
669
|
-
if (checkOverflow && currentWidth >= availableWidth)
|
|
670
|
-
return;
|
|
671
|
-
}
|
|
672
|
-
if (this.info && !this.isElementVisible(pagerInfoElement) && (!this.showPageSizes || (this.isElementVisible(pagerPageSizes) && this.showPageText))) {
|
|
673
|
-
const addInfoText = currentWidth + this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo;
|
|
674
|
-
if (checkOverflow && addInfoText > availableWidth)
|
|
675
|
-
return;
|
|
676
|
-
this.ngZone.run(() => {
|
|
677
|
-
this.showElement(pagerInfoElement);
|
|
678
|
-
});
|
|
679
|
-
currentWidth = addInfoText;
|
|
680
|
-
}
|
|
681
|
-
if (this.type === 'numeric' && (!this.info || this.isElementVisible(pagerInfoElement))) {
|
|
682
|
-
const addNumericButtons = currentWidth - this.pagerDimensions.inputWidth + this.pagerDimensions.numericButtonsWidth;
|
|
683
|
-
if (checkOverflow && addNumericButtons > availableWidth)
|
|
684
|
-
return;
|
|
685
|
-
this.showElement(numericButtonsElement);
|
|
686
|
-
this.ngZone.run(() => {
|
|
687
|
-
this.showInput = false;
|
|
688
|
-
this.cdr.markForCheck();
|
|
689
|
-
});
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
hideElementsInOrder(availableWidth, currentWidth) {
|
|
693
|
-
const el = this.element.nativeElement;
|
|
694
|
-
const numericButtonsElement = el.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
|
|
695
|
-
const pagerInfoElement = el.querySelector('.k-pager-info');
|
|
696
|
-
const pagerPageSizes = el.querySelector('.k-pager-sizes');
|
|
697
|
-
const pagerSizesDropDown = el.querySelector('.k-pager-sizes .k-dropdownlist');
|
|
698
|
-
if (this.isElementVisible(numericButtonsElement)) {
|
|
699
|
-
this.hideElement(numericButtonsElement);
|
|
700
|
-
this.ngZone.run(() => this.showInput = true);
|
|
701
|
-
currentWidth += this.pagerDimensions.inputWidth - this.pagerDimensions.numericButtonsWidth;
|
|
702
|
-
if (currentWidth <= availableWidth)
|
|
703
|
-
return;
|
|
704
|
-
}
|
|
705
|
-
if (this.isElementVisible(pagerInfoElement)) {
|
|
706
|
-
this.hideElement(pagerInfoElement);
|
|
707
|
-
currentWidth -= (this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo);
|
|
708
|
-
if (currentWidth <= availableWidth)
|
|
709
|
-
return;
|
|
703
|
+
showElements(availableWidth, currentWidth) {
|
|
704
|
+
let index = 0;
|
|
705
|
+
while (index < this.responsiveElements.length) {
|
|
706
|
+
const element = this.responsiveElements[index];
|
|
707
|
+
if (!element.isEnabled() || element.isVisible()) {
|
|
708
|
+
index++;
|
|
709
|
+
continue;
|
|
710
|
+
}
|
|
711
|
+
const elementWidth = element.width();
|
|
712
|
+
// If not responsive, show all elements regardless of available width. If responsive, check if the current element fits
|
|
713
|
+
if (this.responsive && (currentWidth + elementWidth) > availableWidth) {
|
|
714
|
+
index++;
|
|
715
|
+
break;
|
|
716
|
+
}
|
|
717
|
+
element.show();
|
|
718
|
+
currentWidth += elementWidth;
|
|
719
|
+
index++;
|
|
710
720
|
}
|
|
711
|
-
if
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
if (currentWidth <= availableWidth)
|
|
715
|
-
return;
|
|
721
|
+
// Do not hide elements if not responsive. If all elements fit, do not hide any.
|
|
722
|
+
if (!this.responsive || currentWidth <= availableWidth) {
|
|
723
|
+
return;
|
|
716
724
|
}
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
if (
|
|
721
|
-
|
|
725
|
+
let hideIndex = Math.min(index - 1, this.responsiveElements.length - 1);
|
|
726
|
+
while (hideIndex >= 0 && currentWidth > availableWidth) {
|
|
727
|
+
const element = this.responsiveElements[hideIndex];
|
|
728
|
+
if (!element.isEnabled() || !element.isVisible()) {
|
|
729
|
+
hideIndex--;
|
|
730
|
+
continue;
|
|
731
|
+
}
|
|
732
|
+
const elementWidth = element.width();
|
|
733
|
+
element.hide();
|
|
734
|
+
currentWidth -= elementWidth;
|
|
735
|
+
hideIndex--;
|
|
722
736
|
}
|
|
723
|
-
this.hideElement(pagerPageSizes);
|
|
724
737
|
}
|
|
725
738
|
isElementVisible(element) {
|
|
726
739
|
return element && !element?.classList.contains('k-hidden');
|
|
@@ -739,10 +752,9 @@ export class PagerComponent {
|
|
|
739
752
|
if (!isDocumentAvailable()) {
|
|
740
753
|
return;
|
|
741
754
|
}
|
|
742
|
-
const
|
|
743
|
-
const
|
|
744
|
-
const
|
|
745
|
-
const existingSizes = el.querySelector('.k-pager-sizes');
|
|
755
|
+
const existingInfo = this.pagerInfoElement();
|
|
756
|
+
const existingInput = this.pagerInputElement();
|
|
757
|
+
const existingSizes = this.sizesDropDownElement();
|
|
746
758
|
// create a single measurement container
|
|
747
759
|
const measureContainer = this.renderer.createElement('div');
|
|
748
760
|
positionOffScreen(this.renderer, measureContainer);
|
|
@@ -778,14 +790,14 @@ export class PagerComponent {
|
|
|
778
790
|
if (!isDocumentAvailable() || !this.element?.nativeElement) {
|
|
779
791
|
return;
|
|
780
792
|
}
|
|
781
|
-
const numericButtonsElement = this.
|
|
793
|
+
const numericButtonsElement = this.numericButtonsElement();
|
|
782
794
|
const hasNumericButtons = this.numericButtons || numericButtonsElement;
|
|
783
|
-
const hasInput = this.pagerInput || this.
|
|
795
|
+
const hasInput = this.pagerInput || this.pagerInputElement();
|
|
784
796
|
if (!this.responsive || (!hasNumericButtons && !hasInput)) {
|
|
785
797
|
this.showInput = this.type === 'input';
|
|
786
798
|
return;
|
|
787
799
|
}
|
|
788
|
-
const pagerInfoElement = this.
|
|
800
|
+
const pagerInfoElement = this.pagerInfoElement();
|
|
789
801
|
if (this.type === 'input' || !this.isElementVisible(pagerInfoElement)) {
|
|
790
802
|
this.showInput = true;
|
|
791
803
|
return;
|
|
@@ -806,6 +818,18 @@ export class PagerComponent {
|
|
|
806
818
|
}
|
|
807
819
|
return this.pageSizeValues?.length > 0;
|
|
808
820
|
}
|
|
821
|
+
setPagerDimensions() {
|
|
822
|
+
this.measureAllTextWidths();
|
|
823
|
+
!this.numericButtons && (this.pagerDimensions.numericButtonsWidth = this.element.nativeElement.querySelector('.k-pager-numbers')?.offsetWidth ?? 0);
|
|
824
|
+
!this.pagerInput && (this.pagerDimensions.inputWidth = this.element.nativeElement.querySelector('kendo-pager-input')?.offsetWidth ?? 0);
|
|
825
|
+
!this.pageSizes && (this.pagerDimensions.pageSizesWidth = this.sizesDropDownElement()?.offsetWidth ?? 0);
|
|
826
|
+
const padding = calculatePadding(this.element.nativeElement);
|
|
827
|
+
this.pagerDimensions.padding = padding.padding;
|
|
828
|
+
this.pagerDimensions.gapNumbersSizes = padding.gapNumbersSizes;
|
|
829
|
+
this.pagerDimensions.gapSizesInfo = padding.gapSizesInfo;
|
|
830
|
+
const innerStyledElement = this.pagerInputElement();
|
|
831
|
+
!this.pagerDimensions.gapPageText && (this.pagerDimensions.gapPageText = calculateGap(innerStyledElement));
|
|
832
|
+
}
|
|
809
833
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", 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: i0.ChangeDetectorRef }, { token: i3.PagerNavigationService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
810
834
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", 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", adaptiveMode: "adaptiveMode" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange", pagerInputVisibilityChange: "pagerInputVisibilityChange", pageTextVisibilityChange: "pageTextVisibilityChange", itemsTextVisibilityChange: "itemsTextVisibilityChange" }, host: { listeners: { "focusin": "focusHandler($event)" }, properties: { "class.k-pager": "this.pagerClass", "class.k-pager-responsive": "this.responsiveClass", "attr.role": "this.widgetRole", "attr.aria-roledescription": "this.roleDescription", "attr.aria-keyshortcuts": "this.keyShortcuts", "attr.tabindex": "this.hostTabindex", "attr.dir": "this.dir" } }, providers: [
|
|
811
835
|
LocalizationService,
|
|
@@ -1522,8 +1522,8 @@ const packageMetadata = {
|
|
|
1522
1522
|
productName: 'Kendo UI for Angular',
|
|
1523
1523
|
productCode: 'KENDOUIANGULAR',
|
|
1524
1524
|
productCodes: ['KENDOUIANGULAR'],
|
|
1525
|
-
publishDate:
|
|
1526
|
-
version: '21.0.0-develop.
|
|
1525
|
+
publishDate: 1761929487,
|
|
1526
|
+
version: '21.0.0-develop.14',
|
|
1527
1527
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
|
|
1528
1528
|
};
|
|
1529
1529
|
|
|
@@ -1697,9 +1697,9 @@ class PagerComponent {
|
|
|
1697
1697
|
/**
|
|
1698
1698
|
* Determines whether the Pager adaptiveness functionality is enabled ([see example](slug:adaptive_mode_pager)).
|
|
1699
1699
|
*
|
|
1700
|
-
* @default '
|
|
1700
|
+
* @default 'none'
|
|
1701
1701
|
*/
|
|
1702
|
-
adaptiveMode = '
|
|
1702
|
+
adaptiveMode = 'none';
|
|
1703
1703
|
/**
|
|
1704
1704
|
* Fires when the current page of the Pager changes ([see example](slug:overview_pager)).
|
|
1705
1705
|
* You have to handle the event and page the data.
|
|
@@ -1878,36 +1878,23 @@ class PagerComponent {
|
|
|
1878
1878
|
}
|
|
1879
1879
|
}));
|
|
1880
1880
|
this.handleClasses(this.size, 'size');
|
|
1881
|
-
this.
|
|
1882
|
-
if (!this.numericButtons) {
|
|
1883
|
-
this.pagerDimensions.numericButtonsWidth = this.element.nativeElement.querySelector('.k-pager-numbers')?.offsetWidth ?? 0;
|
|
1884
|
-
}
|
|
1885
|
-
if (!this.pagerInput) {
|
|
1886
|
-
this.pagerDimensions.inputWidth = this.element.nativeElement.querySelector('.k-pager-input')?.offsetWidth ?? 0;
|
|
1887
|
-
}
|
|
1888
|
-
if (!this.pageSizes) {
|
|
1889
|
-
this.pagerDimensions.pageSizesWidth = this.element.nativeElement.querySelector('.k-pager-sizes')?.offsetWidth ?? 0;
|
|
1890
|
-
}
|
|
1891
|
-
const padding = calculatePadding(this.element.nativeElement);
|
|
1892
|
-
this.pagerDimensions.padding = padding.padding;
|
|
1893
|
-
this.pagerDimensions.gapNumbersSizes = padding.gapNumbersSizes;
|
|
1894
|
-
this.pagerDimensions.gapSizesInfo = padding.gapSizesInfo;
|
|
1881
|
+
this.setPagerDimensions();
|
|
1895
1882
|
this.ngZone.onStable.pipe(take(1)).subscribe(() => {
|
|
1896
1883
|
if (this.type !== 'input') {
|
|
1897
1884
|
this.showInput = false;
|
|
1898
1885
|
}
|
|
1886
|
+
this.responsive && this.resizeHandler();
|
|
1899
1887
|
});
|
|
1900
1888
|
if (!isDocumentAvailable()) {
|
|
1901
1889
|
this.initialized = true;
|
|
1902
1890
|
return;
|
|
1903
1891
|
}
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
}, 0);
|
|
1892
|
+
this.ngZone.runOutsideAngular(() => {
|
|
1893
|
+
setTimeout(() => {
|
|
1894
|
+
this.initialized = true;
|
|
1895
|
+
this.cdr.markForCheck();
|
|
1896
|
+
}, 0);
|
|
1897
|
+
});
|
|
1911
1898
|
}
|
|
1912
1899
|
ngOnChanges(changes) {
|
|
1913
1900
|
if (anyChanged(["pageSize", "skip", "total"], changes, false)) {
|
|
@@ -1949,7 +1936,7 @@ class PagerComponent {
|
|
|
1949
1936
|
}
|
|
1950
1937
|
if (!this.responsive) {
|
|
1951
1938
|
this.showInput = this.type === 'input';
|
|
1952
|
-
this.
|
|
1939
|
+
this.showElements(this.element.nativeElement.offsetWidth, this.pagerDimensions.width);
|
|
1953
1940
|
}
|
|
1954
1941
|
}
|
|
1955
1942
|
if (isChanged('type', changes, true)) {
|
|
@@ -2020,8 +2007,8 @@ class PagerComponent {
|
|
|
2020
2007
|
return;
|
|
2021
2008
|
}
|
|
2022
2009
|
const numericButtonsWrapperElement = this.element.nativeElement.querySelector('.k-pager-numbers-wrap');
|
|
2023
|
-
const pagerInfoElement = this.
|
|
2024
|
-
const pagerPageSizes = this.
|
|
2010
|
+
const pagerInfoElement = this.pagerInfoElement();
|
|
2011
|
+
const pagerPageSizes = this.sizesDropDownElement();
|
|
2025
2012
|
let elementsWidths = numericButtonsWrapperElement?.offsetWidth + (pagerPageSizes?.offsetWidth || 0) + (pagerInfoElement?.offsetWidth > 0 ? Math.min(this.pagerDimensions.infoTextWidth) : 0);
|
|
2026
2013
|
if (this.isElementVisible(pagerInfoElement)) {
|
|
2027
2014
|
elementsWidths += this.pagerDimensions.gapSizesInfo;
|
|
@@ -2030,18 +2017,100 @@ class PagerComponent {
|
|
|
2030
2017
|
if (this.isElementVisible(pagerPageSizes)) {
|
|
2031
2018
|
pagerWidth -= this.pagerDimensions.gapNumbersSizes;
|
|
2032
2019
|
}
|
|
2033
|
-
if (
|
|
2034
|
-
|
|
2035
|
-
}
|
|
2036
|
-
else {
|
|
2037
|
-
this.hideElementsInOrder(pagerWidth, elementsWidths);
|
|
2020
|
+
if (pagerWidth < 0) {
|
|
2021
|
+
return;
|
|
2038
2022
|
}
|
|
2023
|
+
this.showElements(pagerWidth, elementsWidths);
|
|
2039
2024
|
if (!this.initialized) {
|
|
2040
2025
|
this.ngZone.onStable.pipe(take(1)).subscribe(() => this.initialized = true);
|
|
2041
2026
|
}
|
|
2042
2027
|
});
|
|
2043
2028
|
});
|
|
2044
2029
|
};
|
|
2030
|
+
// use selectors to get the element even when used in a template
|
|
2031
|
+
sizesDropDownElement = () => this.element.nativeElement.querySelector('.k-pager-sizes');
|
|
2032
|
+
pagerInputElement = () => this.element.nativeElement.querySelector('.k-pager-input');
|
|
2033
|
+
pagerInfoElement = () => this.element.nativeElement.querySelector('.k-pager-info');
|
|
2034
|
+
numericButtonsElement = () => this.element.nativeElement.querySelector('kendo-datapager-numeric-buttons, kendo-pager-numeric-buttons');
|
|
2035
|
+
responsiveDropDownElement = {
|
|
2036
|
+
name: 'sizeDropDown',
|
|
2037
|
+
isEnabled: () => this.showPageSizes,
|
|
2038
|
+
isVisible: () => this.isElementVisible(this.sizesDropDownElement()),
|
|
2039
|
+
width: () => this.pagerDimensions.pageSizesWidth + this.pagerDimensions.gapNumbersSizes - this.pagerDimensions.sizesTextWidth,
|
|
2040
|
+
show: () => {
|
|
2041
|
+
this.ngZone.run(() => this.showItemsText = false);
|
|
2042
|
+
this.showElement(this.sizesDropDownElement());
|
|
2043
|
+
},
|
|
2044
|
+
hide: () => {
|
|
2045
|
+
this.hideElement(this.sizesDropDownElement());
|
|
2046
|
+
}
|
|
2047
|
+
};
|
|
2048
|
+
responsiveDropDownTextElement = {
|
|
2049
|
+
name: 'itemsDropDownText',
|
|
2050
|
+
isEnabled: () => this.showPageSizes,
|
|
2051
|
+
isVisible: () => this.isElementVisible(this.sizesDropDownElement()) && this.showItemsText,
|
|
2052
|
+
width: () => this.pagerDimensions.sizesTextWidth + this.pagerDimensions.gapPageText,
|
|
2053
|
+
show: () => this.ngZone.run(() => this.showItemsText = true),
|
|
2054
|
+
hide: () => this.ngZone.run(() => this.showItemsText = false)
|
|
2055
|
+
};
|
|
2056
|
+
responsivePageTextElement = {
|
|
2057
|
+
name: 'pageText',
|
|
2058
|
+
isEnabled: () => this.isElementVisible(this.pagerInputElement()),
|
|
2059
|
+
isVisible: () => this.showPageText,
|
|
2060
|
+
width: () => this.pagerDimensions.pageTextWidth + this.pagerDimensions.gapPageText,
|
|
2061
|
+
show: () => this.ngZone.run(() => this.showPageText = true),
|
|
2062
|
+
hide: () => this.ngZone.run(() => this.showPageText = false)
|
|
2063
|
+
};
|
|
2064
|
+
responsiveInfoTextElement = {
|
|
2065
|
+
name: 'infoText',
|
|
2066
|
+
isEnabled: () => this.info,
|
|
2067
|
+
isVisible: () => this.isElementVisible(this.pagerInfoElement()),
|
|
2068
|
+
width: () => this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo,
|
|
2069
|
+
show: () => {
|
|
2070
|
+
this.ngZone.run(() => {
|
|
2071
|
+
this.showElement(this.pagerInfoElement());
|
|
2072
|
+
});
|
|
2073
|
+
},
|
|
2074
|
+
hide: () => {
|
|
2075
|
+
this.ngZone.run(() => {
|
|
2076
|
+
this.hideElement(this.pagerInfoElement());
|
|
2077
|
+
});
|
|
2078
|
+
}
|
|
2079
|
+
};
|
|
2080
|
+
responsiveNumericButtonsElement = {
|
|
2081
|
+
name: 'numericButtons',
|
|
2082
|
+
isEnabled: () => this.type === 'numeric',
|
|
2083
|
+
isVisible: () => this.isElementVisible(this.numericButtonsElement()),
|
|
2084
|
+
width: () => this.pagerDimensions.numericButtonsWidth - this.pagerDimensions.inputWidth,
|
|
2085
|
+
show: () => {
|
|
2086
|
+
this.showElement(this.numericButtonsElement());
|
|
2087
|
+
this.ngZone.run(() => {
|
|
2088
|
+
this.showInput = false;
|
|
2089
|
+
this.cdr.markForCheck();
|
|
2090
|
+
});
|
|
2091
|
+
},
|
|
2092
|
+
hide: () => {
|
|
2093
|
+
this.hideElement(this.numericButtonsElement());
|
|
2094
|
+
this.ngZone.run(() => {
|
|
2095
|
+
this.showInput = true;
|
|
2096
|
+
this.showPageText = true;
|
|
2097
|
+
this.cdr.markForCheck();
|
|
2098
|
+
});
|
|
2099
|
+
}
|
|
2100
|
+
};
|
|
2101
|
+
/**
|
|
2102
|
+
* Contains all elements that are subject to responsive toggling.
|
|
2103
|
+
* These elements will be shown or hidden based on the available space.
|
|
2104
|
+
* The order of elements in the array defines the priority of visibility.
|
|
2105
|
+
* This array allows us to work with the elements without performing element-specific logic in other methods.
|
|
2106
|
+
*/
|
|
2107
|
+
responsiveElements = [
|
|
2108
|
+
this.responsiveDropDownElement,
|
|
2109
|
+
this.responsiveDropDownTextElement,
|
|
2110
|
+
this.responsivePageTextElement,
|
|
2111
|
+
this.responsiveInfoTextElement,
|
|
2112
|
+
this.responsiveNumericButtonsElement
|
|
2113
|
+
];
|
|
2045
2114
|
get ariaLabel() {
|
|
2046
2115
|
const localizationMsg = this.localization.get('ariaLabel') || '';
|
|
2047
2116
|
return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());
|
|
@@ -2133,96 +2202,40 @@ class PagerComponent {
|
|
|
2133
2202
|
this.renderer.addClass(elem, classes.toAdd);
|
|
2134
2203
|
}
|
|
2135
2204
|
}
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
if (checkOverflow && currentWidth >= availableWidth)
|
|
2154
|
-
return;
|
|
2155
|
-
}
|
|
2156
|
-
if (this.showPageSizes && this.isElementVisible(pagerPageSizes) && !this.showItemsText) {
|
|
2157
|
-
const addPageSizesText = currentWidth - pagerSizesDropDown?.offsetWidth + this.pagerDimensions.pageSizesWidth;
|
|
2158
|
-
if (checkOverflow && addPageSizesText > availableWidth)
|
|
2159
|
-
return;
|
|
2160
|
-
this.ngZone.run(() => this.showItemsText = true);
|
|
2161
|
-
currentWidth = addPageSizesText;
|
|
2162
|
-
if (checkOverflow && currentWidth >= availableWidth)
|
|
2163
|
-
return;
|
|
2164
|
-
}
|
|
2165
|
-
if (!this.showPageText && (!this.showPageSizes || (this.isElementVisible(pagerPageSizes) && this.showItemsText))) {
|
|
2166
|
-
const addPageText = currentWidth + this.pagerDimensions.pageTextWidth + this.pagerDimensions.gapPageText;
|
|
2167
|
-
if (checkOverflow && addPageText > availableWidth)
|
|
2168
|
-
return;
|
|
2169
|
-
this.ngZone.run(() => this.showPageText = true);
|
|
2170
|
-
currentWidth = addPageText;
|
|
2171
|
-
if (checkOverflow && currentWidth >= availableWidth)
|
|
2172
|
-
return;
|
|
2173
|
-
}
|
|
2174
|
-
if (this.info && !this.isElementVisible(pagerInfoElement) && (!this.showPageSizes || (this.isElementVisible(pagerPageSizes) && this.showPageText))) {
|
|
2175
|
-
const addInfoText = currentWidth + this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo;
|
|
2176
|
-
if (checkOverflow && addInfoText > availableWidth)
|
|
2177
|
-
return;
|
|
2178
|
-
this.ngZone.run(() => {
|
|
2179
|
-
this.showElement(pagerInfoElement);
|
|
2180
|
-
});
|
|
2181
|
-
currentWidth = addInfoText;
|
|
2205
|
+
showElements(availableWidth, currentWidth) {
|
|
2206
|
+
let index = 0;
|
|
2207
|
+
while (index < this.responsiveElements.length) {
|
|
2208
|
+
const element = this.responsiveElements[index];
|
|
2209
|
+
if (!element.isEnabled() || element.isVisible()) {
|
|
2210
|
+
index++;
|
|
2211
|
+
continue;
|
|
2212
|
+
}
|
|
2213
|
+
const elementWidth = element.width();
|
|
2214
|
+
// If not responsive, show all elements regardless of available width. If responsive, check if the current element fits
|
|
2215
|
+
if (this.responsive && (currentWidth + elementWidth) > availableWidth) {
|
|
2216
|
+
index++;
|
|
2217
|
+
break;
|
|
2218
|
+
}
|
|
2219
|
+
element.show();
|
|
2220
|
+
currentWidth += elementWidth;
|
|
2221
|
+
index++;
|
|
2182
2222
|
}
|
|
2183
|
-
if
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
return;
|
|
2187
|
-
this.showElement(numericButtonsElement);
|
|
2188
|
-
this.ngZone.run(() => {
|
|
2189
|
-
this.showInput = false;
|
|
2190
|
-
this.cdr.markForCheck();
|
|
2191
|
-
});
|
|
2223
|
+
// Do not hide elements if not responsive. If all elements fit, do not hide any.
|
|
2224
|
+
if (!this.responsive || currentWidth <= availableWidth) {
|
|
2225
|
+
return;
|
|
2192
2226
|
}
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
if (currentWidth <= availableWidth)
|
|
2205
|
-
return;
|
|
2206
|
-
}
|
|
2207
|
-
if (this.isElementVisible(pagerInfoElement)) {
|
|
2208
|
-
this.hideElement(pagerInfoElement);
|
|
2209
|
-
currentWidth -= (this.pagerDimensions.infoTextWidth + this.pagerDimensions.gapSizesInfo);
|
|
2210
|
-
if (currentWidth <= availableWidth)
|
|
2211
|
-
return;
|
|
2212
|
-
}
|
|
2213
|
-
if (this.showPageText) {
|
|
2214
|
-
this.ngZone.run(() => this.showPageText = false);
|
|
2215
|
-
currentWidth = currentWidth - this.pagerDimensions.pageTextWidth;
|
|
2216
|
-
if (currentWidth <= availableWidth)
|
|
2217
|
-
return;
|
|
2218
|
-
}
|
|
2219
|
-
if (this.showPageSizes && this.isElementVisible(pagerPageSizes) && this.showItemsText) {
|
|
2220
|
-
this.ngZone.run(() => this.showItemsText = false);
|
|
2221
|
-
currentWidth = currentWidth - this.pagerDimensions.pageSizesWidth + pagerSizesDropDown?.offsetWidth;
|
|
2222
|
-
if (currentWidth <= availableWidth)
|
|
2223
|
-
return;
|
|
2227
|
+
let hideIndex = Math.min(index - 1, this.responsiveElements.length - 1);
|
|
2228
|
+
while (hideIndex >= 0 && currentWidth > availableWidth) {
|
|
2229
|
+
const element = this.responsiveElements[hideIndex];
|
|
2230
|
+
if (!element.isEnabled() || !element.isVisible()) {
|
|
2231
|
+
hideIndex--;
|
|
2232
|
+
continue;
|
|
2233
|
+
}
|
|
2234
|
+
const elementWidth = element.width();
|
|
2235
|
+
element.hide();
|
|
2236
|
+
currentWidth -= elementWidth;
|
|
2237
|
+
hideIndex--;
|
|
2224
2238
|
}
|
|
2225
|
-
this.hideElement(pagerPageSizes);
|
|
2226
2239
|
}
|
|
2227
2240
|
isElementVisible(element) {
|
|
2228
2241
|
return element && !element?.classList.contains('k-hidden');
|
|
@@ -2241,10 +2254,9 @@ class PagerComponent {
|
|
|
2241
2254
|
if (!isDocumentAvailable()) {
|
|
2242
2255
|
return;
|
|
2243
2256
|
}
|
|
2244
|
-
const
|
|
2245
|
-
const
|
|
2246
|
-
const
|
|
2247
|
-
const existingSizes = el.querySelector('.k-pager-sizes');
|
|
2257
|
+
const existingInfo = this.pagerInfoElement();
|
|
2258
|
+
const existingInput = this.pagerInputElement();
|
|
2259
|
+
const existingSizes = this.sizesDropDownElement();
|
|
2248
2260
|
// create a single measurement container
|
|
2249
2261
|
const measureContainer = this.renderer.createElement('div');
|
|
2250
2262
|
positionOffScreen(this.renderer, measureContainer);
|
|
@@ -2280,14 +2292,14 @@ class PagerComponent {
|
|
|
2280
2292
|
if (!isDocumentAvailable() || !this.element?.nativeElement) {
|
|
2281
2293
|
return;
|
|
2282
2294
|
}
|
|
2283
|
-
const numericButtonsElement = this.
|
|
2295
|
+
const numericButtonsElement = this.numericButtonsElement();
|
|
2284
2296
|
const hasNumericButtons = this.numericButtons || numericButtonsElement;
|
|
2285
|
-
const hasInput = this.pagerInput || this.
|
|
2297
|
+
const hasInput = this.pagerInput || this.pagerInputElement();
|
|
2286
2298
|
if (!this.responsive || (!hasNumericButtons && !hasInput)) {
|
|
2287
2299
|
this.showInput = this.type === 'input';
|
|
2288
2300
|
return;
|
|
2289
2301
|
}
|
|
2290
|
-
const pagerInfoElement = this.
|
|
2302
|
+
const pagerInfoElement = this.pagerInfoElement();
|
|
2291
2303
|
if (this.type === 'input' || !this.isElementVisible(pagerInfoElement)) {
|
|
2292
2304
|
this.showInput = true;
|
|
2293
2305
|
return;
|
|
@@ -2308,6 +2320,18 @@ class PagerComponent {
|
|
|
2308
2320
|
}
|
|
2309
2321
|
return this.pageSizeValues?.length > 0;
|
|
2310
2322
|
}
|
|
2323
|
+
setPagerDimensions() {
|
|
2324
|
+
this.measureAllTextWidths();
|
|
2325
|
+
!this.numericButtons && (this.pagerDimensions.numericButtonsWidth = this.element.nativeElement.querySelector('.k-pager-numbers')?.offsetWidth ?? 0);
|
|
2326
|
+
!this.pagerInput && (this.pagerDimensions.inputWidth = this.element.nativeElement.querySelector('kendo-pager-input')?.offsetWidth ?? 0);
|
|
2327
|
+
!this.pageSizes && (this.pagerDimensions.pageSizesWidth = this.sizesDropDownElement()?.offsetWidth ?? 0);
|
|
2328
|
+
const padding = calculatePadding(this.element.nativeElement);
|
|
2329
|
+
this.pagerDimensions.padding = padding.padding;
|
|
2330
|
+
this.pagerDimensions.gapNumbersSizes = padding.gapNumbersSizes;
|
|
2331
|
+
this.pagerDimensions.gapSizesInfo = padding.gapSizesInfo;
|
|
2332
|
+
const innerStyledElement = this.pagerInputElement();
|
|
2333
|
+
!this.pagerDimensions.gapPageText && (this.pagerDimensions.gapPageText = calculateGap(innerStyledElement));
|
|
2334
|
+
}
|
|
2311
2335
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PagerComponent, deps: [{ token: PagerContextService, optional: true, skipSelf: true }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: PagerNavigationService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
2312
2336
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", 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", adaptiveMode: "adaptiveMode" }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange", pagerInputVisibilityChange: "pagerInputVisibilityChange", pageTextVisibilityChange: "pageTextVisibilityChange", itemsTextVisibilityChange: "itemsTextVisibilityChange" }, host: { listeners: { "focusin": "focusHandler($event)" }, properties: { "class.k-pager": "this.pagerClass", "class.k-pager-responsive": "this.responsiveClass", "attr.role": "this.widgetRole", "attr.aria-roledescription": "this.roleDescription", "attr.aria-keyshortcuts": "this.keyShortcuts", "attr.tabindex": "this.hostTabindex", "attr.dir": "this.dir" } }, providers: [
|
|
2313
2337
|
LocalizationService,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-angular-pager",
|
|
3
|
-
"version": "21.0.0-develop.
|
|
3
|
+
"version": "21.0.0-develop.14",
|
|
4
4
|
"description": "Kendo UI Angular Pager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Progress",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"package": {
|
|
18
18
|
"productName": "Kendo UI for Angular",
|
|
19
19
|
"productCode": "KENDOUIANGULAR",
|
|
20
|
-
"publishDate":
|
|
20
|
+
"publishDate": 1761929487,
|
|
21
21
|
"licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
@@ -27,16 +27,16 @@
|
|
|
27
27
|
"@angular/core": "18 - 20",
|
|
28
28
|
"@angular/platform-browser": "18 - 20",
|
|
29
29
|
"@progress/kendo-licensing": "^1.7.0",
|
|
30
|
-
"@progress/kendo-angular-common": "21.0.0-develop.
|
|
31
|
-
"@progress/kendo-angular-dropdowns": "21.0.0-develop.
|
|
32
|
-
"@progress/kendo-angular-inputs": "21.0.0-develop.
|
|
33
|
-
"@progress/kendo-angular-icons": "21.0.0-develop.
|
|
34
|
-
"@progress/kendo-angular-l10n": "21.0.0-develop.
|
|
30
|
+
"@progress/kendo-angular-common": "21.0.0-develop.14",
|
|
31
|
+
"@progress/kendo-angular-dropdowns": "21.0.0-develop.14",
|
|
32
|
+
"@progress/kendo-angular-inputs": "21.0.0-develop.14",
|
|
33
|
+
"@progress/kendo-angular-icons": "21.0.0-develop.14",
|
|
34
|
+
"@progress/kendo-angular-l10n": "21.0.0-develop.14",
|
|
35
35
|
"rxjs": "^6.5.3 || ^7.0.0"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"tslib": "^2.3.1",
|
|
39
|
-
"@progress/kendo-angular-schematics": "21.0.0-develop.
|
|
39
|
+
"@progress/kendo-angular-schematics": "21.0.0-develop.14"
|
|
40
40
|
},
|
|
41
41
|
"schematics": "./schematics/collection.json",
|
|
42
42
|
"module": "fesm2022/progress-kendo-angular-pager.mjs",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2025 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export interface ResponsiveElement {
|
|
9
|
+
name: string;
|
|
10
|
+
isEnabled: () => boolean;
|
|
11
|
+
isVisible: () => boolean;
|
|
12
|
+
width: () => number;
|
|
13
|
+
show: () => void;
|
|
14
|
+
hide: () => void;
|
|
15
|
+
}
|
|
@@ -147,7 +147,7 @@ export declare class PagerComponent implements OnChanges, AfterViewInit, OnInit,
|
|
|
147
147
|
/**
|
|
148
148
|
* Determines whether the Pager adaptiveness functionality is enabled ([see example](slug:adaptive_mode_pager)).
|
|
149
149
|
*
|
|
150
|
-
* @default '
|
|
150
|
+
* @default 'none'
|
|
151
151
|
*/
|
|
152
152
|
adaptiveMode: AdaptiveMode;
|
|
153
153
|
/**
|
|
@@ -248,18 +248,34 @@ export declare class PagerComponent implements OnChanges, AfterViewInit, OnInit,
|
|
|
248
248
|
* @hidden
|
|
249
249
|
*/
|
|
250
250
|
resizeHandler: (compareWidth?: boolean) => void;
|
|
251
|
+
private sizesDropDownElement;
|
|
252
|
+
private pagerInputElement;
|
|
253
|
+
private pagerInfoElement;
|
|
254
|
+
private numericButtonsElement;
|
|
255
|
+
private responsiveDropDownElement;
|
|
256
|
+
private responsiveDropDownTextElement;
|
|
257
|
+
private responsivePageTextElement;
|
|
258
|
+
private responsiveInfoTextElement;
|
|
259
|
+
private responsiveNumericButtonsElement;
|
|
260
|
+
/**
|
|
261
|
+
* Contains all elements that are subject to responsive toggling.
|
|
262
|
+
* These elements will be shown or hidden based on the available space.
|
|
263
|
+
* The order of elements in the array defines the priority of visibility.
|
|
264
|
+
* This array allows us to work with the elements without performing element-specific logic in other methods.
|
|
265
|
+
*/
|
|
266
|
+
private responsiveElements;
|
|
251
267
|
private get ariaLabel();
|
|
252
268
|
private keyDownHandler;
|
|
253
269
|
private innerNavigationChange;
|
|
254
270
|
private handleClasses;
|
|
255
|
-
private
|
|
256
|
-
private hideElementsInOrder;
|
|
271
|
+
private showElements;
|
|
257
272
|
private isElementVisible;
|
|
258
273
|
private hideElement;
|
|
259
274
|
private showElement;
|
|
260
275
|
private measureAllTextWidths;
|
|
261
276
|
private showNumericButtonsResponsive;
|
|
262
277
|
private get showPageSizes();
|
|
278
|
+
private setPagerDimensions;
|
|
263
279
|
static ɵfac: i0.ɵɵFactoryDeclaration<PagerComponent, [{ optional: true; skipSelf: true; }, null, null, null, null, null, { optional: true; skipSelf: true; }]>;
|
|
264
280
|
static ɵcmp: i0.ɵɵComponentDeclaration<PagerComponent, "kendo-datapager, kendo-pager", ["kendoDataPager", "kendoPager"], { "externalTemplate": { "alias": "externalTemplate"; "required": false; }; "total": { "alias": "total"; "required": false; }; "skip": { "alias": "skip"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "buttonCount": { "alias": "buttonCount"; "required": false; }; "info": { "alias": "info"; "required": false; }; "type": { "alias": "type"; "required": false; }; "pageSizeValues": { "alias": "pageSizeValues"; "required": false; }; "previousNext": { "alias": "previousNext"; "required": false; }; "navigable": { "alias": "navigable"; "required": false; }; "size": { "alias": "size"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "adaptiveMode": { "alias": "adaptiveMode"; "required": false; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; "pagerInputVisibilityChange": "pagerInputVisibilityChange"; "pageTextVisibilityChange": "pageTextVisibilityChange"; "itemsTextVisibilityChange": "itemsTextVisibilityChange"; }, ["template"], never, true, never>;
|
|
265
281
|
}
|
|
@@ -5,14 +5,14 @@ const schematics_1 = require("@angular-devkit/schematics");
|
|
|
5
5
|
function default_1(options) {
|
|
6
6
|
const finalOptions = Object.assign(Object.assign({}, options), { mainNgModule: 'PagerModule', package: 'pager', peerDependencies: {
|
|
7
7
|
// Peers of inputs and dropdowns
|
|
8
|
-
'@progress/kendo-angular-treeview': '21.0.0-develop.
|
|
9
|
-
'@progress/kendo-angular-intl': '21.0.0-develop.
|
|
10
|
-
'@progress/kendo-angular-navigation': '21.0.0-develop.
|
|
11
|
-
'@progress/kendo-angular-popup': '21.0.0-develop.
|
|
8
|
+
'@progress/kendo-angular-treeview': '21.0.0-develop.14',
|
|
9
|
+
'@progress/kendo-angular-intl': '21.0.0-develop.14',
|
|
10
|
+
'@progress/kendo-angular-navigation': '21.0.0-develop.14',
|
|
11
|
+
'@progress/kendo-angular-popup': '21.0.0-develop.14',
|
|
12
12
|
'@progress/kendo-drawing': '^1.5.12',
|
|
13
13
|
// peer dependency of kendo-angular-inputs
|
|
14
|
-
'@progress/kendo-angular-buttons': '21.0.0-develop.
|
|
15
|
-
'@progress/kendo-angular-dialog': '21.0.0-develop.
|
|
14
|
+
'@progress/kendo-angular-buttons': '21.0.0-develop.14',
|
|
15
|
+
'@progress/kendo-angular-dialog': '21.0.0-develop.14',
|
|
16
16
|
// Peer dependency of icons
|
|
17
17
|
'@progress/kendo-svg-icons': '^4.0.0'
|
|
18
18
|
} });
|