@progress/kendo-angular-pivotgrid 0.1.3-dev.202205121546 → 0.1.4-dev.202205160727
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/bundles/kendo-angular-pivotgrid.umd.js +1 -1
- package/esm2015/data-binding/pivotgrid-data.service.js +1 -1
- package/esm2015/main.js +1 -1
- package/esm2015/package-metadata.js +1 -1
- package/esm2015/pivotgrid.component.js +41 -9
- package/esm2015/rendering/pivotgrid-cell.directive.js +1 -1
- package/esm2015/util.js +66 -0
- package/fesm2015/kendo-angular-pivotgrid.js +107 -13
- package/main.d.ts +1 -1
- package/package.json +1 -1
- package/pivotgrid.component.d.ts +6 -2
- package/util.d.ts +26 -0
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@progress/kendo-licensing"),require("@progress/kendo-angular-common"),require("@progress/kendo-pivotgrid-common"),require("rxjs"),require("@angular/common"),require("@progress/kendo-angular-indicators"),require("@progress/kendo-angular-l10n")):"function"==typeof define&&define.amd?define("KendoAngularPivotgrid",["exports","@angular/core","@progress/kendo-licensing","@progress/kendo-angular-common","@progress/kendo-pivotgrid-common","rxjs","@angular/common","@progress/kendo-angular-indicators","@progress/kendo-angular-l10n"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoAngularPivotgrid={},e.ng.core,e.KendoLicensing,e.KendoAngularCommon,e.KendoPivotgridCommon,e.rxjs,e.ng.common,e.KendoAngularIndicators,e.KendoAngularL10N)}(this,function(e,t,i,n,s,a,o,r,l){"use strict";function d(n){if(n&&n.__esModule)return n;var o=Object.create(null);return n&&Object.keys(n).forEach(function(e){var t;"default"!==e&&(t=Object.getOwnPropertyDescriptor(n,e),Object.defineProperty(o,e,t.get?t:{enumerable:!0,get:function(){return n[e]}}))}),o.default=n,Object.freeze(o)}var c=d(t),p=d(n),g=d(o),u=d(r),V={name:"@progress/kendo-angular-pivotgrid",productName:"Kendo UI for Angular",productCodes:["KENDOUIANGULAR","KENDOUICOMPLETE"],publishDate:1652370365,version:"",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"},v=function(e,t){return(v=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function m(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}v(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}Object.create;function h(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,r,i=n.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(o=i.next()).done;)a.push(o.value)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return a}function y(e,t,n){if(n||2===arguments.length)for(var o,r=0,i=t.length;r<i;r++)!o&&r in t||((o=o||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}Object.create;b.prototype.updateRowsAndCols=function(){var e=s.toTree((this.rows||[]).slice()),e=h(s.toRows(e),4),t=e[0],n=e[1],o=e[2],e=e[3],r=s.toTree((this.columns||[]).slice()),r=h(s.toColumns(r),3),i=r[0],a=r[1],r=r[2];this.columnHeaderLeaves=a,this.columnHeaderCols.next(new Array(r).fill({})),this.columnHeaderRows.next(i),this.rowHeaderLeaves=n,this.rowHeaderCols.next(new Array(e).fill({})),this.rowHeaderRows.next(t),this.valuesRows.next(s.toData((this.normalizedData||[]).slice(),a,n,r,o))};var f=b;function b(){this.expandedStateChange=new t.EventEmitter,this.columnHeaderRows=new a.BehaviorSubject([]),this.columnHeaderCols=new a.BehaviorSubject([]),this.rowHeaderCols=new a.BehaviorSubject([]),this.rowHeaderRows=new a.BehaviorSubject([]),this.valuesRows=new a.BehaviorSubject([]),this.loading=new a.BehaviorSubject(!1)}f.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:f,deps:[],target:c.ɵɵFactoryTarget.Injectable}),f.ɵprov=c.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:f}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:f,decorators:[{type:t.Injectable}],propDecorators:{expandedStateChange:[{type:t.Output}]}});Object.defineProperty(I.prototype,"expanded",{get:function(){var e;return(null==(e=this.kendoPivotGridCell)?void 0:e.hasChildren)&&this.kendoPivotGridCell.children.length},enumerable:!1,configurable:!0}),I.prototype.ngOnInit=function(){var e,t=this.hostEl.nativeElement,n=(this.renderer.setAttribute(t,"rowspan",this.kendoPivotGridCell.rowSpan||1),this.renderer.setAttribute(t,"colspan",this.kendoPivotGridCell.colSpan||1),{"k-pivotgrid-header-total":this.kendoPivotGridCell.total||"values"===this.tableType&&(this.dataService.rowHeaderLeaves[this.rowIndex].total||this.dataService.columnHeaderLeaves[this.colIndex].total),"k-pivotgrid-header-root":0===this.kendoPivotGridCell.levelNum,"k-pivotgrid-expanded":this.kendoPivotGridCell.hasChildren&&this.kendoPivotGridCell.children.length,"k-first":1===this.colIndex});for(e in n)n[e]&&this.renderer.addClass(t,e)};var k=I;function I(e,t,n){var o=this;this.hostEl=e,this.renderer=t,this.dataService=n,this.cellClass=!0,this.handleClick=function(){o.dataService.expandedStateChange.emit({action:o.expanded?"collapse":"expand",cell:o.kendoPivotGridCell,tableType:o.tableType})}}k.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:k,deps:[{token:c.ElementRef},{token:c.Renderer2},{token:f}],target:c.ɵɵFactoryTarget.Component}),k.ɵcmp=c.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:k,selector:"[kendoPivotGridCell]",inputs:{kendoPivotGridCell:"kendoPivotGridCell",tableType:"tableType",rowIndex:"rowIndex",colIndex:"colIndex"},host:{properties:{"class.k-pivotgrid-cell":"this.cellClass"}},ngImport:c,template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n [kendoEventsOutsideAngular]="{\n click: handleClick\n }"\n [ngClass]="{\n \'k-i-arrow-chevron-up\': expanded,\n \'k-i-arrow-chevron-down\': !expanded\n }"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}',isInline:!0,directives:[{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{type:p.EventsOutsideAngularDirective,selector:"[kendoEventsOutsideAngular]",inputs:["kendoEventsOutsideAngular","scope"]},{type:g.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]}]}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:k,decorators:[{type:t.Component,args:[{selector:"[kendoPivotGridCell]",template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n [kendoEventsOutsideAngular]="{\n click: handleClick\n }"\n [ngClass]="{\n \'k-i-arrow-chevron-up\': expanded,\n \'k-i-arrow-chevron-down\': !expanded\n }"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}'}]}],ctorParameters:function(){return[{type:c.ElementRef},{type:c.Renderer2},{type:f}]},propDecorators:{cellClass:[{type:t.HostBinding,args:["class.k-pivotgrid-cell"]}],kendoPivotGridCell:[{type:t.Input}],tableType:[{type:t.Input}],rowIndex:[{type:t.Input}],colIndex:[{type:t.Input}]}});C.prototype.ngOnInit=function(){var t=this;this.dataChangeSubs.add(this.dataService[this.tableType+"Rows"].subscribe(function(e){return t.rows=e})),this.dataChangeSubs.add("values"===this.tableType?this.dataService.columnHeaderCols.subscribe(function(e){return t.headerItems=e}):this.dataService[this.tableType+"Cols"].subscribe(function(e){return t.headerItems=e}))},C.prototype.ngOnDestroy=function(){this.dataChangeSubs.unsubscribe()};var x=C;function C(e){this.dataService=e,this.dataChangeSubs=new a.Subscription}x.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:x,deps:[{token:f}],target:c.ɵɵFactoryTarget.Component}),x.ɵcmp=c.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:x,selector:"kendo-pivotgrid-table",inputs:{tableType:"tableType"},ngImport:c,template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col *ngFor="let item of headerItems;" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row">\n <ng-container *ngFor="let cell of row.cells; index as colIndex">\n <th\n *ngIf="cell && tableType !== \'values\'" \n [kendoPivotGridCell]="cell"\n [tableType]="tableType"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n ',isInline:!0,components:[{type:k,selector:"[kendoPivotGridCell]",inputs:["kendoPivotGridCell","tableType","rowIndex","colIndex"]}],directives:[{type:g.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:x,decorators:[{type:t.Component,args:[{selector:"kendo-pivotgrid-table",template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col *ngFor="let item of headerItems;" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row">\n <ng-container *ngFor="let cell of row.cells; index as colIndex">\n <th\n *ngIf="cell && tableType !== \'values\'" \n [kendoPivotGridCell]="cell"\n [tableType]="tableType"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n '}]}],ctorParameters:function(){return[{type:f}]},propDecorators:{tableType:[{type:t.Input}]}});var w={type:"converging-spinner",themeColor:"primary",size:"large"},S=(Object.defineProperty(A.prototype,"loaderSettings",{get:function(){return this._loaderSettings},set:function(e){this._loaderSettings=Object.assign({},w,e)},enumerable:!1,configurable:!0}),A.prototype.ngAfterViewInit=function(){var r=this;n.isDocumentAvailable()&&this.zone.runOutsideAngular(function(){var e=document.querySelector(".k-pivotgrid-row-headers .k-pivotgrid-table"),t=new ResizeObserver(function(){return r.resizeContainer("Columns",e)}),n=(t.observe(e),document.querySelector(".k-pivotgrid-column-headers .k-pivotgrid-table")),o=new ResizeObserver(function(){return r.resizeContainer("Rows",n)});o.observe(n),r.resizeObservers=[t,o]})},A.prototype.ngAfterContentInit=function(){var t=this;this.loadingSubscription.add(this.dataService.loading.subscribe(function(e){return t.loading=e}))},A.prototype.ngOnDestroy=function(){this.resizeObservers.forEach(function(e){return e.disconnect()}),this.loadingSubscription.unsubscribe()},A);function A(e,t,n,o){var r=this;this.hostEl=e,this.zone=t,this.dataService=n,this.hostClass=!0,this.resizeObservers=[],this._loaderSettings=w,this.loadingSubscription=new a.Subscription,this.resizeContainer=function(e,t){var n=r.hostEl.nativeElement,o="Rows"===e?"offsetHeight":"offsetWidth";n.style["gridTemplate"+e]="",n.style["gridTemplate"+e]=t[o]+"px 1fr"},i.validatePackage(V)}S.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:S,deps:[{token:c.ElementRef},{token:c.NgZone},{token:f},{token:p.ScrollbarWidthService}],target:c.ɵɵFactoryTarget.Component}),S.ɵcmp=c.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:S,selector:"kendo-pivotgrid",inputs:{loaderSettings:"loaderSettings"},host:{properties:{"class.k-pivotgrid":"this.hostClass"}},providers:[f],ngImport:c,template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n class="k-pivotgrid-column-headers"\n tableType="columnHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n class="k-pivotgrid-row-headers"\n tableType="rowHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n class="k-pivotgrid-values"\n tableType="values"></kendo-pivotgrid-table>\n\n <div *ngIf="loading" class="k-loader">\n <kendo-loader\n [type]="loaderSettings?.type"\n [themeColor]="loaderSettings?.themeColor"\n [size]="loaderSettings?.size"\n >\n </kendo-loader>\n </div>\n ',isInline:!0,styles:["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "],components:[{type:x,selector:"kendo-pivotgrid-table",inputs:["tableType"]},{type:u.LoaderComponent,selector:"kendo-loader",inputs:["type","themeColor","size"]}],directives:[{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:S,decorators:[{type:t.Component,args:[{selector:"kendo-pivotgrid",providers:[f],template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n class="k-pivotgrid-column-headers"\n tableType="columnHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n class="k-pivotgrid-row-headers"\n tableType="rowHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n class="k-pivotgrid-values"\n tableType="values"></kendo-pivotgrid-table>\n\n <div *ngIf="loading" class="k-loader">\n <kendo-loader\n [type]="loaderSettings?.type"\n [themeColor]="loaderSettings?.themeColor"\n [size]="loaderSettings?.size"\n >\n </kendo-loader>\n </div>\n ',styles:["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "]}]}],ctorParameters:function(){return[{type:c.ElementRef},{type:c.NgZone},{type:f},{type:p.ScrollbarWidthService}]},propDecorators:{hostClass:[{type:t.HostBinding,args:["class.k-pivotgrid"]}],loaderSettings:[{type:t.Input}]}});P.prototype.ngOnInit=function(){var o=this;this.loadData(),this.expandedStateSub=this.dataService.expandedStateChange.subscribe(function(n){o.zone.run(function(){var e="columnHeader"===n.tableType,t=e?"columnAxes":"rowAxes",e=s.toTree((e?o.dataService.columns:o.dataService.rows||[]).slice());o.updateHeaders(t,e,n.cell.path)})})},P.prototype.ngOnDestroy=function(){this.expandedStateSub.unsubscribe()},P.prototype.updateDataServiceFields=function(){this.dataService.normalizedData=this.dataState.data,this.dataService.rows=this.dataState.rows,this.dataService.columns=this.dataState.columns,this.dataService.updateRowsAndCols()},P.prototype.updateHeaders=function(e,t,n){n={type:s.HEADERS_ACTION.toggle,payload:n},n=s.headersReducer(this[e].slice(),Object.assign(Object.assign({},n),{tree:t}));this[e]=n,this.loadData()};u=P;function P(e,t){this.dataService=e,this.zone=t,this.columnAxes=[],this.rowAxes=[],this.measureAxes=[],this.expandedStateSub=new a.Subscription}u.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:u,deps:[{token:f},{token:c.NgZone}],target:c.ɵɵFactoryTarget.Directive}),u.ɵdir=c.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"kendo-base-binding-directive",inputs:{columnAxes:"columnAxes",rowAxes:"rowAxes",measureAxes:"measureAxes"},ngImport:c}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:u,decorators:[{type:t.Directive,args:[{selector:"kendo-base-binding-directive"}]}],ctorParameters:function(){return[{type:f},{type:c.NgZone}]},propDecorators:{columnAxes:[{type:t.Input}],rowAxes:[{type:t.Input}],measureAxes:[{type:t.Input}]}});var D,O={dataField:"aggregate",columnsData:"columns"},g=(m(T,D=u),T.prototype.ngOnChanges=function(e){n.anyChanged(["data","dimensions","columnAxes","rowAxes","measureAxes","measures"],e)&&this.loadData()},T.prototype.loadData=function(){var e=this,t=this.getRootAxes(this.columnAxes),n=this.getRootAxes(this.rowAxes),t=t.split("&").map(this.createAxisSettings),n=n.split("&").map(this.createAxisSettings),o=this.measureAxes.map(function(t){return e.measures.find(function(e){return String(e.name)===String(t.name)})}).filter(Boolean),r=s.createDataTree(this.data,n,t,o,O);this.dataState=s.createLocalDataState({dataTree:r,rowSettings:n,columnSettings:t,rowAxes:this.rowAxes,columnAxes:this.columnAxes,measures:o,sort:[],fields:O}),this.updateDataServiceFields()},T.prototype.getRootAxes=function(e){return Array.from(s.rootFields(e).keys()).join("&")},T);function T(e,t){var n=D.call(this,e,t)||this;return n.createAxisSettings=function(e){return Object.assign({key:e},n.dimensions[e])},n}g.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:g,deps:[{token:f},{token:c.NgZone}],target:c.ɵɵFactoryTarget.Directive}),g.ɵdir=c.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:g,selector:"[kendoPivotLocalBinding]",inputs:{data:["kendoPivotLocalBinding","data"],dimensions:"dimensions",measures:"measures"},exportAs:["kendoPivotLocalBinding"],usesInheritance:!0,usesOnChanges:!0,ngImport:c}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:g,decorators:[{type:t.Directive,args:[{selector:"[kendoPivotLocalBinding]",exportAs:"kendoPivotLocalBinding"}]}],ctorParameters:function(){return[{type:f},{type:c.NgZone}]},propDecorators:{data:[{type:t.Input,args:["kendoPivotLocalBinding"]}],dimensions:[{type:t.Input}],measures:[{type:t.Input}]}});m(F,j=u),F.prototype.ngOnChanges=function(e){n.anyChanged(["url","cube","catalog","columnAxes","rowAxes","measureAxes"],e)&&this.loadData()},F.prototype.loadData=function(){var t=this,e=(this.dataService.loading.next(!0),{connection:{catalog:this.catalog,cube:this.cube},columnAxes:this.columnAxes,rowAxes:this.rowAxes,measureAxes:this.measureAxes});s.fetchData({url:this.url},JSON.parse(JSON.stringify(e))).then(s.createDataState).then(function(e){t.dataState=e,t.updateDataServiceFields(),t.dataService.loading.next(!1)})};var j,u=F;function F(e,t){return j.call(this,e,t)||this}u.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:u,deps:[{token:f},{token:c.NgZone}],target:c.ɵɵFactoryTarget.Directive}),u.ɵdir=c.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"[kendoPivotOLAPBinding]",inputs:{url:"url",cube:"cube",catalog:"catalog"},exportAs:["kendoPivotOLAPBinding"],usesInheritance:!0,usesOnChanges:!0,ngImport:c}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:u,decorators:[{type:t.Directive,args:[{selector:"[kendoPivotOLAPBinding]",exportAs:"kendoPivotOLAPBinding"}]}],ctorParameters:function(){return[{type:f},{type:c.NgZone}]},propDecorators:{url:[{type:t.Input}],cube:[{type:t.Input}],catalog:[{type:t.Input}]}});var G=[o.CommonModule,n.EventsModule,r.IndicatorsModule],E=[S,x,k,g,u],R=function(){};R.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:R,deps:[],target:c.ɵɵFactoryTarget.NgModule}),R.ɵmod=c.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:R,declarations:[S,x,k,g,u],imports:[o.CommonModule,n.EventsModule,r.IndicatorsModule],exports:[S,x,k,g,u]}),R.ɵinj=c.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:R,providers:[{provide:l.L10N_PREFIX,useValue:"kendo.pivotgrid"}],imports:[y([],h(G))]}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:R,decorators:[{type:t.NgModule,args:[{imports:y([],h(G)),declarations:y([],h(E)),exports:y([],h(E)),providers:[{provide:l.L10N_PREFIX,useValue:"kendo.pivotgrid"}]}]}]}),Object.defineProperty(e,"averageAggregate",{enumerable:!0,get:function(){return s.averageAggregate}}),Object.defineProperty(e,"maxAggregate",{enumerable:!0,get:function(){return s.maxAggregate}}),Object.defineProperty(e,"minAggregate",{enumerable:!0,get:function(){return s.minAggregate}}),Object.defineProperty(e,"sumAggregate",{enumerable:!0,get:function(){return s.sumAggregate}}),e.PivotGridCellDirective=k,e.PivotGridComponent=S,e.PivotGridModule=R,e.PivotGridTableComponent=x,e.PivotLocalBindingDirective=g,e.PivotOLAPBindingDirective=u,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
5
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@progress/kendo-licensing"),require("@progress/kendo-angular-common"),require("@progress/kendo-pivotgrid-common"),require("rxjs"),require("@angular/common"),require("@progress/kendo-angular-indicators"),require("@progress/kendo-angular-l10n")):"function"==typeof define&&define.amd?define("KendoAngularPivotgrid",["exports","@angular/core","@progress/kendo-licensing","@progress/kendo-angular-common","@progress/kendo-pivotgrid-common","rxjs","@angular/common","@progress/kendo-angular-indicators","@progress/kendo-angular-l10n"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoAngularPivotgrid={},e.ng.core,e.KendoLicensing,e.KendoAngularCommon,e.KendoPivotgridCommon,e.rxjs,e.ng.common,e.KendoAngularIndicators,e.KendoAngularL10N)}(this,function(t,e,G,n,s,a,o,r,i){"use strict";function l(n){if(n&&n.__esModule)return n;var o=Object.create(null);return n&&Object.keys(n).forEach(function(e){var t;"default"!==e&&(t=Object.getOwnPropertyDescriptor(n,e),Object.defineProperty(o,e,t.get?t:{enumerable:!0,get:function(){return n[e]}}))}),o.default=n,Object.freeze(o)}var d=l(e),c=l(n),p=l(o),u=l(r),V={name:"@progress/kendo-angular-pivotgrid",productName:"Kendo UI for Angular",productCodes:["KENDOUIANGULAR","KENDOUICOMPLETE"],publishDate:1652686020,version:"",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"},g=function(e,t){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function v(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}g(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}Object.create;function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,r,a=n.call(e),i=[];try{for(;(void 0===t||0<t--)&&!(o=a.next()).done;)i.push(o.value)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return i}function h(e,t,n){if(n||2===arguments.length)for(var o,r=0,a=t.length;r<a;r++)!o&&r in t||((o=o||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}Object.create;f.prototype.updateRowsAndCols=function(){var e=s.toTree((this.rows||[]).slice()),e=m(s.toRows(e),4),t=e[0],n=e[1],o=e[2],e=e[3],r=s.toTree((this.columns||[]).slice()),r=m(s.toColumns(r),3),a=r[0],i=r[1],r=r[2];this.columnHeaderLeaves=i,this.columnHeaderCols.next(i),this.columnHeaderRows.next(a),this.rowHeaderLeaves=n,this.rowHeaderCols.next(new Array(e).fill({})),this.rowHeaderRows.next(t),this.valuesRows.next(s.toData((this.normalizedData||[]).slice(),i,n,r,o))};var y=f;function f(){this.expandedStateChange=new e.EventEmitter,this.columnHeaderRows=new a.BehaviorSubject([]),this.columnHeaderCols=new a.BehaviorSubject([]),this.rowHeaderCols=new a.BehaviorSubject([]),this.rowHeaderRows=new a.BehaviorSubject([]),this.valuesRows=new a.BehaviorSubject([]),this.loading=new a.BehaviorSubject(!1)}y.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:y,deps:[],target:d.ɵɵFactoryTarget.Injectable}),y.ɵprov=d.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:y}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:y,decorators:[{type:e.Injectable}],propDecorators:{expandedStateChange:[{type:e.Output}]}});function b(e,t,n,o){(e="Y"===o?-k(e,o):k(e,o))&&(t[0][n]=t[1][n]+=e)}var k=function(e,t){var n=e["wheelDelta"+t];return e.wheelDelta&&(void 0===n||n)?e.wheelDelta:e.detail&&e.axis===e["X"===t?"HORIZONTAL_AXIS":"VERTICAL_AXIS"]?10*-e.detail:0},I=(Object.defineProperty(C.prototype,"expanded",{get:function(){var e;return(null==(e=this.kendoPivotGridCell)?void 0:e.hasChildren)&&this.kendoPivotGridCell.children.length},enumerable:!1,configurable:!0}),C.prototype.ngOnInit=function(){var e,t=this.hostEl.nativeElement,n=(this.renderer.setAttribute(t,"rowspan",this.kendoPivotGridCell.rowSpan||1),this.renderer.setAttribute(t,"colspan",this.kendoPivotGridCell.colSpan||1),{"k-pivotgrid-header-total":this.kendoPivotGridCell.total||"values"===this.tableType&&(this.dataService.rowHeaderLeaves[this.rowIndex].total||this.dataService.columnHeaderLeaves[this.colIndex].total),"k-pivotgrid-header-root":0===this.kendoPivotGridCell.levelNum,"k-pivotgrid-expanded":this.kendoPivotGridCell.hasChildren&&this.kendoPivotGridCell.children.length,"k-first":0<this.colIndex});for(e in n)n[e]&&this.renderer.addClass(t,e)},C);function C(e,t,n){var o=this;this.hostEl=e,this.renderer=t,this.dataService=n,this.cellClass=!0,this.handleClick=function(){o.dataService.expandedStateChange.emit({action:o.expanded?"collapse":"expand",cell:o.kendoPivotGridCell,tableType:o.tableType})}}I.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:I,deps:[{token:d.ElementRef},{token:d.Renderer2},{token:y}],target:d.ɵɵFactoryTarget.Component}),I.ɵcmp=d.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:I,selector:"[kendoPivotGridCell]",inputs:{kendoPivotGridCell:"kendoPivotGridCell",tableType:"tableType",rowIndex:"rowIndex",colIndex:"colIndex"},host:{properties:{"class.k-pivotgrid-cell":"this.cellClass"}},ngImport:d,template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n [kendoEventsOutsideAngular]="{\n click: handleClick\n }"\n [ngClass]="{\n \'k-i-arrow-chevron-up\': expanded,\n \'k-i-arrow-chevron-down\': !expanded\n }"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}',isInline:!0,directives:[{type:p.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{type:c.EventsOutsideAngularDirective,selector:"[kendoEventsOutsideAngular]",inputs:["kendoEventsOutsideAngular","scope"]},{type:p.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]}]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:I,decorators:[{type:e.Component,args:[{selector:"[kendoPivotGridCell]",template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n [kendoEventsOutsideAngular]="{\n click: handleClick\n }"\n [ngClass]="{\n \'k-i-arrow-chevron-up\': expanded,\n \'k-i-arrow-chevron-down\': !expanded\n }"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}'}]}],ctorParameters:function(){return[{type:d.ElementRef},{type:d.Renderer2},{type:y}]},propDecorators:{cellClass:[{type:e.HostBinding,args:["class.k-pivotgrid-cell"]}],kendoPivotGridCell:[{type:e.Input}],tableType:[{type:e.Input}],rowIndex:[{type:e.Input}],colIndex:[{type:e.Input}]}});x.prototype.ngOnInit=function(){var t=this;this.dataChangeSubs.add(this.dataService[this.tableType+"Rows"].subscribe(function(e){return t.rows=e})),this.dataChangeSubs.add("values"===this.tableType?this.dataService.columnHeaderCols.subscribe(function(e){return t.headerItems=e}):this.dataService[this.tableType+"Cols"].subscribe(function(e){return t.headerItems=e}))},x.prototype.ngOnDestroy=function(){this.dataChangeSubs.unsubscribe()};var w=x;function x(e){this.dataService=e,this.dataChangeSubs=new a.Subscription}w.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:w,deps:[{token:y}],target:d.ɵɵFactoryTarget.Component}),w.ɵcmp=d.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:w,selector:"kendo-pivotgrid-table",inputs:{tableType:"tableType"},ngImport:d,template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col *ngFor="let item of headerItems;" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row">\n <ng-container *ngFor="let cell of row.cells; index as colIndex">\n <th\n *ngIf="cell && tableType !== \'values\'" \n [kendoPivotGridCell]="cell"\n [tableType]="tableType"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n ',isInline:!0,components:[{type:I,selector:"[kendoPivotGridCell]",inputs:["kendoPivotGridCell","tableType","rowIndex","colIndex"]}],directives:[{type:p.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{type:p.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:w,decorators:[{type:e.Component,args:[{selector:"kendo-pivotgrid-table",template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col *ngFor="let item of headerItems;" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row">\n <ng-container *ngFor="let cell of row.cells; index as colIndex">\n <th\n *ngIf="cell && tableType !== \'values\'" \n [kendoPivotGridCell]="cell"\n [tableType]="tableType"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n '}]}],ctorParameters:function(){return[{type:y}]},propDecorators:{tableType:[{type:e.Input}]}});var T={type:"converging-spinner",themeColor:"primary",size:"large"},S=(Object.defineProperty(A.prototype,"loaderSettings",{get:function(){return this._loaderSettings},set:function(e){this._loaderSettings=Object.assign({},T,e)},enumerable:!1,configurable:!0}),A.prototype.ngAfterViewInit=function(){var r=this;n.isDocumentAvailable()&&this.zone.runOutsideAngular(function(){var e=r.rowHeadersTable.nativeElement.firstElementChild,t=new ResizeObserver(function(){return r.resizeContainer("Columns",e)}),n=(t.observe(e),r.colHeadersTable.nativeElement.firstElementChild),o=new ResizeObserver(function(){return r.resizeContainer("Rows",n)});o.observe(n),r.resizeObservers=[t,o],r.subs.add(a.fromEvent(e,"wheel").pipe(a.mergeWith(a.fromEvent(n,"wheel"),a.fromEvent(r.valuesTable.nativeElement,"scroll"))).subscribe(function(e){return r.handleScroll(e)}))})},A.prototype.ngAfterContentInit=function(){var t=this;this.subs.add(this.dataService.loading.subscribe(function(e){return t.loading=e}))},A.prototype.ngOnDestroy=function(){this.resizeObservers.forEach(function(e){return e.disconnect()}),this.subs.unsubscribe()},A);function A(e,t,n,o){var i=this;this.hostEl=e,this.zone=t,this.dataService=n,this.hostClass=!0,this.resizeObservers=[],this._loaderSettings=T,this.subs=new a.Subscription,this.resizeContainer=function(e,t){var n=i.hostEl.nativeElement,o="Rows"===e?"offsetHeight":"offsetWidth";n.style["gridTemplate"+e]="",n.style["gridTemplate"+e]=t[o]+"px 1fr"},this.handleScroll=function(e){var t,n,o,r,a;e.target===i.valuesTable.nativeElement?(t=e.target,n=[i.rowHeadersTable.nativeElement,i.colHeadersTable.nativeElement],o=t.scrollTop,t=t.scrollLeft,r=n[0].scrollTop,a=t!==n[1].scrollLeft,o!==r?n[0].scrollTop=o:a&&(n[1].scrollLeft=t)):e.target.closest(".k-pivotgrid-row-headers")?b(e,[i.valuesTable.nativeElement,i.rowHeadersTable.nativeElement],"scrollTop","Y"):e.target.closest(".k-pivotgrid-column-headers")&&b(e,[i.valuesTable.nativeElement,i.colHeadersTable.nativeElement],"scrollLeft","X")},G.validatePackage(V)}S.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:S,deps:[{token:d.ElementRef},{token:d.NgZone},{token:y},{token:c.ScrollbarWidthService}],target:d.ɵɵFactoryTarget.Component}),S.ɵcmp=d.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:S,selector:"kendo-pivotgrid",inputs:{loaderSettings:"loaderSettings"},host:{properties:{"class.k-pivotgrid":"this.hostClass"}},providers:[y],viewQueries:[{propertyName:"colHeadersTable",first:!0,predicate:["colHeadersTable"],descendants:!0,read:e.ElementRef},{propertyName:"rowHeadersTable",first:!0,predicate:["rowHeadersTable"],descendants:!0,read:e.ElementRef},{propertyName:"valuesTable",first:!0,predicate:["valuesTable"],descendants:!0,read:e.ElementRef}],ngImport:d,template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n #colHeadersTable\n class="k-pivotgrid-column-headers"\n tableType="columnHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n #rowHeadersTable\n class="k-pivotgrid-row-headers"\n tableType="rowHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n #valuesTable\n class="k-pivotgrid-values"\n tableType="values"></kendo-pivotgrid-table>\n\n <div *ngIf="loading" class="k-loader">\n <kendo-loader\n [type]="loaderSettings?.type"\n [themeColor]="loaderSettings?.themeColor"\n [size]="loaderSettings?.size"\n >\n </kendo-loader>\n </div>\n ',isInline:!0,styles:["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "],components:[{type:w,selector:"kendo-pivotgrid-table",inputs:["tableType"]},{type:u.LoaderComponent,selector:"kendo-loader",inputs:["type","themeColor","size"]}],directives:[{type:p.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:S,decorators:[{type:e.Component,args:[{selector:"kendo-pivotgrid",providers:[y],template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n #colHeadersTable\n class="k-pivotgrid-column-headers"\n tableType="columnHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n #rowHeadersTable\n class="k-pivotgrid-row-headers"\n tableType="rowHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n #valuesTable\n class="k-pivotgrid-values"\n tableType="values"></kendo-pivotgrid-table>\n\n <div *ngIf="loading" class="k-loader">\n <kendo-loader\n [type]="loaderSettings?.type"\n [themeColor]="loaderSettings?.themeColor"\n [size]="loaderSettings?.size"\n >\n </kendo-loader>\n </div>\n ',styles:["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "]}]}],ctorParameters:function(){return[{type:d.ElementRef},{type:d.NgZone},{type:y},{type:c.ScrollbarWidthService}]},propDecorators:{hostClass:[{type:e.HostBinding,args:["class.k-pivotgrid"]}],colHeadersTable:[{type:e.ViewChild,args:["colHeadersTable",{read:e.ElementRef}]}],rowHeadersTable:[{type:e.ViewChild,args:["rowHeadersTable",{read:e.ElementRef}]}],valuesTable:[{type:e.ViewChild,args:["valuesTable",{read:e.ElementRef}]}],loaderSettings:[{type:e.Input}]}});D.prototype.ngOnInit=function(){var o=this;this.loadData(),this.expandedStateSub=this.dataService.expandedStateChange.subscribe(function(n){o.zone.run(function(){var e="columnHeader"===n.tableType,t=e?"columnAxes":"rowAxes",e=s.toTree((e?o.dataService.columns:o.dataService.rows||[]).slice());o.updateHeaders(t,e,n.cell.path)})})},D.prototype.ngOnDestroy=function(){this.expandedStateSub.unsubscribe()},D.prototype.updateDataServiceFields=function(){this.dataService.normalizedData=this.dataState.data,this.dataService.rows=this.dataState.rows,this.dataService.columns=this.dataState.columns,this.dataService.updateRowsAndCols()},D.prototype.updateHeaders=function(e,t,n){n={type:s.HEADERS_ACTION.toggle,payload:n},n=s.headersReducer(this[e].slice(),Object.assign(Object.assign({},n),{tree:t}));this[e]=n,this.loadData()};u=D;function D(e,t){this.dataService=e,this.zone=t,this.columnAxes=[],this.rowAxes=[],this.measureAxes=[],this.expandedStateSub=new a.Subscription}u.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:u,deps:[{token:y},{token:d.NgZone}],target:d.ɵɵFactoryTarget.Directive}),u.ɵdir=d.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"kendo-base-binding-directive",inputs:{columnAxes:"columnAxes",rowAxes:"rowAxes",measureAxes:"measureAxes"},ngImport:d}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:u,decorators:[{type:e.Directive,args:[{selector:"kendo-base-binding-directive"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{columnAxes:[{type:e.Input}],rowAxes:[{type:e.Input}],measureAxes:[{type:e.Input}]}});var P,O={dataField:"aggregate",columnsData:"columns"},p=(v(E,P=u),E.prototype.ngOnChanges=function(e){n.anyChanged(["data","dimensions","columnAxes","rowAxes","measureAxes","measures"],e)&&this.loadData()},E.prototype.loadData=function(){var e=this,t=this.getRootAxes(this.columnAxes),n=this.getRootAxes(this.rowAxes),t=t.split("&").map(this.createAxisSettings),n=n.split("&").map(this.createAxisSettings),o=this.measureAxes.map(function(t){return e.measures.find(function(e){return String(e.name)===String(t.name)})}).filter(Boolean),r=s.createDataTree(this.data,n,t,o,O);this.dataState=s.createLocalDataState({dataTree:r,rowSettings:n,columnSettings:t,rowAxes:this.rowAxes,columnAxes:this.columnAxes,measures:o,sort:[],fields:O}),this.updateDataServiceFields()},E.prototype.getRootAxes=function(e){return Array.from(s.rootFields(e).keys()).join("&")},E);function E(e,t){var n=P.call(this,e,t)||this;return n.createAxisSettings=function(e){return Object.assign({key:e},n.dimensions[e])},n}p.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:p,deps:[{token:y},{token:d.NgZone}],target:d.ɵɵFactoryTarget.Directive}),p.ɵdir=d.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:p,selector:"[kendoPivotLocalBinding]",inputs:{data:["kendoPivotLocalBinding","data"],dimensions:"dimensions",measures:"measures"},exportAs:["kendoPivotLocalBinding"],usesInheritance:!0,usesOnChanges:!0,ngImport:d}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:p,decorators:[{type:e.Directive,args:[{selector:"[kendoPivotLocalBinding]",exportAs:"kendoPivotLocalBinding"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{data:[{type:e.Input,args:["kendoPivotLocalBinding"]}],dimensions:[{type:e.Input}],measures:[{type:e.Input}]}});v(R,H=u),R.prototype.ngOnChanges=function(e){n.anyChanged(["url","cube","catalog","columnAxes","rowAxes","measureAxes"],e)&&this.loadData()},R.prototype.loadData=function(){var t=this,e=(this.dataService.loading.next(!0),{connection:{catalog:this.catalog,cube:this.cube},columnAxes:this.columnAxes,rowAxes:this.rowAxes,measureAxes:this.measureAxes});s.fetchData({url:this.url},JSON.parse(JSON.stringify(e))).then(s.createDataState).then(function(e){t.dataState=e,t.updateDataServiceFields(),t.dataService.loading.next(!1)})};var H,u=R;function R(e,t){return H.call(this,e,t)||this}u.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:u,deps:[{token:y},{token:d.NgZone}],target:d.ɵɵFactoryTarget.Directive}),u.ɵdir=d.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"[kendoPivotOLAPBinding]",inputs:{url:"url",cube:"cube",catalog:"catalog"},exportAs:["kendoPivotOLAPBinding"],usesInheritance:!0,usesOnChanges:!0,ngImport:d}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:u,decorators:[{type:e.Directive,args:[{selector:"[kendoPivotOLAPBinding]",exportAs:"kendoPivotOLAPBinding"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{url:[{type:e.Input}],cube:[{type:e.Input}],catalog:[{type:e.Input}]}});var j=[o.CommonModule,n.EventsModule,r.IndicatorsModule],N=[S,w,I,p,u],F=function(){};F.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,deps:[],target:d.ɵɵFactoryTarget.NgModule}),F.ɵmod=d.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,declarations:[S,w,I,p,u],imports:[o.CommonModule,n.EventsModule,r.IndicatorsModule],exports:[S,w,I,p,u]}),F.ɵinj=d.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,providers:[{provide:i.L10N_PREFIX,useValue:"kendo.pivotgrid"}],imports:[h([],m(j))]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,decorators:[{type:e.NgModule,args:[{imports:h([],m(j)),declarations:h([],m(N)),exports:h([],m(N)),providers:[{provide:i.L10N_PREFIX,useValue:"kendo.pivotgrid"}]}]}]}),t.PivotGridCellDirective=I,t.PivotGridComponent=S,t.PivotGridModule=F,t.PivotGridTableComponent=w,t.PivotLocalBindingDirective=p,t.PivotOLAPBindingDirective=u,Object.keys(s).forEach(function(e){"default"===e||t.hasOwnProperty(e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}})}),Object.defineProperty(t,"__esModule",{value:!0})});
|
|
@@ -25,7 +25,7 @@ export class PivotGridDataService {
|
|
|
25
25
|
const columnsTree = toTree((this.columns || []).slice());
|
|
26
26
|
const [columnHeaderRows, columnHeaderLeaves, columnHeaderBreadth] = toColumns(columnsTree);
|
|
27
27
|
this.columnHeaderLeaves = columnHeaderLeaves;
|
|
28
|
-
this.columnHeaderCols.next(
|
|
28
|
+
this.columnHeaderCols.next(columnHeaderLeaves);
|
|
29
29
|
this.columnHeaderRows.next(columnHeaderRows);
|
|
30
30
|
this.rowHeaderLeaves = rowHeaderLeaves;
|
|
31
31
|
this.rowHeaderCols.next(new Array(rowHeaderBreadth).fill({}));
|
package/esm2015/main.js
CHANGED
|
@@ -11,4 +11,4 @@ export { PivotGridTableComponent } from './rendering/pivotgrid-table.component';
|
|
|
11
11
|
export { PivotLocalBindingDirective } from './data-binding/local-binding.directive';
|
|
12
12
|
export { PivotOLAPBindingDirective } from './data-binding/olap-binding.directive';
|
|
13
13
|
// Export types from PivotGrid common package
|
|
14
|
-
export
|
|
14
|
+
export * from '@progress/kendo-pivotgrid-common';
|
|
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-pivotgrid',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
12
|
+
publishDate: 1652686020,
|
|
13
13
|
version: '',
|
|
14
14
|
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'
|
|
15
15
|
};
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
|
5
|
+
import { Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';
|
|
6
6
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
7
7
|
import { packageMetadata } from './package-metadata';
|
|
8
8
|
import { isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
9
9
|
import { PivotGridDataService } from './data-binding/pivotgrid-data.service';
|
|
10
|
-
import { Subscription } from 'rxjs';
|
|
10
|
+
import { fromEvent, Subscription, mergeWith } from 'rxjs';
|
|
11
|
+
import { syncScroll, syncWheel } from './util';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
import * as i1 from "./data-binding/pivotgrid-data.service";
|
|
13
14
|
import * as i2 from "@progress/kendo-angular-common";
|
|
@@ -20,7 +21,7 @@ const DEFAULT_LOADER_SETTINGS = {
|
|
|
20
21
|
size: 'large'
|
|
21
22
|
};
|
|
22
23
|
/**
|
|
23
|
-
*
|
|
24
|
+
* Represents the Kendo UI PivotGrid component for Angular.
|
|
24
25
|
*/
|
|
25
26
|
export class PivotGridComponent {
|
|
26
27
|
constructor(hostEl, zone, dataService, _scrollbarWidthService) {
|
|
@@ -30,7 +31,7 @@ export class PivotGridComponent {
|
|
|
30
31
|
this.hostClass = true;
|
|
31
32
|
this.resizeObservers = [];
|
|
32
33
|
this._loaderSettings = DEFAULT_LOADER_SETTINGS;
|
|
33
|
-
this.
|
|
34
|
+
this.subs = new Subscription();
|
|
34
35
|
this.resizeContainer = (axis, element) => {
|
|
35
36
|
const isRows = axis === 'Rows';
|
|
36
37
|
const wrapper = this.hostEl.nativeElement;
|
|
@@ -38,6 +39,20 @@ export class PivotGridComponent {
|
|
|
38
39
|
wrapper.style[`gridTemplate${axis}`] = '';
|
|
39
40
|
wrapper.style[`gridTemplate${axis}`] = `${element[size]}px 1fr`;
|
|
40
41
|
};
|
|
42
|
+
this.handleScroll = (event) => {
|
|
43
|
+
if (event.target === this.valuesTable.nativeElement) {
|
|
44
|
+
syncScroll(event.target, [
|
|
45
|
+
this.rowHeadersTable.nativeElement,
|
|
46
|
+
this.colHeadersTable.nativeElement
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
else if (event.target.closest('.k-pivotgrid-row-headers')) {
|
|
50
|
+
syncWheel(event, [this.valuesTable.nativeElement, this.rowHeadersTable.nativeElement], 'scrollTop', 'Y');
|
|
51
|
+
}
|
|
52
|
+
else if (event.target.closest('.k-pivotgrid-column-headers')) {
|
|
53
|
+
syncWheel(event, [this.valuesTable.nativeElement, this.colHeadersTable.nativeElement], 'scrollLeft', 'X');
|
|
54
|
+
}
|
|
55
|
+
};
|
|
41
56
|
validatePackage(packageMetadata);
|
|
42
57
|
}
|
|
43
58
|
/**
|
|
@@ -58,36 +73,41 @@ export class PivotGridComponent {
|
|
|
58
73
|
ngAfterViewInit() {
|
|
59
74
|
if (isDocumentAvailable()) {
|
|
60
75
|
this.zone.runOutsideAngular(() => {
|
|
61
|
-
const rowHeadersTable =
|
|
76
|
+
const rowHeadersTable = this.rowHeadersTable.nativeElement.firstElementChild;
|
|
62
77
|
const headerColsResizeObserver = new ResizeObserver(() => this.resizeContainer('Columns', rowHeadersTable));
|
|
63
78
|
headerColsResizeObserver.observe(rowHeadersTable);
|
|
64
|
-
const colHeadersTable =
|
|
79
|
+
const colHeadersTable = this.colHeadersTable.nativeElement.firstElementChild;
|
|
65
80
|
const headerRowsResizeObserver = new ResizeObserver(() => this.resizeContainer('Rows', colHeadersTable));
|
|
66
81
|
headerRowsResizeObserver.observe(colHeadersTable);
|
|
67
82
|
this.resizeObservers = [headerColsResizeObserver, headerRowsResizeObserver];
|
|
83
|
+
this.subs.add(fromEvent(rowHeadersTable, 'wheel')
|
|
84
|
+
.pipe(mergeWith(fromEvent(colHeadersTable, 'wheel'), fromEvent(this.valuesTable.nativeElement, 'scroll'))).subscribe((ev) => this.handleScroll(ev)));
|
|
68
85
|
});
|
|
69
86
|
}
|
|
70
87
|
}
|
|
71
88
|
ngAfterContentInit() {
|
|
72
|
-
this.
|
|
89
|
+
this.subs.add(this.dataService.loading.subscribe(state => this.loading = state));
|
|
73
90
|
}
|
|
74
91
|
ngOnDestroy() {
|
|
75
92
|
this.resizeObservers.forEach(o => o.disconnect());
|
|
76
|
-
this.
|
|
93
|
+
this.subs.unsubscribe();
|
|
77
94
|
}
|
|
78
95
|
}
|
|
79
96
|
PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PivotGridDataService }, { token: i2.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
80
97
|
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings" }, host: { properties: { "class.k-pivotgrid": "this.hostClass" } }, providers: [
|
|
81
98
|
PivotGridDataService
|
|
82
|
-
], ngImport: i0, template: `
|
|
99
|
+
], 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 }], ngImport: i0, template: `
|
|
83
100
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
84
101
|
<kendo-pivotgrid-table
|
|
102
|
+
#colHeadersTable
|
|
85
103
|
class="k-pivotgrid-column-headers"
|
|
86
104
|
tableType="columnHeader"></kendo-pivotgrid-table>
|
|
87
105
|
<kendo-pivotgrid-table
|
|
106
|
+
#rowHeadersTable
|
|
88
107
|
class="k-pivotgrid-row-headers"
|
|
89
108
|
tableType="rowHeader"></kendo-pivotgrid-table>
|
|
90
109
|
<kendo-pivotgrid-table
|
|
110
|
+
#valuesTable
|
|
91
111
|
class="k-pivotgrid-values"
|
|
92
112
|
tableType="values"></kendo-pivotgrid-table>
|
|
93
113
|
|
|
@@ -110,12 +130,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
110
130
|
template: `
|
|
111
131
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
112
132
|
<kendo-pivotgrid-table
|
|
133
|
+
#colHeadersTable
|
|
113
134
|
class="k-pivotgrid-column-headers"
|
|
114
135
|
tableType="columnHeader"></kendo-pivotgrid-table>
|
|
115
136
|
<kendo-pivotgrid-table
|
|
137
|
+
#rowHeadersTable
|
|
116
138
|
class="k-pivotgrid-row-headers"
|
|
117
139
|
tableType="rowHeader"></kendo-pivotgrid-table>
|
|
118
140
|
<kendo-pivotgrid-table
|
|
141
|
+
#valuesTable
|
|
119
142
|
class="k-pivotgrid-values"
|
|
120
143
|
tableType="values"></kendo-pivotgrid-table>
|
|
121
144
|
|
|
@@ -141,6 +164,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
141
164
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PivotGridDataService }, { type: i2.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
|
|
142
165
|
type: HostBinding,
|
|
143
166
|
args: ['class.k-pivotgrid']
|
|
167
|
+
}], colHeadersTable: [{
|
|
168
|
+
type: ViewChild,
|
|
169
|
+
args: ['colHeadersTable', { read: ElementRef }]
|
|
170
|
+
}], rowHeadersTable: [{
|
|
171
|
+
type: ViewChild,
|
|
172
|
+
args: ['rowHeadersTable', { read: ElementRef }]
|
|
173
|
+
}], valuesTable: [{
|
|
174
|
+
type: ViewChild,
|
|
175
|
+
args: ['valuesTable', { read: ElementRef }]
|
|
144
176
|
}], loaderSettings: [{
|
|
145
177
|
type: Input
|
|
146
178
|
}] } });
|
|
@@ -38,7 +38,7 @@ export class PivotGridCellDirective {
|
|
|
38
38
|
this.dataService.columnHeaderLeaves[this.colIndex].total)),
|
|
39
39
|
'k-pivotgrid-header-root': this.kendoPivotGridCell.levelNum === 0,
|
|
40
40
|
'k-pivotgrid-expanded': this.kendoPivotGridCell.hasChildren && this.kendoPivotGridCell.children.length,
|
|
41
|
-
'k-first': this.colIndex
|
|
41
|
+
'k-first': this.colIndex > 0
|
|
42
42
|
};
|
|
43
43
|
for (let prop in classesToAdd) {
|
|
44
44
|
if (classesToAdd[prop]) {
|
package/esm2015/util.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 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 const isPresent = (value) => value !== null && value !== undefined;
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
* Returns whether two arrays contain the same values.
|
|
12
|
+
* Assumes array elements are primitive types
|
|
13
|
+
*/
|
|
14
|
+
export const areSameArrays = (a1, a2) => {
|
|
15
|
+
const areArrays = (isPresent(a1) && Array.isArray(a1) && isPresent(a2) && Array.isArray(a2));
|
|
16
|
+
const areOfEqualLength = a1.length === a2.length;
|
|
17
|
+
if (!areArrays || !areOfEqualLength) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
for (let i = 0; i < a1.length; i++) {
|
|
21
|
+
if (a1[i] !== a2[i]) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
*/
|
|
30
|
+
export const wheelDelta = (e, axis) => {
|
|
31
|
+
const delta = e[`wheelDelta${axis}`];
|
|
32
|
+
if (e.wheelDelta && (delta === undefined || delta)) {
|
|
33
|
+
return e.wheelDelta;
|
|
34
|
+
}
|
|
35
|
+
if (e.detail && e.axis === e[axis === 'X' ? 'HORIZONTAL_AXIS' : 'VERTICAL_AXIS']) {
|
|
36
|
+
return (-e.detail) * 10;
|
|
37
|
+
}
|
|
38
|
+
return 0;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @hidden
|
|
42
|
+
*/
|
|
43
|
+
export const syncScroll = (source, targets) => {
|
|
44
|
+
const sourceScrollTop = source.scrollTop;
|
|
45
|
+
const sourceScrollLeft = source.scrollLeft;
|
|
46
|
+
const targetScrollTop = targets[0].scrollTop;
|
|
47
|
+
const targetScrollLeft = targets[1].scrollLeft;
|
|
48
|
+
const syncVertically = sourceScrollTop !== targetScrollTop;
|
|
49
|
+
const syncHorizontally = sourceScrollLeft !== targetScrollLeft;
|
|
50
|
+
if (syncVertically) {
|
|
51
|
+
targets[0].scrollTop = sourceScrollTop;
|
|
52
|
+
}
|
|
53
|
+
else if (syncHorizontally) {
|
|
54
|
+
targets[1].scrollLeft = sourceScrollLeft;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @hidden
|
|
59
|
+
*/
|
|
60
|
+
export const syncWheel = (event, tables, prop, axis) => {
|
|
61
|
+
const delta = axis === 'Y' ? -(wheelDelta(event, axis)) : wheelDelta(event, axis);
|
|
62
|
+
if (delta) {
|
|
63
|
+
tables[0][prop] =
|
|
64
|
+
tables[1][prop] += delta;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { EventEmitter, Injectable, Output, Component, HostBinding, Input, Directive, NgModule } from '@angular/core';
|
|
6
|
+
import { EventEmitter, Injectable, Output, Component, HostBinding, Input, ElementRef, ViewChild, Directive, NgModule } from '@angular/core';
|
|
7
7
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
8
8
|
import * as i2$1 from '@progress/kendo-angular-common';
|
|
9
9
|
import { isDocumentAvailable, anyChanged, EventsModule } from '@progress/kendo-angular-common';
|
|
10
10
|
import { toTree, toRows, toColumns, toData, HEADERS_ACTION, headersReducer, createDataTree, createLocalDataState, rootFields, fetchData, createDataState } from '@progress/kendo-pivotgrid-common';
|
|
11
|
-
export
|
|
12
|
-
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
11
|
+
export * from '@progress/kendo-pivotgrid-common';
|
|
12
|
+
import { BehaviorSubject, Subscription, fromEvent, mergeWith } from 'rxjs';
|
|
13
13
|
import * as i2 from '@angular/common';
|
|
14
14
|
import { CommonModule } from '@angular/common';
|
|
15
15
|
import * as i4 from '@progress/kendo-angular-indicators';
|
|
@@ -23,7 +23,7 @@ const packageMetadata = {
|
|
|
23
23
|
name: '@progress/kendo-angular-pivotgrid',
|
|
24
24
|
productName: 'Kendo UI for Angular',
|
|
25
25
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
26
|
-
publishDate:
|
|
26
|
+
publishDate: 1652686020,
|
|
27
27
|
version: '',
|
|
28
28
|
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'
|
|
29
29
|
};
|
|
@@ -47,7 +47,7 @@ class PivotGridDataService {
|
|
|
47
47
|
const columnsTree = toTree((this.columns || []).slice());
|
|
48
48
|
const [columnHeaderRows, columnHeaderLeaves, columnHeaderBreadth] = toColumns(columnsTree);
|
|
49
49
|
this.columnHeaderLeaves = columnHeaderLeaves;
|
|
50
|
-
this.columnHeaderCols.next(
|
|
50
|
+
this.columnHeaderCols.next(columnHeaderLeaves);
|
|
51
51
|
this.columnHeaderRows.next(columnHeaderRows);
|
|
52
52
|
this.rowHeaderLeaves = rowHeaderLeaves;
|
|
53
53
|
this.rowHeaderCols.next(new Array(rowHeaderBreadth).fill({}));
|
|
@@ -63,6 +63,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
63
63
|
type: Output
|
|
64
64
|
}] } });
|
|
65
65
|
|
|
66
|
+
/**
|
|
67
|
+
* @hidden
|
|
68
|
+
*/
|
|
69
|
+
const isPresent = (value) => value !== null && value !== undefined;
|
|
70
|
+
/**
|
|
71
|
+
* @hidden
|
|
72
|
+
* Returns whether two arrays contain the same values.
|
|
73
|
+
* Assumes array elements are primitive types
|
|
74
|
+
*/
|
|
75
|
+
const areSameArrays = (a1, a2) => {
|
|
76
|
+
const areArrays = (isPresent(a1) && Array.isArray(a1) && isPresent(a2) && Array.isArray(a2));
|
|
77
|
+
const areOfEqualLength = a1.length === a2.length;
|
|
78
|
+
if (!areArrays || !areOfEqualLength) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
for (let i = 0; i < a1.length; i++) {
|
|
82
|
+
if (a1[i] !== a2[i]) {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* @hidden
|
|
90
|
+
*/
|
|
91
|
+
const wheelDelta = (e, axis) => {
|
|
92
|
+
const delta = e[`wheelDelta${axis}`];
|
|
93
|
+
if (e.wheelDelta && (delta === undefined || delta)) {
|
|
94
|
+
return e.wheelDelta;
|
|
95
|
+
}
|
|
96
|
+
if (e.detail && e.axis === e[axis === 'X' ? 'HORIZONTAL_AXIS' : 'VERTICAL_AXIS']) {
|
|
97
|
+
return (-e.detail) * 10;
|
|
98
|
+
}
|
|
99
|
+
return 0;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* @hidden
|
|
103
|
+
*/
|
|
104
|
+
const syncScroll = (source, targets) => {
|
|
105
|
+
const sourceScrollTop = source.scrollTop;
|
|
106
|
+
const sourceScrollLeft = source.scrollLeft;
|
|
107
|
+
const targetScrollTop = targets[0].scrollTop;
|
|
108
|
+
const targetScrollLeft = targets[1].scrollLeft;
|
|
109
|
+
const syncVertically = sourceScrollTop !== targetScrollTop;
|
|
110
|
+
const syncHorizontally = sourceScrollLeft !== targetScrollLeft;
|
|
111
|
+
if (syncVertically) {
|
|
112
|
+
targets[0].scrollTop = sourceScrollTop;
|
|
113
|
+
}
|
|
114
|
+
else if (syncHorizontally) {
|
|
115
|
+
targets[1].scrollLeft = sourceScrollLeft;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* @hidden
|
|
120
|
+
*/
|
|
121
|
+
const syncWheel = (event, tables, prop, axis) => {
|
|
122
|
+
const delta = axis === 'Y' ? -(wheelDelta(event, axis)) : wheelDelta(event, axis);
|
|
123
|
+
if (delta) {
|
|
124
|
+
tables[0][prop] =
|
|
125
|
+
tables[1][prop] += delta;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
66
129
|
/**
|
|
67
130
|
* @hidden
|
|
68
131
|
*/
|
|
@@ -94,7 +157,7 @@ class PivotGridCellDirective {
|
|
|
94
157
|
this.dataService.columnHeaderLeaves[this.colIndex].total)),
|
|
95
158
|
'k-pivotgrid-header-root': this.kendoPivotGridCell.levelNum === 0,
|
|
96
159
|
'k-pivotgrid-expanded': this.kendoPivotGridCell.hasChildren && this.kendoPivotGridCell.children.length,
|
|
97
|
-
'k-first': this.colIndex
|
|
160
|
+
'k-first': this.colIndex > 0
|
|
98
161
|
};
|
|
99
162
|
for (let prop in classesToAdd) {
|
|
100
163
|
if (classesToAdd[prop]) {
|
|
@@ -231,7 +294,7 @@ const DEFAULT_LOADER_SETTINGS = {
|
|
|
231
294
|
size: 'large'
|
|
232
295
|
};
|
|
233
296
|
/**
|
|
234
|
-
*
|
|
297
|
+
* Represents the Kendo UI PivotGrid component for Angular.
|
|
235
298
|
*/
|
|
236
299
|
class PivotGridComponent {
|
|
237
300
|
constructor(hostEl, zone, dataService, _scrollbarWidthService) {
|
|
@@ -241,7 +304,7 @@ class PivotGridComponent {
|
|
|
241
304
|
this.hostClass = true;
|
|
242
305
|
this.resizeObservers = [];
|
|
243
306
|
this._loaderSettings = DEFAULT_LOADER_SETTINGS;
|
|
244
|
-
this.
|
|
307
|
+
this.subs = new Subscription();
|
|
245
308
|
this.resizeContainer = (axis, element) => {
|
|
246
309
|
const isRows = axis === 'Rows';
|
|
247
310
|
const wrapper = this.hostEl.nativeElement;
|
|
@@ -249,6 +312,20 @@ class PivotGridComponent {
|
|
|
249
312
|
wrapper.style[`gridTemplate${axis}`] = '';
|
|
250
313
|
wrapper.style[`gridTemplate${axis}`] = `${element[size]}px 1fr`;
|
|
251
314
|
};
|
|
315
|
+
this.handleScroll = (event) => {
|
|
316
|
+
if (event.target === this.valuesTable.nativeElement) {
|
|
317
|
+
syncScroll(event.target, [
|
|
318
|
+
this.rowHeadersTable.nativeElement,
|
|
319
|
+
this.colHeadersTable.nativeElement
|
|
320
|
+
]);
|
|
321
|
+
}
|
|
322
|
+
else if (event.target.closest('.k-pivotgrid-row-headers')) {
|
|
323
|
+
syncWheel(event, [this.valuesTable.nativeElement, this.rowHeadersTable.nativeElement], 'scrollTop', 'Y');
|
|
324
|
+
}
|
|
325
|
+
else if (event.target.closest('.k-pivotgrid-column-headers')) {
|
|
326
|
+
syncWheel(event, [this.valuesTable.nativeElement, this.colHeadersTable.nativeElement], 'scrollLeft', 'X');
|
|
327
|
+
}
|
|
328
|
+
};
|
|
252
329
|
validatePackage(packageMetadata);
|
|
253
330
|
}
|
|
254
331
|
/**
|
|
@@ -269,36 +346,41 @@ class PivotGridComponent {
|
|
|
269
346
|
ngAfterViewInit() {
|
|
270
347
|
if (isDocumentAvailable()) {
|
|
271
348
|
this.zone.runOutsideAngular(() => {
|
|
272
|
-
const rowHeadersTable =
|
|
349
|
+
const rowHeadersTable = this.rowHeadersTable.nativeElement.firstElementChild;
|
|
273
350
|
const headerColsResizeObserver = new ResizeObserver(() => this.resizeContainer('Columns', rowHeadersTable));
|
|
274
351
|
headerColsResizeObserver.observe(rowHeadersTable);
|
|
275
|
-
const colHeadersTable =
|
|
352
|
+
const colHeadersTable = this.colHeadersTable.nativeElement.firstElementChild;
|
|
276
353
|
const headerRowsResizeObserver = new ResizeObserver(() => this.resizeContainer('Rows', colHeadersTable));
|
|
277
354
|
headerRowsResizeObserver.observe(colHeadersTable);
|
|
278
355
|
this.resizeObservers = [headerColsResizeObserver, headerRowsResizeObserver];
|
|
356
|
+
this.subs.add(fromEvent(rowHeadersTable, 'wheel')
|
|
357
|
+
.pipe(mergeWith(fromEvent(colHeadersTable, 'wheel'), fromEvent(this.valuesTable.nativeElement, 'scroll'))).subscribe((ev) => this.handleScroll(ev)));
|
|
279
358
|
});
|
|
280
359
|
}
|
|
281
360
|
}
|
|
282
361
|
ngAfterContentInit() {
|
|
283
|
-
this.
|
|
362
|
+
this.subs.add(this.dataService.loading.subscribe(state => this.loading = state));
|
|
284
363
|
}
|
|
285
364
|
ngOnDestroy() {
|
|
286
365
|
this.resizeObservers.forEach(o => o.disconnect());
|
|
287
|
-
this.
|
|
366
|
+
this.subs.unsubscribe();
|
|
288
367
|
}
|
|
289
368
|
}
|
|
290
369
|
PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PivotGridDataService }, { token: i2$1.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
291
370
|
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings" }, host: { properties: { "class.k-pivotgrid": "this.hostClass" } }, providers: [
|
|
292
371
|
PivotGridDataService
|
|
293
|
-
], ngImport: i0, template: `
|
|
372
|
+
], 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 }], ngImport: i0, template: `
|
|
294
373
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
295
374
|
<kendo-pivotgrid-table
|
|
375
|
+
#colHeadersTable
|
|
296
376
|
class="k-pivotgrid-column-headers"
|
|
297
377
|
tableType="columnHeader"></kendo-pivotgrid-table>
|
|
298
378
|
<kendo-pivotgrid-table
|
|
379
|
+
#rowHeadersTable
|
|
299
380
|
class="k-pivotgrid-row-headers"
|
|
300
381
|
tableType="rowHeader"></kendo-pivotgrid-table>
|
|
301
382
|
<kendo-pivotgrid-table
|
|
383
|
+
#valuesTable
|
|
302
384
|
class="k-pivotgrid-values"
|
|
303
385
|
tableType="values"></kendo-pivotgrid-table>
|
|
304
386
|
|
|
@@ -321,12 +403,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
321
403
|
template: `
|
|
322
404
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
323
405
|
<kendo-pivotgrid-table
|
|
406
|
+
#colHeadersTable
|
|
324
407
|
class="k-pivotgrid-column-headers"
|
|
325
408
|
tableType="columnHeader"></kendo-pivotgrid-table>
|
|
326
409
|
<kendo-pivotgrid-table
|
|
410
|
+
#rowHeadersTable
|
|
327
411
|
class="k-pivotgrid-row-headers"
|
|
328
412
|
tableType="rowHeader"></kendo-pivotgrid-table>
|
|
329
413
|
<kendo-pivotgrid-table
|
|
414
|
+
#valuesTable
|
|
330
415
|
class="k-pivotgrid-values"
|
|
331
416
|
tableType="values"></kendo-pivotgrid-table>
|
|
332
417
|
|
|
@@ -352,6 +437,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
352
437
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: PivotGridDataService }, { type: i2$1.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
|
|
353
438
|
type: HostBinding,
|
|
354
439
|
args: ['class.k-pivotgrid']
|
|
440
|
+
}], colHeadersTable: [{
|
|
441
|
+
type: ViewChild,
|
|
442
|
+
args: ['colHeadersTable', { read: ElementRef }]
|
|
443
|
+
}], rowHeadersTable: [{
|
|
444
|
+
type: ViewChild,
|
|
445
|
+
args: ['rowHeadersTable', { read: ElementRef }]
|
|
446
|
+
}], valuesTable: [{
|
|
447
|
+
type: ViewChild,
|
|
448
|
+
args: ['valuesTable', { read: ElementRef }]
|
|
355
449
|
}], loaderSettings: [{
|
|
356
450
|
type: Input
|
|
357
451
|
}] } });
|
package/main.d.ts
CHANGED
|
@@ -8,4 +8,4 @@ export { PivotGridCellDirective } from './rendering/pivotgrid-cell.directive';
|
|
|
8
8
|
export { PivotGridTableComponent } from './rendering/pivotgrid-table.component';
|
|
9
9
|
export { PivotLocalBindingDirective } from './data-binding/local-binding.directive';
|
|
10
10
|
export { PivotOLAPBindingDirective } from './data-binding/olap-binding.directive';
|
|
11
|
-
export
|
|
11
|
+
export * from '@progress/kendo-pivotgrid-common';
|
package/package.json
CHANGED
package/pivotgrid.component.d.ts
CHANGED
|
@@ -8,13 +8,16 @@ import { PivotGridDataService } from './data-binding/pivotgrid-data.service';
|
|
|
8
8
|
import { LoaderSettings } from './models/loader-settings';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Represents the Kendo UI PivotGrid component for Angular.
|
|
12
12
|
*/
|
|
13
13
|
export declare class PivotGridComponent implements AfterViewInit, AfterContentInit, OnDestroy {
|
|
14
14
|
private hostEl;
|
|
15
15
|
private zone;
|
|
16
16
|
private dataService;
|
|
17
17
|
hostClass: boolean;
|
|
18
|
+
private colHeadersTable;
|
|
19
|
+
private rowHeadersTable;
|
|
20
|
+
private valuesTable;
|
|
18
21
|
/**
|
|
19
22
|
* Specify the type, size and color of the PivotGrid's loader.
|
|
20
23
|
*
|
|
@@ -28,12 +31,13 @@ export declare class PivotGridComponent implements AfterViewInit, AfterContentIn
|
|
|
28
31
|
loading: boolean;
|
|
29
32
|
private resizeObservers;
|
|
30
33
|
private _loaderSettings;
|
|
31
|
-
private
|
|
34
|
+
private subs;
|
|
32
35
|
constructor(hostEl: ElementRef, zone: NgZone, dataService: PivotGridDataService, _scrollbarWidthService: ScrollbarWidthService);
|
|
33
36
|
ngAfterViewInit(): void;
|
|
34
37
|
ngAfterContentInit(): void;
|
|
35
38
|
ngOnDestroy(): void;
|
|
36
39
|
private resizeContainer;
|
|
40
|
+
private handleScroll;
|
|
37
41
|
static ɵfac: i0.ɵɵFactoryDeclaration<PivotGridComponent, never>;
|
|
38
42
|
static ɵcmp: i0.ɵɵComponentDeclaration<PivotGridComponent, "kendo-pivotgrid", never, { "loaderSettings": "loaderSettings"; }, {}, never, never>;
|
|
39
43
|
}
|
package/util.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 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 declare const isPresent: (value: any) => boolean;
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
* Returns whether two arrays contain the same values.
|
|
12
|
+
* Assumes array elements are primitive types
|
|
13
|
+
*/
|
|
14
|
+
export declare const areSameArrays: (a1: any[], a2: any[]) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
*/
|
|
18
|
+
export declare const wheelDelta: (e: any, axis: 'X' | 'Y') => number;
|
|
19
|
+
/**
|
|
20
|
+
* @hidden
|
|
21
|
+
*/
|
|
22
|
+
export declare const syncScroll: (source: HTMLTableElement, targets: HTMLTableElement[]) => void;
|
|
23
|
+
/**
|
|
24
|
+
* @hidden
|
|
25
|
+
*/
|
|
26
|
+
export declare const syncWheel: (event: Event, tables: Element[], prop: 'scrollTop' | 'scrollLeft', axis: 'X' | 'Y') => void;
|