@progress/kendo-angular-pivotgrid 16.6.0-develop.1 → 16.6.0-develop.11
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/NOTICE.txt +12 -19
- package/esm2020/models/virtualization-settings.mjs +25 -0
- package/esm2020/package-metadata.mjs +2 -2
- package/esm2020/pivotgrid.component.mjs +34 -7
- package/esm2020/rendering/pivotgrid-table.component.mjs +189 -32
- package/esm2020/util.mjs +30 -5
- package/esm2020/virtual/scroll.service.mjs +19 -0
- package/esm2020/virtual/scrollable-container.mjs +114 -0
- package/fesm2015/progress-kendo-angular-pivotgrid.mjs +396 -44
- package/fesm2020/progress-kendo-angular-pivotgrid.mjs +390 -44
- package/models/virtualization-settings.d.ts +34 -0
- package/package.json +12 -12
- package/pivotgrid.component.d.ts +19 -5
- package/rendering/pivotgrid-table.component.d.ts +25 -4
- package/schematics/ngAdd/index.js +2 -2
- package/util.d.ts +7 -0
- package/virtual/scroll.service.d.ts +15 -0
- package/virtual/scrollable-container.d.ts +35 -0
@@ -307,19 +307,21 @@ const matchAriaAttributes = (wrapper) => {
|
|
307
307
|
const firstColHeaderRowCellsIds = Array.from(firstColHeadersRow === null || firstColHeadersRow === void 0 ? void 0 : firstColHeadersRow.children).map(el => el.getAttribute('id')).join(' ');
|
308
308
|
firstColHeadersRow.setAttribute('aria-owns', `${emptyCell.getAttribute('id')} ${firstColHeaderRowCellsIds}`);
|
309
309
|
rowHeaderRows.forEach((row, index) => {
|
310
|
-
const valueCellsIds = filterAndMap(Array.from(valueTableCells), c => c.getAttribute('id').split('-')[4] === (index + 1).toString(), c => c.getAttribute('id'));
|
310
|
+
const valueCellsIds = filterAndMap(Array.from(valueTableCells), c => { var _a; return ((_a = c.getAttribute('id')) === null || _a === void 0 ? void 0 : _a.split('-')[4]) === (index + 1).toString(); }, c => c.getAttribute('id'));
|
311
311
|
row.setAttribute('aria-owns', valueCellsIds.join(' '));
|
312
312
|
});
|
313
313
|
valueTableCells.forEach(cell => {
|
314
|
-
|
314
|
+
var _a;
|
315
|
+
const cellColIndex = +((_a = cell.getAttribute('id')) === null || _a === void 0 ? void 0 : _a.split('-')[5]);
|
315
316
|
const colHeaderCellsIds = filterAndMap(Array.from(colHeaderCells), c => {
|
316
|
-
|
317
|
+
var _a;
|
318
|
+
const headerCellColIndex = +((_a = c.getAttribute('id')) === null || _a === void 0 ? void 0 : _a.split('-')[5]);
|
317
319
|
const headerCellColspan = +c.getAttribute('colspan');
|
318
320
|
const colIndexIsEqual = cellColIndex === headerCellColIndex;
|
319
|
-
const cellColIndexIsWithinHeaderCellRange = headerCellColspan > 1 && (headerCellColIndex + headerCellColspan - 1 >= cellColIndex);
|
321
|
+
const cellColIndexIsWithinHeaderCellRange = headerCellColIndex < cellColIndex && headerCellColspan > 1 && (headerCellColIndex + headerCellColspan - 1 >= cellColIndex);
|
320
322
|
return colIndexIsEqual || cellColIndexIsWithinHeaderCellRange;
|
321
323
|
}, c => c.getAttribute('id'));
|
322
|
-
cell.setAttribute('aria-describedby', colHeaderCellsIds.join(' '));
|
324
|
+
colHeaderCellsIds.length && cell.setAttribute('aria-describedby', colHeaderCellsIds.join(' '));
|
323
325
|
});
|
324
326
|
};
|
325
327
|
/**
|
@@ -394,6 +396,31 @@ const swapItems = (arr, i1, i2) => {
|
|
394
396
|
arr[i1] = arr[i2];
|
395
397
|
arr[i2] = temp;
|
396
398
|
};
|
399
|
+
/**
|
400
|
+
* @hidden
|
401
|
+
*/
|
402
|
+
const isVisible = (el, container, offsetY, rtl) => {
|
403
|
+
const elTop = el.offsetTop;
|
404
|
+
const elBottom = elTop + el.clientHeight;
|
405
|
+
let rect;
|
406
|
+
let containerRect;
|
407
|
+
if (rtl) {
|
408
|
+
rect = el.getBoundingClientRect();
|
409
|
+
containerRect = container.getBoundingClientRect();
|
410
|
+
}
|
411
|
+
const elLeft = rtl ? rect.left : el.offsetLeft;
|
412
|
+
const elRight = rtl ? rect.right : elLeft + el.clientWidth;
|
413
|
+
const containerTop = container.scrollTop;
|
414
|
+
const containerBottom = containerTop + container.clientHeight;
|
415
|
+
const containerLeft = rtl ? containerRect.left : container.scrollLeft;
|
416
|
+
const containerRight = rtl ? containerRect.right : containerLeft + container.clientWidth;
|
417
|
+
const visibleY = elTop >= containerTop - offsetY && elBottom <= containerBottom - offsetY;
|
418
|
+
const visibleX = rtl ? elRight <= containerRight && elLeft >= containerLeft : elLeft >= containerLeft && elRight <= containerRight;
|
419
|
+
return {
|
420
|
+
visibleX,
|
421
|
+
visibleY
|
422
|
+
};
|
423
|
+
};
|
397
424
|
|
398
425
|
/**
|
399
426
|
* @hidden
|
@@ -3364,8 +3391,8 @@ const packageMetadata = {
|
|
3364
3391
|
name: '@progress/kendo-angular-pivotgrid',
|
3365
3392
|
productName: 'Kendo UI for Angular',
|
3366
3393
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
3367
|
-
publishDate:
|
3368
|
-
version: '16.6.0-develop.
|
3394
|
+
publishDate: 1722608728,
|
3395
|
+
version: '16.6.0-develop.11',
|
3369
3396
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
3370
3397
|
};
|
3371
3398
|
|
@@ -3516,6 +3543,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
3516
3543
|
}]
|
3517
3544
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
|
3518
3545
|
|
3546
|
+
/**
|
3547
|
+
* @hidden
|
3548
|
+
*/
|
3549
|
+
class ScrollableTable {
|
3550
|
+
constructor(element, handlers, options) {
|
3551
|
+
this.element = element;
|
3552
|
+
this.handlers = handlers;
|
3553
|
+
this.options = options;
|
3554
|
+
this.startRow = 0;
|
3555
|
+
this.startCol = 0;
|
3556
|
+
this.lastKnownScrollPosition = { top: 0, left: 0 };
|
3557
|
+
this.offsetFirst = 0;
|
3558
|
+
this.scrollHandler = (e) => {
|
3559
|
+
const verticalDir = this.element.scrollTop - this.lastKnownScrollPosition.top;
|
3560
|
+
const horizontalDir = Math.abs(this.element.scrollLeft) - this.lastKnownScrollPosition.left;
|
3561
|
+
if (this.options.rowVirtualization) {
|
3562
|
+
if (verticalDir > 0) {
|
3563
|
+
if (this.element.scrollTop > (this.renderedRows * this.options.itemHeight + this.offsetFirst - this.rect.height)) {
|
3564
|
+
this.startRow = Math.floor(this.element.scrollTop / this.options.itemHeight);
|
3565
|
+
this.rowVirtualizationUpdate();
|
3566
|
+
}
|
3567
|
+
}
|
3568
|
+
else {
|
3569
|
+
if (this.element.scrollTop <= this.offsetFirst) {
|
3570
|
+
this.startRow = Math.max(0, Math.ceil(this.element.scrollTop / this.options.itemHeight) - Math.ceil(this.options.renderedRows / 3));
|
3571
|
+
this.rowVirtualizationUpdate();
|
3572
|
+
}
|
3573
|
+
}
|
3574
|
+
}
|
3575
|
+
if (this.options.columnVirtualization) {
|
3576
|
+
if (horizontalDir > 0) {
|
3577
|
+
if (Math.abs(this.element.scrollLeft) - (Math.max(this.startCol - 1, 0) * (this.options.colWidth || 200)) > (this.options.colWidth || 200)) {
|
3578
|
+
this.startCol = Math.min(Math.max(Math.floor(Math.abs(this.element.scrollLeft) / this.options.itemWidth) - 1, 0), this.totalCols - this.renderedCols);
|
3579
|
+
this.handlers.onScroll();
|
3580
|
+
}
|
3581
|
+
}
|
3582
|
+
else {
|
3583
|
+
if (Math.abs(this.element.scrollLeft) <= (this.startCol + 1) * (this.options.colWidth || 200)) {
|
3584
|
+
this.startCol = Math.min(Math.max(Math.floor(Math.abs(this.element.scrollLeft) / this.options.itemWidth) - 1, 0), this.totalCols - this.renderedCols);
|
3585
|
+
this.handlers.onScroll();
|
3586
|
+
}
|
3587
|
+
}
|
3588
|
+
}
|
3589
|
+
this.lastKnownScrollPosition = {
|
3590
|
+
top: this.element.scrollTop,
|
3591
|
+
left: Math.abs(this.element.scrollLeft)
|
3592
|
+
};
|
3593
|
+
};
|
3594
|
+
this.scrollEndHandler = () => {
|
3595
|
+
this.handlers.onScrollEnd();
|
3596
|
+
};
|
3597
|
+
this.initialize();
|
3598
|
+
}
|
3599
|
+
onNewData(recalculateSize = false) {
|
3600
|
+
this.offsetFirst = this.startRow * this.options.itemHeight;
|
3601
|
+
this.renderedRows = Math.min(this.options.renderedRows || Math.ceil(this.visibleRows * 3), this.total);
|
3602
|
+
this.endRow = this.startRow + this.renderedRows;
|
3603
|
+
this.renderedCols = Math.min(this.options.renderedCols || Math.ceil(this.visibleCols * 1.3), this.totalCols);
|
3604
|
+
this.element.querySelector('table').style.transform = `translateY(${this.offsetFirst}px)`;
|
3605
|
+
recalculateSize && this.recalculateSize();
|
3606
|
+
}
|
3607
|
+
destroy() {
|
3608
|
+
this.element.removeEventListener('scroll', this.scrollHandler);
|
3609
|
+
this.element.removeEventListener('scrollend', this.scrollEndHandler);
|
3610
|
+
this.element.removeChild(this.stretcher);
|
3611
|
+
}
|
3612
|
+
initialize() {
|
3613
|
+
this.rtl = this.options.rtl;
|
3614
|
+
this.rect = this.element.getBoundingClientRect();
|
3615
|
+
// visible rows and cols
|
3616
|
+
this.visibleRows = Math.ceil(this.rect.height / this.options.itemHeight);
|
3617
|
+
this.visibleCols = Math.ceil(this.rect.width / this.options.itemWidth);
|
3618
|
+
// current totals
|
3619
|
+
this.total = this.options.total;
|
3620
|
+
this.totalCols = this.options.totalCols;
|
3621
|
+
const totalHeight = this.total * this.options.itemHeight;
|
3622
|
+
const totalWidth = this.totalCols * this.options.itemWidth;
|
3623
|
+
// "page" size (rows and cols)
|
3624
|
+
this.renderedRows = Math.min(this.options.renderedRows || Math.ceil(this.visibleRows * 3), this.total);
|
3625
|
+
this.renderedCols = Math.min(this.options.renderedCols || Math.ceil(this.visibleCols * 1.3), this.totalCols);
|
3626
|
+
// start and end row/col
|
3627
|
+
this.startRow = 0;
|
3628
|
+
this.startCol = 0;
|
3629
|
+
this.endRow = this.startRow + this.renderedRows;
|
3630
|
+
this.endCol = this.startCol + this.renderedCols;
|
3631
|
+
// element that ensures correct scrolling dimensions of the container
|
3632
|
+
this.stretcher = document.createElement('DIV');
|
3633
|
+
this.stretcher.style.height = `${totalHeight}px`;
|
3634
|
+
this.stretcher.style.width = `${totalWidth}px`;
|
3635
|
+
this.element.appendChild(this.stretcher);
|
3636
|
+
this.element.addEventListener('scroll', this.scrollHandler);
|
3637
|
+
this.element.addEventListener('scrollend', this.scrollEndHandler);
|
3638
|
+
}
|
3639
|
+
recalculateSize() {
|
3640
|
+
const totalHeight = this.total * this.options.itemHeight;
|
3641
|
+
const totalWidth = this.totalCols * this.options.itemWidth;
|
3642
|
+
this.stretcher.style.height = `${totalHeight}px`;
|
3643
|
+
this.stretcher.style.width = `${totalWidth}px`;
|
3644
|
+
this.rect = this.element.getBoundingClientRect();
|
3645
|
+
// visible rows and cols
|
3646
|
+
this.visibleRows = Math.ceil(this.rect.height / this.options.itemHeight);
|
3647
|
+
this.visibleCols = Math.ceil(this.rect.width / this.options.itemWidth);
|
3648
|
+
}
|
3649
|
+
rowVirtualizationUpdate() {
|
3650
|
+
this.endRow = Math.min(this.startRow + this.renderedRows, this.total);
|
3651
|
+
this.offsetFirst = this.startRow * this.options.itemHeight;
|
3652
|
+
this.element.querySelector('table').style.transform = `translateY(${this.offsetFirst}px)`;
|
3653
|
+
this.handlers.onScroll();
|
3654
|
+
}
|
3655
|
+
}
|
3656
|
+
|
3519
3657
|
/**
|
3520
3658
|
* @hidden
|
3521
3659
|
*/
|
@@ -3716,42 +3854,205 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
3716
3854
|
type: Input
|
3717
3855
|
}] } });
|
3718
3856
|
|
3857
|
+
/**
|
3858
|
+
* @hidden
|
3859
|
+
*/
|
3860
|
+
class PivotGridScrollService {
|
3861
|
+
constructor() {
|
3862
|
+
this.virtualScrolling = false;
|
3863
|
+
}
|
3864
|
+
}
|
3865
|
+
PivotGridScrollService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
3866
|
+
PivotGridScrollService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridScrollService });
|
3867
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridScrollService, decorators: [{
|
3868
|
+
type: Injectable
|
3869
|
+
}] });
|
3870
|
+
|
3719
3871
|
/**
|
3720
3872
|
* @hidden
|
3721
3873
|
*/
|
3722
3874
|
class PivotGridTableComponent {
|
3723
|
-
constructor(dataService) {
|
3875
|
+
constructor(host, dataService, localization, zone, scrollService) {
|
3876
|
+
this.host = host;
|
3724
3877
|
this.dataService = dataService;
|
3725
|
-
this.
|
3878
|
+
this.localization = localization;
|
3879
|
+
this.zone = zone;
|
3880
|
+
this.scrollService = scrollService;
|
3881
|
+
this.startRowIndex = 0;
|
3882
|
+
this.startColIndex = 0;
|
3883
|
+
this.rtl = false;
|
3884
|
+
this.subs = new Subscription();
|
3885
|
+
this.colsUpdateCallback = (cols) => {
|
3886
|
+
var _a, _b;
|
3887
|
+
this.renderedCols = Math.min(cols.length, (_a = this.scrollableSettings) === null || _a === void 0 ? void 0 : _a.columns);
|
3888
|
+
this.renderedCols && this.scrollable && (this.scrollable.totalCols = cols.length);
|
3889
|
+
(this.scrollableSettings && this.scrollableSettings.type !== 'row') && ((_b = this.scrollable) === null || _b === void 0 ? void 0 : _b.onNewData(true));
|
3890
|
+
this.headerItems = cols;
|
3891
|
+
isDocumentAvailable() && !this.scrollable && this.tableType === 'values' && (this.columnVirtualization || this.rowVirtualization) && this.initScrollable();
|
3892
|
+
};
|
3893
|
+
this.initScrollable = () => {
|
3894
|
+
this.scrollable = new ScrollableTable(this.host.nativeElement, {
|
3895
|
+
onScroll: () => {
|
3896
|
+
this.startRowIndex = this.scrollable.startRow;
|
3897
|
+
this.startColIndex = this.scrollable.startCol;
|
3898
|
+
this.renderedRows = this.rows.slice(this.startRowIndex, this.startRowIndex + this.scrollableSettings.rows);
|
3899
|
+
this.scrollable.renderedRows = this.renderedRows.length;
|
3900
|
+
this.scrollable.renderedCols = this.renderedCols;
|
3901
|
+
},
|
3902
|
+
onScrollEnd: () => {
|
3903
|
+
matchAriaAttributes(this.host.nativeElement.closest('.k-pivotgrid'));
|
3904
|
+
}
|
3905
|
+
}, {
|
3906
|
+
itemHeight: this.scrollableSettings.rowHeight,
|
3907
|
+
itemWidth: this.colWidth || 200,
|
3908
|
+
total: this.totalRows,
|
3909
|
+
totalCols: this.headerItems.length,
|
3910
|
+
renderedRows: this.scrollableSettings.rows,
|
3911
|
+
renderedCols: this.scrollableSettings.columns,
|
3912
|
+
columnVirtualization: this.columnVirtualization,
|
3913
|
+
rowVirtualization: this.rowVirtualization,
|
3914
|
+
rtl: this.rtl
|
3915
|
+
});
|
3916
|
+
};
|
3917
|
+
this.subs.add(this.localization.changes.subscribe(({ rtl }) => {
|
3918
|
+
this.rtl = rtl;
|
3919
|
+
this.scrollable && (this.scrollable.rtl = rtl);
|
3920
|
+
}));
|
3726
3921
|
}
|
3727
3922
|
get pivotGridId() {
|
3728
3923
|
return `kendo-pivotgrid-${this.dataService.pivotGridId}-`;
|
3729
3924
|
}
|
3925
|
+
get columnVirtualization() {
|
3926
|
+
var _a, _b;
|
3927
|
+
return ((_a = this.scrollableSettings) === null || _a === void 0 ? void 0 : _a.type) && ((_b = this.scrollableSettings) === null || _b === void 0 ? void 0 : _b.type) !== 'row';
|
3928
|
+
}
|
3929
|
+
get rowVirtualization() {
|
3930
|
+
var _a, _b;
|
3931
|
+
return ((_a = this.scrollableSettings) === null || _a === void 0 ? void 0 : _a.type) && ((_b = this.scrollableSettings) === null || _b === void 0 ? void 0 : _b.type) !== 'column';
|
3932
|
+
}
|
3730
3933
|
ngOnInit() {
|
3731
|
-
this.
|
3732
|
-
|
3733
|
-
this.
|
3734
|
-
this.
|
3934
|
+
this.subs.add(this.dataService[`${this.tableType}Rows`].subscribe(rows => {
|
3935
|
+
this.rows = rows;
|
3936
|
+
this.renderedRows = this.scrollableSettings ? rows.slice(this.startRowIndex, this.startRowIndex + this.scrollableSettings.rows) : rows;
|
3937
|
+
this.totalRows && this.totalRows !== rows.length && this.scrollable && (this.scrollable.total = rows.length);
|
3938
|
+
this.scrollable && this.scrollable.onNewData(this.totalRows && this.totalRows !== rows.length);
|
3939
|
+
this.totalRows = rows.length;
|
3940
|
+
}));
|
3941
|
+
this.subs.add(this.tableType === 'values' ?
|
3942
|
+
this.dataService.columnHeaderCols.subscribe(this.colsUpdateCallback) :
|
3943
|
+
this.dataService[`${this.tableType}Cols`].subscribe(this.colsUpdateCallback));
|
3944
|
+
}
|
3945
|
+
ngAfterViewInit() {
|
3946
|
+
if (isDocumentAvailable() && this.scrollService.virtualScrolling) {
|
3947
|
+
this.initScrollableKeyboardNavigation();
|
3948
|
+
}
|
3735
3949
|
}
|
3736
3950
|
ngOnDestroy() {
|
3737
|
-
|
3951
|
+
var _a;
|
3952
|
+
this.subs.unsubscribe();
|
3953
|
+
(_a = this.scrollable) === null || _a === void 0 ? void 0 : _a.destroy();
|
3954
|
+
}
|
3955
|
+
initScrollableKeyboardNavigation() {
|
3956
|
+
const pivotGrid = this.scrollService.pivotGrid;
|
3957
|
+
this.host.nativeElement.addEventListener('keydown', (e) => {
|
3958
|
+
if (this.tableType === 'values' && e.target.tagName === 'TD') {
|
3959
|
+
e.stopImmediatePropagation();
|
3960
|
+
e.preventDefault();
|
3961
|
+
if (e.keyCode === Keys.ArrowLeft) {
|
3962
|
+
const id = e.target.getAttribute('id');
|
3963
|
+
if (id.split('-')[5] === '1') {
|
3964
|
+
const target = document.querySelector(`tr[aria-owns*="${id}"]`);
|
3965
|
+
pivotGrid.navigation.focusElement(target.lastElementChild, e.target);
|
3966
|
+
}
|
3967
|
+
else {
|
3968
|
+
pivotGrid.navigation.focusElement(e.target.previousElementSibling, e.target);
|
3969
|
+
if (!isVisible(e.target.previousElementSibling, this.host.nativeElement, this.scrollable.offsetFirst, this.rtl).visibleX) {
|
3970
|
+
e.target.previousElementSibling.scrollIntoView({ behavior: 'auto', block: 'nearest', inline: 'start' });
|
3971
|
+
}
|
3972
|
+
}
|
3973
|
+
}
|
3974
|
+
else if (e.keyCode === Keys.ArrowRight) {
|
3975
|
+
const id = e.target.getAttribute('id');
|
3976
|
+
if (id.split('-')[5] !== this.headerItems.length.toString()) {
|
3977
|
+
pivotGrid.navigation.focusElement(e.target.nextElementSibling, e.target);
|
3978
|
+
if (!isVisible(e.target.nextElementSibling, this.host.nativeElement, this.scrollable.offsetFirst, this.rtl).visibleX) {
|
3979
|
+
e.target.nextElementSibling.scrollIntoView({ behavior: 'auto', block: 'nearest', inline: 'start' });
|
3980
|
+
}
|
3981
|
+
}
|
3982
|
+
}
|
3983
|
+
else if (e.keyCode === Keys.ArrowUp) {
|
3984
|
+
const id = e.target.getAttribute('id');
|
3985
|
+
if (id.split('-')[4] === '1') {
|
3986
|
+
const target = document.getElementById(e.target.getAttribute('aria-describedby').split(' ').pop());
|
3987
|
+
pivotGrid.navigation.focusElement(target, e.target);
|
3988
|
+
}
|
3989
|
+
else {
|
3990
|
+
const index = Array.from(e.target.parentElement.children).findIndex(el => el === e.target);
|
3991
|
+
const elementToFocus = e.target.parentElement.previousElementSibling.children[index];
|
3992
|
+
pivotGrid.navigation.focusElement(elementToFocus, e.target);
|
3993
|
+
if (!isVisible(elementToFocus, this.host.nativeElement, this.scrollable.offsetFirst, this.rtl).visibleY) {
|
3994
|
+
elementToFocus.scrollIntoView();
|
3995
|
+
}
|
3996
|
+
}
|
3997
|
+
}
|
3998
|
+
else if (e.keyCode === Keys.ArrowDown) {
|
3999
|
+
const id = e.target.getAttribute('id');
|
4000
|
+
if (id.split('-')[4] !== this.totalRows.toString()) {
|
4001
|
+
const index = Array.from(e.target.parentElement.children).findIndex(el => el === e.target);
|
4002
|
+
const elementToFocus = e.target.parentElement.nextElementSibling.children[index];
|
4003
|
+
pivotGrid.navigation.focusElement(elementToFocus, e.target);
|
4004
|
+
if (!isVisible(elementToFocus, this.host.nativeElement, this.scrollable.offsetFirst, this.rtl).visibleY) {
|
4005
|
+
elementToFocus.scrollIntoView(false);
|
4006
|
+
}
|
4007
|
+
}
|
4008
|
+
}
|
4009
|
+
}
|
4010
|
+
if (this.tableType === 'rowHeader' && e.target.tagName === 'TH' && e.keyCode === Keys.ArrowRight) {
|
4011
|
+
if (e.target.matches(':last-child')) {
|
4012
|
+
e.stopImmediatePropagation();
|
4013
|
+
e.preventDefault();
|
4014
|
+
const valuesContainer = this.host.nativeElement.nextElementSibling;
|
4015
|
+
valuesContainer.scrollLeft = this.rtl ? valuesContainer.scrollWidth : 0;
|
4016
|
+
this.zone.runOutsideAngular(() => setTimeout(() => {
|
4017
|
+
const elementToFocusId = e.target.parentElement.getAttribute('aria-owns').split(' ')[0];
|
4018
|
+
const elementToFocus = document.getElementById(elementToFocusId);
|
4019
|
+
pivotGrid.navigation.focusElement(elementToFocus, e.target);
|
4020
|
+
}));
|
4021
|
+
}
|
4022
|
+
}
|
4023
|
+
if (this.tableType === 'columnHeader' && e.target.tagName === 'TH' && e.keyCode === Keys.ArrowDown) {
|
4024
|
+
if (e.target.parentElement.matches(':last-child')) {
|
4025
|
+
e.stopImmediatePropagation();
|
4026
|
+
e.preventDefault();
|
4027
|
+
const valuesContainer = this.host.nativeElement.nextElementSibling.nextElementSibling;
|
4028
|
+
valuesContainer.scrollTop = 0;
|
4029
|
+
this.zone.runOutsideAngular(() => setTimeout(() => {
|
4030
|
+
const elementToFocus = valuesContainer.querySelector(`td[aria-describedby*="${e.target.getAttribute('id')}"]`);
|
4031
|
+
pivotGrid.navigation.focusElement(elementToFocus, e.target);
|
4032
|
+
}));
|
4033
|
+
}
|
4034
|
+
}
|
4035
|
+
}, true);
|
3738
4036
|
}
|
3739
4037
|
}
|
3740
|
-
PivotGridTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridTableComponent, deps: [{ token: PivotGridDataService }], target: i0.ɵɵFactoryTarget.Component });
|
3741
|
-
PivotGridTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PivotGridTableComponent, isStandalone: true, selector: "kendo-pivotgrid-table", inputs: { tableType: "tableType", colWidth: "colWidth", customCellTemplate: "customCellTemplate", valueCellTemplate: "valueCellTemplate", rowHeaderCellTemplate: "rowHeaderCellTemplate", columnHeaderCellTemplate: "columnHeaderCellTemplate" }, ngImport: i0, template: `
|
4038
|
+
PivotGridTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridTableComponent, deps: [{ token: i0.ElementRef }, { token: PivotGridDataService }, { token: i1$2.LocalizationService }, { token: i0.NgZone }, { token: PivotGridScrollService }], target: i0.ɵɵFactoryTarget.Component });
|
4039
|
+
PivotGridTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PivotGridTableComponent, isStandalone: true, selector: "kendo-pivotgrid-table", inputs: { tableType: "tableType", colWidth: "colWidth", customCellTemplate: "customCellTemplate", valueCellTemplate: "valueCellTemplate", rowHeaderCellTemplate: "rowHeaderCellTemplate", columnHeaderCellTemplate: "columnHeaderCellTemplate", scrollableSettings: "scrollableSettings" }, ngImport: i0, template: `
|
3742
4040
|
<table
|
3743
4041
|
class="k-pivotgrid-table"
|
3744
|
-
role="presentation"
|
4042
|
+
role="presentation"
|
4043
|
+
[ngStyle]="{float: this.tableType === 'values' ? this.rtl ? 'right' : 'left' : 'initial'}">
|
3745
4044
|
<colgroup>
|
4045
|
+
<col *ngIf="tableType === 'values' && columnVirtualization && startColIndex > 0" [style.width]="startColIndex * (colWidth >= 0 ? colWidth : 200) + 'px'"/>
|
3746
4046
|
<col
|
3747
|
-
*ngFor="let item of headerItems;"
|
4047
|
+
*ngFor="let item of (tableType === 'values' && columnVirtualization ? headerItems?.slice(0, renderedCols) : headerItems);"
|
3748
4048
|
[style.width]="tableType !== 'rowHeader' ? colWidth >= 0 ? colWidth + 'px' : '200px' : undefined" />
|
3749
4049
|
</colgroup>
|
3750
4050
|
<tbody class="k-pivotgrid-tbody" [attr.role]="tableType === 'values' ? 'none' : 'rowgroup'">
|
3751
|
-
<tr *ngFor="let row of rows; index as rowIndex"
|
4051
|
+
<tr *ngFor="let row of (tableType === 'values' && rowVirtualization ? renderedRows : rows); index as rowIndex"
|
3752
4052
|
class="k-pivotgrid-row"
|
3753
4053
|
[attr.role]="tableType === 'values' ? 'none' : 'row'">
|
3754
|
-
<
|
4054
|
+
<td *ngIf="tableType === 'values' && columnVirtualization && startColIndex > 0" class="k-pivotgrid-cell"></td>
|
4055
|
+
<ng-container *ngFor="let cell of (tableType === 'values' && columnVirtualization ? row.cells.slice(startColIndex, (startColIndex + renderedCols)) : row.cells); index as colIndex">
|
3755
4056
|
<th
|
3756
4057
|
*ngIf="cell && tableType !== 'values'"
|
3757
4058
|
[kendoPivotGridCell]="cell"
|
@@ -3759,8 +4060,8 @@ PivotGridTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
3759
4060
|
[rowHeaderCellTemplate]="rowHeaderCellTemplate"
|
3760
4061
|
[columnHeaderCellTemplate]="columnHeaderCellTemplate"
|
3761
4062
|
[tableType]="tableType"
|
3762
|
-
[colIndex]="colIndex"
|
3763
|
-
[rowIndex]="rowIndex"
|
4063
|
+
[colIndex]="colIndex + startColIndex"
|
4064
|
+
[rowIndex]="rowIndex + startRowIndex"
|
3764
4065
|
[attr.aria-expanded]="cell.hasChildren && cell.children.length ? 'true' : 'false'"
|
3765
4066
|
[attr.role]="tableType === 'columnHeader' ? 'columnheader' : tableType === 'rowHeader' ? 'rowheader' : 'none'"
|
3766
4067
|
[attr.id]="pivotGridId + (tableType === 'columnHeader' ? 'ch-' : 'rh-') + (rowIndex + 1) + '-' + (colIndex + 1)"></th>
|
@@ -3770,15 +4071,15 @@ PivotGridTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
3770
4071
|
[valueCellTemplate]="valueCellTemplate"
|
3771
4072
|
[kendoPivotGridCell]="cell"
|
3772
4073
|
tableType="values"
|
3773
|
-
[colIndex]="colIndex"
|
3774
|
-
[rowIndex]="rowIndex"
|
4074
|
+
[colIndex]="colIndex + startColIndex"
|
4075
|
+
[rowIndex]="rowIndex + startRowIndex"
|
3775
4076
|
role="gridcell"
|
3776
|
-
[attr.id]="pivotGridId + 'cell-' + (rowIndex + 1) + '-' + (colIndex + 1)"></td>
|
4077
|
+
[attr.id]="pivotGridId + 'cell-' + (rowIndex + startRowIndex + 1) + '-' + (colIndex + startColIndex + 1)"></td>
|
3777
4078
|
</ng-container>
|
3778
4079
|
</tr>
|
3779
4080
|
</tbody>
|
3780
4081
|
</table>
|
3781
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PivotGridCellDirective, selector: "[kendoPivotGridCell]", inputs: ["kendoPivotGridCell", "tableType", "rowIndex", "colIndex", "customCellTemplate", "valueCellTemplate", "rowHeaderCellTemplate", "columnHeaderCellTemplate"] }] });
|
4082
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PivotGridCellDirective, selector: "[kendoPivotGridCell]", inputs: ["kendoPivotGridCell", "tableType", "rowIndex", "colIndex", "customCellTemplate", "valueCellTemplate", "rowHeaderCellTemplate", "columnHeaderCellTemplate"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
3782
4083
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridTableComponent, decorators: [{
|
3783
4084
|
type: Component,
|
3784
4085
|
args: [{
|
@@ -3786,17 +4087,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
3786
4087
|
template: `
|
3787
4088
|
<table
|
3788
4089
|
class="k-pivotgrid-table"
|
3789
|
-
role="presentation"
|
4090
|
+
role="presentation"
|
4091
|
+
[ngStyle]="{float: this.tableType === 'values' ? this.rtl ? 'right' : 'left' : 'initial'}">
|
3790
4092
|
<colgroup>
|
4093
|
+
<col *ngIf="tableType === 'values' && columnVirtualization && startColIndex > 0" [style.width]="startColIndex * (colWidth >= 0 ? colWidth : 200) + 'px'"/>
|
3791
4094
|
<col
|
3792
|
-
*ngFor="let item of headerItems;"
|
4095
|
+
*ngFor="let item of (tableType === 'values' && columnVirtualization ? headerItems?.slice(0, renderedCols) : headerItems);"
|
3793
4096
|
[style.width]="tableType !== 'rowHeader' ? colWidth >= 0 ? colWidth + 'px' : '200px' : undefined" />
|
3794
4097
|
</colgroup>
|
3795
4098
|
<tbody class="k-pivotgrid-tbody" [attr.role]="tableType === 'values' ? 'none' : 'rowgroup'">
|
3796
|
-
<tr *ngFor="let row of rows; index as rowIndex"
|
4099
|
+
<tr *ngFor="let row of (tableType === 'values' && rowVirtualization ? renderedRows : rows); index as rowIndex"
|
3797
4100
|
class="k-pivotgrid-row"
|
3798
4101
|
[attr.role]="tableType === 'values' ? 'none' : 'row'">
|
3799
|
-
<
|
4102
|
+
<td *ngIf="tableType === 'values' && columnVirtualization && startColIndex > 0" class="k-pivotgrid-cell"></td>
|
4103
|
+
<ng-container *ngFor="let cell of (tableType === 'values' && columnVirtualization ? row.cells.slice(startColIndex, (startColIndex + renderedCols)) : row.cells); index as colIndex">
|
3800
4104
|
<th
|
3801
4105
|
*ngIf="cell && tableType !== 'values'"
|
3802
4106
|
[kendoPivotGridCell]="cell"
|
@@ -3804,8 +4108,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
3804
4108
|
[rowHeaderCellTemplate]="rowHeaderCellTemplate"
|
3805
4109
|
[columnHeaderCellTemplate]="columnHeaderCellTemplate"
|
3806
4110
|
[tableType]="tableType"
|
3807
|
-
[colIndex]="colIndex"
|
3808
|
-
[rowIndex]="rowIndex"
|
4111
|
+
[colIndex]="colIndex + startColIndex"
|
4112
|
+
[rowIndex]="rowIndex + startRowIndex"
|
3809
4113
|
[attr.aria-expanded]="cell.hasChildren && cell.children.length ? 'true' : 'false'"
|
3810
4114
|
[attr.role]="tableType === 'columnHeader' ? 'columnheader' : tableType === 'rowHeader' ? 'rowheader' : 'none'"
|
3811
4115
|
[attr.id]="pivotGridId + (tableType === 'columnHeader' ? 'ch-' : 'rh-') + (rowIndex + 1) + '-' + (colIndex + 1)"></th>
|
@@ -3815,19 +4119,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
3815
4119
|
[valueCellTemplate]="valueCellTemplate"
|
3816
4120
|
[kendoPivotGridCell]="cell"
|
3817
4121
|
tableType="values"
|
3818
|
-
[colIndex]="colIndex"
|
3819
|
-
[rowIndex]="rowIndex"
|
4122
|
+
[colIndex]="colIndex + startColIndex"
|
4123
|
+
[rowIndex]="rowIndex + startRowIndex"
|
3820
4124
|
role="gridcell"
|
3821
|
-
[attr.id]="pivotGridId + 'cell-' + (rowIndex + 1) + '-' + (colIndex + 1)"></td>
|
4125
|
+
[attr.id]="pivotGridId + 'cell-' + (rowIndex + startRowIndex + 1) + '-' + (colIndex + startColIndex + 1)"></td>
|
3822
4126
|
</ng-container>
|
3823
4127
|
</tr>
|
3824
4128
|
</tbody>
|
3825
4129
|
</table>
|
3826
4130
|
`,
|
3827
4131
|
standalone: true,
|
3828
|
-
imports: [NgFor, NgIf, PivotGridCellDirective]
|
4132
|
+
imports: [NgFor, NgIf, PivotGridCellDirective, NgStyle]
|
3829
4133
|
}]
|
3830
|
-
}], ctorParameters: function () { return [{ type: PivotGridDataService }]; }, propDecorators: { tableType: [{
|
4134
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: PivotGridDataService }, { type: i1$2.LocalizationService }, { type: i0.NgZone }, { type: PivotGridScrollService }]; }, propDecorators: { tableType: [{
|
3831
4135
|
type: Input
|
3832
4136
|
}], colWidth: [{
|
3833
4137
|
type: Input
|
@@ -3839,8 +4143,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
3839
4143
|
type: Input
|
3840
4144
|
}], columnHeaderCellTemplate: [{
|
3841
4145
|
type: Input
|
4146
|
+
}], scrollableSettings: [{
|
4147
|
+
type: Input
|
3842
4148
|
}] } });
|
3843
4149
|
|
4150
|
+
/**
|
4151
|
+
* @hidden
|
4152
|
+
*/
|
4153
|
+
const DEFAULT_VIRTUALIZATION_SETTINGS = {
|
4154
|
+
type: 'both',
|
4155
|
+
rowHeight: 37,
|
4156
|
+
rows: 50,
|
4157
|
+
columns: 10
|
4158
|
+
};
|
4159
|
+
/**
|
4160
|
+
* @hidden
|
4161
|
+
*/
|
4162
|
+
const normalizeVirtualSettings = (settings) => {
|
4163
|
+
if (settings === true) {
|
4164
|
+
return Object.assign({}, DEFAULT_VIRTUALIZATION_SETTINGS);
|
4165
|
+
}
|
4166
|
+
if (!settings) {
|
4167
|
+
return null;
|
4168
|
+
}
|
4169
|
+
return Object.assign(Object.assign({}, DEFAULT_VIRTUALIZATION_SETTINGS), settings);
|
4170
|
+
};
|
4171
|
+
|
3844
4172
|
const DEFAULT_LOADER_SETTINGS = {
|
3845
4173
|
type: 'converging-spinner',
|
3846
4174
|
themeColor: 'primary',
|
@@ -3854,12 +4182,13 @@ const DEFAULT_CONFIGURATOR_SETTINGS = {
|
|
3854
4182
|
* Represents the Kendo UI PivotGrid component for Angular.
|
3855
4183
|
*/
|
3856
4184
|
class PivotGridComponent {
|
3857
|
-
constructor(hostEl, zone, dataService, localization, renderer, _scrollbarWidthService) {
|
4185
|
+
constructor(hostEl, zone, dataService, localization, renderer, _scrollbarWidthService, scrollService) {
|
3858
4186
|
this.hostEl = hostEl;
|
3859
4187
|
this.zone = zone;
|
3860
4188
|
this.dataService = dataService;
|
3861
4189
|
this.localization = localization;
|
3862
4190
|
this.renderer = renderer;
|
4191
|
+
this.scrollService = scrollService;
|
3863
4192
|
this.hostClass = true;
|
3864
4193
|
/**
|
3865
4194
|
* Specify the width of the column header and data cells. Value is treated as pixels [(see example)]({% slug appearance_pivotgrid %}#toc-column-headers-width).
|
@@ -3879,6 +4208,7 @@ class PivotGridComponent {
|
|
3879
4208
|
this.gearSVGIcon = gearIcon;
|
3880
4209
|
this.resizeObservers = [];
|
3881
4210
|
this._loaderSettings = DEFAULT_LOADER_SETTINGS;
|
4211
|
+
this._virtualScrolling = normalizeVirtualSettings(false);
|
3882
4212
|
this.subs = new Subscription();
|
3883
4213
|
this.rtl = false;
|
3884
4214
|
this.resizeContainer = (axis, element) => {
|
@@ -3908,6 +4238,7 @@ class PivotGridComponent {
|
|
3908
4238
|
this.direction = this.rtl ? 'rtl' : 'ltr';
|
3909
4239
|
}));
|
3910
4240
|
dataService.wrapper = this.hostEl.nativeElement;
|
4241
|
+
this.scrollService.pivotGrid = this;
|
3911
4242
|
}
|
3912
4243
|
get rightPositionClass() {
|
3913
4244
|
var _a;
|
@@ -3948,6 +4279,18 @@ class PivotGridComponent {
|
|
3948
4279
|
get loadingText() {
|
3949
4280
|
return this.localization.get('loading');
|
3950
4281
|
}
|
4282
|
+
/**
|
4283
|
+
* Sets the virtualization options of the component. By default the virtual scrolling functionality is disabled.
|
4284
|
+
*
|
4285
|
+
* @default false
|
4286
|
+
*/
|
4287
|
+
set virtualScrolling(value) {
|
4288
|
+
this._virtualScrolling = normalizeVirtualSettings(value);
|
4289
|
+
this.scrollService.virtualScrolling = !!value;
|
4290
|
+
}
|
4291
|
+
get virtualScrolling() {
|
4292
|
+
return this._virtualScrolling;
|
4293
|
+
}
|
3951
4294
|
get configuratorSettings() {
|
3952
4295
|
return this.configurator && Object.assign({}, DEFAULT_CONFIGURATOR_SETTINGS, this.configurator);
|
3953
4296
|
}
|
@@ -4022,6 +4365,9 @@ class PivotGridComponent {
|
|
4022
4365
|
}
|
4023
4366
|
}
|
4024
4367
|
}
|
4368
|
+
/**
|
4369
|
+
* @hidden
|
4370
|
+
*/
|
4025
4371
|
initNavigation() {
|
4026
4372
|
this.stopNavigation();
|
4027
4373
|
this.navigation = new PivotGridNavigation({ tabIndex: 0 });
|
@@ -4062,15 +4408,16 @@ class PivotGridComponent {
|
|
4062
4408
|
}
|
4063
4409
|
}
|
4064
4410
|
}
|
4065
|
-
PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PivotGridDataService }, { token: i1$2.LocalizationService }, { token: i0.Renderer2 }, { token: i1$4.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
|
4066
|
-
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PivotGridComponent, isStandalone: true, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings", configurator: "configurator", columnHeadersWidth: "columnHeadersWidth", navigable: "navigable" }, host: { properties: { "class.k-d-flex": "this.hostClass", "class.k-pos-relative": "this.hostClass", "class.k-flex-row": "this.rightPositionClass", "class.k-flex-row-reverse": "this.leftPositionClass", "class.k-flex-column": "this.bottomPositionClass", "class.k-flex-column-reverse": "this.topPositionClass", "attr.dir": "this.dir" } }, providers: [
|
4411
|
+
PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PivotGridDataService }, { token: i1$2.LocalizationService }, { token: i0.Renderer2 }, { token: i1$4.ScrollbarWidthService }, { token: PivotGridScrollService }], target: i0.ɵɵFactoryTarget.Component });
|
4412
|
+
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PivotGridComponent, isStandalone: true, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings", configurator: "configurator", virtualScrolling: "virtualScrolling", columnHeadersWidth: "columnHeadersWidth", navigable: "navigable" }, host: { properties: { "class.k-d-flex": "this.hostClass", "class.k-pos-relative": "this.hostClass", "class.k-flex-row": "this.rightPositionClass", "class.k-flex-row-reverse": "this.leftPositionClass", "class.k-flex-column": "this.bottomPositionClass", "class.k-flex-column-reverse": "this.topPositionClass", "attr.dir": "this.dir" } }, providers: [
|
4067
4413
|
PivotGridDataService,
|
4068
4414
|
LocalizationService,
|
4069
4415
|
PivotLocalizationService,
|
4070
4416
|
{
|
4071
4417
|
provide: L10N_PREFIX,
|
4072
4418
|
useValue: 'kendo.pivotgrid'
|
4073
|
-
}
|
4419
|
+
},
|
4420
|
+
PivotGridScrollService
|
4074
4421
|
], queries: [{ propertyName: "customCellTemplate", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: "valueCellTemplate", first: true, predicate: ValueCellTemplateDirective, descendants: true }, { propertyName: "rowHeaderCellTemplate", first: true, predicate: RowHeaderCellTemplateDirective, descendants: true }, { propertyName: "columnHeaderCellTemplate", first: true, predicate: ColumnHeaderCellTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "colHeadersTable", first: true, predicate: ["colHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "rowHeadersTable", first: true, predicate: ["rowHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "valuesTable", first: true, predicate: ["valuesTable"], descendants: true, read: ElementRef }, { propertyName: "table", first: true, predicate: ["table"], descendants: true, read: ElementRef }, { propertyName: "configuratorWrapper", first: true, predicate: ["configurator"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: `
|
4075
4422
|
<ng-container kendoPivotGridLocalizedMessages
|
4076
4423
|
i18n-loading="kendo.pivotgrid.loading|The loading text"
|
@@ -4201,6 +4548,7 @@ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
4201
4548
|
[valueCellTemplate]="valueCellTemplate"
|
4202
4549
|
[colWidth]="columnHeadersWidth"
|
4203
4550
|
class="k-pivotgrid-values"
|
4551
|
+
[scrollableSettings]="virtualScrolling"
|
4204
4552
|
tableType="values"></kendo-pivotgrid-table>
|
4205
4553
|
|
4206
4554
|
<div *ngIf="loading" [style]="'position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);'">
|
@@ -4228,7 +4576,7 @@ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
4228
4576
|
<span>{{messageFor('configuratorButtonText')}}<kendo-icon-wrapper name="gear" innerCssClass="k-color-inherit" [svgIcon]="gearSVGIcon"></kendo-icon-wrapper>
|
4229
4577
|
</span>
|
4230
4578
|
</div>
|
4231
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoPivotGridLocalizedMessages]" }, { kind: "component", type: PivotGridTableComponent, selector: "kendo-pivotgrid-table", inputs: ["tableType", "colWidth", "customCellTemplate", "valueCellTemplate", "rowHeaderCellTemplate", "columnHeaderCellTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoaderComponent, selector: "kendo-loader", inputs: ["type", "themeColor", "size"] }, { kind: "component", type: PivotGridConfiguratorComponent, selector: "kendo-pivotgrid-configurator", inputs: ["orientation", "sort", "filter", "navigation"], outputs: ["close"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
|
4579
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoPivotGridLocalizedMessages]" }, { kind: "component", type: PivotGridTableComponent, selector: "kendo-pivotgrid-table", inputs: ["tableType", "colWidth", "customCellTemplate", "valueCellTemplate", "rowHeaderCellTemplate", "columnHeaderCellTemplate", "scrollableSettings"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoaderComponent, selector: "kendo-loader", inputs: ["type", "themeColor", "size"] }, { kind: "component", type: PivotGridConfiguratorComponent, selector: "kendo-pivotgrid-configurator", inputs: ["orientation", "sort", "filter", "navigation"], outputs: ["close"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
|
4232
4580
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridComponent, decorators: [{
|
4233
4581
|
type: Component,
|
4234
4582
|
args: [{
|
@@ -4240,7 +4588,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
4240
4588
|
{
|
4241
4589
|
provide: L10N_PREFIX,
|
4242
4590
|
useValue: 'kendo.pivotgrid'
|
4243
|
-
}
|
4591
|
+
},
|
4592
|
+
PivotGridScrollService
|
4244
4593
|
],
|
4245
4594
|
template: `
|
4246
4595
|
<ng-container kendoPivotGridLocalizedMessages
|
@@ -4372,6 +4721,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
4372
4721
|
[valueCellTemplate]="valueCellTemplate"
|
4373
4722
|
[colWidth]="columnHeadersWidth"
|
4374
4723
|
class="k-pivotgrid-values"
|
4724
|
+
[scrollableSettings]="virtualScrolling"
|
4375
4725
|
tableType="values"></kendo-pivotgrid-table>
|
4376
4726
|
|
4377
4727
|
<div *ngIf="loading" [style]="'position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);'">
|
@@ -4403,7 +4753,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
4403
4753
|
standalone: true,
|
4404
4754
|
imports: [LocalizedMessagesDirective, PivotGridTableComponent, NgIf, LoaderComponent, PivotGridConfiguratorComponent, IconWrapperComponent]
|
4405
4755
|
}]
|
4406
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: PivotGridDataService }, { type: i1$2.LocalizationService }, { type: i0.Renderer2 }, { type: i1$4.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
|
4756
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: PivotGridDataService }, { type: i1$2.LocalizationService }, { type: i0.Renderer2 }, { type: i1$4.ScrollbarWidthService }, { type: PivotGridScrollService }]; }, propDecorators: { hostClass: [{
|
4407
4757
|
type: HostBinding,
|
4408
4758
|
args: ['class.k-d-flex']
|
4409
4759
|
}, {
|
@@ -4455,6 +4805,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
4455
4805
|
type: Input
|
4456
4806
|
}], configurator: [{
|
4457
4807
|
type: Input
|
4808
|
+
}], virtualScrolling: [{
|
4809
|
+
type: Input
|
4458
4810
|
}], columnHeadersWidth: [{
|
4459
4811
|
type: Input
|
4460
4812
|
}], navigable: [{
|