@progress/kendo-angular-pivotgrid 0.2.0-dev.202208181226 → 0.2.0-dev.202208181233
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/data-binding/pivotgrid-data.service.d.ts +5 -1
- package/esm2015/data-binding/pivotgrid-data.service.js +18 -3
- package/esm2015/package-metadata.js +1 -1
- package/esm2015/pivotgrid.component.js +6 -1
- package/esm2015/rendering/pivotgrid-cell.directive.js +6 -3
- package/esm2015/rendering/pivotgrid-table.component.js +29 -10
- package/esm2015/util.js +27 -0
- package/fesm2015/kendo-angular-pivotgrid.js +117 -50
- package/package.json +1 -1
- package/pivotgrid.component.d.ts +1 -0
- package/rendering/pivotgrid-table.component.d.ts +1 -0
- package/util.d.ts +8 -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("rxjs/operators"),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","rxjs/operators","@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.rxjs.operators,e.ng.common,e.KendoAngularIndicators,e.KendoAngularL10N)}(this,function(e,t,G,n,s,a,V,o,r,i){"use strict";function l(n){var o;return n&&n.__esModule?n:(o=Object.create(null),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(t),c=l(n),p=l(o),u=l(r),N={name:"@progress/kendo-angular-pivotgrid",productName:"Kendo UI for Angular",productCodes:["KENDOUIANGULAR","KENDOUICOMPLETE"],publishDate:1660825543,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 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)}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:t.Injectable}],propDecorators:{expandedStateChange:[{type:t.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(x.prototype,"expanded",{get:function(){var e;return(null==(e=this.kendoPivotGridCell)?void 0:e.hasChildren)&&this.kendoPivotGridCell.children.length},enumerable:!1,configurable:!0}),x.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)},x);function x(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: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:d.ElementRef},{type:d.Renderer2},{type:y}]},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 w=C;function C(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",colWidth:"colWidth"},ngImport:d,template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col \n *ngFor="let item of headerItems;"\n [style.width]="tableType !== \'rowHeader\' ? colWidth >= 0 ? colWidth + \'px\' : \'200px\' : undefined" />\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:t.Component,args:[{selector:"kendo-pivotgrid-table",template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col \n *ngFor="let item of headerItems;"\n [style.width]="tableType !== \'rowHeader\' ? colWidth >= 0 ? colWidth + \'px\' : \'200px\' : undefined" />\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:t.Input}],colWidth:[{type:t.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(V.merge(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.columnHeadersWidth=200,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(N)}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",columnHeadersWidth:"columnHeadersWidth"},host:{properties:{"class.k-pivotgrid":"this.hostClass"}},providers:[y],viewQueries:[{propertyName:"colHeadersTable",first:!0,predicate:["colHeadersTable"],descendants:!0,read:t.ElementRef},{propertyName:"rowHeadersTable",first:!0,predicate:["rowHeadersTable"],descendants:!0,read:t.ElementRef},{propertyName:"valuesTable",first:!0,predicate:["valuesTable"],descendants:!0,read:t.ElementRef}],ngImport:d,template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n #colHeadersTable\n [colWidth]="columnHeadersWidth"\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 [colWidth]="columnHeadersWidth"\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","colWidth"]},{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:t.Component,args:[{selector:"kendo-pivotgrid",providers:[y],template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n #colHeadersTable\n [colWidth]="columnHeadersWidth"\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 [colWidth]="columnHeadersWidth"\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:t.HostBinding,args:["class.k-pivotgrid"]}],colHeadersTable:[{type:t.ViewChild,args:["colHeadersTable",{read:t.ElementRef}]}],rowHeadersTable:[{type:t.ViewChild,args:["rowHeadersTable",{read:t.ElementRef}]}],valuesTable:[{type:t.ViewChild,args:["valuesTable",{read:t.ElementRef}]}],loaderSettings:[{type:t.Input}],columnHeadersWidth:[{type:t.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:t.Directive,args:[{selector:"kendo-base-binding-directive"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{columnAxes:[{type:t.Input}],rowAxes:[{type:t.Input}],measureAxes:[{type:t.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:t.Directive,args:[{selector:"[kendoPivotLocalBinding]",exportAs:"kendoPivotLocalBinding"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{data:[{type:t.Input,args:["kendoPivotLocalBinding"]}],dimensions:[{type:t.Input}],measures:[{type:t.Input}]}});v(j,H=u),j.prototype.ngOnChanges=function(e){n.anyChanged(["url","cube","catalog","columnAxes","rowAxes","measureAxes"],e)&&this.loadData()},j.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=j;function j(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:t.Directive,args:[{selector:"[kendoPivotOLAPBinding]",exportAs:"kendoPivotOLAPBinding"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{url:[{type:t.Input}],cube:[{type:t.Input}],catalog:[{type:t.Input}]}});var R=[o.CommonModule,n.EventsModule,r.IndicatorsModule],L=[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(R))]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,decorators:[{type:t.NgModule,args:[{imports:h([],m(R)),declarations:h([],m(L)),exports:h([],m(L)),providers:[{provide:i.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=I,e.PivotGridComponent=S,e.PivotGridModule=F,e.PivotGridTableComponent=w,e.PivotLocalBindingDirective=p,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("rxjs/operators"),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","rxjs/operators","@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.rxjs.operators,e.ng.common,e.KendoAngularIndicators,e.KendoAngularL10N)}(this,function(e,t,F,l,d,i,V,n,r,o){"use strict";function a(n){var r;return n&&n.__esModule?n:(r=Object.create(null),n&&Object.keys(n).forEach(function(e){var t;"default"!==e&&(t=Object.getOwnPropertyDescriptor(n,e),Object.defineProperty(r,e,t.get?t:{enumerable:!0,get:function(){return n[e]}}))}),r.default=n,Object.freeze(r))}var s=a(t),c=a(l),p=a(n),u=a(r),N={name:"@progress/kendo-angular-pivotgrid",productName:"Kendo UI for Angular",productCodes:["KENDOUIANGULAR","KENDOUICOMPLETE"],publishDate:1660825955,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 h(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function m(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||((r=r||Array.prototype.slice.call(t,0,o))[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}Object.create;function y(e,t,n,r){(e="Y"===r?-b(e,r):b(e,r))&&(t[0][n]=t[1][n]+=e)}function f(e,n,r){return e.reduce(function(e,t){return n(t)?m(m([],h(e)),[r(t)]):e},[])}var b=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},L=0,k=(I.prototype.updateRowsAndCols=function(){var n=this,e=d.toTree((this.rows||[]).slice()),e=h(d.toRows(e),4),t=e[0],r=e[1],o=e[2],e=e[3],i=d.toTree((this.columns||[]).slice()),i=h(d.toColumns(i),3),a=i[0],s=i[1],i=i[2];this.columnHeaderLeaves=s,this.columnHeaderCols.next(s),this.columnHeaderRows.next(a),this.rowHeaderLeaves=r,this.rowHeaderCols.next(new Array(e).fill({})),this.rowHeaderRows.next(t),this.valuesRows.next(d.toData((this.normalizedData||[]).slice(),s,r,i,o)),l.isDocumentAvailable()&&this.ngZone.runOutsideAngular(function(){setTimeout(function(){return e=n.wrapper,t=e.querySelectorAll(".k-pivotgrid-row-headers .k-pivotgrid-row"),r=e.querySelectorAll(".k-pivotgrid-column-headers th"),o=e.querySelectorAll(".k-pivotgrid-values td"),t.forEach(function(e,t){var n=f(Array.from(o),function(e){return e.getAttribute("id").split("-")[4]===(t+1).toString()},function(e){return e.getAttribute("id")});e.setAttribute("aria-owns",n.join(" "))}),void o.forEach(function(e){var n=+e.getAttribute("id").split("-")[5],t=f(Array.from(r),function(e){var t=+e.getAttribute("id").split("-")[5],e=+e.getAttribute("colspan");return n==t||1<e&&n<=t+e-1},function(e){return e.getAttribute("id")});e.setAttribute("aria-describedby",t.join(" "))});var e,t,r,o})})},I);function I(e){this.ngZone=e,this.expandedStateChange=new t.EventEmitter,this.columnHeaderRows=new i.BehaviorSubject([]),this.columnHeaderCols=new i.BehaviorSubject([]),this.rowHeaderCols=new i.BehaviorSubject([]),this.rowHeaderRows=new i.BehaviorSubject([]),this.valuesRows=new i.BehaviorSubject([]),this.loading=new i.BehaviorSubject(!1),this.pivotGridId=L++}k.ɵfac=s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:k,deps:[{token:s.NgZone}],target:s.ɵɵFactoryTarget.Injectable}),k.ɵprov=s.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:k}),s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:k,decorators:[{type:t.Injectable}],ctorParameters:function(){return[{type:s.NgZone}]},propDecorators:{expandedStateChange:[{type:t.Output}]}});Object.defineProperty(x.prototype,"expanded",{get:function(){var e;return(null==(e=this.kendoPivotGridCell)?void 0:e.hasChildren)&&this.kendoPivotGridCell.children.length},enumerable:!1,configurable:!0}),x.prototype.ngOnInit=function(){var e,t,n=this.hostEl.nativeElement,r=(this.renderer.setAttribute(n,"rowspan",this.kendoPivotGridCell.rowSpan||1),this.renderer.setAttribute(n,"colspan",this.kendoPivotGridCell.colSpan||1),{"k-pivotgrid-header-total":(null==(e=this.kendoPivotGridCell)?void 0:e.total)||"values"===this.tableType&&(this.dataService.rowHeaderLeaves[this.rowIndex].total||this.dataService.columnHeaderLeaves[this.colIndex].total),"k-pivotgrid-header-root":0===(null==(e=this.kendoPivotGridCell)?void 0:e.levelNum),"k-pivotgrid-expanded":(null==(e=this.kendoPivotGridCell)?void 0:e.hasChildren)&&this.kendoPivotGridCell.children.length,"k-first":0<this.colIndex});for(t in r)r[t]&&this.renderer.addClass(n,t)};var w=x;function x(e,t,n){var r=this;this.hostEl=e,this.renderer=t,this.dataService=n,this.cellClass=!0,this.handleClick=function(){r.dataService.expandedStateChange.emit({action:r.expanded?"collapse":"expand",cell:r.kendoPivotGridCell,tableType:r.tableType})}}w.ɵfac=s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:w,deps:[{token:s.ElementRef},{token:s.Renderer2},{token:k}],target:s.ɵɵFactoryTarget.Component}),w.ɵcmp=s.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:w,selector:"[kendoPivotGridCell]",inputs:{kendoPivotGridCell:"kendoPivotGridCell",tableType:"tableType",rowIndex:"rowIndex",colIndex:"colIndex"},host:{properties:{"class.k-pivotgrid-cell":"this.cellClass"}},ngImport:s,template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n aria-hidden="true"\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"]}]}),s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:w,decorators:[{type:t.Component,args:[{selector:"[kendoPivotGridCell]",template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n aria-hidden="true"\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:s.ElementRef},{type:s.Renderer2},{type:k}]},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}]}});Object.defineProperty(A.prototype,"pivotGridId",{get:function(){return"kendo-pivotgrid-"+this.dataService.pivotGridId+"-"},enumerable:!1,configurable:!0}),A.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}))},A.prototype.ngOnDestroy=function(){this.dataChangeSubs.unsubscribe()};var C=A;function A(e){this.dataService=e,this.dataChangeSubs=new i.Subscription}C.ɵfac=s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:C,deps:[{token:k}],target:s.ɵɵFactoryTarget.Component}),C.ɵcmp=s.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:C,selector:"kendo-pivotgrid-table",inputs:{tableType:"tableType",colWidth:"colWidth"},ngImport:s,template:'\n <table\n class="k-pivotgrid-table"\n role="presentation">\n <colgroup>\n <col \n *ngFor="let item of headerItems;"\n [style.width]="tableType !== \'rowHeader\' ? colWidth >= 0 ? colWidth + \'px\' : \'200px\' : undefined" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody" role="rowgroup">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row"\n role="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"\n [attr.aria-expanded]="cell.hasChildren && cell.children.length ? \'true\' : \'false\'"\n [attr.role]="tableType === \'columnHeader\' ? \'columnheader\' : \'rowheader\'"\n [attr.id]="pivotGridId + (tableType === \'columnHeader\' ? \'ch-\' : \'rh-\') + (rowIndex + 1) + \'-\' + (colIndex + 1)"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"\n role="gridcell"\n [attr.id]="pivotGridId + \'cell-\' + (rowIndex + 1) + \'-\' + (colIndex + 1)"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n ',isInline:!0,components:[{type:w,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"]}]}),s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:C,decorators:[{type:t.Component,args:[{selector:"kendo-pivotgrid-table",template:'\n <table\n class="k-pivotgrid-table"\n role="presentation">\n <colgroup>\n <col \n *ngFor="let item of headerItems;"\n [style.width]="tableType !== \'rowHeader\' ? colWidth >= 0 ? colWidth + \'px\' : \'200px\' : undefined" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody" role="rowgroup">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row"\n role="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"\n [attr.aria-expanded]="cell.hasChildren && cell.children.length ? \'true\' : \'false\'"\n [attr.role]="tableType === \'columnHeader\' ? \'columnheader\' : \'rowheader\'"\n [attr.id]="pivotGridId + (tableType === \'columnHeader\' ? \'ch-\' : \'rh-\') + (rowIndex + 1) + \'-\' + (colIndex + 1)"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"\n role="gridcell"\n [attr.id]="pivotGridId + \'cell-\' + (rowIndex + 1) + \'-\' + (colIndex + 1)"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n '}]}],ctorParameters:function(){return[{type:k}]},propDecorators:{tableType:[{type:t.Input}],colWidth:[{type:t.Input}]}});var T={type:"converging-spinner",themeColor:"primary",size:"large"},S=(Object.defineProperty(D.prototype,"loaderSettings",{get:function(){return this._loaderSettings},set:function(e){this._loaderSettings=Object.assign({},T,e)},enumerable:!1,configurable:!0}),D.prototype.ngAfterViewInit=function(){var o=this;l.isDocumentAvailable()&&this.zone.runOutsideAngular(function(){var e=o.rowHeadersTable.nativeElement.firstElementChild,t=new ResizeObserver(function(){return o.resizeContainer("Columns",e)}),n=(t.observe(e),o.colHeadersTable.nativeElement.firstElementChild),r=new ResizeObserver(function(){return o.resizeContainer("Rows",n)});r.observe(n),o.resizeObservers=[t,r],o.subs.add(i.fromEvent(e,"wheel").pipe(V.merge(i.fromEvent(n,"wheel"),i.fromEvent(o.valuesTable.nativeElement,"scroll"))).subscribe(function(e){return o.handleScroll(e)}))})},D.prototype.ngAfterContentInit=function(){var t=this;this.subs.add(this.dataService.loading.subscribe(function(e){return t.loading=e}))},D.prototype.ngOnDestroy=function(){this.resizeObservers.forEach(function(e){return e.disconnect()}),this.subs.unsubscribe()},D);function D(e,t,n,r){var a=this;this.hostEl=e,this.zone=t,this.dataService=n,this.hostClass=!0,this.ariaRole="grid",this.columnHeadersWidth=200,this.resizeObservers=[],this._loaderSettings=T,this.subs=new i.Subscription,this.resizeContainer=function(e,t){var n=a.hostEl.nativeElement,r="Rows"===e?"offsetHeight":"offsetWidth";n.style["gridTemplate"+e]="",n.style["gridTemplate"+e]=t[r]+"px 1fr"},this.handleScroll=function(e){var t,n,r,o,i;e.target===a.valuesTable.nativeElement?(t=e.target,n=[a.rowHeadersTable.nativeElement,a.colHeadersTable.nativeElement],r=t.scrollTop,t=t.scrollLeft,o=n[0].scrollTop,i=t!==n[1].scrollLeft,r!==o?n[0].scrollTop=r:i&&(n[1].scrollLeft=t)):e.target.closest(".k-pivotgrid-row-headers")?y(e,[a.valuesTable.nativeElement,a.rowHeadersTable.nativeElement],"scrollTop","Y"):e.target.closest(".k-pivotgrid-column-headers")&&y(e,[a.valuesTable.nativeElement,a.colHeadersTable.nativeElement],"scrollLeft","X")},F.validatePackage(N),n.wrapper=e.nativeElement}S.ɵfac=s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:S,deps:[{token:s.ElementRef},{token:s.NgZone},{token:k},{token:c.ScrollbarWidthService}],target:s.ɵɵFactoryTarget.Component}),S.ɵcmp=s.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:S,selector:"kendo-pivotgrid",inputs:{loaderSettings:"loaderSettings",columnHeadersWidth:"columnHeadersWidth"},host:{properties:{"class.k-pivotgrid":"this.hostClass","attr.role":"this.ariaRole"}},providers:[k],viewQueries:[{propertyName:"colHeadersTable",first:!0,predicate:["colHeadersTable"],descendants:!0,read:t.ElementRef},{propertyName:"rowHeadersTable",first:!0,predicate:["rowHeadersTable"],descendants:!0,read:t.ElementRef},{propertyName:"valuesTable",first:!0,predicate:["valuesTable"],descendants:!0,read:t.ElementRef}],ngImport:s,template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n #colHeadersTable\n [colWidth]="columnHeadersWidth"\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 [colWidth]="columnHeadersWidth"\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:C,selector:"kendo-pivotgrid-table",inputs:["tableType","colWidth"]},{type:u.LoaderComponent,selector:"kendo-loader",inputs:["type","themeColor","size"]}],directives:[{type:p.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:S,decorators:[{type:t.Component,args:[{selector:"kendo-pivotgrid",providers:[k],template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n #colHeadersTable\n [colWidth]="columnHeadersWidth"\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 [colWidth]="columnHeadersWidth"\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:s.ElementRef},{type:s.NgZone},{type:k},{type:c.ScrollbarWidthService}]},propDecorators:{hostClass:[{type:t.HostBinding,args:["class.k-pivotgrid"]}],ariaRole:[{type:t.HostBinding,args:["attr.role"]}],colHeadersTable:[{type:t.ViewChild,args:["colHeadersTable",{read:t.ElementRef}]}],rowHeadersTable:[{type:t.ViewChild,args:["rowHeadersTable",{read:t.ElementRef}]}],valuesTable:[{type:t.ViewChild,args:["valuesTable",{read:t.ElementRef}]}],loaderSettings:[{type:t.Input}],columnHeadersWidth:[{type:t.Input}]}});P.prototype.ngOnInit=function(){var r=this;this.loadData(),this.expandedStateSub=this.dataService.expandedStateChange.subscribe(function(n){r.zone.run(function(){var e="columnHeader"===n.tableType,t=e?"columnAxes":"rowAxes",e=d.toTree((e?r.dataService.columns:r.dataService.rows||[]).slice());r.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:d.HEADERS_ACTION.toggle,payload:n},n=d.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 i.Subscription}u.ɵfac=s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:u,deps:[{token:k},{token:s.NgZone}],target:s.ɵɵFactoryTarget.Directive}),u.ɵdir=s.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"kendo-base-binding-directive",inputs:{columnAxes:"columnAxes",rowAxes:"rowAxes",measureAxes:"measureAxes"},ngImport:s}),s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:u,decorators:[{type:t.Directive,args:[{selector:"kendo-base-binding-directive"}]}],ctorParameters:function(){return[{type:k},{type:s.NgZone}]},propDecorators:{columnAxes:[{type:t.Input}],rowAxes:[{type:t.Input}],measureAxes:[{type:t.Input}]}});var O,E={dataField:"aggregate",columnsData:"columns"},p=(v(H,O=u),H.prototype.ngOnChanges=function(e){l.anyChanged(["data","dimensions","columnAxes","rowAxes","measureAxes","measures"],e)&&this.loadData()},H.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),r=this.measureAxes.map(function(t){return e.measures.find(function(e){return String(e.name)===String(t.name)})}).filter(Boolean),o=d.createDataTree(this.data,n,t,r,E);this.dataState=d.createLocalDataState({dataTree:o,rowSettings:n,columnSettings:t,rowAxes:this.rowAxes,columnAxes:this.columnAxes,measures:r,sort:[],fields:E}),this.updateDataServiceFields()},H.prototype.getRootAxes=function(e){return Array.from(d.rootFields(e).keys()).join("&")},H);function H(e,t){var n=O.call(this,e,t)||this;return n.createAxisSettings=function(e){return Object.assign({key:e},n.dimensions[e])},n}p.ɵfac=s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:p,deps:[{token:k},{token:s.NgZone}],target:s.ɵɵFactoryTarget.Directive}),p.ɵdir=s.ɵɵ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:s}),s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:p,decorators:[{type:t.Directive,args:[{selector:"[kendoPivotLocalBinding]",exportAs:"kendoPivotLocalBinding"}]}],ctorParameters:function(){return[{type:k},{type:s.NgZone}]},propDecorators:{data:[{type:t.Input,args:["kendoPivotLocalBinding"]}],dimensions:[{type:t.Input}],measures:[{type:t.Input}]}});v(G,j=u),G.prototype.ngOnChanges=function(e){l.anyChanged(["url","cube","catalog","columnAxes","rowAxes","measureAxes"],e)&&this.loadData()},G.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});d.fetchData({url:this.url},JSON.parse(JSON.stringify(e))).then(d.createDataState).then(function(e){t.dataState=e,t.updateDataServiceFields(),t.dataService.loading.next(!1)})};var j,u=G;function G(e,t){return j.call(this,e,t)||this}u.ɵfac=s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:u,deps:[{token:k},{token:s.NgZone}],target:s.ɵɵFactoryTarget.Directive}),u.ɵdir=s.ɵɵ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:s}),s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:u,decorators:[{type:t.Directive,args:[{selector:"[kendoPivotOLAPBinding]",exportAs:"kendoPivotOLAPBinding"}]}],ctorParameters:function(){return[{type:k},{type:s.NgZone}]},propDecorators:{url:[{type:t.Input}],cube:[{type:t.Input}],catalog:[{type:t.Input}]}});var B=[n.CommonModule,l.EventsModule,r.IndicatorsModule],W=[S,C,w,p,u],R=function(){};R.ɵfac=s.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:R,deps:[],target:s.ɵɵFactoryTarget.NgModule}),R.ɵmod=s.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:R,declarations:[S,C,w,p,u],imports:[n.CommonModule,l.EventsModule,r.IndicatorsModule],exports:[S,C,w,p,u]}),R.ɵinj=s.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:R,providers:[{provide:o.L10N_PREFIX,useValue:"kendo.pivotgrid"}],imports:[m([],h(B))]}),s.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:s,type:R,decorators:[{type:t.NgModule,args:[{imports:m([],h(B)),declarations:m([],h(W)),exports:m([],h(W)),providers:[{provide:o.L10N_PREFIX,useValue:"kendo.pivotgrid"}]}]}]}),Object.defineProperty(e,"averageAggregate",{enumerable:!0,get:function(){return d.averageAggregate}}),Object.defineProperty(e,"maxAggregate",{enumerable:!0,get:function(){return d.maxAggregate}}),Object.defineProperty(e,"minAggregate",{enumerable:!0,get:function(){return d.minAggregate}}),Object.defineProperty(e,"sumAggregate",{enumerable:!0,get:function(){return d.sumAggregate}}),e.PivotGridCellDirective=w,e.PivotGridComponent=S,e.PivotGridModule=R,e.PivotGridTableComponent=C,e.PivotLocalBindingDirective=p,e.PivotOLAPBindingDirective=u,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
@@ -2,7 +2,7 @@
|
|
|
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 { EventEmitter } from '@angular/core';
|
|
5
|
+
import { EventEmitter, NgZone } from '@angular/core';
|
|
6
6
|
import { PivotDataItem, Tuple } from '@progress/kendo-pivotgrid-common';
|
|
7
7
|
import { BehaviorSubject } from 'rxjs';
|
|
8
8
|
import { ExpandedStateChangeEvent } from '../models/expanded-state-action';
|
|
@@ -11,10 +11,12 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
* @hidden
|
|
12
12
|
*/
|
|
13
13
|
export declare class PivotGridDataService {
|
|
14
|
+
private ngZone;
|
|
14
15
|
expandedStateChange: EventEmitter<ExpandedStateChangeEvent>;
|
|
15
16
|
normalizedData: any[];
|
|
16
17
|
rows: Tuple[];
|
|
17
18
|
columns: Tuple[];
|
|
19
|
+
wrapper: Element;
|
|
18
20
|
columnHeaderLeaves: {
|
|
19
21
|
total: boolean;
|
|
20
22
|
path: string[];
|
|
@@ -32,6 +34,8 @@ export declare class PivotGridDataService {
|
|
|
32
34
|
cells: PivotDataItem[];
|
|
33
35
|
}[]>;
|
|
34
36
|
loading: BehaviorSubject<boolean>;
|
|
37
|
+
pivotGridId: number;
|
|
38
|
+
constructor(ngZone: NgZone);
|
|
35
39
|
updateRowsAndCols(): void;
|
|
36
40
|
static ɵfac: i0.ɵɵFactoryDeclaration<PivotGridDataService, never>;
|
|
37
41
|
static ɵprov: i0.ɵɵInjectableDeclaration<PivotGridDataService>;
|
|
@@ -3,14 +3,21 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { EventEmitter, Injectable, Output } from '@angular/core';
|
|
6
|
+
import { isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
6
7
|
import { toColumns, toData, toRows, toTree } from '@progress/kendo-pivotgrid-common';
|
|
7
8
|
import { BehaviorSubject } from 'rxjs';
|
|
9
|
+
import { matchAriaAttributes } from '../util';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
let nextPivotGridId = 0;
|
|
9
15
|
/**
|
|
10
16
|
* @hidden
|
|
11
17
|
*/
|
|
12
18
|
export class PivotGridDataService {
|
|
13
|
-
constructor() {
|
|
19
|
+
constructor(ngZone) {
|
|
20
|
+
this.ngZone = ngZone;
|
|
14
21
|
this.expandedStateChange = new EventEmitter();
|
|
15
22
|
this.columnHeaderRows = new BehaviorSubject([]);
|
|
16
23
|
this.columnHeaderCols = new BehaviorSubject([]);
|
|
@@ -18,6 +25,7 @@ export class PivotGridDataService {
|
|
|
18
25
|
this.rowHeaderRows = new BehaviorSubject([]);
|
|
19
26
|
this.valuesRows = new BehaviorSubject([]);
|
|
20
27
|
this.loading = new BehaviorSubject(false);
|
|
28
|
+
this.pivotGridId = nextPivotGridId++;
|
|
21
29
|
}
|
|
22
30
|
updateRowsAndCols() {
|
|
23
31
|
const rowsTree = toTree((this.rows || []).slice());
|
|
@@ -31,12 +39,19 @@ export class PivotGridDataService {
|
|
|
31
39
|
this.rowHeaderCols.next(new Array(rowHeaderBreadth).fill({}));
|
|
32
40
|
this.rowHeaderRows.next(rowHeaderRows);
|
|
33
41
|
this.valuesRows.next(toData((this.normalizedData || []).slice(), columnHeaderLeaves, rowHeaderLeaves, columnHeaderBreadth, rowHeaderDepth));
|
|
42
|
+
if (isDocumentAvailable()) {
|
|
43
|
+
this.ngZone.runOutsideAngular(() => {
|
|
44
|
+
// needed because all tables need to be rendered in accordance with the new settings
|
|
45
|
+
// before applying the required DOM attributes
|
|
46
|
+
setTimeout(() => matchAriaAttributes(this.wrapper));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
34
49
|
}
|
|
35
50
|
}
|
|
36
|
-
PivotGridDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
51
|
+
PivotGridDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
52
|
PivotGridDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService });
|
|
38
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService, decorators: [{
|
|
39
54
|
type: Injectable
|
|
40
|
-
}], propDecorators: { expandedStateChange: [{
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { expandedStateChange: [{
|
|
41
56
|
type: Output
|
|
42
57
|
}] } });
|
|
@@ -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: 1660825955,
|
|
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
|
};
|
|
@@ -31,6 +31,7 @@ export class PivotGridComponent {
|
|
|
31
31
|
this.zone = zone;
|
|
32
32
|
this.dataService = dataService;
|
|
33
33
|
this.hostClass = true;
|
|
34
|
+
this.ariaRole = 'grid';
|
|
34
35
|
/**
|
|
35
36
|
* Specify the width of the column header and data cells. Value is treated as pixels.
|
|
36
37
|
*
|
|
@@ -62,6 +63,7 @@ export class PivotGridComponent {
|
|
|
62
63
|
}
|
|
63
64
|
};
|
|
64
65
|
validatePackage(packageMetadata);
|
|
66
|
+
dataService.wrapper = hostEl.nativeElement;
|
|
65
67
|
}
|
|
66
68
|
/**
|
|
67
69
|
* Specify the type, size and color of the PivotGrid's loader.
|
|
@@ -102,7 +104,7 @@ export class PivotGridComponent {
|
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
106
|
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 });
|
|
105
|
-
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings", columnHeadersWidth: "columnHeadersWidth" }, host: { properties: { "class.k-pivotgrid": "this.hostClass" } }, providers: [
|
|
107
|
+
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings", columnHeadersWidth: "columnHeadersWidth" }, host: { properties: { "class.k-pivotgrid": "this.hostClass", "attr.role": "this.ariaRole" } }, providers: [
|
|
106
108
|
PivotGridDataService
|
|
107
109
|
], 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: `
|
|
108
110
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
@@ -176,6 +178,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
176
178
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PivotGridDataService }, { type: i2.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
|
|
177
179
|
type: HostBinding,
|
|
178
180
|
args: ['class.k-pivotgrid']
|
|
181
|
+
}], ariaRole: [{
|
|
182
|
+
type: HostBinding,
|
|
183
|
+
args: ['attr.role']
|
|
179
184
|
}], colHeadersTable: [{
|
|
180
185
|
type: ViewChild,
|
|
181
186
|
args: ['colHeadersTable', { read: ElementRef }]
|
|
@@ -29,15 +29,16 @@ export class PivotGridCellDirective {
|
|
|
29
29
|
return ((_a = this.kendoPivotGridCell) === null || _a === void 0 ? void 0 : _a.hasChildren) && this.kendoPivotGridCell.children.length;
|
|
30
30
|
}
|
|
31
31
|
ngOnInit() {
|
|
32
|
+
var _a, _b, _c;
|
|
32
33
|
const nativeElement = this.hostEl.nativeElement;
|
|
33
34
|
this.renderer.setAttribute(nativeElement, 'rowspan', this.kendoPivotGridCell.rowSpan || 1);
|
|
34
35
|
this.renderer.setAttribute(nativeElement, 'colspan', this.kendoPivotGridCell.colSpan || 1);
|
|
35
36
|
const classesToAdd = {
|
|
36
|
-
'k-pivotgrid-header-total': this.kendoPivotGridCell.total || (this.tableType === 'values'
|
|
37
|
+
'k-pivotgrid-header-total': ((_a = this.kendoPivotGridCell) === null || _a === void 0 ? void 0 : _a.total) || (this.tableType === 'values'
|
|
37
38
|
&& (this.dataService.rowHeaderLeaves[this.rowIndex].total ||
|
|
38
39
|
this.dataService.columnHeaderLeaves[this.colIndex].total)),
|
|
39
|
-
'k-pivotgrid-header-root': this.kendoPivotGridCell.levelNum === 0,
|
|
40
|
-
'k-pivotgrid-expanded': this.kendoPivotGridCell.hasChildren && this.kendoPivotGridCell.children.length,
|
|
40
|
+
'k-pivotgrid-header-root': ((_b = this.kendoPivotGridCell) === null || _b === void 0 ? void 0 : _b.levelNum) === 0,
|
|
41
|
+
'k-pivotgrid-expanded': ((_c = this.kendoPivotGridCell) === null || _c === void 0 ? void 0 : _c.hasChildren) && this.kendoPivotGridCell.children.length,
|
|
41
42
|
'k-first': this.colIndex > 0
|
|
42
43
|
};
|
|
43
44
|
for (let prop in classesToAdd) {
|
|
@@ -52,6 +53,7 @@ PivotGridCellDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
52
53
|
<span
|
|
53
54
|
*ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"
|
|
54
55
|
class="k-icon"
|
|
56
|
+
aria-hidden="true"
|
|
55
57
|
[kendoEventsOutsideAngular]="{
|
|
56
58
|
click: handleClick
|
|
57
59
|
}"
|
|
@@ -68,6 +70,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
68
70
|
<span
|
|
69
71
|
*ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"
|
|
70
72
|
class="k-icon"
|
|
73
|
+
aria-hidden="true"
|
|
71
74
|
[kendoEventsOutsideAngular]="{
|
|
72
75
|
click: handleClick
|
|
73
76
|
}"
|
|
@@ -16,6 +16,9 @@ export class PivotGridTableComponent {
|
|
|
16
16
|
this.dataService = dataService;
|
|
17
17
|
this.dataChangeSubs = new Subscription();
|
|
18
18
|
}
|
|
19
|
+
get pivotGridId() {
|
|
20
|
+
return `kendo-pivotgrid-${this.dataService.pivotGridId}-`;
|
|
21
|
+
}
|
|
19
22
|
ngOnInit() {
|
|
20
23
|
this.dataChangeSubs.add(this.dataService[`${this.tableType}Rows`].subscribe(rows => this.rows = rows));
|
|
21
24
|
this.dataChangeSubs.add(this.tableType === 'values' ?
|
|
@@ -28,28 +31,36 @@ export class PivotGridTableComponent {
|
|
|
28
31
|
}
|
|
29
32
|
PivotGridTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridTableComponent, deps: [{ token: i1.PivotGridDataService }], target: i0.ɵɵFactoryTarget.Component });
|
|
30
33
|
PivotGridTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridTableComponent, selector: "kendo-pivotgrid-table", inputs: { tableType: "tableType", colWidth: "colWidth" }, ngImport: i0, template: `
|
|
31
|
-
<table
|
|
34
|
+
<table
|
|
35
|
+
class="k-pivotgrid-table"
|
|
36
|
+
role="presentation">
|
|
32
37
|
<colgroup>
|
|
33
38
|
<col
|
|
34
39
|
*ngFor="let item of headerItems;"
|
|
35
40
|
[style.width]="tableType !== 'rowHeader' ? colWidth >= 0 ? colWidth + 'px' : '200px' : undefined" />
|
|
36
41
|
</colgroup>
|
|
37
|
-
<tbody class="k-pivotgrid-tbody">
|
|
42
|
+
<tbody class="k-pivotgrid-tbody" role="rowgroup">
|
|
38
43
|
<tr *ngFor="let row of rows; index as rowIndex"
|
|
39
|
-
class="k-pivotgrid-row"
|
|
44
|
+
class="k-pivotgrid-row"
|
|
45
|
+
role="row">
|
|
40
46
|
<ng-container *ngFor="let cell of row.cells; index as colIndex">
|
|
41
47
|
<th
|
|
42
48
|
*ngIf="cell && tableType !== 'values'"
|
|
43
49
|
[kendoPivotGridCell]="cell"
|
|
44
50
|
[tableType]="tableType"
|
|
45
51
|
[colIndex]="colIndex"
|
|
46
|
-
[rowIndex]="rowIndex"
|
|
52
|
+
[rowIndex]="rowIndex"
|
|
53
|
+
[attr.aria-expanded]="cell.hasChildren && cell.children.length ? 'true' : 'false'"
|
|
54
|
+
[attr.role]="tableType === 'columnHeader' ? 'columnheader' : 'rowheader'"
|
|
55
|
+
[attr.id]="pivotGridId + (tableType === 'columnHeader' ? 'ch-' : 'rh-') + (rowIndex + 1) + '-' + (colIndex + 1)"></th>
|
|
47
56
|
<td
|
|
48
57
|
*ngIf="cell && tableType === 'values'"
|
|
49
58
|
[kendoPivotGridCell]="cell"
|
|
50
59
|
tableType="values"
|
|
51
60
|
[colIndex]="colIndex"
|
|
52
|
-
[rowIndex]="rowIndex"
|
|
61
|
+
[rowIndex]="rowIndex"
|
|
62
|
+
role="gridcell"
|
|
63
|
+
[attr.id]="pivotGridId + 'cell-' + (rowIndex + 1) + '-' + (colIndex + 1)"></td>
|
|
53
64
|
</ng-container>
|
|
54
65
|
</tr>
|
|
55
66
|
</tbody>
|
|
@@ -60,28 +71,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
60
71
|
args: [{
|
|
61
72
|
selector: 'kendo-pivotgrid-table',
|
|
62
73
|
template: `
|
|
63
|
-
<table
|
|
74
|
+
<table
|
|
75
|
+
class="k-pivotgrid-table"
|
|
76
|
+
role="presentation">
|
|
64
77
|
<colgroup>
|
|
65
78
|
<col
|
|
66
79
|
*ngFor="let item of headerItems;"
|
|
67
80
|
[style.width]="tableType !== 'rowHeader' ? colWidth >= 0 ? colWidth + 'px' : '200px' : undefined" />
|
|
68
81
|
</colgroup>
|
|
69
|
-
<tbody class="k-pivotgrid-tbody">
|
|
82
|
+
<tbody class="k-pivotgrid-tbody" role="rowgroup">
|
|
70
83
|
<tr *ngFor="let row of rows; index as rowIndex"
|
|
71
|
-
class="k-pivotgrid-row"
|
|
84
|
+
class="k-pivotgrid-row"
|
|
85
|
+
role="row">
|
|
72
86
|
<ng-container *ngFor="let cell of row.cells; index as colIndex">
|
|
73
87
|
<th
|
|
74
88
|
*ngIf="cell && tableType !== 'values'"
|
|
75
89
|
[kendoPivotGridCell]="cell"
|
|
76
90
|
[tableType]="tableType"
|
|
77
91
|
[colIndex]="colIndex"
|
|
78
|
-
[rowIndex]="rowIndex"
|
|
92
|
+
[rowIndex]="rowIndex"
|
|
93
|
+
[attr.aria-expanded]="cell.hasChildren && cell.children.length ? 'true' : 'false'"
|
|
94
|
+
[attr.role]="tableType === 'columnHeader' ? 'columnheader' : 'rowheader'"
|
|
95
|
+
[attr.id]="pivotGridId + (tableType === 'columnHeader' ? 'ch-' : 'rh-') + (rowIndex + 1) + '-' + (colIndex + 1)"></th>
|
|
79
96
|
<td
|
|
80
97
|
*ngIf="cell && tableType === 'values'"
|
|
81
98
|
[kendoPivotGridCell]="cell"
|
|
82
99
|
tableType="values"
|
|
83
100
|
[colIndex]="colIndex"
|
|
84
|
-
[rowIndex]="rowIndex"
|
|
101
|
+
[rowIndex]="rowIndex"
|
|
102
|
+
role="gridcell"
|
|
103
|
+
[attr.id]="pivotGridId + 'cell-' + (rowIndex + 1) + '-' + (colIndex + 1)"></td>
|
|
85
104
|
</ng-container>
|
|
86
105
|
</tr>
|
|
87
106
|
</tbody>
|
package/esm2015/util.js
CHANGED
|
@@ -64,3 +64,30 @@ export const syncWheel = (event, tables, prop, axis) => {
|
|
|
64
64
|
tables[1][prop] += delta;
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* @hidden
|
|
69
|
+
*/
|
|
70
|
+
export const matchAriaAttributes = (wrapper) => {
|
|
71
|
+
const rowHeaderRows = wrapper.querySelectorAll('.k-pivotgrid-row-headers .k-pivotgrid-row');
|
|
72
|
+
const colHeaderCells = wrapper.querySelectorAll('.k-pivotgrid-column-headers th');
|
|
73
|
+
const valueTableCells = wrapper.querySelectorAll('.k-pivotgrid-values td');
|
|
74
|
+
rowHeaderRows.forEach((row, index) => {
|
|
75
|
+
const valueCellsIds = filterAndMap(Array.from(valueTableCells), c => c.getAttribute('id').split('-')[4] === (index + 1).toString(), c => c.getAttribute('id'));
|
|
76
|
+
row.setAttribute('aria-owns', valueCellsIds.join(' '));
|
|
77
|
+
});
|
|
78
|
+
valueTableCells.forEach(cell => {
|
|
79
|
+
const cellColIndex = +cell.getAttribute('id').split('-')[5];
|
|
80
|
+
const colHeaderCellsIds = filterAndMap(Array.from(colHeaderCells), c => {
|
|
81
|
+
const headerCellColIndex = +c.getAttribute('id').split('-')[5];
|
|
82
|
+
const headerCellColspan = +c.getAttribute('colspan');
|
|
83
|
+
const colIndexIsEqual = cellColIndex === headerCellColIndex;
|
|
84
|
+
const cellColIndexIsWithinHeaderCellRange = headerCellColspan > 1 && (headerCellColIndex + headerCellColspan - 1 >= cellColIndex);
|
|
85
|
+
return colIndexIsEqual || cellColIndexIsWithinHeaderCellRange;
|
|
86
|
+
}, c => c.getAttribute('id'));
|
|
87
|
+
cell.setAttribute('aria-describedby', colHeaderCellsIds.join(' '));
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* @hidden
|
|
92
|
+
*/
|
|
93
|
+
export const filterAndMap = (arr, predicate, mapper) => arr.reduce((acc, curr) => predicate(curr) ? [...acc, mapper(curr)] : acc, []);
|
|
@@ -24,46 +24,11 @@ const packageMetadata = {
|
|
|
24
24
|
name: '@progress/kendo-angular-pivotgrid',
|
|
25
25
|
productName: 'Kendo UI for Angular',
|
|
26
26
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
27
|
-
publishDate:
|
|
27
|
+
publishDate: 1660825955,
|
|
28
28
|
version: '',
|
|
29
29
|
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'
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
/**
|
|
33
|
-
* @hidden
|
|
34
|
-
*/
|
|
35
|
-
class PivotGridDataService {
|
|
36
|
-
constructor() {
|
|
37
|
-
this.expandedStateChange = new EventEmitter();
|
|
38
|
-
this.columnHeaderRows = new BehaviorSubject([]);
|
|
39
|
-
this.columnHeaderCols = new BehaviorSubject([]);
|
|
40
|
-
this.rowHeaderCols = new BehaviorSubject([]);
|
|
41
|
-
this.rowHeaderRows = new BehaviorSubject([]);
|
|
42
|
-
this.valuesRows = new BehaviorSubject([]);
|
|
43
|
-
this.loading = new BehaviorSubject(false);
|
|
44
|
-
}
|
|
45
|
-
updateRowsAndCols() {
|
|
46
|
-
const rowsTree = toTree((this.rows || []).slice());
|
|
47
|
-
const [rowHeaderRows, rowHeaderLeaves, rowHeaderDepth, rowHeaderBreadth] = toRows(rowsTree);
|
|
48
|
-
const columnsTree = toTree((this.columns || []).slice());
|
|
49
|
-
const [columnHeaderRows, columnHeaderLeaves, columnHeaderBreadth] = toColumns(columnsTree);
|
|
50
|
-
this.columnHeaderLeaves = columnHeaderLeaves;
|
|
51
|
-
this.columnHeaderCols.next(columnHeaderLeaves);
|
|
52
|
-
this.columnHeaderRows.next(columnHeaderRows);
|
|
53
|
-
this.rowHeaderLeaves = rowHeaderLeaves;
|
|
54
|
-
this.rowHeaderCols.next(new Array(rowHeaderBreadth).fill({}));
|
|
55
|
-
this.rowHeaderRows.next(rowHeaderRows);
|
|
56
|
-
this.valuesRows.next(toData((this.normalizedData || []).slice(), columnHeaderLeaves, rowHeaderLeaves, columnHeaderBreadth, rowHeaderDepth));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
PivotGridDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
60
|
-
PivotGridDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService });
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService, decorators: [{
|
|
62
|
-
type: Injectable
|
|
63
|
-
}], propDecorators: { expandedStateChange: [{
|
|
64
|
-
type: Output
|
|
65
|
-
}] } });
|
|
66
|
-
|
|
67
32
|
/**
|
|
68
33
|
* @hidden
|
|
69
34
|
*/
|
|
@@ -126,6 +91,81 @@ const syncWheel = (event, tables, prop, axis) => {
|
|
|
126
91
|
tables[1][prop] += delta;
|
|
127
92
|
}
|
|
128
93
|
};
|
|
94
|
+
/**
|
|
95
|
+
* @hidden
|
|
96
|
+
*/
|
|
97
|
+
const matchAriaAttributes = (wrapper) => {
|
|
98
|
+
const rowHeaderRows = wrapper.querySelectorAll('.k-pivotgrid-row-headers .k-pivotgrid-row');
|
|
99
|
+
const colHeaderCells = wrapper.querySelectorAll('.k-pivotgrid-column-headers th');
|
|
100
|
+
const valueTableCells = wrapper.querySelectorAll('.k-pivotgrid-values td');
|
|
101
|
+
rowHeaderRows.forEach((row, index) => {
|
|
102
|
+
const valueCellsIds = filterAndMap(Array.from(valueTableCells), c => c.getAttribute('id').split('-')[4] === (index + 1).toString(), c => c.getAttribute('id'));
|
|
103
|
+
row.setAttribute('aria-owns', valueCellsIds.join(' '));
|
|
104
|
+
});
|
|
105
|
+
valueTableCells.forEach(cell => {
|
|
106
|
+
const cellColIndex = +cell.getAttribute('id').split('-')[5];
|
|
107
|
+
const colHeaderCellsIds = filterAndMap(Array.from(colHeaderCells), c => {
|
|
108
|
+
const headerCellColIndex = +c.getAttribute('id').split('-')[5];
|
|
109
|
+
const headerCellColspan = +c.getAttribute('colspan');
|
|
110
|
+
const colIndexIsEqual = cellColIndex === headerCellColIndex;
|
|
111
|
+
const cellColIndexIsWithinHeaderCellRange = headerCellColspan > 1 && (headerCellColIndex + headerCellColspan - 1 >= cellColIndex);
|
|
112
|
+
return colIndexIsEqual || cellColIndexIsWithinHeaderCellRange;
|
|
113
|
+
}, c => c.getAttribute('id'));
|
|
114
|
+
cell.setAttribute('aria-describedby', colHeaderCellsIds.join(' '));
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* @hidden
|
|
119
|
+
*/
|
|
120
|
+
const filterAndMap = (arr, predicate, mapper) => arr.reduce((acc, curr) => predicate(curr) ? [...acc, mapper(curr)] : acc, []);
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* @hidden
|
|
124
|
+
*/
|
|
125
|
+
let nextPivotGridId = 0;
|
|
126
|
+
/**
|
|
127
|
+
* @hidden
|
|
128
|
+
*/
|
|
129
|
+
class PivotGridDataService {
|
|
130
|
+
constructor(ngZone) {
|
|
131
|
+
this.ngZone = ngZone;
|
|
132
|
+
this.expandedStateChange = new EventEmitter();
|
|
133
|
+
this.columnHeaderRows = new BehaviorSubject([]);
|
|
134
|
+
this.columnHeaderCols = new BehaviorSubject([]);
|
|
135
|
+
this.rowHeaderCols = new BehaviorSubject([]);
|
|
136
|
+
this.rowHeaderRows = new BehaviorSubject([]);
|
|
137
|
+
this.valuesRows = new BehaviorSubject([]);
|
|
138
|
+
this.loading = new BehaviorSubject(false);
|
|
139
|
+
this.pivotGridId = nextPivotGridId++;
|
|
140
|
+
}
|
|
141
|
+
updateRowsAndCols() {
|
|
142
|
+
const rowsTree = toTree((this.rows || []).slice());
|
|
143
|
+
const [rowHeaderRows, rowHeaderLeaves, rowHeaderDepth, rowHeaderBreadth] = toRows(rowsTree);
|
|
144
|
+
const columnsTree = toTree((this.columns || []).slice());
|
|
145
|
+
const [columnHeaderRows, columnHeaderLeaves, columnHeaderBreadth] = toColumns(columnsTree);
|
|
146
|
+
this.columnHeaderLeaves = columnHeaderLeaves;
|
|
147
|
+
this.columnHeaderCols.next(columnHeaderLeaves);
|
|
148
|
+
this.columnHeaderRows.next(columnHeaderRows);
|
|
149
|
+
this.rowHeaderLeaves = rowHeaderLeaves;
|
|
150
|
+
this.rowHeaderCols.next(new Array(rowHeaderBreadth).fill({}));
|
|
151
|
+
this.rowHeaderRows.next(rowHeaderRows);
|
|
152
|
+
this.valuesRows.next(toData((this.normalizedData || []).slice(), columnHeaderLeaves, rowHeaderLeaves, columnHeaderBreadth, rowHeaderDepth));
|
|
153
|
+
if (isDocumentAvailable()) {
|
|
154
|
+
this.ngZone.runOutsideAngular(() => {
|
|
155
|
+
// needed because all tables need to be rendered in accordance with the new settings
|
|
156
|
+
// before applying the required DOM attributes
|
|
157
|
+
setTimeout(() => matchAriaAttributes(this.wrapper));
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
PivotGridDataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
163
|
+
PivotGridDataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService });
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridDataService, decorators: [{
|
|
165
|
+
type: Injectable
|
|
166
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { expandedStateChange: [{
|
|
167
|
+
type: Output
|
|
168
|
+
}] } });
|
|
129
169
|
|
|
130
170
|
/**
|
|
131
171
|
* @hidden
|
|
@@ -149,15 +189,16 @@ class PivotGridCellDirective {
|
|
|
149
189
|
return ((_a = this.kendoPivotGridCell) === null || _a === void 0 ? void 0 : _a.hasChildren) && this.kendoPivotGridCell.children.length;
|
|
150
190
|
}
|
|
151
191
|
ngOnInit() {
|
|
192
|
+
var _a, _b, _c;
|
|
152
193
|
const nativeElement = this.hostEl.nativeElement;
|
|
153
194
|
this.renderer.setAttribute(nativeElement, 'rowspan', this.kendoPivotGridCell.rowSpan || 1);
|
|
154
195
|
this.renderer.setAttribute(nativeElement, 'colspan', this.kendoPivotGridCell.colSpan || 1);
|
|
155
196
|
const classesToAdd = {
|
|
156
|
-
'k-pivotgrid-header-total': this.kendoPivotGridCell.total || (this.tableType === 'values'
|
|
197
|
+
'k-pivotgrid-header-total': ((_a = this.kendoPivotGridCell) === null || _a === void 0 ? void 0 : _a.total) || (this.tableType === 'values'
|
|
157
198
|
&& (this.dataService.rowHeaderLeaves[this.rowIndex].total ||
|
|
158
199
|
this.dataService.columnHeaderLeaves[this.colIndex].total)),
|
|
159
|
-
'k-pivotgrid-header-root': this.kendoPivotGridCell.levelNum === 0,
|
|
160
|
-
'k-pivotgrid-expanded': this.kendoPivotGridCell.hasChildren && this.kendoPivotGridCell.children.length,
|
|
200
|
+
'k-pivotgrid-header-root': ((_b = this.kendoPivotGridCell) === null || _b === void 0 ? void 0 : _b.levelNum) === 0,
|
|
201
|
+
'k-pivotgrid-expanded': ((_c = this.kendoPivotGridCell) === null || _c === void 0 ? void 0 : _c.hasChildren) && this.kendoPivotGridCell.children.length,
|
|
161
202
|
'k-first': this.colIndex > 0
|
|
162
203
|
};
|
|
163
204
|
for (let prop in classesToAdd) {
|
|
@@ -172,6 +213,7 @@ PivotGridCellDirective.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
172
213
|
<span
|
|
173
214
|
*ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"
|
|
174
215
|
class="k-icon"
|
|
216
|
+
aria-hidden="true"
|
|
175
217
|
[kendoEventsOutsideAngular]="{
|
|
176
218
|
click: handleClick
|
|
177
219
|
}"
|
|
@@ -188,6 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
188
230
|
<span
|
|
189
231
|
*ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"
|
|
190
232
|
class="k-icon"
|
|
233
|
+
aria-hidden="true"
|
|
191
234
|
[kendoEventsOutsideAngular]="{
|
|
192
235
|
click: handleClick
|
|
193
236
|
}"
|
|
@@ -217,6 +260,9 @@ class PivotGridTableComponent {
|
|
|
217
260
|
this.dataService = dataService;
|
|
218
261
|
this.dataChangeSubs = new Subscription();
|
|
219
262
|
}
|
|
263
|
+
get pivotGridId() {
|
|
264
|
+
return `kendo-pivotgrid-${this.dataService.pivotGridId}-`;
|
|
265
|
+
}
|
|
220
266
|
ngOnInit() {
|
|
221
267
|
this.dataChangeSubs.add(this.dataService[`${this.tableType}Rows`].subscribe(rows => this.rows = rows));
|
|
222
268
|
this.dataChangeSubs.add(this.tableType === 'values' ?
|
|
@@ -229,28 +275,36 @@ class PivotGridTableComponent {
|
|
|
229
275
|
}
|
|
230
276
|
PivotGridTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridTableComponent, deps: [{ token: PivotGridDataService }], target: i0.ɵɵFactoryTarget.Component });
|
|
231
277
|
PivotGridTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridTableComponent, selector: "kendo-pivotgrid-table", inputs: { tableType: "tableType", colWidth: "colWidth" }, ngImport: i0, template: `
|
|
232
|
-
<table
|
|
278
|
+
<table
|
|
279
|
+
class="k-pivotgrid-table"
|
|
280
|
+
role="presentation">
|
|
233
281
|
<colgroup>
|
|
234
282
|
<col
|
|
235
283
|
*ngFor="let item of headerItems;"
|
|
236
284
|
[style.width]="tableType !== 'rowHeader' ? colWidth >= 0 ? colWidth + 'px' : '200px' : undefined" />
|
|
237
285
|
</colgroup>
|
|
238
|
-
<tbody class="k-pivotgrid-tbody">
|
|
286
|
+
<tbody class="k-pivotgrid-tbody" role="rowgroup">
|
|
239
287
|
<tr *ngFor="let row of rows; index as rowIndex"
|
|
240
|
-
class="k-pivotgrid-row"
|
|
288
|
+
class="k-pivotgrid-row"
|
|
289
|
+
role="row">
|
|
241
290
|
<ng-container *ngFor="let cell of row.cells; index as colIndex">
|
|
242
291
|
<th
|
|
243
292
|
*ngIf="cell && tableType !== 'values'"
|
|
244
293
|
[kendoPivotGridCell]="cell"
|
|
245
294
|
[tableType]="tableType"
|
|
246
295
|
[colIndex]="colIndex"
|
|
247
|
-
[rowIndex]="rowIndex"
|
|
296
|
+
[rowIndex]="rowIndex"
|
|
297
|
+
[attr.aria-expanded]="cell.hasChildren && cell.children.length ? 'true' : 'false'"
|
|
298
|
+
[attr.role]="tableType === 'columnHeader' ? 'columnheader' : 'rowheader'"
|
|
299
|
+
[attr.id]="pivotGridId + (tableType === 'columnHeader' ? 'ch-' : 'rh-') + (rowIndex + 1) + '-' + (colIndex + 1)"></th>
|
|
248
300
|
<td
|
|
249
301
|
*ngIf="cell && tableType === 'values'"
|
|
250
302
|
[kendoPivotGridCell]="cell"
|
|
251
303
|
tableType="values"
|
|
252
304
|
[colIndex]="colIndex"
|
|
253
|
-
[rowIndex]="rowIndex"
|
|
305
|
+
[rowIndex]="rowIndex"
|
|
306
|
+
role="gridcell"
|
|
307
|
+
[attr.id]="pivotGridId + 'cell-' + (rowIndex + 1) + '-' + (colIndex + 1)"></td>
|
|
254
308
|
</ng-container>
|
|
255
309
|
</tr>
|
|
256
310
|
</tbody>
|
|
@@ -261,28 +315,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
261
315
|
args: [{
|
|
262
316
|
selector: 'kendo-pivotgrid-table',
|
|
263
317
|
template: `
|
|
264
|
-
<table
|
|
318
|
+
<table
|
|
319
|
+
class="k-pivotgrid-table"
|
|
320
|
+
role="presentation">
|
|
265
321
|
<colgroup>
|
|
266
322
|
<col
|
|
267
323
|
*ngFor="let item of headerItems;"
|
|
268
324
|
[style.width]="tableType !== 'rowHeader' ? colWidth >= 0 ? colWidth + 'px' : '200px' : undefined" />
|
|
269
325
|
</colgroup>
|
|
270
|
-
<tbody class="k-pivotgrid-tbody">
|
|
326
|
+
<tbody class="k-pivotgrid-tbody" role="rowgroup">
|
|
271
327
|
<tr *ngFor="let row of rows; index as rowIndex"
|
|
272
|
-
class="k-pivotgrid-row"
|
|
328
|
+
class="k-pivotgrid-row"
|
|
329
|
+
role="row">
|
|
273
330
|
<ng-container *ngFor="let cell of row.cells; index as colIndex">
|
|
274
331
|
<th
|
|
275
332
|
*ngIf="cell && tableType !== 'values'"
|
|
276
333
|
[kendoPivotGridCell]="cell"
|
|
277
334
|
[tableType]="tableType"
|
|
278
335
|
[colIndex]="colIndex"
|
|
279
|
-
[rowIndex]="rowIndex"
|
|
336
|
+
[rowIndex]="rowIndex"
|
|
337
|
+
[attr.aria-expanded]="cell.hasChildren && cell.children.length ? 'true' : 'false'"
|
|
338
|
+
[attr.role]="tableType === 'columnHeader' ? 'columnheader' : 'rowheader'"
|
|
339
|
+
[attr.id]="pivotGridId + (tableType === 'columnHeader' ? 'ch-' : 'rh-') + (rowIndex + 1) + '-' + (colIndex + 1)"></th>
|
|
280
340
|
<td
|
|
281
341
|
*ngIf="cell && tableType === 'values'"
|
|
282
342
|
[kendoPivotGridCell]="cell"
|
|
283
343
|
tableType="values"
|
|
284
344
|
[colIndex]="colIndex"
|
|
285
|
-
[rowIndex]="rowIndex"
|
|
345
|
+
[rowIndex]="rowIndex"
|
|
346
|
+
role="gridcell"
|
|
347
|
+
[attr.id]="pivotGridId + 'cell-' + (rowIndex + 1) + '-' + (colIndex + 1)"></td>
|
|
286
348
|
</ng-container>
|
|
287
349
|
</tr>
|
|
288
350
|
</tbody>
|
|
@@ -309,6 +371,7 @@ class PivotGridComponent {
|
|
|
309
371
|
this.zone = zone;
|
|
310
372
|
this.dataService = dataService;
|
|
311
373
|
this.hostClass = true;
|
|
374
|
+
this.ariaRole = 'grid';
|
|
312
375
|
/**
|
|
313
376
|
* Specify the width of the column header and data cells. Value is treated as pixels.
|
|
314
377
|
*
|
|
@@ -340,6 +403,7 @@ class PivotGridComponent {
|
|
|
340
403
|
}
|
|
341
404
|
};
|
|
342
405
|
validatePackage(packageMetadata);
|
|
406
|
+
dataService.wrapper = hostEl.nativeElement;
|
|
343
407
|
}
|
|
344
408
|
/**
|
|
345
409
|
* Specify the type, size and color of the PivotGrid's loader.
|
|
@@ -380,7 +444,7 @@ class PivotGridComponent {
|
|
|
380
444
|
}
|
|
381
445
|
}
|
|
382
446
|
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 });
|
|
383
|
-
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings", columnHeadersWidth: "columnHeadersWidth" }, host: { properties: { "class.k-pivotgrid": "this.hostClass" } }, providers: [
|
|
447
|
+
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings", columnHeadersWidth: "columnHeadersWidth" }, host: { properties: { "class.k-pivotgrid": "this.hostClass", "attr.role": "this.ariaRole" } }, providers: [
|
|
384
448
|
PivotGridDataService
|
|
385
449
|
], 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: `
|
|
386
450
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
@@ -454,6 +518,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
454
518
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: PivotGridDataService }, { type: i2$1.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
|
|
455
519
|
type: HostBinding,
|
|
456
520
|
args: ['class.k-pivotgrid']
|
|
521
|
+
}], ariaRole: [{
|
|
522
|
+
type: HostBinding,
|
|
523
|
+
args: ['attr.role']
|
|
457
524
|
}], colHeadersTable: [{
|
|
458
525
|
type: ViewChild,
|
|
459
526
|
args: ['colHeadersTable', { read: ElementRef }]
|
package/package.json
CHANGED
package/pivotgrid.component.d.ts
CHANGED
package/util.d.ts
CHANGED
|
@@ -24,3 +24,11 @@ export declare const syncScroll: (source: HTMLTableElement, targets: HTMLTableEl
|
|
|
24
24
|
* @hidden
|
|
25
25
|
*/
|
|
26
26
|
export declare const syncWheel: (event: Event, tables: Element[], prop: 'scrollTop' | 'scrollLeft', axis: 'X' | 'Y') => void;
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
*/
|
|
30
|
+
export declare const matchAriaAttributes: (wrapper: Element) => void;
|
|
31
|
+
/**
|
|
32
|
+
* @hidden
|
|
33
|
+
*/
|
|
34
|
+
export declare const filterAndMap: (arr: any[], predicate: (item: any) => boolean, mapper: (item: any) => any) => any[];
|