@progress/kendo-angular-pivotgrid 16.6.0-develop.2 → 16.6.0-develop.4
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 +33 -7
- package/esm2020/rendering/pivotgrid-table.component.mjs +191 -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 +395 -44
- package/fesm2020/progress-kendo-angular-pivotgrid.mjs +389 -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 +27 -4
- package/schematics/ngAdd/index.js +2 -2
- package/util.d.ts +7 -0
- package/virtual/scroll.service.d.ts +13 -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: 1722517399,
|
3395
|
+
version: '16.6.0-develop.4',
|
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, pivotGrid, zone, scrollService) {
|
3876
|
+
this.host = host;
|
3724
3877
|
this.dataService = dataService;
|
3725
|
-
this.
|
3878
|
+
this.localization = localization;
|
3879
|
+
this.pivotGrid = pivotGrid;
|
3880
|
+
this.zone = zone;
|
3881
|
+
this.scrollService = scrollService;
|
3882
|
+
this.startRowIndex = 0;
|
3883
|
+
this.startColIndex = 0;
|
3884
|
+
this.rtl = false;
|
3885
|
+
this.subs = new Subscription();
|
3886
|
+
this.colsUpdateCallback = (cols) => {
|
3887
|
+
var _a, _b;
|
3888
|
+
this.renderedCols = Math.min(cols.length, (_a = this.scrollableSettings) === null || _a === void 0 ? void 0 : _a.columns);
|
3889
|
+
this.renderedCols && this.scrollable && (this.scrollable.totalCols = cols.length);
|
3890
|
+
(this.scrollableSettings && this.scrollableSettings.type !== 'row') && ((_b = this.scrollable) === null || _b === void 0 ? void 0 : _b.onNewData(true));
|
3891
|
+
this.headerItems = cols;
|
3892
|
+
isDocumentAvailable() && !this.scrollable && this.tableType === 'values' && (this.columnVirtualization || this.rowVirtualization) && this.initScrollable();
|
3893
|
+
};
|
3894
|
+
this.initScrollable = () => {
|
3895
|
+
this.scrollable = new ScrollableTable(this.host.nativeElement, {
|
3896
|
+
onScroll: () => {
|
3897
|
+
this.startRowIndex = this.scrollable.startRow;
|
3898
|
+
this.startColIndex = this.scrollable.startCol;
|
3899
|
+
this.renderedRows = this.rows.slice(this.startRowIndex, this.startRowIndex + this.scrollableSettings.rows);
|
3900
|
+
this.scrollable.renderedRows = this.renderedRows.length;
|
3901
|
+
this.scrollable.renderedCols = this.renderedCols;
|
3902
|
+
},
|
3903
|
+
onScrollEnd: () => {
|
3904
|
+
matchAriaAttributes(this.host.nativeElement.closest('.k-pivotgrid'));
|
3905
|
+
}
|
3906
|
+
}, {
|
3907
|
+
itemHeight: this.scrollableSettings.rowHeight,
|
3908
|
+
itemWidth: this.colWidth || 200,
|
3909
|
+
total: this.totalRows,
|
3910
|
+
totalCols: this.headerItems.length,
|
3911
|
+
renderedRows: this.scrollableSettings.rows,
|
3912
|
+
renderedCols: this.scrollableSettings.columns,
|
3913
|
+
columnVirtualization: this.columnVirtualization,
|
3914
|
+
rowVirtualization: this.rowVirtualization,
|
3915
|
+
rtl: this.rtl
|
3916
|
+
});
|
3917
|
+
};
|
3918
|
+
this.subs.add(this.localization.changes.subscribe(({ rtl }) => {
|
3919
|
+
this.rtl = rtl;
|
3920
|
+
this.scrollable && (this.scrollable.rtl = rtl);
|
3921
|
+
}));
|
3726
3922
|
}
|
3727
3923
|
get pivotGridId() {
|
3728
3924
|
return `kendo-pivotgrid-${this.dataService.pivotGridId}-`;
|
3729
3925
|
}
|
3926
|
+
get columnVirtualization() {
|
3927
|
+
var _a, _b;
|
3928
|
+
return ((_a = this.scrollableSettings) === null || _a === void 0 ? void 0 : _a.type) && ((_b = this.scrollableSettings) === null || _b === void 0 ? void 0 : _b.type) !== 'row';
|
3929
|
+
}
|
3930
|
+
get rowVirtualization() {
|
3931
|
+
var _a, _b;
|
3932
|
+
return ((_a = this.scrollableSettings) === null || _a === void 0 ? void 0 : _a.type) && ((_b = this.scrollableSettings) === null || _b === void 0 ? void 0 : _b.type) !== 'column';
|
3933
|
+
}
|
3730
3934
|
ngOnInit() {
|
3731
|
-
this.
|
3732
|
-
|
3733
|
-
this.
|
3734
|
-
this.
|
3935
|
+
this.subs.add(this.dataService[`${this.tableType}Rows`].subscribe(rows => {
|
3936
|
+
this.rows = rows;
|
3937
|
+
this.renderedRows = this.scrollableSettings ? rows.slice(this.startRowIndex, this.startRowIndex + this.scrollableSettings.rows) : rows;
|
3938
|
+
this.totalRows && this.totalRows !== rows.length && this.scrollable && (this.scrollable.total = rows.length);
|
3939
|
+
this.scrollable && this.scrollable.onNewData(this.totalRows && this.totalRows !== rows.length);
|
3940
|
+
this.totalRows = rows.length;
|
3941
|
+
}));
|
3942
|
+
this.subs.add(this.tableType === 'values' ?
|
3943
|
+
this.dataService.columnHeaderCols.subscribe(this.colsUpdateCallback) :
|
3944
|
+
this.dataService[`${this.tableType}Cols`].subscribe(this.colsUpdateCallback));
|
3945
|
+
}
|
3946
|
+
ngAfterViewInit() {
|
3947
|
+
if (isDocumentAvailable() && this.scrollService.virtualScrolling) {
|
3948
|
+
this.initScrollableKeyboardNavigation();
|
3949
|
+
}
|
3735
3950
|
}
|
3736
3951
|
ngOnDestroy() {
|
3737
|
-
|
3952
|
+
var _a;
|
3953
|
+
this.subs.unsubscribe();
|
3954
|
+
(_a = this.scrollable) === null || _a === void 0 ? void 0 : _a.destroy();
|
3955
|
+
}
|
3956
|
+
initScrollableKeyboardNavigation() {
|
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
|
+
this.pivotGrid.navigation.focusElement(target.lastElementChild, e.target);
|
3966
|
+
}
|
3967
|
+
else {
|
3968
|
+
this.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
|
+
this.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
|
+
this.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
|
+
this.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
|
+
this.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
|
+
this.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
|
+
this.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: PivotGridComponent }, { 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: PivotGridComponent }, { 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) => {
|
@@ -3948,6 +4278,18 @@ class PivotGridComponent {
|
|
3948
4278
|
get loadingText() {
|
3949
4279
|
return this.localization.get('loading');
|
3950
4280
|
}
|
4281
|
+
/**
|
4282
|
+
* Sets the virtualization options of the component. By default the virtual scrolling functionality is disabled.
|
4283
|
+
*
|
4284
|
+
* @default false
|
4285
|
+
*/
|
4286
|
+
set virtualScrolling(value) {
|
4287
|
+
this._virtualScrolling = normalizeVirtualSettings(value);
|
4288
|
+
this.scrollService.virtualScrolling = !!value;
|
4289
|
+
}
|
4290
|
+
get virtualScrolling() {
|
4291
|
+
return this._virtualScrolling;
|
4292
|
+
}
|
3951
4293
|
get configuratorSettings() {
|
3952
4294
|
return this.configurator && Object.assign({}, DEFAULT_CONFIGURATOR_SETTINGS, this.configurator);
|
3953
4295
|
}
|
@@ -4022,6 +4364,9 @@ class PivotGridComponent {
|
|
4022
4364
|
}
|
4023
4365
|
}
|
4024
4366
|
}
|
4367
|
+
/**
|
4368
|
+
* @hidden
|
4369
|
+
*/
|
4025
4370
|
initNavigation() {
|
4026
4371
|
this.stopNavigation();
|
4027
4372
|
this.navigation = new PivotGridNavigation({ tabIndex: 0 });
|
@@ -4062,15 +4407,16 @@ class PivotGridComponent {
|
|
4062
4407
|
}
|
4063
4408
|
}
|
4064
4409
|
}
|
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: [
|
4410
|
+
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 });
|
4411
|
+
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
4412
|
PivotGridDataService,
|
4068
4413
|
LocalizationService,
|
4069
4414
|
PivotLocalizationService,
|
4070
4415
|
{
|
4071
4416
|
provide: L10N_PREFIX,
|
4072
4417
|
useValue: 'kendo.pivotgrid'
|
4073
|
-
}
|
4418
|
+
},
|
4419
|
+
PivotGridScrollService
|
4074
4420
|
], 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
4421
|
<ng-container kendoPivotGridLocalizedMessages
|
4076
4422
|
i18n-loading="kendo.pivotgrid.loading|The loading text"
|
@@ -4201,6 +4547,7 @@ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
4201
4547
|
[valueCellTemplate]="valueCellTemplate"
|
4202
4548
|
[colWidth]="columnHeadersWidth"
|
4203
4549
|
class="k-pivotgrid-values"
|
4550
|
+
[scrollableSettings]="virtualScrolling"
|
4204
4551
|
tableType="values"></kendo-pivotgrid-table>
|
4205
4552
|
|
4206
4553
|
<div *ngIf="loading" [style]="'position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);'">
|
@@ -4228,7 +4575,7 @@ PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
4228
4575
|
<span>{{messageFor('configuratorButtonText')}}<kendo-icon-wrapper name="gear" innerCssClass="k-color-inherit" [svgIcon]="gearSVGIcon"></kendo-icon-wrapper>
|
4229
4576
|
</span>
|
4230
4577
|
</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"] }] });
|
4578
|
+
`, 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
4579
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PivotGridComponent, decorators: [{
|
4233
4580
|
type: Component,
|
4234
4581
|
args: [{
|
@@ -4240,7 +4587,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
4240
4587
|
{
|
4241
4588
|
provide: L10N_PREFIX,
|
4242
4589
|
useValue: 'kendo.pivotgrid'
|
4243
|
-
}
|
4590
|
+
},
|
4591
|
+
PivotGridScrollService
|
4244
4592
|
],
|
4245
4593
|
template: `
|
4246
4594
|
<ng-container kendoPivotGridLocalizedMessages
|
@@ -4372,6 +4720,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
4372
4720
|
[valueCellTemplate]="valueCellTemplate"
|
4373
4721
|
[colWidth]="columnHeadersWidth"
|
4374
4722
|
class="k-pivotgrid-values"
|
4723
|
+
[scrollableSettings]="virtualScrolling"
|
4375
4724
|
tableType="values"></kendo-pivotgrid-table>
|
4376
4725
|
|
4377
4726
|
<div *ngIf="loading" [style]="'position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);'">
|
@@ -4403,7 +4752,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
4403
4752
|
standalone: true,
|
4404
4753
|
imports: [LocalizedMessagesDirective, PivotGridTableComponent, NgIf, LoaderComponent, PivotGridConfiguratorComponent, IconWrapperComponent]
|
4405
4754
|
}]
|
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: [{
|
4755
|
+
}], 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
4756
|
type: HostBinding,
|
4408
4757
|
args: ['class.k-d-flex']
|
4409
4758
|
}, {
|
@@ -4455,6 +4804,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
4455
4804
|
type: Input
|
4456
4805
|
}], configurator: [{
|
4457
4806
|
type: Input
|
4807
|
+
}], virtualScrolling: [{
|
4808
|
+
type: Input
|
4458
4809
|
}], columnHeadersWidth: [{
|
4459
4810
|
type: Input
|
4460
4811
|
}], navigable: [{
|