igniteui-angular 21.0.2 → 21.0.3
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/chat/README.md +93 -0
- package/fesm2022/igniteui-angular-directives.mjs +1 -1
- package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +241 -2
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +235 -2
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +3384 -3188
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs +238 -2
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
- package/package.json +1 -1
- package/types/igniteui-angular-grids-grid.d.ts +12 -1
- package/types/igniteui-angular-grids-hierarchical-grid.d.ts +23 -13
- package/types/igniteui-angular-grids-pivot-grid.d.ts +501 -492
- package/types/igniteui-angular-grids-tree-grid.d.ts +12 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igniteui-angular-grids-pivot-grid.mjs","sources":["../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-sort-strategy.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-sort-util.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.pipes.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-data-selector.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-data-selector.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header.component.ts","../../../projects/igniteui-angular/grids/core/src/headers/grid-header.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-header-group.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header-group.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-header-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-header-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid-navigation.service.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-filtering.service.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header-group.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-content.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-content.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.directives.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-mrl-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-mrl-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid-row.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/public_api.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/igniteui-angular-grids-pivot-grid.ts"],"sourcesContent":["import { parseDate } from 'igniteui-angular/core';\nimport { GridColumnDataType } from 'igniteui-angular/core';\nimport { DefaultSortingStrategy, SortingDirection } from 'igniteui-angular/core';\nimport { IPivotGridRecord, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\n\nexport class DefaultPivotGridRecordSortingStrategy extends DefaultSortingStrategy {\n protected static override _instance: DefaultPivotGridRecordSortingStrategy = null;\n public static override instance(): DefaultPivotGridRecordSortingStrategy {\n return this._instance || (this._instance = new this());\n }\n public override sort(data: any[],\n fieldName: string,\n dir: SortingDirection,\n ignoreCase: boolean,\n valueResolver: (obj: any, key: string, isDate?: boolean) => any,\n isDate?: boolean,\n isTime?: boolean,\n _grid?: PivotGridType) {\n return super.sort(data, fieldName, dir, ignoreCase, this.getFieldValue, isDate, isTime);\n }\n\n protected getFieldValue(obj: IPivotGridRecord, key: string, _isDate = false, _isTime = false): any {\n return obj.aggregationValues.get(key);\n }\n}\n\n\nexport class DefaultPivotSortingStrategy extends DefaultSortingStrategy {\n protected static override _instance: DefaultPivotSortingStrategy = null;\n protected dimension;\n public static override instance(): DefaultPivotSortingStrategy {\n return this._instance || (this._instance = new this());\n }\n public override sort(data: any[],\n fieldName: string,\n dir: SortingDirection,\n ignoreCase: boolean,\n valueResolver: (obj: any, key: string, isDate?: boolean) => any,\n isDate?: boolean,\n isTime?: boolean,\n grid?: PivotGridType) {\n const key = fieldName;\n const allDimensions = grid.allDimensions;\n const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n this.dimension = PivotUtil.flatten(enabledDimensions).find(x => x.memberName === key);\n return super.sort(data, key, dir, ignoreCase, this.getFieldValue, isDate, isTime);\n }\n\n protected getFieldValue(obj: any, key: string, _isDate = false, isTime = false): any {\n let resolvedValue = PivotUtil.extractValueFromDimension(this.dimension, obj) || obj[0];\n const formatAsDate = this.dimension.dataType === GridColumnDataType.Date || this.dimension.dataType === GridColumnDataType.DateTime;\n if (formatAsDate) {\n const date = parseDate(resolvedValue);\n resolvedValue = isTime && date ?\n new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) : date;\n\n }\n return resolvedValue;\n }\n}\n","import { ISortingExpression, SortingDirection } from 'igniteui-angular/core';\nimport { IPivotDimension, PivotUtil } from 'igniteui-angular/grids/core';\nimport { DefaultPivotSortingStrategy } from './pivot-sort-strategy';\n\nexport class PivotSortUtil {\n public static generateDimensionSortingExpressions(dimensions: IPivotDimension[]): ISortingExpression[] {\n const expressions: ISortingExpression[] = [];\n PivotUtil.flatten(dimensions).forEach(x => {\n if (x.sortDirection) {\n expressions.push({\n dir: x.sortDirection,\n fieldName: x.memberName,\n strategy: DefaultPivotSortingStrategy.instance()\n });\n } else {\n expressions.push({\n dir: SortingDirection.None,\n fieldName: x.memberName,\n strategy: DefaultPivotSortingStrategy.instance()\n });\n }\n });\n return expressions;\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport {\n DEFAULT_PIVOT_KEYS,\n DimensionValuesFilteringStrategy,\n GridBaseAPIService,\n GridType,\n IGX_GRID_BASE,\n IPivotConfiguration,\n IPivotDimension,\n IPivotGridColumn,\n IPivotGridGroupRecord,\n IPivotGridHorizontalGroup,\n IPivotGridRecord,\n IPivotKeys,\n IPivotValue,\n PivotColumnDimensionsStrategy,\n PivotGridType,\n PivotRowDimensionsStrategy,\n PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { cloneArray, columnFieldPath, DataUtil, FilteringExpressionsTree, FilterUtil, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringStrategy, IGridSortingStrategy, ISortingExpression, resolveNestedPath } from 'igniteui-angular/core';\nimport { IgxGridBaseDirective } from 'igniteui-angular/grids/grid';\nimport { PivotSortUtil } from './pivot-sort-util';\nimport { DefaultPivotGridRecordSortingStrategy } from './pivot-sort-strategy';\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridRow',\n pure: true,\n standalone: true\n})\nexport class IgxPivotRowPipe implements PipeTransform {\n private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n\n public transform(\n collection: any,\n config: IPivotConfiguration,\n cloneStrategy: IDataCloneStrategy,\n _: Map<any, boolean>,\n _pipeTrigger?: number,\n __?\n ): IPivotGridRecord[] {\n const pivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n const enabledRows = config.rows?.filter(x => x.enabled) || [];\n const enabledColumns = config.columns?.filter(x => x.enabled) || [];\n const enabledValues = config.values?.filter(x => x.enabled) || [];\n if (enabledRows.length === 0 && enabledColumns.length === 0 && enabledValues.length === 0) {\n // nothing to group and aggregate by ...\n return [];\n }\n const rowStrategy = config.rowStrategy || PivotRowDimensionsStrategy.instance();\n const data = cloneArray(collection, true);\n return rowStrategy.process(data, enabledRows, config.values, cloneStrategy, pivotKeys);\n }\n}\n\n/**\n * @hidden\n * Transforms generic array data into IPivotGridRecord[]\n */\n@Pipe({\n name: 'pivotGridAutoTransform',\n pure: true,\n standalone: true\n})\nexport class IgxPivotAutoTransform implements PipeTransform {\n public transform(\n collection: any[],\n config: IPivotConfiguration,\n _pipeTrigger?: number,\n __?,\n ): IPivotGridRecord[] {\n let needsTransformation = false;\n if (collection.length > 0) {\n needsTransformation = !this.isPivotRecord(collection[0]);\n }\n\n if (!needsTransformation) return collection;\n\n const res = this.processCollectionToPivotRecord(config, collection);\n return res;\n }\n\n protected isPivotRecord(arg: IPivotGridRecord): arg is IPivotGridRecord {\n return !!(arg as IPivotGridRecord).aggregationValues;\n }\n\n protected processCollectionToPivotRecord(config: IPivotConfiguration, collection: any[]): IPivotGridRecord[] {\n const pivotKeys: IPivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n const enabledRows = config.rows.filter(x => x.enabled);\n const allFlat: IPivotDimension[] = PivotUtil.flatten(enabledRows);\n const result: IPivotGridRecord[] = [];\n for (const rec of collection) {\n const pivotRec: IPivotGridRecord = {\n dimensionValues: new Map<string, string>(),\n aggregationValues: new Map<string, string>(),\n children: new Map<string, IPivotGridRecord[]>(),\n dimensions: []\n };\n const keys = Object.keys(rec)\n for (const key of keys) {\n const dim = allFlat.find(x => x.memberName === key);\n if (dim) {\n //field has matching dimension\n pivotRec.dimensions.push(dim);\n pivotRec.dimensionValues.set(key, rec[key]);\n } else if (key.indexOf(pivotKeys.rowDimensionSeparator + pivotKeys.records) !== -1) {\n // field that contains child collection\n const dimKey = key.slice(0, key.indexOf(pivotKeys.rowDimensionSeparator + pivotKeys.records));\n const childData = rec[key];\n const childPivotData = this.processCollectionToPivotRecord(config, childData);\n pivotRec.children.set(dimKey, childPivotData);\n } else {\n // an aggregation\n pivotRec.aggregationValues.set(key, rec[key]);\n }\n }\n const flattened = PivotUtil.flatten(config.rows);\n pivotRec.dimensions.sort((x, y) => flattened.indexOf(x) - flattened.indexOf(y));\n result.push(pivotRec);\n }\n return result;\n }\n\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridRowExpansion',\n pure: true,\n standalone: true\n})\nexport class IgxPivotRowExpansionPipe implements PipeTransform {\n private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n expansionStates: Map<any, boolean>,\n defaultExpand: boolean,\n _pipeTrigger?: number,\n __?,\n ): IPivotGridRecord[] {\n const enabledRows = config.rows?.filter(x => x.enabled) || [];\n const data = collection ? cloneArray(collection, true) : [];\n const horizontalRowDimensions = [];\n for (const row of enabledRows) {\n if (this.grid?.hasHorizontalLayout) {\n PivotUtil.flattenGroupsHorizontally(\n data,\n row,\n expansionStates,\n defaultExpand,\n horizontalRowDimensions,\n this.grid.pivotUI.horizontalSummariesPosition\n );\n } else {\n PivotUtil.flattenGroups(data, row, expansionStates, defaultExpand);\n }\n }\n\n let finalData = data;\n if (this.grid?.hasHorizontalLayout) {\n const allRowDims = PivotUtil.flatten(this.grid.rowDimensions);\n this.grid.visibleRowDimensions = allRowDims.filter((rowDim) => horizontalRowDimensions.some(targetDim => targetDim.memberName === rowDim.memberName));\n } else {\n if (this.grid) {\n this.grid.visibleRowDimensions = enabledRows;\n }\n finalData = enabledRows.length > 0 ?\n finalData.filter(x => x.dimensions.length === enabledRows.length) : finalData;\n }\n\n if (this.grid) {\n this.grid.setFilteredSortedData(finalData, false);\n }\n return finalData;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridCellMerging',\n pure: true,\n standalone: true\n})\nexport class IgxPivotCellMergingPipe implements PipeTransform {\n private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n dim: IPivotDimension,\n _pipeTrigger?: number\n ): IPivotGridGroupRecord[] {\n if (collection.length === 0 || config.rows.length === 0) return collection;\n const data: IPivotGridGroupRecord[] = collection ? cloneArray(collection, true) : [];\n const res: IPivotGridGroupRecord[] = [];\n\n let groupData: IPivotGridGroupRecord[] = [];\n let prevId;\n const enabledRows = this.grid.hasHorizontalLayout ? (this.grid as any).visibleRowDimensions : config.rows?.filter(x => x.enabled);\n const dimIndex = enabledRows.indexOf(dim);\n for (const rec of data) {\n let currentDim;\n if (this.grid.hasHorizontalLayout) {\n currentDim = dim;\n rec.dimensions = enabledRows;\n } else {\n currentDim = rec.dimensions[dimIndex];\n }\n\n const id = PivotUtil.getRecordKey(rec, currentDim);\n if (groupData.length > 0 && prevId !== id) {\n const h = groupData.length > 1 ? groupData.length * this.grid.renderedRowHeight : undefined;\n groupData[0].height = h;\n groupData[0].rowSpan = groupData.length;\n res.push(groupData[0]);\n groupData = [];\n }\n groupData.push(rec);\n prevId = id;\n }\n if (groupData.length > 0) {\n const h = groupData.length > 1 ? groupData.length * this.grid.rowHeight + (groupData.length - 1) + 1 : undefined;\n groupData[0].height = h;\n groupData[0].rowSpan = groupData.length;\n res.push(groupData[0]);\n }\n return res;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: \"pivotGridHorizontalRowGrouping\",\n standalone: true\n})\nexport class IgxPivotGridHorizontalRowGrouping implements PipeTransform {\n private grid = inject<GridType>(IGX_GRID_BASE);\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n _pipeTrigger?: number,\n _regroupTrigger?: number\n ): IPivotGridRecord[][] {\n if (collection.length === 0 || config.rows.length === 0) return null;\n const data: IPivotGridRecord[] = collection ? cloneArray(collection, true) : [];\n const res: IPivotGridRecord[][] = [];\n\n const groupDim = config.rows.filter(dim => dim.enabled)[0];\n let curGroup = [];\n let curGroupValue = data[0].dimensionValues.get(groupDim.memberName);\n for (const [index, curRec] of data.entries()) {\n curRec.dataIndex = index;\n const curRecValue = curRec.dimensionValues.get(groupDim.memberName);\n if (curGroup.length === 0 || curRecValue === curGroupValue) {\n curGroup.push(curRec);\n } else {\n curGroup[\"height\"] = this.grid.renderedRowHeight * curGroup.length;\n res.push(curGroup);\n curGroup = [curRec];\n curGroupValue = curRecValue;\n }\n }\n res.push(curGroup);\n\n return res;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: \"pivotGridHorizontalRowCellMerging\",\n standalone: true\n})\nexport class IgxPivotGridHorizontalRowCellMerging implements PipeTransform {\n private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n _pipeTrigger?: number\n ): IPivotGridHorizontalGroup[] {\n if (collection.length === 0 || config.rows.length === 0) return [{\n colStart: 1,\n colSpan: 1,\n rowStart: 1,\n rowSpan: 1,\n records: collection\n }];\n const data: IPivotGridRecord[] = collection ? cloneArray(collection, true) : [];\n const res: IPivotGridHorizontalGroup[] = [];\n\n // Merge vertically for each row dimension.\n const verticalMergeGroups: IPivotGridHorizontalGroup[][] = [...data.map(_ => [])];\n for (let dimIndex = 0; dimIndex < this.grid.visibleRowDimensions.length; dimIndex++) {\n const curDim = this.grid.visibleRowDimensions[dimIndex];\n let curGroup: IPivotGridHorizontalGroup = {\n colStart: dimIndex + 1,\n colSpan: 1,\n rowStart: 1,\n rowSpan: 1,\n value: data[0].dimensionValues.get(curDim.memberName),\n rootDimension: curDim,\n dimensions: [curDim],\n records: [data[0]]\n };\n for (let i = 1; i < data.length; i++) {\n const curRec = data[i];\n const curRecValue = curRec.dimensionValues.get(curDim.memberName);\n const previousRowCell = verticalMergeGroups[i][verticalMergeGroups[i].length - 1];\n if (curRecValue === curGroup.value && !previousRowCell) {\n // If previousRowCell is non existing, its merged so we can push in this vertigal group as well.\n curGroup.rowSpan++;\n curGroup.records.push(curRec);\n } else {\n verticalMergeGroups[curGroup.rowStart - 1].push(curGroup);\n curGroup = {\n colStart: dimIndex + 1,\n colSpan: 1,\n rowStart: curGroup.rowStart + curGroup.rowSpan,\n rowSpan: 1,\n value: curRec.dimensionValues.get(curDim.memberName),\n rootDimension: curDim,\n dimensions: [curDim],\n records: [curRec]\n };\n }\n }\n\n verticalMergeGroups[curGroup.rowStart - 1].push(curGroup);\n }\n\n // Merge rows in a single array\n const sortedGroups = verticalMergeGroups.reduce((prev, cur) => prev.concat(...cur), []);\n\n // Horizontally merge any groups that can be merged or have been\n res.push(sortedGroups[0]);\n let prevGroup = sortedGroups[0];\n for (let i = 1; i < sortedGroups.length; i++) {\n const curGroup = sortedGroups[i];\n if (curGroup.value && prevGroup.value !== curGroup.value) {\n prevGroup = curGroup;\n res.push(curGroup);\n } else {\n prevGroup.dimensions.push(curGroup.rootDimension);\n prevGroup.colSpan++;\n }\n }\n\n return res;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridColumn',\n pure: true,\n standalone: true\n})\nexport class IgxPivotColumnPipe implements PipeTransform {\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n cloneStrategy: IDataCloneStrategy,\n _: Map<any, boolean>,\n _pipeTrigger?: number,\n __?\n ): IPivotGridRecord[] {\n const pivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n const enabledColumns = config.columns?.filter(x => x.enabled) || [];\n const enabledValues = config.values?.filter(x => x.enabled) || [];\n\n const colStrategy = config.columnStrategy || PivotColumnDimensionsStrategy.instance();\n const data = cloneArray(collection, true);\n return colStrategy.process(data, enabledColumns, enabledValues, cloneStrategy, pivotKeys);\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridFilter',\n pure: true,\n standalone: true\n})\nexport class IgxPivotGridFilterPipe implements PipeTransform {\n private gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n\n public transform(collection: any[],\n config: IPivotConfiguration,\n filterStrategy: IFilteringStrategy,\n advancedExpressionsTree: IFilteringExpressionsTree,\n _filterPipeTrigger: number,\n _pipeTrigger: number): any[] {\n const expressionsTree = PivotUtil.buildExpressionTree(config);\n\n const state = {\n expressionsTree,\n strategy: filterStrategy || new DimensionValuesFilteringStrategy(),\n advancedExpressionsTree\n };\n\n if (FilteringExpressionsTree.empty(state.expressionsTree) && FilteringExpressionsTree.empty(state.advancedExpressionsTree)) {\n return collection;\n }\n\n const result = FilterUtil.filter(cloneArray(collection, true), state, this.gridAPI.grid);\n\n return result;\n }\n}\n\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridColumnSort',\n pure: true,\n standalone: true\n})\nexport class IgxPivotGridColumnSortingPipe implements PipeTransform {\n public transform(\n collection: IPivotGridRecord[],\n expressions: ISortingExpression[],\n sorting: IGridSortingStrategy,\n _pipeTrigger: number\n ): IPivotGridRecord[] {\n let result: IPivotGridRecord[];\n\n if (!expressions.length) {\n result = collection;\n } else {\n for (const expr of expressions) {\n expr.strategy = DefaultPivotGridRecordSortingStrategy.instance();\n }\n result = PivotUtil.sort(cloneArray(collection), expressions, sorting);\n }\n return result;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridSort',\n pure: true,\n standalone: true\n})\nexport class IgxPivotGridSortingPipe implements PipeTransform {\n private gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n\n public transform(collection: any[], config: IPivotConfiguration, sorting: IGridSortingStrategy, _pipeTrigger: number): any[] {\n let result: any[];\n const allDimensions = config.rows || [];\n const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n const expressions = PivotSortUtil.generateDimensionSortingExpressions(enabledDimensions);\n if (!expressions.length) {\n result = collection;\n } else {\n result = DataUtil.sort(cloneArray(collection), expressions, sorting, this.gridAPI.grid);\n }\n\n return result;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: \"filterPivotItems\",\n standalone: true\n})\nexport class IgxFilterPivotItemsPipe implements PipeTransform {\n public transform(\n collection: (IPivotDimension | IPivotValue)[],\n filterCriteria: string,\n _pipeTrigger: number\n ): any[] {\n if (!collection) {\n return collection;\n }\n let copy = collection.slice(0);\n if (filterCriteria && filterCriteria.length > 0) {\n const filterFunc = (c) => {\n const filterText = c.member || c.memberName;\n if (!filterText) {\n return false;\n }\n return (\n filterText\n .toLocaleLowerCase()\n .indexOf(filterCriteria.toLocaleLowerCase()) >= 0 ||\n (c.children?.some(filterFunc) ?? false)\n );\n };\n copy = collection.filter(filterFunc);\n }\n return copy;\n }\n}\n\nexport interface GridStyleCSSProperty {\n [prop: string]: any;\n}\n\n@Pipe({\n name: 'igxPivotCellStyleClasses',\n standalone: true\n})\nexport class IgxPivotGridCellStyleClassesPipe implements PipeTransform {\n\n public transform(cssClasses: GridStyleCSSProperty, _: any, rowData: IPivotGridRecord, columnData: IPivotGridColumn, index: number, __: number): string {\n if (!cssClasses) {\n return '';\n }\n\n const result = [];\n const pathParts = columnFieldPath(columnData.field);\n\n for (const cssClass of Object.keys(cssClasses)) {\n const callbackOrValue = cssClasses[cssClass];\n const apply = typeof callbackOrValue === 'function' ?\n callbackOrValue(rowData, columnData, resolveNestedPath(rowData, pathParts), index) : callbackOrValue;\n if (apply) {\n result.push(cssClass);\n }\n }\n\n return result.join(' ');\n }\n}\n","import { useAnimation } from \"@angular/animations\";\nimport { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, Renderer2, booleanAttribute, inject } from \"@angular/core\";\nimport { first } from \"rxjs/operators\";\nimport { IgxFilterPivotItemsPipe } from \"./pivot-grid.pipes\";\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\nimport { IgxInputDirective, IgxInputGroupComponent, IgxPrefixDirective } from 'igniteui-angular/input-group';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxListComponent, IgxListItemComponent } from 'igniteui-angular/list';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\nimport { IgxAccordionComponent } from 'igniteui-angular/accordion';\nimport { IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelTitleDirective } from 'igniteui-angular/expansion-panel';\nimport { IDragBaseEventArgs, IDragGhostBaseEventArgs, IDragMoveEventArgs, IDropBaseEventArgs, IDropDroppedEventArgs, IgxDragDirective, IgxDragHandleDirective, IgxDropDirective } from 'igniteui-angular/directives';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, ISelectionEventArgs } from 'igniteui-angular/drop-down';\nimport { AbsoluteScrollStrategy, AutoPositionStrategy, ColumnType, OverlaySettings, PositionSettings, ɵSize, SortingDirection, VerticalAlignment } from 'igniteui-angular/core';\nimport { IPivotAggregator, IPivotDimension, IPivotValue, PivotDimensionType, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\n\ninterface IDataSelectorPanel {\n name: string;\n i18n: string;\n type?: PivotDimensionType;\n dataKey: string;\n icon: string;\n itemKey: string;\n displayKey?: string;\n sortable: boolean;\n dragChannels: string[];\n}\n\n/* blazorIndirectRender\n blazorComponent */\n/* wcElementTag: igc-pivot-data-selector */\n/**\n * Pivot Data Selector provides means to configure the pivot state of the Pivot Grid via a vertical panel UI\n *\n * @igxModule IgxPivotGridModule\n * @igxGroup Grids & Lists\n * @igxKeywords data selector, pivot, grid\n * @igxTheme pivot-data-selector-theme\n * @remarks\n * The Ignite UI Data Selector has a searchable list with the grid data columns,\n * there are also four expandable areas underneath for filters, rows, columns, and values\n * is used for grouping and aggregating simple flat data into a pivot table.\n * @example\n * ```html\n * <igx-pivot-grid #grid1 [data]=\"data\" [pivotConfiguration]=\"configuration\">\n * </igx-pivot-grid>\n * <igx-pivot-data-selector [grid]=\"grid1\"></igx-pivot-data-selector>\n * ```\n */\n@Component({\n selector: \"igx-pivot-data-selector\",\n templateUrl: \"./pivot-data-selector.component.html\",\n imports: [IgxInputGroupComponent, IgxIconComponent, IgxPrefixDirective, IgxInputDirective, IgxListComponent, IgxListItemComponent, IgxCheckboxComponent, IgxAccordionComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxDropDirective, IgxExpansionPanelTitleDirective, IgxChipComponent, IgxExpansionPanelBodyComponent, IgxDragDirective, IgxDropDownItemNavigationDirective, IgxDragHandleDirective, IgxDropDownComponent, IgxDropDownItemComponent, IgxFilterPivotItemsPipe]\n})\nexport class IgxPivotDataSelectorComponent {\n private renderer = inject(Renderer2);\n private cdr = inject(ChangeDetectorRef);\n\n\n /**\n * Gets/sets whether the columns panel is expanded\n * Get\n * ```typescript\n * const columnsPanelState: boolean = this.dataSelector.columnsExpanded;\n * ```\n * Set\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [columnsExpanded]=\"columnsPanelState\"></igx-pivot-data-selector>\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [(columnsExpanded)]=\"columnsPanelState\"></igx-pivot-data-selector>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public columnsExpanded = true;\n\n /**\n * Emitted when the columns panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n * (columnsExpandedChange)=\"columnsExpandedChange($event)\"></igx-pivot-data-selector>\n * ```\n */\n @Output()\n public columnsExpandedChange = new EventEmitter<boolean>();\n\n /**\n * Gets/sets whether the rows panel is expanded\n * Get\n * ```typescript\n * const rowsPanelState: boolean = this.dataSelector.rowsExpanded;\n * ```\n * Set\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [rowsExpanded]=\"rowsPanelState\"></igx-pivot-data-selector>\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [(rowsExpanded)]=\"rowsPanelState\"></igx-pivot-data-selector>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public rowsExpanded = true;\n\n /**\n * Emitted when the rows panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n * (rowsExpandedChange)=\"rowsExpandedChange($event)\"></igx-pivot-data-selector>\n * ```\n */\n @Output()\n public rowsExpandedChange = new EventEmitter<boolean>();\n\n /**\n * Gets/sets whether the filters panel is expanded\n * Get\n * ```typescript\n * const filtersPanelState: boolean = this.dataSelector.filtersExpanded;\n * ```\n * Set\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [filtersExpanded]=\"filtersPanelState\"></igx-pivot-data-selector>\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [(filtersExpanded)]=\"filtersPanelState\"></igx-pivot-data-selector>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public filtersExpanded = true;\n\n /**\n * Emitted when the filters panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n * (filtersExpandedChange)=\"filtersExpandedChange($event)\"></igx-pivot-data-selector>\n * ```\n */\n @Output()\n public filtersExpandedChange = new EventEmitter<boolean>();\n\n /**\n * Gets/sets whether the values panel is expanded\n * Get\n * ```typescript\n * const valuesPanelState: boolean = this.dataSelector.valuesExpanded;\n * ```\n * Set\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [valuesExpanded]=\"valuesPanelState\"></igx-pivot-data-selector>\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [(valuesExpanded)]=\"valuesPanelState\"></igx-pivot-data-selector>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public valuesExpanded = true;\n\n /**\n * Emitted when the values panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n * (valuesExpandedChange)=\"valuesExpandedChange($event)\"></igx-pivot-data-selector>\n * ```\n */\n @Output()\n public valuesExpandedChange = new EventEmitter<boolean>();\n\n private _grid: PivotGridType;\n private _dropDelta = 0;\n\n /** @hidden @internal **/\n @HostBinding(\"class.igx-pivot-data-selector\")\n public cssClass = \"igx-pivot-data-selector\";\n\n @HostBinding(\"style.--ig-size\")\n protected get size(): ɵSize {\n return this.grid?.gridSize;\n }\n\n /** @hidden @internal **/\n public dimensions: IPivotDimension[];\n\n private _subMenuPositionSettings: PositionSettings = {\n verticalStartPoint: VerticalAlignment.Bottom,\n closeAnimation: undefined,\n };\n\n private _subMenuOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: false,\n positionStrategy: new AutoPositionStrategy(\n this._subMenuPositionSettings\n ),\n scrollStrategy: new AbsoluteScrollStrategy(),\n };\n\n /* blazorSuppress */\n public animationSettings = {\n closeAnimation: useAnimation(fadeOut, {\n params: {\n duration: \"0ms\",\n },\n }),\n openAnimation: useAnimation(fadeIn, {\n params: {\n duration: \"0ms\",\n },\n }),\n };\n\n /** @hidden @internal */\n public aggregateList: IPivotAggregator[] = [];\n /** @hidden @internal */\n public value: IPivotValue;\n /** @hidden @internal */\n public ghostText: string;\n /** @hidden @internal */\n public ghostWidth: number;\n /** @hidden @internal */\n public dropAllowed: boolean;\n /** @hidden @internal */\n public get dims(): IPivotDimension[] {\n return this._grid?.allDimensions || [];\n }\n /** @hidden @internal */\n public get values(): IPivotValue[] {\n return this._grid?.pivotConfiguration.values || [];\n }\n\n /**\n * @hidden @internal\n */\n public _panels: IDataSelectorPanel[] = [\n {\n name: \"Filters\",\n i18n: 'igx_grid_pivot_selector_filters',\n type: PivotDimensionType.Filter,\n dataKey: \"filterDimensions\",\n icon: \"filter_list\",\n itemKey: \"memberName\",\n displayKey: 'displayName',\n sortable: false,\n dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n },\n {\n name: \"Columns\",\n i18n: 'igx_grid_pivot_selector_columns',\n type: PivotDimensionType.Column,\n dataKey: \"columnDimensions\",\n icon: \"view_column\",\n itemKey: \"memberName\",\n displayKey: 'displayName',\n sortable: true,\n dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n },\n {\n name: \"Rows\",\n i18n: 'igx_grid_pivot_selector_rows',\n type: PivotDimensionType.Row,\n dataKey: \"rowDimensions\",\n icon: \"table_rows\",\n itemKey: \"memberName\",\n displayKey: 'displayName',\n sortable: true,\n dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n },\n {\n name: \"Values\",\n i18n: 'igx_grid_pivot_selector_values',\n type: null,\n dataKey: \"values\",\n icon: \"functions\",\n itemKey: \"member\",\n displayKey: 'displayName',\n sortable: false,\n dragChannels: [\"Values\"]\n },\n ];\n\n\n /* treatAsRef */\n /**\n * Sets the grid.\n */\n @Input()\n public set grid(value: PivotGridType) {\n this._grid = value;\n }\n\n /* treatAsRef */\n /**\n * Returns the grid.\n */\n public get grid(): PivotGridType {\n return this._grid;\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemSort(\n _: Event,\n dimension: IPivotDimension,\n dimensionType: PivotDimensionType\n ) {\n if (\n !this._panels.find(\n (panel: IDataSelectorPanel) => panel.type === dimensionType\n ).sortable\n )\n return;\n\n const startDirection = dimension.sortDirection || SortingDirection.None;\n const direction = startDirection + 1 > SortingDirection.Desc ?\n SortingDirection.None : startDirection + 1;\n this.grid.sortDimension(dimension, direction);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onFilteringIconPointerDown(event: PointerEvent) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n /**\n * @hidden\n * @internal\n */\n public onFilteringIconClick(event: MouseEvent, dimension: IPivotDimension) {\n event.stopPropagation();\n event.preventDefault();\n\n let dim = dimension;\n let col: ColumnType;\n\n while (dim) {\n col = this.grid.dimensionDataColumns.find(\n (x) => x.field === dim.memberName\n );\n if (col) {\n break;\n } else {\n dim = dim.childLevel;\n }\n }\n\n this.grid.filteringService.toggleFilterDropdown(event.target, col);\n }\n\n /**\n * @hidden\n * @internal\n */\n protected getDimensionState(dimensionType: PivotDimensionType) {\n switch (dimensionType) {\n case PivotDimensionType.Row:\n return this.grid.rowDimensions;\n case PivotDimensionType.Column:\n return this.grid.columnDimensions;\n case PivotDimensionType.Filter:\n return this.grid.filterDimensions;\n default:\n return null;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n protected moveValueItem(itemId: string) {\n const aggregation = this.grid.pivotConfiguration.values;\n const valueIndex =\n aggregation.findIndex((x) => x.member === itemId) !== -1\n ? aggregation?.findIndex((x) => x.member === itemId)\n : aggregation.length;\n const newValueIndex =\n valueIndex + this._dropDelta < 0 ? 0 : valueIndex + this._dropDelta;\n\n const aggregationItem = aggregation.find(\n (x) => x.member === itemId || x.displayName === itemId\n );\n\n if (aggregationItem) {\n this.grid.moveValue(aggregationItem, newValueIndex);\n this.grid.valuesChange.emit({\n values: this.grid.pivotConfiguration.values,\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDropped(\n event: IDropDroppedEventArgs,\n dimensionType: PivotDimensionType\n ) {\n if (!this.dropAllowed) {\n return;\n }\n\n const dimension = this.grid.getDimensionsByType(dimensionType);\n const dimensionState = this.getDimensionState(dimensionType);\n const itemId = event.drag.element.nativeElement.id;\n const targetId = event.owner.element.nativeElement.id;\n const dimensionItem = dimension?.find((x) => x.memberName === itemId);\n const itemIndex =\n dimension?.findIndex((x) => x?.memberName === itemId) !== -1\n ? dimension?.findIndex((x) => x.memberName === itemId)\n : dimension?.length;\n const dimensions = this.grid.allDimensions.filter((x) => x && x.memberName === itemId);\n\n const reorder =\n dimensionState?.findIndex((item) => item.memberName === itemId) !==\n -1;\n\n let targetIndex =\n targetId !== \"\"\n ? dimension?.findIndex((x) => x.memberName === targetId)\n : dimension?.length;\n\n if (!dimension) {\n this.moveValueItem(itemId);\n }\n\n if (reorder) {\n targetIndex =\n itemIndex + this._dropDelta < 0\n ? 0\n : itemIndex + this._dropDelta;\n }\n\n if (dimensionItem) {\n this.grid.moveDimension(dimensionItem, dimensionType, targetIndex);\n } else {\n const newDim = dimensions.find((x) => x.memberName === itemId);\n this.grid.moveDimension(newDim, dimensionType, targetIndex);\n }\n\n this.grid.dimensionsChange.emit({\n dimensions: dimension,\n dimensionCollectionType: dimensionType,\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n protected updateDropDown(\n value: IPivotValue,\n dropdown: IgxDropDownComponent\n ) {\n this.value = value;\n dropdown.width = \"200px\";\n this.aggregateList = PivotUtil.getAggregateList(value, this.grid);\n this.cdr.detectChanges();\n dropdown.open(this._subMenuOverlaySettings);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onSummaryClick(\n event: MouseEvent,\n value: IPivotValue,\n dropdown: IgxDropDownComponent\n ) {\n this._subMenuOverlaySettings.target =\n event.currentTarget as HTMLElement;\n\n if (dropdown.collapsed) {\n this.updateDropDown(value, dropdown);\n } else {\n // close for previous chip\n dropdown.close();\n dropdown.closed.pipe(first()).subscribe(() => {\n this.updateDropDown(value, dropdown);\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onAggregationChange(event: ISelectionEventArgs) {\n\n if (!this.isSelected(event.newSelection.value)) {\n this.value.aggregate = event.newSelection.value;\n const isSingleValue = this.grid.values.length === 1;\n\n PivotUtil.updateColumnTypeByAggregator(this.grid.columns, this.value, isSingleValue);\n\n this.grid.pipeTrigger++;\n this.grid.cdr.markForCheck();\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public isSelected(val: IPivotAggregator) {\n return this.value.aggregate.key === val.key;\n }\n\n /**\n * @hidden\n * @internal\n */\n public ghostCreated(event: IDragGhostBaseEventArgs, value: string) {\n const { width: itemWidth } =\n event.owner.element.nativeElement.getBoundingClientRect();\n this.ghostWidth = itemWidth;\n this.ghostText = value;\n this.renderer.setStyle(\n event.owner.element.nativeElement,\n \"position\",\n \"absolute\"\n );\n this.renderer.setStyle(\n event.owner.element.nativeElement,\n \"visibility\",\n \"hidden\"\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n public toggleItem(item: IPivotDimension | IPivotValue) {\n if (item as IPivotValue) {\n this.grid.toggleValue(item as IPivotValue);\n }\n\n if (item as IPivotDimension) {\n this.grid.toggleDimension(item as IPivotDimension);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onPanelEntry(event: IDropBaseEventArgs, panel: string) {\n this.dropAllowed = event.dragData.gridID === this.grid.id && event.dragData.selectorChannels?.some(\n (channel: string) => channel === panel\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDragMove(event: IDragMoveEventArgs) {\n const clientRect =\n event.owner.element.nativeElement.getBoundingClientRect();\n this._dropDelta = Math.round(\n (event.nextPageY - event.startY) / clientRect.height\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDragEnd(event: IDragBaseEventArgs) {\n this.renderer.setStyle(\n event.owner.element.nativeElement,\n \"position\",\n \"static\"\n );\n this.renderer.setStyle(\n event.owner.element.nativeElement,\n \"visibility\",\n \"visible\"\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDragOver(event: IDropBaseEventArgs) {\n if (this.dropAllowed) {\n this.renderer.addClass(\n event.owner.element.nativeElement,\n \"igx-drag--push\"\n );\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDragLeave(event: IDropBaseEventArgs) {\n if (this.dropAllowed) {\n this.renderer.removeClass(\n event.owner.element.nativeElement,\n \"igx-drag--push\"\n );\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public getPanelCollapsed(panelType: PivotDimensionType): boolean {\n switch (panelType) {\n case PivotDimensionType.Column:\n return !this.columnsExpanded;\n case PivotDimensionType.Filter:\n return !this.filtersExpanded;\n case PivotDimensionType.Row:\n return !this.rowsExpanded;\n default:\n return !this.valuesExpanded;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onCollapseChange(value: boolean, panelType: PivotDimensionType): void {\n switch (panelType) {\n case PivotDimensionType.Column:\n this.columnsExpanded = !value;\n this.columnsExpandedChange.emit(this.columnsExpanded);\n break;\n case PivotDimensionType.Filter:\n this.filtersExpanded = !value;\n this.filtersExpandedChange.emit(this.filtersExpanded);\n break;\n case PivotDimensionType.Row:\n this.rowsExpanded = !value;\n this.rowsExpandedChange.emit(this.rowsExpanded);\n break;\n default:\n this.valuesExpanded = !value;\n this.valuesExpandedChange.emit(this.valuesExpanded)\n }\n }\n}\n","<div class=\"igx-pivot-data-selector__filter\">\n <igx-input-group type=\"box\">\n <igx-icon family=\"default\" name=\"search\" igxPrefix></igx-icon>\n <input\n #input\n igxInput\n tabindex=\"0\"\n placeholder=\"Search\"\n autocomplete=\"off\"\n />\n </igx-input-group>\n <igx-list>\n @for (\n item of dims | filterPivotItems: input.value:grid?.pipeTrigger;\n track item.memberName\n ) {\n <igx-list-item [id]=\"item.memberName\">\n <igx-checkbox\n [aria-labelledby]=\"item.memberName\"\n [disableRipple]=\"true\"\n [checked]=\"item.enabled\"\n (click)=\"toggleItem(item)\"\n ></igx-checkbox>\n <span>{{ item.displayName || item.memberName }}</span>\n </igx-list-item>\n }\n @for (\n item of values | filterPivotItems: input.value:grid?.pipeTrigger;\n track item\n ) {\n <igx-list-item [id]=\"item.member\">\n <igx-checkbox\n [aria-labelledby]=\"item.member\"\n [disableRipple]=\"true\"\n [checked]=\"item.enabled\"\n (click)=\"toggleItem(item)\"\n ></igx-checkbox>\n <span>{{ item.displayName || item.member }}</span>\n </igx-list-item>\n }\n </igx-list>\n</div>\n\n<igx-accordion>\n @for (panel of _panels; track panel) {\n <igx-expansion-panel\n [animationSettings]=\"animationSettings\"\n [collapsed]=\"getPanelCollapsed(panel.type)\"\n (collapsedChange)=\"onCollapseChange($event, panel.type)\"\n >\n <igx-expansion-panel-header\n iconPosition=\"left\"\n [disabled]=\"false\"\n igxDrop\n (enter)=\"onPanelEntry($event, panel.name)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n >\n <igx-expansion-panel-title class=\"igx-pivot-data-selector__header\">\n <h6 class=\"igx-pivot-data-selector__header-title\">\n {{ grid?.resourceStrings[panel.i18n] }}\n </h6>\n <div class=\"igx-pivot-data-selector__header-extra\">\n <igx-icon family=\"default\" [name]=\"panel.icon\"></igx-icon>\n <igx-chip>{{ this.grid ? this.grid[panel.dataKey].length : 0 }}</igx-chip>\n </div>\n </igx-expansion-panel-title>\n </igx-expansion-panel-header>\n <igx-expansion-panel-body\n igxDrop\n (enter)=\"onPanelEntry($event, panel.name)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n >\n @if (this.grid && this.grid[panel.dataKey].length > 0) {\n <igx-list>\n @for (\n item of this.grid[panel.dataKey];\n track (item.memberName || item.member)\n ) {\n <igx-list-item\n igxDrop\n [igxDrag]=\"{ gridID: grid.id, selectorChannels: panel.dragChannels }\"\n [ghostTemplate]=\"itemGhost\"\n (ghostCreate)=\"ghostCreated($event, item[panel.itemKey])\"\n (over)=\"onItemDragOver($event)\"\n (leave)=\"onItemDragLeave($event)\"\n (dragMove)=\"onItemDragMove($event)\"\n (dragEnd)=\"onItemDragEnd($event)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n [id]=\"item[panel.itemKey]\"\n >\n <div class=\"igx-pivot-data-selector__item\">\n <div\n class=\"igx-pivot-data-selector__item-start\"\n (click)=\"onItemSort($event, item, panel.type)\"\n [class.igx-pivot-data-selector__action-sort]=\"\n panel.sortable\n \"\n >\n <div class=\"igx-pivot-data-selector__item-text\">\n @if (panel.type === null) {\n <span>{{\n item.aggregate.key\n }}</span>\n }\n @if (panel.type === null) {\n <span>(</span>\n }\n <span>{{ item[panel.displayKey] || item[panel.itemKey] }}</span>\n @if (panel.type === null) {\n <span>)</span>\n }\n </div>\n @if (panel.sortable && item.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"item.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n class=\"igx-pivot-data-selector__action-sort\"\n >\n </igx-icon>\n }\n </div>\n <div class=\"igx-pivot-data-selector__item-end\">\n @if (panel.type !== null) {\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n class=\"igx-pivot-data-selector__action-filter\"\n (pointerdown)=\"onFilteringIconPointerDown($event)\"\n (click)=\"onFilteringIconClick($event, item)\">\n </igx-icon>\n }\n @if (panel.type === null) {\n <igx-icon\n family=\"default\"\n name=\"functions\"\n class=\"igx-pivot-data-selector__action-summary\"\n (click)=\"onSummaryClick($event, item, dropdown)\"\n [igxDropDownItemNavigation]=\"dropdown\">\n </igx-icon>\n }\n @if (panel.dragChannels.length > 0) {\n <igx-icon\n family=\"default\"\n name=\"drag_indicator\"\n igxDragHandle\n class=\"igx-pivot-data-selector__action-move\"\n >\n </igx-icon>\n }\n </div>\n </div>\n </igx-list-item>\n }\n </igx-list>\n }\n @if (this.grid && this.grid[panel.dataKey].length === 0) {\n <div class=\"igx-pivot-data-selector__empty\">\n {{ grid?.resourceStrings.igx_grid_pivot_selector_panel_empty }}\n </div>\n }\n </igx-expansion-panel-body>\n </igx-expansion-panel>\n }\n</igx-accordion>\n\n<igx-drop-down #dropdown (selectionChanging)=\"onAggregationChange($event)\">\n @for (item of aggregateList; track item) {\n <igx-drop-down-item\n [selected]=\"isSelected(item)\"\n [value]=\"item\"\n >\n {{ item.label }}\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<ng-template #itemGhost>\n <div\n class=\"igx-pivot-data-selector__item-ghost\"\n [style.width.px]=\"ghostWidth\"\n [class.igx-pivot-data-selector__item-ghost--no-drop]=\"!dropAllowed\"\n >\n <div class=\"igx-pivot-data-selector__item-ghost-text\">\n <igx-icon family=\"default\" name=\"import_export\"></igx-icon>\n <span>{{ ghostText }}</span>\n </div>\n <igx-icon family=\"default\" name=\"drag_indicator\"></igx-icon>\n </div>\n</ng-template>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject } from '@angular/core';\n\nimport { PivotGridType, PivotRowLayoutType, PivotUtil } from 'igniteui-angular/grids/core';\n\nimport { IgxGridHeaderComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotColumnResizingService } from 'igniteui-angular/grids/core';\nimport { SortingIndexPipe } from 'igniteui-angular/grids/core';\nimport { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { takeUntil } from 'rxjs/operators';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { ISortingExpression, SortingDirection } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-dimension-header',\n templateUrl: '../../core/src/headers/grid-header.component.html',\n imports: [IgxIconComponent, NgTemplateOutlet, NgClass, SortingIndexPipe]\n})\nexport class IgxPivotRowDimensionHeaderComponent extends IgxGridHeaderComponent implements AfterViewInit {\n public override colResizingService = inject(IgxPivotColumnResizingService);\n public refInstance = inject(ElementRef<HTMLElement>);\n\n private pivotGrid: PivotGridType;\n\n constructor() {\n super();\n\n this.pivotGrid = this.grid as PivotGridType;\n this.pivotGrid.dimensionsSortingExpressionsChange\n .pipe(takeUntil(this._destroy$))\n .subscribe((_: ISortingExpression[]) => this.setSortIndex());\n }\n\n public ngAfterViewInit(): void {\n this.setSortIndex();\n }\n\n @HostListener('click', ['$event'])\n public override onClick(event: MouseEvent) {\n event.preventDefault();\n }\n\n /**\n * @hidden @internal\n */\n public override get selectable(): boolean {\n return false;\n }\n\n /**\n * @hidden @internal\n */\n public override onSortingIconClick(event) {\n event.stopPropagation();\n const dim = this.pivotGrid.getRowDimensionByName(this.column.field);\n const startDirection = dim.sortDirection || SortingDirection.None;\n const direction = startDirection + 1 > SortingDirection.Desc ?\n SortingDirection.None : startDirection + 1;\n this.pivotGrid.sortDimension(dim, direction);\n }\n\n protected override getSortDirection() {\n const dim = this.pivotGrid.getRowDimensionByName(this.column.field);\n this.sortDirection = dim?.sortDirection || SortingDirection.None;\n }\n\n protected setSortIndex() {\n if (this.column.sortable && this.sortIconContainer) {\n const visibleRows = this.pivotGrid.pivotUI.rowLayout === PivotRowLayoutType.Vertical ?\n this.pivotGrid.pivotConfiguration.rows :\n PivotUtil.flatten(this.pivotGrid.pivotConfiguration.rows);\n const dimIndex = visibleRows.findIndex((target) => target.memberName === this.column.field);\n const dim = visibleRows[dimIndex];\n let newSortIndex = -1;\n if (dim.sortDirection) {\n let priorSortedDims = 0;\n for (let i = 0; i < dimIndex; i++) {\n if (visibleRows[i].sortDirection) {\n priorSortedDims++;\n }\n }\n\n // Sort index starts from 1.\n newSortIndex = priorSortedDims + 1;\n }\n\n this.sortIconContainer.nativeElement.setAttribute(\"data-sortIndex\", newSortIndex >= 0 ? newSortIndex : \"\");\n }\n }\n}\n","<ng-template #defaultColumn>\n <span [title]=\"title\">{{ column.header || column.field }}</span>\n</ng-template>\n\n<ng-template #defaultESFHeaderIconTemplate>\n <igx-icon family=\"default\" name=\"more_vert\"></igx-icon>\n</ng-template>\n\n<ng-template #defaultSortHeaderIconTemplate>\n <igx-icon\n family=\"default\"\n [name]=\"sortDirection < 2 ? 'sort_asc' : 'sort_desc'\">\n </igx-icon>\n</ng-template>\n\n<span class=\"igx-grid-th__title\">\n <ng-container\n *ngTemplateOutlet=\"column.headerTemplate ? column.headerTemplate : defaultColumn; context: { $implicit: column, column: column}\">\n </ng-container>\n</span>\n@if (!column.columnGroup) {\n <div class=\"igx-grid-th__icons\">\n @if (column.sortable && !disabled) {\n <div #sortIconContainer class=\"sort-icon\"\n [attr.data-sortIndex]=\"(grid.sortingOptions.mode === 'single' && grid.sortingExpressions.length <=1) ? null : column.field | sortingIndex:grid.sortingExpressions\"\n (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"onSortingIconClick($event)\">\n <ng-container *ngTemplateOutlet=\"sortIconTemplate; context: { $implicit: this }\"></ng-container>\n </div>\n }\n @if (grid.allowFiltering && column.filterable && grid.filterMode === 'excelStyleFilter') {\n <div [ngClass]=\"filterIconClassName\" (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"onFilteringIconClick($event)\" >\n <ng-container *ngTemplateOutlet=\"esfIconTemplate; context: { $implicit: this }\"></ng-container>\n </div>\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input, ViewChild } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\nimport {\n IGX_GRID_BASE,\n IgxColumnMovingDragDirective,\n IgxColumnMovingDropDirective,\n IgxGridHeaderGroupComponent,\n IgxHeaderGroupStylePipe,\n IgxPivotColumnResizingService,\n IgxPivotResizeHandleDirective,\n IPivotDimension,\n PivotGridType,\n PivotRowHeaderGroupType\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderComponent } from './pivot-row-dimension-header.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { SortingDirection } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-header-group',\n templateUrl: './pivot-row-dimension-header-group.component.html',\n imports: [IgxIconComponent, IgxPivotRowDimensionHeaderComponent, NgClass, NgStyle, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxPivotResizeHandleDirective, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowHeaderGroupComponent extends IgxGridHeaderGroupComponent implements PivotRowHeaderGroupType {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n public override colResizingService = inject(IgxPivotColumnResizingService);\n\n /**\n * @hidden\n */\n @HostBinding('style.user-select')\n public userSelect = 'none';\n\n /**\n * @hidden\n */\n public get role(): string {\n return 'columnheader';\n }\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public rowIndex: number;\n\n @Input()\n public set dimWidth(value: number) {\n this.column.width = value + 'px';\n }\n public get dimWidth() {\n return parseFloat(this.column.width);\n }\n\n public get parent() {\n return this;\n };\n\n @Input()\n public rootDimension: IPivotDimension;\n\n @ViewChild(IgxPivotRowDimensionHeaderComponent)\n public override header: IgxPivotRowDimensionHeaderComponent;\n\n @HostBinding('attr.id')\n public override get headerID() {\n return `${this.grid.id}_-2_${this.rootDimension.memberName}_${this.visibleIndex}`;\n }\n\n @HostBinding('attr.title')\n public override get title() {\n return this.rootDimension.displayName;\n }\n\n /**\n * @hidden\n * @internal\n */\n public get visibleIndex(): number {\n const rows = this.grid.visibleRowDimensions;\n return rows.indexOf(this.rootDimension);\n }\n\n @HostBinding('class.igx-grid-th--active')\n public override get active() {\n const nav = this.grid.navigation;\n const node = nav.activeNode;\n return node && !this.column.columnGroup ?\n nav.isRowDimensionHeaderActive &&\n node.row === this.rowIndex &&\n node.column === this.visibleIndex :\n false;\n }\n\n @HostBinding('class.asc')\n public get sortAscendingStyle() {\n return this.rootDimension.sortDirection === SortingDirection.Asc;\n }\n\n @HostBinding('class.desc')\n public get sortDescendingStyle() {\n return this.rootDimension.sortDirection === SortingDirection.Desc;\n }\n\n @HostBinding('class.igx-grid-th--sortable')\n public get sortableStyle() {\n return true;\n }\n\n @HostBinding('class.igx-grid-th--sorted')\n public get sortedStyle() {\n return this.rootDimension.sortDirection !== undefined && this.rootDimension.sortDirection !== SortingDirection.None;\n }\n\n protected override get activeNode() {\n this.grid.navigation.isRowDimensionHeaderActive = true;\n this.grid.navigation.isRowHeaderActive = false;\n return {\n row: this.rowIndex, column: this.visibleIndex, level: null,\n mchCache: {\n level: 0,\n visibleIndex: this.visibleIndex\n },\n layout: null\n };\n }\n\n public override activate() {\n this.grid.navigation.setActiveNode(this.activeNode);\n }\n\n /**\n * @hidden @internal\n */\n public override pointerdown(_event: PointerEvent): void {\n this.activate();\n }\n\n /**\n * @hidden @internal\n */\n public override onMouseDown(_event: MouseEvent): void {\n this.activate();\n }\n\n public override get selectable(): boolean {\n return false;\n }\n\n protected getHeaderWidthFromDimension() {\n return this.grid.hasHorizontalLayout && this.dimWidth === -1 ? 'fit-content' : null;\n }\n}\n","<ng-template #defaultColumn>\n <span class=\"igx-grid-th__group-title\" [title]=\"title\">{{column.header}}</span>\n</ng-template>\n\n<ng-template #defaultCollapseIndicator>\n <igx-icon\n family=\"default\"\n [name]=\"column.expanded ? 'tree_collapse' : 'tree_expand'\">\n </igx-icon>\n</ng-template>\n\n@if (!column.columnGroup) {\n @if (grid.hasMovableColumns) {\n <span class=\"igx-grid-th__drop-indicator-left\"></span>\n }\n <igx-pivot-row-dimension-header\n [attr.role]=\"role\"\n class=\"igx-grid-th--fw\"\n [id]=\"header ? grid.id + '_' + header.title : grid.id + '_' + column.field\"\n [ngClass]=\"column.headerClasses\"\n [ngStyle]=\"column.headerStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n (pointerdown)=\"pointerdown($event)\"\n [igxColumnMovingDrop]=\"column\"\n [column]=\"column\"\n (keydown)=\"grid.navigation.headerNavigation($event)\"\n [style.min-width]=\"getHeaderWidthFromDimension()\"\n [style.width]=\"getHeaderWidthFromDimension()\"\n >\n </igx-pivot-row-dimension-header>\n @if (!column.columnGroup && column.resizable) {\n <span class=\"igx-grid-th__resize-handle\"\n [igxPivotResizeHandle]=\"column\"\n [igxPivotResizeHandleHeader]=\"this\"\n [attr.draggable]=\"false\"\n [style.cursor]=\"colResizingService.resizeCursor\">\n </span>\n }\n @if (grid.hasMovableColumns) {\n <span class=\"igx-grid-th__drop-indicator-right\"></span>\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n QueryList,\n Renderer2,\n ViewChild,\n SimpleChanges,\n ViewChildren,\n HostBinding,\n inject\n} from '@angular/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\n\nimport { AbsoluteScrollStrategy, AutoPositionStrategy, ColumnType, OverlaySettings, PositionSettings, SortingDirection, VerticalAlignment } from 'igniteui-angular/core';\nimport {\n DropPosition,\n IGX_GRID_BASE,\n IgxExcelStyleColumnOperationsTemplateDirective,\n IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleSearchComponent,\n IgxGridExcelStyleFilteringComponent,\n IgxGridHeaderGroupComponent,\n IgxGridHeaderRowComponent,\n IgxGridTopLevelColumns,\n IgxHeaderGroupStylePipe,\n IPivotAggregator,\n IPivotDimension,\n IPivotValue,\n PivotDimensionType,\n PivotGridType,\n PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';\nimport { IgxDropDirective, IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IBaseChipEventArgs, IgxChipComponent, IgxChipsAreaComponent } from 'igniteui-angular/chips';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxBadgeComponent } from 'igniteui-angular/badge';\nimport { IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, ISelectionEventArgs } from 'igniteui-angular/drop-down';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-header-row',\n templateUrl: './pivot-header-row.component.html',\n imports: [IgxDropDirective, IgxChipsAreaComponent, IgxChipComponent, IgxIconComponent,\n IgxPrefixDirective, IgxBadgeComponent, IgxSuffixDirective, IgxDropDownItemNavigationDirective,\n NgTemplateOutlet, IgxGridHeaderGroupComponent, NgClass, NgStyle, IgxGridForOfDirective,\n IgxDropDownComponent, IgxDropDownItemComponent, IgxGridExcelStyleFilteringComponent,\n IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleSearchComponent, IgxHeaderGroupStylePipe, IgxGridTopLevelColumns,\n IgxPivotRowHeaderGroupComponent]\n})\nexport class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implements OnChanges {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n protected renderer = inject(Renderer2);\n\n public aggregateList: IPivotAggregator[] = [];\n\n public value: IPivotValue;\n public filterDropdownDimensions: Set<any> = new Set<any>();\n public filterAreaDimensions: Set<any> = new Set<any>();\n private _dropPos = DropPosition.AfterDropTarget;\n private _subMenuPositionSettings: PositionSettings = {\n verticalStartPoint: VerticalAlignment.Bottom,\n closeAnimation: undefined\n };\n private _subMenuOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: false,\n positionStrategy: new AutoPositionStrategy(this._subMenuPositionSettings),\n scrollStrategy: new AbsoluteScrollStrategy()\n };\n\n /**\n * @hidden @internal\n */\n @ViewChild('esf') public esf: any;\n\n /**\n * @hidden @internal\n */\n @ViewChild('filterAreaHidden', { static: false }) public filterArea;\n\n /**\n * @hidden @internal\n */\n @ViewChild('filterIcon') public filtersButton;\n\n /**\n * @hidden @internal\n */\n @ViewChild('dropdownChips') public dropdownChips;\n\n /**\n * @hidden @internal\n */\n @ViewChild('pivotFilterContainer') public pivotFilterContainer;\n\n /**\n * @hidden @internal\n */\n @ViewChild('pivotRowContainer') public pivotRowContainer;\n\n /**\n * @hidden\n * @internal\n */\n @ViewChildren('notifyChip')\n public notificationChips: QueryList<IgxChipComponent>;\n\n /**\n * @hidden\n * @internal\n * The virtualized part of the header row containing the unpinned header groups.\n */\n @ViewChildren('headerVirtualContainer', { read: IgxGridForOfDirective })\n public headerContainers: QueryList<IgxGridForOfDirective<ColumnType, ColumnType[]>>;\n\n /**\n * @hidden\n * @internal\n */\n @ViewChildren('rowDimensionHeaders')\n public rowDimensionHeaders: QueryList<IgxPivotRowHeaderGroupComponent>;\n\n public override get headerForOf() {\n return this.headerContainers?.last;\n }\n\n @HostBinding('attr.aria-activedescendant')\n public override get activeDescendant(): string {\n const activeElem = this.navigation.activeNode;\n if (!activeElem || !Object.keys(activeElem).length || this.grid.navigation.headerRowActiveDescendant) {\n return null;\n }\n\n if (this.navigation.isRowDimensionHeaderActive) {\n const activeHeader = this.grid.theadRow.rowDimensionHeaders.find(h => h.active);\n if (activeHeader) {\n const key = activeHeader.title ?? activeHeader.rootDimension?.memberName;\n return key ? `${this.grid.id}_${key}` : null;\n }\n return null;\n }\n\n return super.activeDescendant;\n }\n\n /**\n * @hidden\n * @internal\n * Default is a single empty level since default depth is 1\n */\n public columnDimensionsByLevel: any[] = [[]];\n\n /**\n * @hidden @internal\n */\n public get isFiltersButton(): boolean {\n let chipsWidth = 0;\n this.filterDropdownDimensions.clear();\n this.filterAreaDimensions.clear();\n if (this.filterArea?.chipsList && this.filterArea.chipsList.length !== 0) {\n const styles = getComputedStyle(this.pivotFilterContainer.nativeElement);\n const containerPaddings = parseFloat(styles.paddingLeft) + parseFloat(styles.paddingRight);\n chipsWidth += containerPaddings + (this.filtersButton && this.filterArea?.chipsList.length > 1 ? this.filtersButton.el.nativeElement.getBoundingClientRect().width : 0);\n this.filterArea.chipsList.forEach(chip => {\n const dim = this.grid.filterDimensions.find(x => x.memberName === chip.id);\n if (dim) {\n // 8 px margin between chips\n const currentChipWidth = chip.nativeElement.getBoundingClientRect().width + 8;\n if (chipsWidth + currentChipWidth < this.grid.pivotRowWidths) {\n this.filterAreaDimensions.add(dim);\n } else {\n this.filterDropdownDimensions.add(dim);\n }\n chipsWidth += currentChipWidth;\n }\n });\n return this.filterDropdownDimensions.size > 0;\n }\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public get totalDepth() {\n const columnDimensions = this.grid.columnDimensions;\n if (columnDimensions.length === 0) {\n return 1;\n }\n let totalDepth = columnDimensions.map(x => this.grid.data?.length > 0 ? PivotUtil.getDimensionDepth(x) + 1 : 0).reduce((acc, val) => acc + val);\n if (this.grid.hasMultipleValues) {\n totalDepth += 1;\n }\n return totalDepth;\n }\n\n /**\n * @hidden\n * @internal\n */\n public get maxContainerHeight() {\n return this.totalDepth * this.grid.renderedRowHeight;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override get isLeafHeaderAriaHidden(): boolean {\n return super.isLeafHeaderAriaHidden || this.grid.navigation.isRowHeaderActive || this.grid.navigation.isRowDimensionHeaderActive;\n }\n\n /**\n * @hidden\n * @internal\n */\n public calcHeight(col: ColumnType, index: number) {\n return !col.columnGroup && col.level < this.totalDepth && col.level === index ? (this.totalDepth - col.level) * this.grid.rowHeight : this.grid.rowHeight;\n }\n\n /**\n * @hidden\n * @internal\n */\n public isDuplicateOfExistingParent(col: ColumnType, lvl: number) {\n const parentCollection = lvl > 0 ? this.columnDimensionsByLevel[lvl - 1] : [];\n const duplicate = parentCollection.indexOf(col) !== -1;\n\n return duplicate;\n }\n\n /**\n * @hidden\n * @internal\n */\n public isMultiRow(col: ColumnType, lvl: number) {\n const isLeaf = !col.columnGroup;\n return isLeaf && lvl !== this.totalDepth - 1;\n }\n\n /**\n * @hidden\n * @internal\n */\n public populateColumnDimensionsByLevel() {\n const res = [];\n for (let i = 0; i < this.totalDepth; i++) {\n res[i] = [];\n }\n const cols = this.unpinnedColumnCollection;\n // populate column dimension matrix recursively\n this.populateDimensionRecursively(cols.filter(x => x.level === 0), 0, res);\n this.columnDimensionsByLevel = res;\n }\n\n protected populateDimensionRecursively(currentLevelColumns: ColumnType[], level = 0, res: any[]) {\n currentLevelColumns.forEach(col => {\n if (res[level]) {\n res[level].push(col);\n if (col.columnGroup && col.children.length > 0) {\n const visibleColumns = col.children.toArray().filter(x => !x.hidden);\n this.populateDimensionRecursively(visibleColumns, level + 1, res);\n } else if (level < this.totalDepth - 1) {\n for (let i = level + 1; i <= this.totalDepth - 1; i++) {\n res[i].push(col);\n }\n }\n }\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.unpinnedColumnCollection) {\n this.populateColumnDimensionsByLevel();\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDragStart(event, area) {\n this.cdr.detectChanges();\n for (const chip of this.notificationChips) {\n const parent = chip.nativeElement.parentElement;\n if (area.chipsList.toArray().indexOf(chip) === -1 &&\n parent.children.length > 0 &&\n parent.children.item(0).id !== 'empty') {\n chip.nativeElement.hidden = false;\n parent.parentElement.scrollTo({ left: chip.nativeElement.offsetLeft });\n }\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDragEnd() {\n for (const chip of this.notificationChips) {\n chip.nativeElement.hidden = true;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public getAreaHeight(area: IgxChipsAreaComponent) {\n const chips = area.chipsList;\n return chips && chips.length > 0 ? chips.first.nativeElement.offsetHeight : 0;\n }\n\n /**\n * @hidden\n * @internal\n */\n public rowRemoved(event: IBaseChipEventArgs) {\n const row = this.grid.pivotConfiguration.rows.find(x => x.memberName === event.owner.id);\n this.grid.toggleDimension(row);\n }\n\n /**\n * @hidden\n * @internal\n */\n public columnRemoved(event: IBaseChipEventArgs) {\n const col = this.grid.pivotConfiguration.columns.find(x => x.memberName === event.owner.id);\n this.grid.toggleDimension(col);\n }\n\n /**\n * @hidden\n * @internal\n */\n public valueRemoved(event: IBaseChipEventArgs) {\n const value = this.grid.pivotConfiguration.values.find(x => x.member === event.owner.id || x.displayName === event.owner.id);\n this.grid.toggleValue(value);\n }\n\n /**\n * @hidden\n * @internal\n */\n public filterRemoved(event: IBaseChipEventArgs) {\n const filter = this.grid.pivotConfiguration.filters.find(x => x.memberName === event.owner.id);\n this.grid.toggleDimension(filter);\n if (this.filterDropdownDimensions.size > 0) {\n this.onFiltersAreaDropdownClick({ target: this.filtersButton.el.nativeElement }, undefined, false);\n } else {\n this.grid.filteringService.hideESF();\n }\n }\n\n public onFiltersSelectionChanged(event?: IBaseChipEventArgs) {\n this.dropdownChips.chipsList.forEach(chip => {\n if (chip.id !== event.owner.id) {\n chip.selected = false\n }\n });\n this.onFiltersAreaDropdownClick({ target: this.filtersButton.el.nativeElement }, this.grid.filterDimensions.find(dim => dim.memberName === event.owner.id), false);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onFilteringIconPointerDown(event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n /**\n * @hidden\n * @internal\n */\n public onFilteringIconClick(event, dimension) {\n event.stopPropagation();\n event.preventDefault();\n const dim = dimension;\n const col = this.grid.dimensionDataColumns.find(x => x.field === dim.memberName || x.field === dim.member);\n this.grid.filteringService.toggleFilterDropdown(event.target, col);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onSummaryClick(eventArgs, value: IPivotValue, dropdown: IgxDropDownComponent, chip: IgxChipComponent) {\n this._subMenuOverlaySettings.target = eventArgs.currentTarget;\n this.updateDropDown(value, dropdown, chip);\n }\n\n /**\n * @hidden @internal\n */\n public onFiltersAreaDropdownClick(event, dimension?, shouldReattach = true) {\n const dim = dimension || this.filterDropdownDimensions.values().next().value;\n const col = this.grid.dimensionDataColumns.find(x => x.field === dim.memberName || x.field === dim.member);\n if (shouldReattach) {\n this.dropdownChips.chipsList.forEach(chip => {\n chip.selected = false\n });\n this.dropdownChips.chipsList.first.selected = true;\n }\n this.grid.filteringService.toggleFiltersESF(this.esf, event.target, col, shouldReattach);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onAggregationChange(event: ISelectionEventArgs) {\n\n if (!this.isSelected(event.newSelection.value)) {\n this.value.aggregate = event.newSelection.value;\n const isSingleValue = this.grid.values.length === 1;\n\n PivotUtil.updateColumnTypeByAggregator(this.grid.columns, this.value, isSingleValue);\n\n this.grid.pipeTrigger++;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public isSelected(val: IPivotAggregator) {\n return this.value.aggregate.key === val.key;\n }\n\n /**\n * @hidden\n * @internal\n */\n public onChipSort(_event, dimension: IPivotDimension) {\n if (dimension.sortable === undefined || dimension.sortable) {\n const startDirection = dimension.sortDirection || SortingDirection.None;\n const direction = startDirection + 1 > SortingDirection.Desc ?\n SortingDirection.None : startDirection + 1;\n this.grid.sortDimension(dimension, direction);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDragOver(event, dimension?: PivotDimensionType) {\n if (!event.dragChip || !event.dragChip.data?.pivotArea) return;\n const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id\n || x.displayName === event.dragChip.id) :\n !this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id || x.displayName === event.dragChip.id);\n if (typeMismatch) {\n // cannot drag between dimensions and value\n return;\n }\n // if we are in the left half of the chip, drop on the left\n // else drop on the right of the chip\n const clientRect = event.owner.nativeElement.getBoundingClientRect();\n const pos = clientRect.width / 2;\n\n this._dropPos = event.originalEvent.offsetX > pos ? DropPosition.AfterDropTarget : DropPosition.BeforeDropTarget;\n if (this._dropPos === DropPosition.AfterDropTarget) {\n event.owner.nativeElement.previousElementSibling.style.visibility = 'hidden';\n event.owner.nativeElement.nextElementSibling.style.visibility = '';\n } else {\n event.owner.nativeElement.nextElementSibling.style.visibility = 'hidden';\n event.owner.nativeElement.previousElementSibling.style.visibility = '';\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDragLeave(event) {\n event.owner.nativeElement.previousElementSibling.style.visibility = 'hidden';\n event.owner.nativeElement.nextElementSibling.style.visibility = 'hidden';\n this._dropPos = DropPosition.AfterDropTarget;\n }\n\n /**\n * @hidden\n * @internal\n */\n public onAreaDragLeave(event, area) {\n const dataChips = area.chipsList.toArray().filter(x => this.notificationChips.toArray().indexOf(x) === -1);\n dataChips.forEach(element => {\n if (element.nativeElement.previousElementSibling) {\n element.nativeElement.previousElementSibling.style.visibility = 'hidden';\n }\n if (element.nativeElement.nextElementSibling) {\n element.nativeElement.nextElementSibling.style.visibility = 'hidden';\n }\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n public onValueDrop(event, area) {\n if (!(event.dragChip && event.dragChip.data?.pivotArea) && !(event.dragData?.chip && !!event.dragData.chip.data.pivotArea)) return;\n //values can only be reordered\n const values = this.grid.pivotConfiguration.values;\n const dragId = event.dragChip?.id || event.dragData?.chip.id;\n const chipsArray = area.chipsList.toArray();\n let chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;\n chipIndex = this._dropPos === DropPosition.AfterDropTarget ? chipIndex + 1 : chipIndex;\n const value = values.find(x => x.member === dragId || x.displayName === dragId);\n if (value) {\n const dragChipIndex = chipsArray.indexOf(event.dragChip || event.dragData.chip);\n this.grid.moveValue(value, dragChipIndex >= chipIndex ? chipIndex : chipIndex - 1);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDrop(event, area, dimensionType: PivotDimensionType) {\n if (!(event.dragChip && event.dragChip.data?.pivotArea) && !(event.dragData?.chip && !!event.dragData.chip.data.pivotArea)) return;\n const dragId = event.dragChip?.id || event.dragData?.chip.id;\n const currentDim = this.grid.getDimensionsByType(dimensionType);\n const chipsArray = area.chipsList.toArray();\n const chip = chipsArray.find(x => x.id === dragId);\n const isNewChip = chip === undefined;\n const isReorder = event.owner.id !== undefined;\n //const chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;\n const chipIndex = currentDim.findIndex(x => x.memberName === event.owner.id) !== -1 ?\n currentDim.findIndex(x => x.memberName === event.owner.id) : currentDim.length;\n const targetIndex = this._dropPos === DropPosition.AfterDropTarget ? chipIndex + 1 : chipIndex;\n if (isNewChip) {\n // chip moved from an external collection\n const dim = this.grid.allDimensions.find(x => x && x.memberName === dragId);\n if (!dim) {\n // you have dragged something that is not a dimension\n return;\n }\n this.grid.moveDimension(dim, dimensionType, targetIndex);\n } else if (isReorder) {\n // chip from same collection, reordered.\n const newDim = currentDim.find(x => x.memberName === dragId);\n const dragChipIndex = currentDim.findIndex(x => x.memberName === dragId);\n this.grid.moveDimension(newDim, dimensionType, dragChipIndex > chipIndex ? targetIndex : targetIndex - 1);\n }\n this.grid.pipeTrigger++;\n this.grid.dimensionsChange.emit({ dimensions: currentDim, dimensionCollectionType: dimensionType });\n // clean states\n this.onDimDragEnd();\n this.onAreaDragLeave(event, area);\n }\n\n protected updateDropDown(value: IPivotValue, dropdown: IgxDropDownComponent, chip: IgxChipComponent) {\n this.value = value;\n dropdown.width = chip.nativeElement.clientWidth + 'px';\n this.aggregateList = PivotUtil.getAggregateList(value, this.grid);\n this.cdr.detectChanges();\n dropdown.open(this._subMenuOverlaySettings);\n }\n\n protected getRowDimensionColumn(dim: IPivotDimension): ColumnType {\n return this.grid.dimensionDataColumns ? this.grid.dimensionDataColumns.find((col) => col.field === dim.memberName) : null;\n }\n}\n","<div>\n <div class=\"igx-grid-thead__wrapper igx-grid-thead__wrapper--pivot\" role=\"row\" [style.width.px]=\"width\">\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n <div class='igx-grid__tr-pivot--filter-container'>\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotFilterContainer\n class=\"igx-grid__tr-pivot igx-grid__tr-pivot--filter\" [style.min-width.px]=\"grid.pivotRowWidths - 1\"\n [style.max-width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, filterArea)\"\n igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\" (pointerdown)=\"$event.preventDefault()\">\n <!-- Filter area -->\n <igx-chips-area #filterArea droppable='true'>\n @if (grid.filterDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_filter_drop_area}}</span>\n }\n @for (filter of this.filterAreaDimensions; track filter; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(filterArea)'></span>\n <igx-chip [id]=\"filter.memberName\" [draggable]=\"true\" [data]=\"{ pivotArea: 'filter' }\"\n [removable]=\"true\" (remove)=\"filterRemoved($event)\" (dragOver)=\"onDimDragOver($event, 2)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, filterArea, 2)\"\n (moveStart)='onDimDragStart($event, filterArea)' (moveEnd)='onDimDragEnd()'>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, filter)'>\n </igx-icon>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(filterArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, filterArea, 2)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_filter_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n @if (isFiltersButton && grid.filterDimensions.length !== 0) {\n <div class=\"igx-grid__pivot-filter-toggle\">\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n #filterIcon\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFiltersAreaDropdownClick($event)'>\n </igx-icon>\n <igx-badge value=\"{{this.filterDropdownDimensions.size}}\"></igx-badge>\n </div>\n }\n </div>\n }\n <div class='igx-grid__tr-pivot--drop-row-area'>\n @if (grid.pivotUI.showConfiguration && grid.pivotUI.showRowHeaders) {\n <div #pivotRowContainer [style.width.px]=\"grid.pivotRowWidths - 1\"\n class=\"igx-grid__tr-pivot igx-grid__tr-pivot--small-row-area\" igxDrop\n (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\"\n (dropped)=\"onDimDrop($event, rowArea, 0)\">\n <igx-chips-area #rowArea droppable='true'>\n @if (grid.rowDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n }\n @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, row)\">\n <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, row)'>\n </igx-icon>\n {{ row.displayName || row.memberName}}\n @if (row.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n </div>\n </div>\n\n <div class=\"igx-grid__tr-pivot-group\">\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotColumnContainer class=\"igx-grid__tr-pivot\"\n (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop (igxDragLeave)=\"onAreaDragLeave($event, colArea)\">\n <!-- Columns area -->\n <igx-chips-area #colArea droppable='true'>\n @if (grid.columnDimensions.length === 0) {\n <span id='empty' (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop\n class='igx-grid__pivot-empty-chip-area'>\n {{grid.resourceStrings.igx_grid_pivot_empty_column_drop_area}}</span>\n }\n @for (col of grid.columnDimensions; track col.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(colArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"col.memberName\" [data]=\"{ pivotArea: 'column' }\"\n [removable]=\"true\" (remove)=\"columnRemoved($event)\" (dragOver)=\"onDimDragOver($event, 1)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, colArea, 1)\"\n (moveStart)='onDimDragStart($event, colArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, col)\">\n <igx-icon\n family=\"default\"\n name=\"view_column\"\n igxPrefix>\n </igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, col)'>\n </igx-icon>\n {{col.displayName || col.memberName}}\n @if (col.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"col.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(colArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, colArea, 1)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_column_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotValueContainer class=\"igx-grid__tr-pivot\"\n (pointerdown)=\"$event.preventDefault()\" (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n (igxDragLeave)=\"onAreaDragLeave($event, valueArea)\">\n <!-- Value area -->\n <igx-chips-area #valueArea droppable='true'>\n @if (grid.values.length === 0) {\n <span id='empty' (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_value_drop_area}}</span>\n }\n @for (value of grid.values; track value.member; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(valueArea)'></span>\n <igx-chip #currChip [draggable]=\"true\" [id]=\"value.displayName || value.member\" [data]=\"{ pivotArea: 'value' }\"\n [removable]=\"true\" (remove)=\"valueRemoved($event)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragOver)=\"onDimDragOver($event)\"\n (dragDrop)=\"onValueDrop($event, valueArea)\">\n <div class=\"igx-grid__tr-pivot-toggle-icons\" igxPrefix\n (click)='onSummaryClick($event, value, dropdown, currChip)'\n (pointerdown)='$event.stopPropagation()' [igxDropDownItemNavigation]=\"dropdown\">\n <igx-icon family=\"default\" name=\"functions\"></igx-icon>\n <igx-icon family=\"default\" name=\"arrow_drop_down\"></igx-icon>\n </div>\n <ng-container *ngTemplateOutlet=\"grid.valueChipTemplate ? grid.valueChipTemplate : valueChipDefaultTemplate; context: { $implicit: value }\"></ng-container>\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(valueArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onValueDrop($event, valueArea)\" #notifyValueChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_value_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n </div>\n </div>\n </div>\n <div role=\"rowgroup\" class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n @if (!grid.pivotUI.showRowHeaders || grid.rowDimensions.length === 0) {\n <div #pivotContainer class=\"igx-grid__tr-pivot igx-grid__tr-pivot--row-area\"\n [style.width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\" igxDrop\n (dropped)=\"onDimDrop($event, rowArea, 0)\" (pointerdown)=\"$event.preventDefault()\">\n <!-- Row area -->\n <igx-chips-area #rowArea droppable='true'>\n @if (grid.pivotUI.showConfiguration || grid.rowDimensions.length === 0) {\n @if (grid.rowDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n }\n @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, row)\">\n <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, row)'>\n </igx-icon>\n {{ row.displayName || row.memberName}}\n @if (row.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n </igx-chip>\n }\n </igx-chips-area>\n </div>\n }\n\n @if (grid.pivotUI.showRowHeaders && grid.rowDimensions.length > 0) {\n <div class=\"igx-grid__tr igx-grid__tr-header-row\" [style.width.px]=\"grid.pivotRowWidths - 1\">\n @for (dim of grid.visibleRowDimensions; track dim; let colIndex = $index; let isLast = $last) {\n @if (getRowDimensionColumn(dim); as dimCol) {\n <igx-pivot-row-header-group #rowDimensionHeaders\n [ngClass]=\"dimCol.headerGroupClasses\"\n [ngStyle]=\"dimCol.headerGroupStyles | igxHeaderGroupStyle:dimCol:grid.pipeTrigger\"\n [style.width.px]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [style.flex-basis.px]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [column]=\"dimCol\"\n [rootDimension]=\"grid.visibleRowDimensions[colIndex]\"\n [dimWidth]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [rowIndex]=\"-1\" >\n </igx-pivot-row-header-group>\n }\n }\n </div>\n }\n\n <!-- Pinned columns collection from the start -->\n @if (pinnedStartColumnCollection.length) {\n @for (column of pinnedStartColumnCollection | igxTopLevel; track column) {\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-header-group>\n }\n }\n <div class=\"igx-grid-thead--virtualizationWrapper\" [style.max-height.px]=\"maxContainerHeight\" (click)=\"grid.navigation.focusOutRowHeader($event)\">\n @for (dimLevelColumns of columnDimensionsByLevel; track $index; let i = $index) {\n <div class=\"igx-grid-thead__group igx-grid-thead--virtualizationContainer\" [style.height.px]=\"totalDepth > 1 ? grid.rowHeight : undefined\" [style.width.px]=\"grid.unpinnedWidth\">\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"dimLevelColumns\" [igxGridForOfUniqueSizeCache]=\"true\" [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\" [igxForScrollOrientation]=\"'horizontal'\">\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [style.height.px]=\"totalDepth > 1 ? calcHeight(column, i) : undefined\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n [class.igx-grid__tr-pivot--columnDimensionLeaf]=\"isDuplicateOfExistingParent(column, i)\"\n [class.igx-grid__tr-pivot--columnMultiRowSpan]=\"isMultiRow(column, i)\"\n >\n </igx-grid-header-group>\n </ng-template>\n </div>\n }\n </div>\n\n <!-- Pinned columns collection at the end -->\n @if (pinnedEndColumnCollection.length) {\n @for (column of pinnedEndColumnCollection | igxTopLevel; track column) {\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-header-group>\n }\n }\n </div>\n\n <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n @for (column of visibleLeafColumns; track column.index) {\n <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n }\n </div>\n </div>\n</div>\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\">\n</div>\n\n<igx-drop-down #dropdown (selectionChanging)='onAggregationChange($event)'>\n @for (item of aggregateList; track item.key) {\n <igx-drop-down-item [selected]='isSelected(item)' [value]='item'>\n {{ item.label }}\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<div [hidden]='true'>\n <igx-grid-excel-style-filtering [maxHeight]='grid.excelStyleFilterMaxHeight' [minHeight]='grid.excelStyleFilterMinHeight' #esf>\n <div igxExcelStyleColumnOperations>\n <igx-chips-area #dropdownChips>\n @for (filter of this.filterDropdownDimensions; track filter) {\n <igx-chip [id]=\"filter.memberName\"\n [removable]=\"true\" (remove)=\"filterRemoved($event)\"\n (chipClick)='onFiltersSelectionChanged($event)' [selectable]='true' [selected]='filter === this.filterDropdownDimensions.values().next().value'>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n }\n </igx-chips-area>\n </div>\n <igx-excel-style-filter-operations>\n <igx-excel-style-search></igx-excel-style-search>\n </igx-excel-style-filter-operations>\n </igx-grid-excel-style-filtering>\n</div>\n\n<div style=\"visibility: hidden; position: absolute; top: -10000px\">\n <igx-chips-area #filterAreaHidden droppable='true'>\n @for (filter of grid.filterDimensions; track filter) {\n <igx-chip\n [id]=\"filter.memberName\"\n [draggable]=\"true\"\n [removable]=\"true\"\n (remove)=\"filterRemoved($event)\">\n <igx-icon family=\"default\" name=\"filter_list\" igxPrefix></igx-icon>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n }\n </igx-chips-area>\n</div>\n\n<ng-template #valueChipDefaultTemplate let-value>\n {{value.aggregate.key}}({{value.displayName || value.member}})\n</ng-template>\n","import { IActiveNode, IgxGridNavigationService, IMultiRowLayoutNode, IPivotDimension, IPivotGridRecord, PivotSummaryPosition, PivotUtil } from 'igniteui-angular/grids/core';\nimport { Injectable } from '@angular/core';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\nimport { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';\nimport { take, timeout } from 'rxjs/operators';\nimport { HEADER_KEYS, ROW_COLLAPSE_KEYS, ROW_EXPAND_KEYS, SortingDirection } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxPivotGridNavigationService extends IgxGridNavigationService {\n public override grid: IgxPivotGridComponent;\n public isRowHeaderActive = false;\n public isRowDimensionHeaderActive = false;\n\n public get lastRowDimensionsIndex() {\n return this.grid.visibleRowDimensions.length - 1;\n }\n\n public get lastRowDimensionMRLRowIndex() {\n return this.grid.verticalRowDimScrollContainers.first.igxGridForOf.length - 1;\n }\n\n public focusOutRowHeader() {\n this.isRowHeaderActive = false;\n this.isRowDimensionHeaderActive = false;\n }\n\n public override async handleNavigation(event: KeyboardEvent) {\n if (this.isRowHeaderActive) {\n const key = event.key.toLowerCase();\n const ctrl = event.ctrlKey;\n if (!HEADER_KEYS.has(key)) {\n return;\n }\n event.preventDefault();\n\n const newActiveNode: IActiveNode = {\n row: this.activeNode.row,\n column: this.activeNode.column,\n level: null,\n mchCache: null,\n layout: this.activeNode.layout\n }\n\n if (event.altKey) {\n this.handleAlt(key, event);\n return;\n }\n\n let verticalContainer;\n if (this.grid.hasHorizontalLayout) {\n let newPosition = {\n row: this.activeNode.row,\n column: this.activeNode.column,\n layout: this.activeNode.layout\n };\n verticalContainer = this.grid.verticalRowDimScrollContainers.first;\n if (key.includes('left')) {\n newPosition = await this.getNextHorizontalPosition(true, ctrl);\n }\n if (key.includes('right')) {\n newPosition = await this.getNextHorizontalPosition(false, ctrl);\n }\n if (key.includes('up') || key === 'home') {\n newPosition = await this.getNextVerticalPosition(true, ctrl || key === 'home', key === 'home');\n }\n\n if (key.includes('down') || key === 'end') {\n newPosition = await this.getNextVerticalPosition(false, ctrl || key === 'end', key === 'end');\n }\n\n newActiveNode.row = newPosition.row;\n newActiveNode.column = newPosition.column;\n newActiveNode.layout = newPosition.layout;\n } else {\n if ((key.includes('left') || key === 'home') && this.activeNode.column > 0) {\n newActiveNode.column = ctrl || key === 'home' ? 0 : this.activeNode.column - 1;\n }\n if ((key.includes('right') || key === 'end') && this.activeNode.column < this.lastRowDimensionsIndex) {\n newActiveNode.column = ctrl || key === 'end' ? this.lastRowDimensionsIndex : this.activeNode.column + 1;\n }\n\n verticalContainer = this.grid.verticalRowDimScrollContainers.toArray()[newActiveNode.column];\n if (key.includes('up')) {\n if (ctrl) {\n newActiveNode.row = 0;\n } else if (this.activeNode.row > 0) {\n newActiveNode.row = this.activeNode.row - 1;\n } else {\n newActiveNode.row = -1;\n newActiveNode.column = newActiveNode.layout ? newActiveNode.layout.colStart - 1 : 0;\n newActiveNode.layout = null;\n this.isRowDimensionHeaderActive = true;\n this.isRowHeaderActive = false;\n this.grid.theadRow.nativeElement.focus();\n }\n }\n\n if (key.includes('down') && this.activeNode.row < this.findLastDataRowIndex()) {\n newActiveNode.row = ctrl ? verticalContainer.igxForOf.length - 1 : Math.min(this.activeNode.row + 1, verticalContainer.igxForOf.length - 1);\n }\n\n if (key.includes('left') || key.includes('right')) {\n const prevRIndex = this.activeNode.row;\n const prevScrContainer = this.grid.verticalRowDimScrollContainers.toArray()[this.activeNode.column];\n const src = prevScrContainer.getScrollForIndex(prevRIndex);\n newActiveNode.row = this.activeNode.mchCache && this.activeNode.mchCache.level === newActiveNode.column ?\n this.activeNode.mchCache.visibleIndex :\n verticalContainer.getIndexAtScroll(src);\n newActiveNode.mchCache = {\n visibleIndex: this.activeNode.row,\n level: this.activeNode.column\n };\n }\n }\n\n this.setActiveNode(newActiveNode);\n if (!this.grid.hasHorizontalLayout && verticalContainer.isIndexOutsideView(newActiveNode.row)) {\n verticalContainer.scrollTo(newActiveNode.row);\n }\n } else {\n super.handleNavigation(event);\n }\n }\n\n public override handleAlt(key: string, event: KeyboardEvent): void {\n event.preventDefault();\n\n let rowData, dimIndex;\n if (!this.grid.hasHorizontalLayout) {\n dimIndex = this.activeNode.column;\n const scrContainer = this.grid.verticalRowDimScrollContainers.toArray()[dimIndex];\n rowData = scrContainer.igxGridForOf[this.activeNode.row];\n } else {\n const mrlRow = this.grid.rowDimensionMrlRowsCollection.find(mrl => mrl.rowIndex === this.activeNode.row);\n rowData = mrlRow.rowGroup[this.activeNode.layout.rowStart - 1];\n dimIndex = this.activeNode.layout.colStart - 1;\n }\n const dimension = this.grid.visibleRowDimensions[dimIndex];\n const expansionRowKey = PivotUtil.getRecordKey(rowData, dimension);\n const isExpanded = this.grid.expansionStates.get(expansionRowKey) ?? true;\n\n let prevCellLayout;\n if (this.grid.hasHorizontalLayout) {\n const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n prevCellLayout = this.getNextVerticalColumnIndex(\n parentRow,\n Math.min(parentRow.rowGroup.length, this.activeNode.layout.rowStart),\n this.activeNode.layout.colStart);\n }\n\n if (ROW_EXPAND_KEYS.has(key) && !isExpanded) {\n this.grid.gridAPI.set_row_expansion_state(expansionRowKey, true, event)\n } else if (ROW_COLLAPSE_KEYS.has(key) && isExpanded) {\n this.grid.gridAPI.set_row_expansion_state(expansionRowKey, false, event)\n }\n\n if ((ROW_EXPAND_KEYS.has(key) && !isExpanded) || (ROW_COLLAPSE_KEYS.has(key) && isExpanded)) {\n this.onRowToggle(!isExpanded, dimension, rowData, prevCellLayout);\n }\n this.updateActiveNodeLayout();\n this.grid.notifyChanges();\n }\n\n public updateActiveNodeLayout() {\n if (this.grid.hasHorizontalLayout) {\n const mrlRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n const activeCell = mrlRow.contentCells.toArray()[this.activeNode.column];\n this.activeNode.layout = activeCell.layout;\n }\n }\n\n /** Update active cell when toggling row expand when horizontal summaries have position set to top */\n public onRowToggle(newExpandState: boolean, dimension: IPivotDimension, rowData: IPivotGridRecord, prevCellLayout: IMultiRowLayoutNode){\n if (this.grid.hasHorizontalLayout &&\n rowData.totalRecordDimensionName !== dimension.memberName &&\n dimension.horizontalSummary && this.grid.pivotUI.horizontalSummariesPosition === PivotSummaryPosition.Top) {\n const maxActiveRow = Math.min(this.lastRowDimensionMRLRowIndex, this.activeNode.row);\n const parentRowUpdated = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === maxActiveRow);\n const maxRowEnd = parentRowUpdated.rowGroup.length + 1;\n const nextRowStart = Math.max(1, this.activeNode.layout.rowStart + (!newExpandState ? -1 : 1));\n const curValidRowStart = Math.min(parentRowUpdated.rowGroup.length, nextRowStart);\n // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n\n const curCellLayout = this.getNextVerticalColumnIndex(parentRowUpdated, curValidRowStart, this.activeNode.layout.colStart);\n const nextBlock = (!newExpandState && prevCellLayout.rowStart === 1) || (newExpandState && prevCellLayout.rowEnd >= maxRowEnd);\n this.activeNode.row += nextBlock ? (!newExpandState ? -1 : 1) : 0;\n this.activeNode.column = curCellLayout.columnVisibleIndex;\n this.activeNode.layout = curCellLayout;\n }\n }\n\n public override async headerNavigation(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n const ctrl = event.ctrlKey;\n if (!HEADER_KEYS.has(key)) {\n return;\n }\n\n if (this.isRowDimensionHeaderActive) {\n event.preventDefault();\n\n const newActiveNode: IActiveNode = {\n row: this.activeNode.row,\n column: this.activeNode.column,\n level: null,\n mchCache: this.activeNode.mchCache,\n layout: null\n }\n\n if (ctrl) {\n const dimIndex = this.activeNode.column;\n const dim = this.grid.visibleRowDimensions[dimIndex];\n if (this.activeNode.row === -1) {\n if (key.includes('down') || key.includes('up')) {\n let newSortDirection = SortingDirection.None;\n if (key.includes('down')) {\n newSortDirection = (dim.sortDirection === SortingDirection.Desc) ? SortingDirection.None : SortingDirection.Desc;\n } else if (key.includes('up')) {\n newSortDirection = (dim.sortDirection === SortingDirection.Asc) ? SortingDirection.None : SortingDirection.Asc;\n }\n this.grid.sortDimension(dim, newSortDirection);\n return;\n }\n }\n }\n if ((key.includes('left') || key === 'home') && this.activeNode.column > 0) {\n newActiveNode.column = ctrl || key === 'home' ? 0 : this.activeNode.column - 1;\n }\n if ((key.includes('right') || key === 'end') && this.activeNode.column < this.lastRowDimensionsIndex) {\n newActiveNode.column = ctrl || key === 'end' ? this.lastRowDimensionsIndex : this.activeNode.column + 1;\n } else if (key.includes('right')) {\n this.isRowDimensionHeaderActive = false;\n newActiveNode.column = 0;\n newActiveNode.level = this.activeNode.mchCache?.level || 0;\n newActiveNode.mchCache = this.activeNode.mchCache || {\n level: 0,\n visibleIndex: 0\n };\n }\n\n if (key.includes('down')) {\n if (this.grid.hasHorizontalLayout) {\n this.activeNode.row = 0;\n this.activeNode.layout = {\n rowStart: 1,\n rowEnd: 2,\n colStart: newActiveNode.column + 1,\n colEnd: newActiveNode.column + 2,\n columnVisibleIndex: newActiveNode.column\n };\n\n const newPosition = await this.getNextVerticalPosition(true, ctrl || key === 'home', key === 'home');\n newActiveNode.row = 0;\n newActiveNode.column = newPosition.column;\n newActiveNode.layout = newPosition.layout;\n } else {\n const verticalContainer = this.grid.verticalRowDimScrollContainers.toArray()[newActiveNode.column];\n newActiveNode.row = ctrl ? verticalContainer.igxForOf.length - 1 : 0;\n }\n\n this.isRowDimensionHeaderActive = false;\n this.isRowHeaderActive = true;\n this.grid.rowDimensionContainer.toArray()[this.grid.hasHorizontalLayout ? 0 : newActiveNode.column].nativeElement.focus();\n }\n\n this.setActiveNode(newActiveNode);\n } else if (key.includes('left') && this.activeNode.column === 0 && this.grid.pivotUI.showRowHeaders) {\n this.isRowDimensionHeaderActive = true;\n const newActiveNode: IActiveNode = {\n row: this.activeNode.row,\n column: this.lastRowDimensionsIndex,\n level: null,\n mchCache: this.activeNode.mchCache,\n layout: null\n }\n\n this.setActiveNode(newActiveNode);\n } else {\n super.headerNavigation(event);\n }\n }\n\n public override focusTbody(event) {\n if (!this.activeNode || this.activeNode.row === null || this.activeNode.row === undefined) {\n this.activeNode = this.lastActiveNode;\n } else {\n super.focusTbody(event);\n }\n }\n\n public async getNextVerticalPosition(previous, ctrl, homeEnd) {\n const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n const maxRowEnd = parentRow.rowGroup.length + 1;\n const curValidRowStart = Math.min(parentRow.rowGroup.length, this.activeNode.layout.rowStart);\n // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n const curCellLayout = this.getNextVerticalColumnIndex(parentRow, curValidRowStart, this.activeNode.layout.colStart);\n const nextBlock = (previous && curCellLayout.rowStart === 1) || (!previous && curCellLayout.rowEnd === maxRowEnd);\n if (nextBlock &&\n ((previous && this.activeNode.row === 0) ||\n (!previous && this.activeNode.row === this.lastRowDimensionMRLRowIndex))) {\n if (previous && this.grid.pivotUI.showRowHeaders) {\n this.isRowDimensionHeaderActive = true;\n this.isRowHeaderActive = false;\n this.grid.theadRow.nativeElement.focus();\n return { row: -1, column: this.activeNode.layout.colStart - 1, layout: this.activeNode.layout };\n }\n return { row: this.activeNode.row, column: this.activeNode.column, layout: this.activeNode.layout };\n }\n\n const nextMRLRowIndex = previous ?\n (ctrl ? 0 : this.activeNode.row - 1) :\n (ctrl ? this.lastRowDimensionMRLRowIndex : this.activeNode.row + 1) ;\n let nextRow = nextBlock || ctrl ? this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === nextMRLRowIndex) : parentRow;\n if (!nextRow) {\n const nextDataViewIndex = previous ?\n (ctrl ? 0 : parentRow.rowGroup[curCellLayout.rowStart - 1].dataIndex - 1) :\n (ctrl ? this.grid.dataView.length - 1 : parentRow.rowGroup[curCellLayout.rowEnd - 2].dataIndex + 1);\n await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n nextRow = nextBlock || ctrl ? this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === nextMRLRowIndex) : parentRow;\n }\n\n const nextRowStart = nextBlock ?\n (previous ? nextRow.rowGroup.length : 1) :\n (previous ? curCellLayout.rowStart - 1 : curCellLayout.rowEnd);\n const maxColEnd = Math.max(...nextRow.contentCells.map(cell => cell.layout.colEnd));\n const nextColumnLayout = this.getNextVerticalColumnIndex(\n nextRow,\n ctrl ? (previous ? 1 : nextRow.rowGroup.length) : nextRowStart,\n homeEnd ? (previous ? 1 : maxColEnd - 1) : this.activeNode.layout.colStart\n );\n\n const nextDataViewIndex = previous ?\n nextRow.rowGroup[nextColumnLayout.rowStart - 1].dataIndex:\n nextRow.rowGroup[nextColumnLayout.rowEnd - 2].dataIndex;\n await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n\n return {\n row: nextBlock || ctrl ? nextMRLRowIndex : this.activeNode.row,\n column: nextColumnLayout.columnVisibleIndex,\n layout: {\n rowStart: nextColumnLayout.rowStart,\n rowEnd: nextColumnLayout.rowEnd,\n colStart: homeEnd ? nextColumnLayout.colStart : this.activeNode.layout.colStart,\n colEnd: nextColumnLayout.colEnd,\n columnVisibleIndex: nextColumnLayout.columnVisibleIndex\n } as IMultiRowLayoutNode\n };\n }\n\n public async getNextHorizontalPosition(previous, ctrl) {\n const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n const maxColEnd = Math.max(...parentRow.contentCells.map(cell => cell.layout.colEnd));\n // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n const curCellLayout = this.getNextVerticalColumnIndex(parentRow, this.activeNode.layout.rowStart, this.activeNode.layout.colStart);\n\n if ((previous && curCellLayout.colStart === 1) || (!previous && curCellLayout.colEnd === maxColEnd)) {\n return { row: this.activeNode.row, column: this.activeNode.column, layout: this.activeNode.layout };\n }\n\n const nextColStartNormal = curCellLayout.colStart + (previous ? -1 : curCellLayout.colEnd - curCellLayout.colStart);\n const nextColumnLayout = this.getNextVerticalColumnIndex(\n parentRow,\n this.activeNode.layout.rowStart,\n ctrl ? (previous ? 1 : maxColEnd - 1) : nextColStartNormal\n );\n\n const nextDataViewIndex = parentRow.rowGroup[nextColumnLayout.rowStart - 1].dataIndex\n await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n\n return {\n row: this.activeNode.row,\n column: nextColumnLayout.columnVisibleIndex,\n layout: {\n rowStart: this.activeNode.layout.rowStart,\n rowEnd: nextColumnLayout.rowEnd,\n colStart: nextColumnLayout.colStart,\n colEnd: nextColumnLayout.colEnd,\n columnVisibleIndex: nextColumnLayout.columnVisibleIndex\n } as IMultiRowLayoutNode\n };\n }\n\n private async scrollToNextHorizontalDimRow(nextDataViewIndex: number) {\n const verticalContainer = this.grid.verticalScrollContainer;\n if (verticalContainer.isIndexOutsideView(nextDataViewIndex)) {\n verticalContainer.scrollTo(nextDataViewIndex);\n await new Promise((resolve) => {\n this.grid.gridScroll.pipe(take(1), timeout({ first: 10000 })).subscribe({\n next: (value) => resolve(value),\n error: (err) => resolve(err)\n });\n });\n }\n }\n\n\n private getNextVerticalColumnIndex(nextRow: IgxPivotRowDimensionMrlRowComponent, newRowStart, newColStart) {\n const nextCell = nextRow.contentCells.find(cell => {\n return cell.layout.rowStart <= newRowStart && newRowStart < cell.layout.rowEnd &&\n cell.layout.colStart <= newColStart && newColStart < cell.layout.colEnd;\n });\n return nextCell.layout;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { DimensionValuesFilteringStrategy, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxFilteringService } from 'igniteui-angular/grids/core';\nimport { ColumnType, FilteringExpressionsTree, FilteringLogic, IFilteringExpressionsTree, IFilteringOperation } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxPivotFilteringService extends IgxFilteringService {\n private filtersESFId;\n\n public override clearFilter(field: string): void {\n this.clear_filter(field);\n }\n\n public override clear_filter(fieldName: string) {\n super.clear_filter(fieldName);\n const grid = this.grid;\n const allDimensions = grid.allDimensions;\n const allDimensionsFlat = PivotUtil.flatten(allDimensions);\n const dim = allDimensionsFlat.find(x => x.memberName === fieldName);\n dim.filter = undefined;\n grid.filteringPipeTrigger++;\n if (allDimensions.indexOf(dim) !== -1) {\n // update columns\n (grid as any).setupColumns();\n }\n }\n protected override filter_internal(fieldName: string, term, conditionOrExpressionsTree: IFilteringOperation | IFilteringExpressionsTree,\n ignoreCase: boolean) {\n super.filter_internal(fieldName, term, conditionOrExpressionsTree, ignoreCase);\n const grid = this.grid;\n const config = grid.pivotConfiguration;\n const allDimensions = PivotUtil.flatten(config.rows.concat(config.columns).concat(config.filters).filter(x => x !== null && x !== undefined));\n const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n const dim = enabledDimensions.find(x => x.memberName === fieldName || x.member === fieldName);\n const filteringTree = dim.filter || new FilteringExpressionsTree(FilteringLogic.And);\n const fieldFilterIndex = filteringTree.findIndex(fieldName);\n if (fieldFilterIndex > -1) {\n filteringTree.filteringOperands.splice(fieldFilterIndex, 1);\n }\n\n this.prepare_filtering_expression(filteringTree, fieldName, term, conditionOrExpressionsTree, ignoreCase, fieldFilterIndex);\n dim.filter = filteringTree;\n grid.filteringPipeTrigger++;\n grid.filterStrategy = grid.filterStrategy ?? new DimensionValuesFilteringStrategy();\n if (allDimensions.indexOf(dim) !== -1) {\n // update columns\n (grid as any).setupColumns();\n }\n }\n\n public toggleFiltersESF(dropdown: any, element: HTMLElement, column: ColumnType, shouldReattach: boolean) {\n const filterIcon = column.filteringExpressionsTree ? 'igx-excel-filter__icon--filtered' : 'igx-excel-filter__icon';\n const filterIconTarget = element.querySelector(`.${filterIcon}`) as HTMLElement || element;\n\n const { id, ref } = this.grid.createFilterESF(dropdown, column, {\n ...this._filterMenuOverlaySettings,\n ...{ target: filterIconTarget }\n }, shouldReattach);\n\n this.filtersESFId = id;\n\n if (shouldReattach) {\n this._overlayService.opening\n .pipe(\n first(overlay => overlay.id === id),\n takeUntil(this.destroy$)\n )\n .subscribe(() => this.lastActiveNode = this.grid.navigation.activeNode);\n\n this._overlayService.closed\n .pipe(\n first(overlay => overlay.id === id),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this._overlayService.detach(id);\n ref?.destroy();\n this.grid.navigation.activeNode = this.lastActiveNode;\n this.grid.theadRow.nativeElement.focus();\n });\n\n this.grid.columnPinned.pipe(first()).subscribe(() => ref?.destroy());\n this._overlayService.show(id);\n }\n }\n\n public hideESF() {\n this._overlayService.hide(this.filtersESFId);\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, Input, NgZone, ViewChild } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport {\n IGX_GRID_BASE,\n IgxColumnComponent,\n IgxColumnMovingDragDirective,\n IgxColumnMovingDropDirective,\n IgxGridHeaderGroupComponent,\n IgxHeaderGroupStylePipe,\n IgxPivotColumnResizingService,\n IgxPivotResizeHandleDirective,\n IMultiRowLayoutNode,\n IPivotDimension,\n PivotGridType,\n PivotRowHeaderGroupType\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderComponent } from './pivot-row-dimension-header.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\n\n/**\n * @hidden\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-dimension-header-group',\n templateUrl: './pivot-row-dimension-header-group.component.html',\n imports: [IgxIconComponent, IgxPivotRowDimensionHeaderComponent, NgClass, NgStyle, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxPivotResizeHandleDirective, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowDimensionHeaderGroupComponent extends IgxGridHeaderGroupComponent implements PivotRowHeaderGroupType {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n public override colResizingService = inject(IgxPivotColumnResizingService);\n protected zone = inject(NgZone);\n\n /**\n * @hidden\n */\n @HostBinding('style.user-select')\n public userSelect = 'none';\n\n /**\n * @hidden\n */\n public get role(): string {\n return 'rowheader';\n }\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public rowIndex: number;\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public colIndex: number;\n\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public layout: IMultiRowLayoutNode;\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public parent: any;\n\n @ViewChild(IgxPivotRowDimensionHeaderComponent)\n public override header: IgxPivotRowDimensionHeaderComponent;\n\n @HostBinding('attr.id')\n public override get headerID() {\n return `${this.grid.id}_-2_${this.rowIndex}_${this.visibleIndex}`;\n }\n\n @HostBinding('attr.title')\n public override get title() {\n return this.column.header;\n }\n\n /**\n * @hidden @internal\n */\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent) {\n if (this.grid.rowSelection === 'none') {\n return;\n }\n event?.stopPropagation();\n const key = this.parent.getRowDimensionKey(this.column as IgxColumnComponent);\n if (this.grid.selectionService.isRowSelected(key)) {\n this.grid.selectionService.deselectRow(key, event);\n } else {\n this.grid.selectionService.selectRowById(key, true, event);\n }\n\n this.zone.run(() => {});\n }\n\n /**\n * @hidden\n * @internal\n */\n public get visibleIndex(): number {\n if (this.grid.hasHorizontalLayout) {\n return this.colIndex;\n }\n\n const field = this.column.field;\n const rows = this.grid.rowDimensions;\n const rootDimension = this.findRootDimension(field);\n return rows.indexOf(rootDimension);\n }\n\n @HostBinding('class.igx-grid-th--active')\n public override get active() {\n const nav = this.grid.navigation;\n const node = nav.activeNode;\n return node && !this.column.columnGroup ?\n nav.isRowHeaderActive &&\n node.row === this.rowIndex &&\n node.column === this.visibleIndex :\n false;\n }\n\n protected override get activeNode() {\n this.grid.navigation.isRowHeaderActive = true;\n this.grid.navigation.isRowDimensionHeaderActive = false;\n return {\n row: this.rowIndex, column: this.visibleIndex, level: null,\n mchCache: null,\n layout: this.layout || null\n };\n }\n\n\n protected getHeaderWidthFromDimension() {\n if (this.grid.hasHorizontalLayout) {\n return this.parent.width === -1 ? 'fit-content' : this.width;\n }\n return this.grid.rowDimensionWidth(this.parent.rootDimension);\n }\n\n private findRootDimension(field: string): IPivotDimension {\n const rows = this.grid.rowDimensions;\n let tempRow;\n let result = null;\n rows.forEach(row => {\n tempRow = row;\n do {\n if (tempRow.memberName === field) {\n result = row;\n }\n tempRow = tempRow.childLevel;\n } while (tempRow)\n });\n return result;\n }\n\n\n public override activate() {\n this.grid.navigation.isRowHeader = true;\n this.grid.navigation.setActiveNode(this.activeNode);\n }\n\n /**\n * @hidden @internal\n */\n public override pointerdown(_event: PointerEvent): void {\n this.activate();\n }\n\n /**\n * @hidden @internal\n */\n public override onMouseDown(_event: MouseEvent): void {\n this.activate();\n }\n\n public override get selectable(): boolean {\n return false;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n createComponent,\n EnvironmentInjector,\n HostBinding,\n inject,\n Injector,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport {\n IGX_GRID_BASE,\n IgxColumnComponent,\n IgxGridHeaderRowComponent,\n IgxHeaderGroupStylePipe,\n IMultiRowLayoutNode,\n IPivotDimension,\n IPivotDimensionData,\n IPivotGridGroupRecord,\n PivotGridType,\n PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderGroupComponent } from './pivot-row-dimension-header-group.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-dimension-content',\n templateUrl: './pivot-row-dimension-content.component.html',\n imports: [IgxPivotRowDimensionHeaderGroupComponent, NgClass, NgStyle, IgxIconComponent, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowDimensionContentComponent extends IgxGridHeaderRowComponent implements OnChanges {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n protected injector = inject(Injector);\n protected envInjector = inject(EnvironmentInjector);\n protected viewRef = inject(ViewContainerRef);\n\n @HostBinding('style.grid-row-start')\n public get rowStart(): string {\n return this.layout ? `${this.layout.rowStart}` : \"\";\n }\n\n @HostBinding('style.grid-row-end')\n public get rowsEnd(): string {\n return this.layout ? `${this.layout.rowEnd}` : \"\";\n }\n\n @HostBinding('style.grid-column-start')\n public get colStart(): string {\n return this.layout ? `${this.layout.colStart}` : \"\";\n }\n\n @HostBinding('style.grid-column-end')\n public get colEnd(): string {\n return this.layout ? `${this.layout.colEnd}` : \"\";\n }\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public rowIndex: number;\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public colIndex: number;\n\n @Input()\n public layout: IMultiRowLayoutNode;\n\n @Input()\n public dimension: IPivotDimension;\n\n @Input()\n public rootDimension: IPivotDimension;\n\n @Input()\n public rowData: IPivotGridGroupRecord;\n\n /**\n * @hidden @internal\n */\n @ViewChild('headerTemplate', { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n /**\n * @hidden @internal\n */\n @ViewChild('headerDefaultTemplate', { read: TemplateRef, static: true })\n public headerTemplateDefault: TemplateRef<any>;\n\n @ViewChildren(IgxPivotRowDimensionHeaderGroupComponent)\n public headerGroups: QueryList<IgxPivotRowDimensionHeaderGroupComponent>\n\n /**\n * @hidden @internal\n */\n public rowDimensionData: IPivotDimensionData;\n\n public get rowDimensionColumn() {\n return this.rowDimensionData?.column;\n }\n\n /**\n * @hidden\n * @internal\n */\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.rowData) {\n // generate new rowDimension on row data change\n this.rowDimensionData = null;\n this.viewRef.clear();\n this.extractFromDimensions();\n this.viewRef.clear();\n }\n if (changes.width && this.rowDimensionData) {\n const data = this.rowDimensionData;\n data.column.width = this.grid.rowDimensionWidthToPixels(this.rootDimension) + 'px';\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public toggleRowDimension(event) {\n this.grid.toggleRow(this.getRowDimensionKey());\n this.grid.navigation.onRowToggle(this.getExpandState(), this.dimension, this.rowData, this.layout);\n event?.stopPropagation();\n }\n\n\n /**\n * @hidden\n * @internal\n */\n public getRowDimensionKey() {\n const dimData = this.rowDimensionData;\n const key = PivotUtil.getRecordKey(this.rowData, dimData.dimension);\n return key;\n }\n\n public getExpandState() {\n return this.grid.gridAPI.get_row_expansion_state(this.getRowDimensionKey());\n }\n\n public getLevel() {\n return this.grid.hasHorizontalLayout ? 0 : this.dimension.level;\n }\n\n protected extractFromDimensions() {\n if (this.dimension && this.rowData) {\n const col = this.extractFromDimension(this.dimension, this.rowData);\n const prevDims = [];\n this.rowDimensionData = {\n column: col,\n dimension: this.dimension,\n prevDimensions: prevDims\n };\n }\n }\n\n protected extractFromDimension(dim: IPivotDimension, rowData: IPivotGridGroupRecord) {\n const field = dim.memberName;\n const header = rowData?.dimensionValues.get(field);\n const col = this._createColComponent(field, header, dim);\n return col;\n }\n\n protected _createColComponent(field: string, header: string, dim: IPivotDimension) {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector});\n ref.instance.field = field;\n ref.instance.header = header;\n ref.instance.width = this.grid.rowDimensionWidthToPixels(this.rootDimension) + 'px';\n ref.instance.resizable = this.grid.rowDimensionResizing;\n (ref as any).instance._vIndex = this.grid.columns.length + this.rowIndex + this.rowIndex * this.grid.pivotConfiguration.rows.length;\n\n\n if (header && dim.childLevel && (!this.rowData.totalRecordDimensionName || this.rowData.totalRecordDimensionName !== dim.memberName)) {\n ref.instance.headerTemplate = this.headerTemplate;\n } else {\n ref.instance.headerTemplate = this.headerTemplateDefault;\n }\n return ref.instance;\n }\n}\n","<div class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n <div class=\"igx-grid__tr igx-grid__tr-header-row\" role=\"row\" [style.width.px]=\"width\">\n <igx-pivot-row-dimension-header-group [ngClass]=\"rowDimensionColumn.headerGroupClasses\"\n [ngStyle]=\"rowDimensionColumn.headerGroupStyles | igxHeaderGroupStyle:rowDimensionColumn:grid.pipeTrigger\" [column]=\"rowDimensionColumn\"\n [rowIndex]=\"rowIndex\"\n [colIndex]=\"colIndex\"\n [layout]=\"layout\"\n [parent]='this'>\n </igx-pivot-row-dimension-header-group>\n </div>\n</div>\n\n<ng-template #headerTemplate let-column>\n <div class='igx-grid__tr--header igx-grid__row-indentation--level-{{getLevel()}}'>\n <igx-icon\n family=\"default\"\n [name]=\"getExpandState() ? 'tree_collapse' : 'tree_expand'\"\n [attr.draggable]=\"false\"\n (click)=\"toggleRowDimension($event)\"\n >\n </igx-icon>\n {{column.header}}\n </div>\n</ng-template>\n\n<ng-template #headerDefaultTemplate let-column>\n <div class='igx-grid__tr--header igx-grid__row-indentation--level-{{getLevel()}}' style=\"--component-size: 3\">\n <!--Using the igx-icon as a sizable spacer spacer here-->\n <igx-icon style='flex-shrink: 0;' [attr.draggable]=\"false\"></igx-icon>\n {{column.header}}\n </div>\n</ng-template>\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { IgxColumnTemplateContext, IgxPivotGridValueTemplateContext } from 'igniteui-angular/grids/core';\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxPivotValueChip]',\n standalone: true\n})\nexport class IgxPivotValueChipTemplateDirective {\n public template = inject<TemplateRef<IgxPivotGridValueTemplateContext>>(TemplateRef);\n\n public static ngTemplateContextGuard(_directive: IgxPivotValueChipTemplateDirective,\n context: unknown): context is IgxPivotGridValueTemplateContext {\n return true;\n }\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxPivotRowDimensionHeader]',\n standalone: true\n})\nexport class IgxPivotRowDimensionHeaderTemplateDirective {\n public template = inject<TemplateRef<IgxColumnTemplateContext>>(TemplateRef);\n\n public static ngTemplateContextGuard(_directive: IgxPivotRowDimensionHeaderTemplateDirective,\n context: unknown): context is IgxColumnTemplateContext {\n return true;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n HostBinding, inject, Input, ViewContainerRef\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\nimport {\n IGX_GRID_BASE,\n IgxColumnComponent,\n IgxGridCellComponent,\n IgxGridCellStylesPipe,\n IgxGridNotGroupedPipe,\n IgxGridTransactionStatePipe,\n IgxRowDirective,\n IPivotGridColumn,\n IPivotGridRecord,\n PivotGridType,\n PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotGridCellStyleClassesPipe } from './pivot-grid.pipes';\nimport { IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row',\n templateUrl: './pivot-row.component.html',\n providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }],\n imports: [IgxGridForOfDirective, IgxGridCellComponent, NgClass, NgStyle, IgxCheckboxComponent, IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridTransactionStatePipe, IgxPivotGridCellStyleClassesPipe]\n})\nexport class IgxPivotRowComponent extends IgxRowDirective {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n protected viewRef = inject(ViewContainerRef);\n\n /**\n * @hidden\n */\n @Input()\n @HostBinding('attr.aria-selected')\n public override get selected(): boolean {\n let isSelected = false;\n for (const rowDim of this.data.dimensions) {\n const key = PivotUtil.getRecordKey(this.data, rowDim);\n if (this.selectionService.isPivotRowSelected(key)) {\n isSelected = true;\n }\n }\n return isSelected;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override get viewIndex(): number {\n return this.index;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override disabled = false;\n\n /**\n * @hidden\n * @internal\n */\n public override get addRowUI(): any {\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override get inEditMode(): boolean {\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override set pinned(_value: boolean) {\n }\n\n public override get pinned(): boolean {\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override delete() {\n }\n\n /**\n * @hidden\n * @internal\n */\n public override beginAddRow() {\n }\n\n /**\n * @hidden\n * @internal\n */\n public override update(_value: any) {\n }\n\n /**\n * @hidden\n * @internal\n */\n public override pin() {\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override unpin() {\n return false;\n }\n\n /**\n * The pivot record data passed to the row component.\n *\n * ```typescript\n * // get the pivot row data for the first selected row\n * let selectedRowData = this.grid.selectedRows[0].data;\n * ```\n */\n @Input()\n public override get data(): IPivotGridRecord {\n return this._data;\n }\n\n public override set data(v: IPivotGridRecord) {\n this._data = v;\n }\n\n /**\n * @hidden\n * @internal\n */\n public get pivotAggregationData() {\n const aggregations = this.data.aggregationValues;\n const obj = {};\n aggregations.forEach((value, key) => {\n obj[key] = value;\n });\n return obj;\n }\n\n public getCellClass(col: IgxColumnComponent) {\n const values = this.grid.values;\n if (values.length === 1) {\n return values[0].styles;\n }\n const colName = col.field.split(this.grid.pivotKeys.columnDimensionSeparator);\n const measureName = colName[colName.length - 1];\n return values.find(v => v.member === measureName)?.styles;\n }\n\n public override isCellActive(visibleColumnIndex) {\n const nav = this.grid.navigation\n const node = nav.activeNode;\n return node && Object.keys(node).length !== 0 ?\n !nav.isRowHeaderActive &&\n !nav.isRowDimensionHeaderActive &&\n super.isCellActive(visibleColumnIndex) :\n false;\n }\n\n public getColumnData(col: IgxColumnComponent) : IPivotGridColumn {\n const path = col.field.split(this.grid.pivotKeys.columnDimensionSeparator);\n const keyValueMap = new Map<string, string>();\n const colDimensions = PivotUtil.flatten(this.grid.columnDimensions);\n for (const dim of colDimensions) {\n keyValueMap.set(dim.memberName, path.shift());\n }\n let pivotValue;\n if (this.grid.hasMultipleValues && path.length) {\n pivotValue = this.grid.values.find(x => x.member === path[0]);\n } else {\n pivotValue = this.grid.values ? this.grid.values[0] : undefined;\n }\n return {\n field: col.field,\n dimensions: this.grid.columnDimensions,\n dimensionValues: keyValueMap,\n value: pivotValue\n };\n }\n}\n","<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field]\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n","import {\n ChangeDetectionStrategy,\n Component,\n EnvironmentInjector,\n HostBinding,\n inject,\n Injector,\n Input,\n QueryList,\n ViewChildren,\n ViewContainerRef\n} from '@angular/core';\nimport { IGX_GRID_BASE, IPivotDimension, IPivotDimensionData, IPivotGridHorizontalGroup, IPivotGridRecord, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxGridHeaderRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-content.component';\nimport { IgxPivotGridHorizontalRowCellMerging } from './pivot-grid.pipes';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-dimension-mrl-row',\n templateUrl: './pivot-row-dimension-mrl-row.component.html',\n imports: [IgxPivotRowDimensionContentComponent, IgxPivotGridHorizontalRowCellMerging]\n})\nexport class IgxPivotRowDimensionMrlRowComponent extends IgxGridHeaderRowComponent {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n protected injector = inject(Injector);\n protected envInjector = inject(EnvironmentInjector);\n protected viewRef = inject(ViewContainerRef);\n\n @ViewChildren(IgxPivotRowDimensionContentComponent)\n public rowDimensionContentCollection: QueryList<IgxPivotRowDimensionContentComponent>;\n\n @HostBinding('class.igx-grid__tbody-pivot-dimension')\n public pivotDim = true;\n\n @HostBinding('class.igx-grid__mrl-block')\n public mrlBlock = true;\n\n @HostBinding('style.grid-template-rows')\n public get rowsTemplate(): string {\n return this.getRowMRLTemplate(true, this.rowGroup);\n }\n\n @HostBinding('style.grid-template-columns')\n public get colsTemplate(): string {\n return this.getRowMRLTemplate(false, this.rowGroup);\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public rowIndex: number;\n\n /**\n * @hidden @internal\n */\n @Input()\n public rowGroup: IPivotGridRecord[];\n\n /**\n * @hidden @internal\n */\n @Input()\n public groupedData: IPivotGridRecord[][];\n\n /**\n * @hidden @internal\n */\n @ViewChildren(IgxPivotRowDimensionContentComponent)\n public contentCells: QueryList<IgxPivotRowDimensionContentComponent>\n\n /**\n * @hidden @internal\n */\n public rowDimensionData: IPivotDimensionData;\n\n protected getRowMRLTemplate(forRows: boolean, rows: IPivotGridRecord[]) {\n if (forRows) {\n return `repeat(${rows.length},1fr)`;\n } else if (this.grid.visibleRowDimensions && this.grid.dimensionDataColumns) {\n const res = [];\n this.grid.visibleRowDimensions.forEach(dim => {\n res.push(this.grid.rowDimensionWidth(dim));\n });\n return res.join(' ');\n }\n }\n\n public rowDimensionWidthCombined(dims: IPivotDimension[]) {\n let resWidth = 0;\n for (const dim of (dims || [])) {\n const rowDimWidth = this.grid.rowDimensionWidth(dim);\n if (rowDimWidth === 'fit-content') {\n return -1;\n } else {\n resWidth += parseFloat(rowDimWidth);\n }\n }\n return resWidth;\n }\n\n protected getGroupKey(group: IPivotGridHorizontalGroup) {\n const rec = group.records[0];\n const key = PivotUtil.getRecordKey(rec, group.rootDimension);\n return key;\n }\n}\n","@for (\n cell of rowGroup | pivotGridHorizontalRowCellMerging:grid.pivotConfiguration:grid.pipeTrigger;\n track getGroupKey(cell); let cellIndex = $index\n) {\n <igx-pivot-row-dimension-content class=\"igx-grid-thead\"\n [grid]=\"grid\"\n [dimension]=\"cell.rootDimension\"\n [rootDimension]=\"cell.rootDimension\"\n [rowIndex]=\"rowIndex\"\n [colIndex]=\"cellIndex\"\n [rowData]=\"cell.records[0]\"\n [width]=\"rowDimensionWidthCombined(cell.dimensions)\"\n [layout]=\"{\n rowStart: cell.rowStart,\n rowEnd: cell.rowStart + cell.rowSpan,\n colStart: cell.colStart,\n colEnd: cell.colStart + cell.colSpan,\n columnVisibleIndex: cellIndex\n }\">\n </igx-pivot-row-dimension-content>\n}\n","import { PivotUtil, RowType } from 'igniteui-angular/grids/core';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\n\n\nexport class IgxPivotGridRow implements RowType {\n\n /** The index of the row within the grid */\n public index: number;\n\n /**\n * The grid that contains the row.\n */\n public grid: IgxPivotGridComponent;\n private _data?: any;\n\n constructor(grid: IgxPivotGridComponent, index: number, data?: any) {\n this.grid = grid;\n this.index = index;\n this._data = data && data.addRow && data.recordRef ? data.recordRef : data;\n }\n\n /**\n * The data passed to the row component.\n */\n public get data(): any {\n return this._data ?? this.grid.dataView[this.index];\n }\n\n /**\n * Returns the view index calculated per the grid page.\n */\n public get viewIndex(): number {\n return this.index + this.grid.page * this.grid.perPage;\n }\n\n /**\n * Gets the row key.\n * A row in the grid is identified either by:\n * - primaryKey data value,\n * - the whole rowData, if the primaryKey is omitted.\n *\n * ```typescript\n * let rowKey = row.key;\n * ```\n */\n public get key(): any {\n const dimension = this.grid.visibleRowDimensions[this.grid.visibleRowDimensions.length - 1];\n const recordKey = PivotUtil.getRecordKey(this.data, dimension);\n return recordKey ? recordKey : null;\n }\n\n /**\n * Gets whether the row is selected.\n * Default value is `false`.\n * ```typescript\n * row.selected = true;\n * ```\n */\n public get selected(): boolean {\n return this.grid.selectionService.isRowSelected(this.key);\n }\n\n public set selected(val: boolean) {\n if (val) {\n this.grid.selectionService.selectRowsWithNoEvent([this.key]);\n } else {\n this.grid.selectionService.deselectRowsWithNoEvent([this.key]);\n }\n this.grid.cdr.markForCheck();\n }\n}\n","import { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, ElementRef, HostBinding, Input, OnInit, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ContentChild, createComponent, CUSTOM_ELEMENTS_SCHEMA, booleanAttribute, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\n\nimport { first, take, takeUntil } from 'rxjs/operators';\nimport { DEFAULT_PIVOT_KEYS, IDimensionsChange, IgxFilteringService, IgxGridNavigationService, IgxGridValidationService, IgxPivotDateDimension, IgxPivotGridValueTemplateContext, IPivotConfiguration, IPivotConfigurationChangedEventArgs, IPivotDimension, IPivotUISettings, IPivotValue, IValuesChange, PivotDimensionType, PivotRowLayoutType, PivotSummaryPosition, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxGridSelectionService } from 'igniteui-angular/grids/core';\nimport { GridType, IGX_GRID_BASE, IGX_GRID_SERVICE_BASE, IgxColumnTemplateContext, PivotGridType, RowType } from 'igniteui-angular/grids/core';\nimport { IgxGridCRUDService } from 'igniteui-angular/grids/core';\nimport { IgxGridSummaryService } from 'igniteui-angular/grids/core';\nimport { IgxPivotHeaderRowComponent } from './pivot-header-row.component';\nimport { IgxColumnGroupComponent } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent } from 'igniteui-angular/grids/core';\nimport { FilterMode, GridPagingMode, GridSummaryPosition } from 'igniteui-angular/grids/core';\nimport { WatchChanges } from 'igniteui-angular/grids/core';\nimport { cloneArray, ColumnType, DataUtil, DefaultDataCloneStrategy, GridColumnDataType, GridSummaryCalculationMode, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringOperation, IFilteringStrategy, ISortingExpression, OverlaySettings, resizeObservable, ɵSize, SortingDirection, IgxOverlayOutletDirective } from 'igniteui-angular/core';\nimport {\n IGridEditEventArgs,\n ICellPosition,\n IColumnMovingEndEventArgs, IColumnMovingEventArgs, IColumnMovingStartEventArgs,\n IColumnVisibilityChangedEventArgs,\n IGridEditDoneEventArgs,\n IGridToolbarExportEventArgs,\n IPinColumnCancellableEventArgs,\n IPinColumnEventArgs,\n IPinRowEventArgs,\n IRowDataCancelableEventArgs,\n IRowDataEventArgs,\n IRowDragEndEventArgs,\n IRowDragStartEventArgs\n} from 'igniteui-angular/grids/core';\nimport { DropPosition } from 'igniteui-angular/grids/core';\nimport { DimensionValuesFilteringStrategy, NoopPivotDimensionsStrategy } from 'igniteui-angular/grids/core';\nimport { IgxGridExcelStyleFilteringComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleFilterOperationsTemplateDirective } from 'igniteui-angular/grids/core';\nimport { IgxPivotGridNavigationService } from './pivot-grid-navigation.service';\nimport { IgxPivotColumnResizingService } from 'igniteui-angular/grids/core';\nimport { State, Transaction, TransactionService } from 'igniteui-angular/core';\nimport { IgxPivotFilteringService } from './pivot-filtering.service';\nimport { GridBaseAPIService } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-content.component';\nimport { IgxPivotGridColumnResizerComponent } from 'igniteui-angular/grids/core';\nimport { PivotSortUtil } from './pivot-sort-util';\nimport { IgxPivotRowDimensionHeaderTemplateDirective, IgxPivotValueChipTemplateDirective } from './pivot-grid.directives';\nimport { IgxPivotRowPipe, IgxPivotRowExpansionPipe, IgxPivotAutoTransform, IgxPivotColumnPipe, IgxPivotGridFilterPipe, IgxPivotGridSortingPipe, IgxPivotGridColumnSortingPipe, IgxPivotCellMergingPipe, IgxPivotGridHorizontalRowGrouping } from './pivot-grid.pipes';\nimport { IgxGridRowClassesPipe, IgxGridRowStylesPipe } from 'igniteui-angular/grids/core';\nimport { IgxExcelStyleSearchComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowComponent } from './pivot-row.component';\nimport { IgxColumnMovingDropDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridDragSelectDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridBodyDirective } from 'igniteui-angular/grids/core';\nimport { IgxColumnResizingService } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';\nimport { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';\nimport { IForOfDataChangingEventArgs, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';\nimport { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';\nimport { IgxSnackbarComponent } from 'igniteui-angular/snackbar';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxPivotGridRow } from './pivot-grid-row';\nimport { IgxGridBaseDirective, IgxGridRowComponent } from 'igniteui-angular/grids/grid';\n\nlet NEXT_ID = 0;\nconst MINIMUM_COLUMN_WIDTH = 200;\nconst MINIMUM_COLUMN_WIDTH_SUPER_COMPACT = 104;\n\n/* blazorAdditionalDependency: Column */\n/* blazorAdditionalDependency: ColumnGroup */\n/* blazorAdditionalDependency: ColumnLayout */\n/* blazorAdditionalDependency: GridToolbar */\n/* blazorAdditionalDependency: GridToolbarActions */\n/* blazorAdditionalDependency: GridToolbarTitle */\n/* blazorAdditionalDependency: GridToolbarAdvancedFiltering */\n/* blazorAdditionalDependency: GridToolbarExporter */\n/* blazorAdditionalDependency: GridToolbarHiding */\n/* blazorAdditionalDependency: GridToolbarPinning */\n/* blazorAdditionalDependency: ActionStrip */\n/* blazorAdditionalDependency: GridActionsBaseDirective */\n/* blazorAdditionalDependency: GridEditingActions */\n/* blazorAdditionalDependency: GridPinningActions */\n/* blazorAdditionalDependency: PivotDateDimension */\n/* blazorIndirectRender */\n/**\n * Pivot Grid provides a way to present and manipulate data in a pivot table view.\n *\n * @igxModule IgxPivotGridModule\n * @igxGroup Grids & Lists\n * @igxKeywords pivot, grid, table\n * @igxTheme igx-grid-theme\n * @remarks\n * The Ignite UI Pivot Grid is used for grouping and aggregating simple flat data into a pivot table. Once data\n * has been bound and the dimensions and values configured it can be manipulated via sorting and filtering.\n * @example\n * ```html\n * <igx-pivot-grid [data]=\"data\" [pivotConfiguration]=\"configuration\">\n * </igx-pivot-grid>\n * ```\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n selector: 'igx-pivot-grid',\n templateUrl: 'pivot-grid.component.html',\n providers: [\n IgxGridCRUDService,\n IgxGridValidationService,\n IgxGridSummaryService,\n IgxGridSelectionService,\n IgxColumnResizingService,\n GridBaseAPIService,\n { provide: IGX_GRID_SERVICE_BASE, useClass: GridBaseAPIService },\n { provide: IGX_GRID_BASE, useExisting: IgxPivotGridComponent },\n { provide: IgxFilteringService, useClass: IgxPivotFilteringService },\n IgxGridNavigationService,\n IgxPivotGridNavigationService,\n IgxPivotColumnResizingService,\n IgxForOfSyncService,\n IgxForOfScrollSyncService\n ],\n imports: [\n NgClass,\n NgStyle,\n NgTemplateOutlet,\n IgxPivotHeaderRowComponent,\n IgxGridBodyDirective,\n IgxGridDragSelectDirective,\n IgxColumnMovingDropDirective,\n IgxGridForOfDirective,\n IgxTemplateOutletDirective,\n IgxPivotRowComponent,\n IgxToggleDirective,\n IgxCircularProgressBarComponent,\n IgxSnackbarComponent,\n IgxOverlayOutletDirective,\n IgxPivotGridColumnResizerComponent,\n IgxIconComponent,\n IgxPivotRowDimensionContentComponent,\n IgxGridExcelStyleFilteringComponent,\n IgxExcelStyleColumnOperationsTemplateDirective,\n IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleSearchComponent,\n IgxGridRowClassesPipe,\n IgxGridRowStylesPipe,\n IgxPivotRowPipe,\n IgxPivotRowExpansionPipe,\n IgxPivotAutoTransform,\n IgxPivotColumnPipe,\n IgxPivotGridFilterPipe,\n IgxPivotGridSortingPipe,\n IgxPivotGridColumnSortingPipe,\n IgxPivotCellMergingPipe,\n IgxPivotGridHorizontalRowGrouping,\n IgxPivotRowDimensionMrlRowComponent\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IgxPivotGridComponent extends IgxGridBaseDirective implements OnInit, AfterContentInit,\n PivotGridType, AfterViewInit, OnChanges {\n public override readonly gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n public override navigation = inject(IgxPivotGridNavigationService);\n protected override colResizingService = inject(IgxPivotColumnResizingService);\n\n /**\n * Emitted when the dimension collection is changed via the grid chip area.\n *\n * @remarks\n * Returns the new dimension collection and its type:\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (dimensionsChange)=\"dimensionsChange($event)\"></igx-grid>\n * ```\n */\n @Output()\n public dimensionsChange = new EventEmitter<IDimensionsChange>();\n\n /**\n * Emitted when any of the pivotConfiguration properties is changed via the grid chip area.\n *\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (pivotConfigurationChanged)=\"configurationChanged($event)\"></igx-grid>\n * ```\n */\n @Output()\n public pivotConfigurationChange = new EventEmitter<IPivotConfigurationChangedEventArgs>();\n\n\n /**\n * Emitted when the dimension is initialized.\n * @remarks\n * Emits the dimension that is about to be initialized.\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (dimensionInit)=\"dimensionInit($event)\"></igx-pivot-grid>\n * ```\n */\n @Output()\n public dimensionInit = new EventEmitter<IPivotDimension>();\n\n /**\n * Emitted when the value is initialized.\n * @remarks\n * Emits the value that is about to be initialized.\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (valueInit)=\"valueInit($event)\"></igx-pivot-grid>\n * ```\n */\n @Output()\n public valueInit = new EventEmitter<IPivotValue>();\n\n\n /**\n * Emitted when a dimension is sorted.\n *\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (dimensionsSortingExpressionsChange)=\"dimensionsSortingExpressionsChange($event)\"></igx-pivot-grid>\n * ```\n */\n @Output()\n public dimensionsSortingExpressionsChange = new EventEmitter<ISortingExpression[]>();\n\n /**\n * Emitted when the values collection is changed via the grid chip area.\n *\n * @remarks\n * Returns the new dimension\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (valuesChange)=\"valuesChange($event)\"></igx-grid>\n * ```\n */\n @Output()\n public valuesChange = new EventEmitter<IValuesChange>();\n\n\n /**\n * Gets the sorting expressions generated for the dimensions.\n *\n * @example\n * ```typescript\n * const expressions = this.grid.dimensionsSortingExpressions;\n * ```\n */\n public get dimensionsSortingExpressions() {\n const allEnabledDimensions = this.rowDimensions.concat(this.columnDimensions);\n const dimensionsSortingExpressions = PivotSortUtil.generateDimensionSortingExpressions(allEnabledDimensions);\n return dimensionsSortingExpressions;\n }\n\n /** @hidden @internal */\n @ViewChild(IgxPivotHeaderRowComponent, { static: true })\n public override theadRow: IgxPivotHeaderRowComponent;\n\n /**\n * @hidden @internal\n */\n @ContentChild(IgxPivotValueChipTemplateDirective, { read: IgxPivotValueChipTemplateDirective })\n protected valueChipTemplateDirective: IgxPivotValueChipTemplateDirective;\n\n /**\n * @hidden @internal\n */\n @ContentChild(IgxPivotRowDimensionHeaderTemplateDirective, { read: IgxPivotRowDimensionHeaderTemplateDirective })\n protected rowDimensionHeaderDirective: IgxPivotRowDimensionHeaderTemplateDirective;\n\n /**\n * Gets/Sets a custom template for the value chips.\n *\n * @example\n * ```html\n * <igx-pivot-grid [valueChipTemplate]=\"myTemplate\"><igx-pivot-grid>\n * ```\n */\n @Input()\n public valueChipTemplate: TemplateRef<IgxPivotGridValueTemplateContext>;\n\n @Input()\n public rowDimensionHeaderTemplate: TemplateRef<IgxColumnTemplateContext>;\n\n /* mustSetInCodePlatforms: WebComponents;Blazor;React */\n /* @tsTwoWayProperty (true, \"PivotConfigurationChange\", \"Detail.PivotConfiguration\", false) */\n /**\n * Gets/Sets the pivot configuration with all related dimensions and values.\n *\n * @example\n * ```html\n * <igx-pivot-grid [pivotConfiguration]=\"config\"></igx-pivot-grid>\n * ```\n */\n @Input()\n public set pivotConfiguration(value: IPivotConfiguration) {\n this._pivotConfiguration = value;\n this.emitInitEvents(this._pivotConfiguration);\n this.filteringExpressionsTree = PivotUtil.buildExpressionTree(value);\n if (!this._init) {\n this.setupColumns();\n }\n this.notifyChanges(true);\n }\n\n /* mustSetInCodePlatforms: WebComponents;Blazor */\n public get pivotConfiguration() {\n return this._pivotConfiguration || { rows: null, columns: null, values: null, filters: null };\n }\n\n /**\n * Gets/Sets whether to auto-generate the pivot configuration based on the provided data.\n *\n * @remarks\n * The default value is false. When set to true, it will override all dimensions and values in the pivotConfiguration.\n * @example\n * ```html\n * <igx-pivot-grid [data]=\"Data\" [autoGenerateConfig]=\"true\"></igx-pivot-grid>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public autoGenerateConfig = false;\n\n @Input()\n /**\n * Gets/Sets the pivot ui settings for the pivot grid - chips and their\n * corresponding containers for row, filter, column dimensions and values\n * as well as headers for the row dimensions values.\n * @example\n * ```html\n * <igx-pivot-grid [pivotUI]=\"{ showRowHeaders: true }\"></igx-pivot-grid>\n * ```\n */\n public set pivotUI(value: IPivotUISettings) {\n this._pivotUI = Object.assign(this._pivotUI, value || {});\n this.pipeTrigger++;\n this.notifyChanges(true);\n }\n\n public get pivotUI() {\n return this._pivotUI;\n }\n\n /**\n * @hidden @internal\n */\n @HostBinding('attr.role')\n public role = 'grid';\n\n /**\n * Enables a super compact theme for the component.\n * @remarks\n * Overrides the grid size option if one is set.\n * @example\n * ```html\n * <igx-pivot-grid [superCompactMode]=\"true\"></igx-pivot-grid>\n * ```\n */\n @HostBinding('class.igx-grid__pivot--super-compact')\n @Input()\n public get superCompactMode() {\n return this._superCompactMode;\n }\n\n public set superCompactMode(value) {\n this._superCompactMode = value;\n }\n\n /** @hidden @internal */\n public override get gridSize() {\n if (this.superCompactMode) {\n return ɵSize.Small;\n }\n return super.gridSize;\n }\n\n\n /**\n * Gets/Sets the values clone strategy of the pivot grid when assigning them to different dimensions.\n *\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [pivotValueCloneStrategy]=\"customCloneStrategy\"></igx-pivot-grid>\n * ```\n * @hidden @internal\n */\n @Input()\n public get pivotValueCloneStrategy(): IDataCloneStrategy {\n return this._pivotValueCloneStrategy;\n }\n\n public set pivotValueCloneStrategy(strategy: IDataCloneStrategy) {\n if (strategy) {\n this._pivotValueCloneStrategy = strategy;\n }\n }\n\n /**\n * @hidden @internal\n */\n @ViewChild('record_template', { read: TemplateRef, static: true })\n public recordTemplate: TemplateRef<any>;\n\n /**\n * @hidden @internal\n */\n @ViewChild(IgxPivotRowDimensionMrlRowComponent, { read: IgxPivotRowDimensionMrlRowComponent })\n public rowDimensionMrlComponent: IgxPivotRowDimensionMrlRowComponent;\n\n /**\n * @hidden @internal\n */\n @ViewChild('headerTemplate', { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n /**\n * @hidden @internal\n */\n @ViewChildren('rowDimensionContainer', { read: ElementRef })\n public rowDimensionContainer: QueryList<ElementRef<any>>;\n\n /**\n * @hidden @internal\n */\n @ViewChild(IgxPivotGridColumnResizerComponent)\n public override resizeLine: IgxPivotGridColumnResizerComponent;\n\n /**\n * @hidden @internal\n */\n @ViewChildren(IgxGridExcelStyleFilteringComponent, { read: IgxGridExcelStyleFilteringComponent })\n public override excelStyleFilteringComponents: QueryList<IgxGridExcelStyleFilteringComponent>;\n\n /**\n * @hidden @internal\n */\n @ViewChildren(IgxPivotRowDimensionContentComponent)\n protected rowDimensionContentCollection: QueryList<IgxPivotRowDimensionContentComponent>;\n\n /**\n * @hidden @internal\n */\n public override get minColumnWidth() {\n if (this.superCompactMode) {\n return MINIMUM_COLUMN_WIDTH_SUPER_COMPACT;\n } else {\n return MINIMUM_COLUMN_WIDTH;\n }\n }\n\n /**\n * @hidden @internal\n */\n @ViewChildren('verticalRowDimScrollContainer', { read: IgxGridForOfDirective })\n public verticalRowDimScrollContainers: QueryList<IgxGridForOfDirective<any, any[]>>;\n\n /**\n * @hidden @internal\n */\n @ViewChildren(IgxPivotRowDimensionMrlRowComponent)\n public rowDimensionMrlRowsCollection: QueryList<IgxPivotRowDimensionMrlRowComponent>;\n\n /**\n * @hidden @internal\n */\n @Input()\n public override addRowEmptyTemplate: TemplateRef<void>;\n\n /**\n * @hidden @internal\n */\n @Input()\n public override autoGenerateExclude: string[] = [];\n\n /**\n * @hidden @internal\n */\n @Input()\n public override snackbarDisplayTime = 6000;\n\n /**\n * @hidden @internal\n */\n @Output()\n public override cellEdit = new EventEmitter<IGridEditEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override cellEditDone = new EventEmitter<IGridEditDoneEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override cellEditEnter = new EventEmitter<IGridEditEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override cellEditExit = new EventEmitter<IGridEditDoneEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnMovingStart = new EventEmitter<IColumnMovingStartEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnMoving = new EventEmitter<IColumnMovingEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnMovingEnd = new EventEmitter<IColumnMovingEndEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnPin = new EventEmitter<IPinColumnCancellableEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnPinned = new EventEmitter<IPinColumnEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowAdd = new EventEmitter<IRowDataCancelableEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowAdded = new EventEmitter<IRowDataEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowDeleted = new EventEmitter<IRowDataEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowDelete = new EventEmitter<IRowDataCancelableEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowDragStart = new EventEmitter<IRowDragStartEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowDragEnd = new EventEmitter<IRowDragEndEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowEditEnter = new EventEmitter<IGridEditEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowEdit = new EventEmitter<IGridEditEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowEditDone = new EventEmitter<IGridEditDoneEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowEditExit = new EventEmitter<IGridEditDoneEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowPinning = new EventEmitter<IPinRowEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowPinned = new EventEmitter<IPinRowEventArgs>();\n\n /** @hidden @internal */\n public columnGroupStates = new Map<string, boolean>();\n /** @hidden @internal */\n public dimensionDataColumns: any[];\n /** @hidden @internal */\n public get pivotKeys() {\n return this.pivotConfiguration.pivotKeys || DEFAULT_PIVOT_KEYS;\n }\n /** @hidden @internal */\n public override get type(): GridType[\"type\"] {\n return 'pivot';\n }\n\n /**\n * @hidden @internal\n */\n public override dragRowID = null;\n\n /**\n * @hidden @internal\n */\n public override get rootSummariesEnabled(): boolean {\n return false;\n }\n\n /**\n * @hidden @internal\n */\n public rowDimensionResizing = true;\n\n private _emptyRowDimension: IPivotDimension = { memberName: '', enabled: true, level: 0 };\n /**\n * @hidden @internal\n */\n public get emptyRowDimension(): IPivotDimension {\n return this._emptyRowDimension;\n }\n\n protected _pivotValueCloneStrategy: IDataCloneStrategy = new DefaultDataCloneStrategy();\n protected override _defaultExpandState = false;\n protected override _filterStrategy: IFilteringStrategy = new DimensionValuesFilteringStrategy();\n protected regroupTrigger = 0;\n private _data;\n private _pivotConfiguration: IPivotConfiguration = { rows: null, columns: null, values: null, filters: null };\n private p_id = `igx-pivot-grid-${NEXT_ID++}`;\n private _superCompactMode = false;\n private _pivotUI: IPivotUISettings = {\n showConfiguration: true,\n showRowHeaders: false,\n rowLayout: PivotRowLayoutType.Vertical,\n horizontalSummariesPosition: PivotSummaryPosition.Bottom\n };\n private _sortableColumns = true;\n private _visibleRowDimensions: IPivotDimension[] = [];\n private _shouldUpdateSizes = false;\n\n /**\n * Gets/Sets the default expand state for all rows.\n */\n @Input({ transform: booleanAttribute })\n public get defaultExpandState() {\n return this._defaultExpandState;\n }\n\n public set defaultExpandState(val: boolean) {\n this._defaultExpandState = val;\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get pagingMode(): GridPagingMode {\n return 'local';\n }\n\n public override set pagingMode(_val: GridPagingMode) {\n }\n\n /**\n * @hidden @internal\n */\n @WatchChanges()\n @Input({ transform: booleanAttribute })\n public override get hideRowSelectors(): boolean {\n return false;\n }\n\n public override set hideRowSelectors(_value: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n public override autoGenerate = true;\n\n /**\n * @hidden @internal\n */\n public override get actionStrip() {\n return undefined as any;\n }\n\n /**\n * @hidden @internal\n * @deprecated in version 18.2.0. This property is no longer supported.\n */\n public override get shouldGenerate(): boolean {\n return false;\n }\n\n public override set shouldGenerate(value: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n public override moving = false;\n\n /**\n * @hidden @internal\n */\n public override toolbarExporting = new EventEmitter<IGridToolbarExportEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get rowDraggable(): boolean {\n return false;\n }\n\n\n public override set rowDraggable(_val: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get allowAdvancedFiltering() {\n return false;\n }\n\n public override set allowAdvancedFiltering(_value) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get filterMode() {\n return FilterMode.quickFilter;\n }\n\n public override set filterMode(_value: FilterMode) {\n }\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get allowFiltering() {\n return false;\n }\n\n public override set allowFiltering(_value) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get page(): number {\n return 0;\n }\n\n public override set page(_val: number) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get perPage(): number {\n return 0;\n }\n\n public override set perPage(_val: number) {\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /**\n * @hidden @internal\n */\n public override get unpinnedColumns(): IgxColumnComponent[] {\n return super.unpinnedColumns;\n }\n\n /**\n * @hidden @internal\n */\n public override get unpinnedDataView(): any[] {\n return super.unpinnedDataView;\n }\n\n /**\n * @hidden @internal\n */\n public override get unpinnedWidth() {\n return super.unpinnedWidth;\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedStartWidth() {\n return super.pinnedStartWidth;\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override set summaryRowHeight(_value: number) {\n }\n\n public override get summaryRowHeight(): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override get transactions(): TransactionService<Transaction, State> {\n return this._transactions;\n }\n\n\n\n /**\n * @hidden @internal\n */\n public override get dragIndicatorIconTemplate(): TemplateRef<any> {\n return;\n }\n\n public override set dragIndicatorIconTemplate(_val: TemplateRef<any>) {\n }\n\n /**\n * @hidden @internal\n */\n @WatchChanges()\n @Input({ transform: booleanAttribute })\n public override get rowEditable(): boolean {\n return;\n }\n\n public override set rowEditable(_val: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get pinning() {\n return {};\n }\n public override set pinning(_value) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get summaryPosition() {\n return;\n }\n\n public override set summaryPosition(_value: GridSummaryPosition) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get summaryCalculationMode() {\n return;\n }\n\n public override set summaryCalculationMode(_value: GridSummaryCalculationMode) {\n }\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get showSummaryOnCollapse() {\n return;\n }\n\n public override set showSummaryOnCollapse(_value: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n public override get hiddenColumnsCount(): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedColumnsCount(): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get batchEditing(): boolean {\n return false;\n }\n\n public override set batchEditing(_val: boolean) {\n }\n\n /* csSuppress */\n public override get selectedRows(): any[] {\n if (this.selectionService.getSelectedRows().length === 0) {\n return [];\n }\n const selectedRowIds = [];\n this.dataView.forEach(record => {\n const prev = [];\n for (const dim of this.rowDimensions) {\n let currDim = dim;\n let shouldBreak = false;\n do {\n const key = PivotUtil.getRecordKey(record, currDim);\n if (this.selectionService.isPivotRowSelected(key) && !selectedRowIds.find(x => x === record)) {\n selectedRowIds.push(record);\n shouldBreak = true;\n break;\n }\n currDim = currDim.childLevel;\n } while (currDim);\n prev.push(dim);\n if (shouldBreak) {\n break;\n }\n }\n\n });\n\n return selectedRowIds;\n }\n\n /**\n * @hidden\n */\n public override ngOnInit() {\n // pivot grid always generates columns automatically.\n this.autoGenerate = true;\n super.ngOnInit();\n }\n\n /**\n * @hidden\n */\n public override ngAfterContentInit() {\n // ignore any user defined columns and auto-generate based on pivot config.\n this.updateColumns([]);\n Promise.resolve().then(() => {\n if (this.autoGenerateConfig) {\n this.generateConfig();\n }\n this.setupColumns();\n });\n if (this.valueChipTemplateDirective) {\n this.valueChipTemplate = this.valueChipTemplateDirective.template;\n }\n if (this.rowDimensionHeaderDirective) {\n this.rowDimensionHeaderTemplate = this.rowDimensionHeaderDirective.template;\n }\n }\n\n /**\n * @hidden @internal\n */\n public override ngAfterViewInit() {\n Promise.resolve().then(() => {\n super.ngAfterViewInit();\n });\n }\n\n /**\n * @hidden @internal\n */\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.superCompactMode && !changes.superCompactMode.isFirstChange()) {\n this._shouldUpdateSizes = true;\n resizeObservable(this.verticalScrollContainer.displayContainer).pipe(take(1), takeUntil(this.destroy$)).subscribe(() => this.resizeNotify.next());\n }\n }\n\n /**\n * Notifies for dimension change.\n */\n public notifyDimensionChange(regenerateColumns = false) {\n if (regenerateColumns) {\n this.setupColumns();\n }\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n\n /**\n * Gets the full list of dimensions.\n *\n * @example\n * ```typescript\n * const dimensions = this.grid.allDimensions;\n * ```\n */\n public get allDimensions() {\n const config = this._pivotConfiguration;\n if (!config) return [];\n return (config.rows || []).concat((config.columns || [])).concat(config.filters || []).filter(x => x !== null && x !== undefined);\n }\n\n protected get allVisibleDimensions() {\n const config = this._pivotConfiguration;\n if (!config) return [];\n const uniqueVisibleRowDims = this.visibleRowDimensions.filter(dim => !config.rows.find(configRow => configRow.memberName === dim.memberName));\n const rows = (config.rows || []).concat(...uniqueVisibleRowDims);\n return rows.concat((config.columns || [])).concat(config.filters || []).filter(x => x !== null && x !== undefined);\n }\n\n protected override get shouldResize(): boolean {\n if (!this.dataRowList.first?.cells || this.dataRowList.first.cells.length === 0) {\n return false;\n }\n const isSizePropChanged = super.shouldResize;\n if (isSizePropChanged || this._shouldUpdateSizes) {\n this._shouldUpdateSizes = false;\n return true;\n }\n return false;\n }\n\n protected get emptyBottomSize() {\n return this.totalHeight - (<any>this.verticalScroll).scrollComponent.size;\n }\n\n /** @hidden @internal */\n public createFilterESF(dropdown: any, column: ColumnType, options: OverlaySettings, shouldReatach: boolean) {\n options.outlet = this.outlet;\n if (dropdown) {\n dropdown.initialize(column, this.overlayService);\n dropdown.populateData();\n if (shouldReatach) {\n const id = this.overlayService.attach(dropdown.element, options);\n dropdown.overlayComponentId = id;\n return { id, ref: undefined };\n }\n return { id: dropdown.overlayComponentId, ref: undefined };\n }\n }\n\n /** @hidden */\n public override featureColumnsWidth() {\n return this.pivotRowWidths || 0;\n }\n\n /* blazorSuppress */\n /**\n * Gets/Sets the value of the `id` attribute.\n *\n * @remarks\n * If not provided it will be automatically generated.\n * @example\n * ```html\n * <igx-pivot-grid [id]=\"'igx-pivot-1'\" [data]=\"Data\"></igx-pivot-grid>\n * ```\n */\n @HostBinding('attr.id')\n @Input()\n public get id(): string {\n return this.p_id;\n }\n /* blazorSuppress */\n public set id(value: string) {\n this.p_id = value;\n }\n\n /* treatAsRef */\n /* blazorAlternateType: object */\n /**\n * Gets/Sets the array of data that populates the component.\n * ```html\n * <igx-pivot-grid [data]=\"Data\"></igx-pivot-grid>\n * ```\n */\n @Input()\n public set data(value: any[] | null) {\n this._data = value || [];\n if (!this._init) {\n if (this.autoGenerateConfig) {\n this.generateConfig();\n }\n this.setupColumns();\n this.reflow();\n }\n this.cdr.markForCheck();\n if (this.height === null || this.height.indexOf('%') !== -1) {\n // If the height will change based on how much data there is, recalculate sizes in igxForOf.\n this.notifyChanges(true);\n }\n }\n\n /* treatAsRef */\n /* blazorAlternateType: object */\n /**\n * Returns an array of data set to the component.\n * ```typescript\n * let data = this.grid.data;\n * ```\n */\n public get data(): any[] | null {\n return this._data;\n }\n\n /**\n * @hidden\n */\n public getContext(rowData, rowIndex): any {\n return {\n $implicit: rowData,\n templateID: {\n type: 'dataRow',\n id: null\n },\n index: this.getDataViewIndex(rowIndex, false)\n };\n }\n\n /**\n * @hidden @internal\n */\n public get pivotRowWidths() {\n return this.visibleRowDimensions.length ? this.visibleRowDimensions.reduce((accumulator, dim) => accumulator + this.rowDimensionWidthToPixels(dim), 0) :\n this.rowDimensionWidthToPixels(this.emptyRowDimension);\n }\n\n /**\n * @hidden @internal\n */\n public rowDimensionWidth(dim): string {\n const isAuto = dim.width && dim.width.indexOf('auto') !== -1;\n if (isAuto) {\n return dim.autoWidth ? dim.autoWidth + 'px' : 'fit-content';\n } else {\n return this.rowDimensionWidthToPixels(dim) + 'px';\n }\n }\n\n /**\n * @hidden @internal\n */\n public rowDimensionWidthToPixels(dim: IPivotDimension): number {\n if (!dim?.width) {\n return MINIMUM_COLUMN_WIDTH;\n }\n const isPercent = dim.width && dim.width.indexOf('%') !== -1;\n const isAuto = dim.width && dim.width.indexOf('auto') !== -1;\n if (isPercent) {\n return Math.round(parseFloat(dim.width) / 100 * this.calcWidth);\n } else if (isAuto) {\n return dim.autoWidth;\n } else {\n return parseInt(dim.width, 10);\n }\n }\n\n /**\n * @hidden @internal\n */\n public reverseDimensionWidthToPercent(width: number): number {\n return (width * 100 / this.calcWidth);\n }\n\n /** @hidden @internal */\n public get pivotContentCalcWidth() {\n if (!this.platform.isBrowser) {\n return undefined;\n }\n if (!this.visibleRowDimensions.length) {\n return Math.max(0, this.calcWidth - this.pivotRowWidths);\n }\n\n const totalDimWidth = this.visibleRowDimensions.length > 0 ?\n this.visibleRowDimensions.map((dim) => this.rowDimensionWidthToPixels(dim)).reduce((prev, cur) => prev + cur) :\n 0;\n return this.calcWidth - totalDimWidth;\n }\n\n /** @hidden @internal */\n public get pivotPinnedStartWidth() {\n return !this._init ? this.pinnedStartWidth : 0;\n }\n\n /** @hidden @internal */\n public get pivotPinnedEndWidth() {\n return !this._init ? this.pinnedEndWidth : 0;\n }\n\n /** @hidden @internal */\n public get pivotUnpinnedWidth() {\n return this.unpinnedWidth || 0;\n }\n\n /** @hidden @internal */\n public get rowDimensions() {\n return this.pivotConfiguration.rows?.filter(x => x.enabled) || [];\n }\n\n /** @hidden @internal */\n public set visibleRowDimensions(value: IPivotDimension[]) {\n this._visibleRowDimensions = value;\n }\n\n public get visibleRowDimensions() {\n return this._visibleRowDimensions || this.rowDimensions;\n }\n\n /** @hidden @internal */\n public get columnDimensions() {\n return this.pivotConfiguration.columns?.filter(x => x.enabled) || [];\n }\n\n /** @hidden @internal */\n public get filterDimensions() {\n return this.pivotConfiguration.filters?.filter(x => x.enabled) || [];\n }\n\n /** @hidden @internal */\n public get values() {\n return this.pivotConfiguration.values?.filter(x => x.enabled) || [];\n }\n\n public toggleColumn(col: IgxColumnComponent) {\n const state = this.columnGroupStates.get(col.field);\n const newState = !state;\n this.columnGroupStates.set(col.field, newState);\n this.toggleRowGroup(col, newState);\n this.reflow();\n }\n\n /**\n * @hidden @internal\n */\n public override isRecordPinnedByIndex(_rowIndex: number) {\n return false;\n }\n\n /**\n * @hidden @internal\n */\n public override toggleColumnVisibility(_args: IColumnVisibilityChangedEventArgs) {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override expandAll() {\n }\n\n /**\n * @hidden @internal\n */\n public override collapseAll() {\n }\n\n /**\n * @hidden @internal\n */\n public override expandRow(_rowID: any) {\n }\n\n /**\n * @hidden @internal\n */\n public override collapseRow(_rowID: any) {\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedRows(): IgxGridRowComponent[] {\n return;\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get totalRecords(): number {\n return;\n }\n\n public override set totalRecords(_total: number) {\n }\n\n /**\n * @hidden @internal\n */\n public override moveColumn(_column: IgxColumnComponent, _target: IgxColumnComponent, _pos: DropPosition = DropPosition.AfterDropTarget) {\n }\n\n /**\n * @hidden @internal\n */\n public override addRow(_data: any): void {\n }\n\n /**\n * @hidden @internal\n */\n public override deleteRow(_rowSelector: any): any {\n }\n\n /**\n * @hidden @internal\n */\n public override updateCell(_value: any, _rowSelector: any, _column: string): void {\n }\n\n /**\n * @hidden @internal\n */\n public override updateRow(_value: any, _rowSelector: any): void {\n }\n\n /**\n * @hidden @internal\n */\n public override enableSummaries(..._rest) {\n }\n\n /**\n * @hidden @internal\n */\n public override disableSummaries(..._rest) {\n }\n\n /**\n * @hidden @internal\n */\n public override pinColumn(_columnName: string | IgxColumnComponent, _index?): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override unpinColumn(_columnName: string | IgxColumnComponent, _index?): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override pinRow(_rowID: any, _index?: number, _row?: RowType): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override unpinRow(_rowID: any, _row?: RowType): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedRowHeight() {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get hasEditableColumns(): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get hasSummarizedColumns(): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get hasMovableColumns(): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedDataView(): any[] {\n return [];\n }\n\n /**\n * @hidden @internal\n */\n public override openAdvancedFilteringDialog(_overlaySettings?: OverlaySettings) {\n }\n\n /**\n * @hidden @internal\n */\n public override closeAdvancedFilteringDialog(_applyChanges: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n public override endEdit(_commit = true, _event?: Event): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override beginAddRowById(_rowID: any, _asChild?: boolean): void {\n }\n\n /**\n * @hidden @internal\n */\n public override beginAddRowByIndex(_index: number): void {\n }\n\n /**\n * @hidden @internal\n */\n public override clearSearch() { }\n\n /**\n * @hidden @internal\n */\n public override refreshSearch(_updateActiveInfo?: boolean, _endEdit = true): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override findNext(_text: string, _caseSensitive?: boolean, _exactMatch?: boolean): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override findPrev(_text: string, _caseSensitive?: boolean, _exactMatch?: boolean): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override getNextCell(currRowIndex: number, curVisibleColIndex: number,\n callback: (IgxColumnComponent) => boolean = null): ICellPosition {\n return super.getNextCell(currRowIndex, curVisibleColIndex, callback);\n }\n\n /**\n * @hidden @internal\n */\n public override getPreviousCell(currRowIndex: number, curVisibleColIndex: number,\n callback: (IgxColumnComponent) => boolean = null): ICellPosition {\n return super.getPreviousCell(currRowIndex, curVisibleColIndex, callback);\n }\n\n /**\n * @hidden @internal\n */\n public override getPinnedStartWidth(takeHidden = false) {\n return super.getPinnedStartWidth(takeHidden);\n }\n\n /**\n * @hidden @internal\n */\n public override get totalHeight() {\n return this.calcHeight;\n }\n\n public getColumnGroupExpandState(col: IgxColumnComponent) {\n const state = this.columnGroupStates.get(col.field);\n // columns are expanded by default?\n return state !== undefined && state !== null ? state : false;\n }\n\n public toggleRowGroup(col: IgxColumnComponent, newState: boolean) {\n if (!col) return;\n if (this.hasMultipleValues) {\n const parentCols = col.parent ? col.parent.children.toArray() : this._autoGeneratedCols.filter(x => x.level === 0);\n const siblingCol = parentCols.filter(x => x.header === col.header && x !== col)[0];\n const currIndex = parentCols.indexOf(col);\n const siblingIndex = parentCols.indexOf(siblingCol);\n if (currIndex < siblingIndex) {\n // clicked on the full hierarchy header\n this.resolveToggle(col, newState);\n siblingCol.headerTemplate = this.headerTemplate;\n } else {\n // clicked on summary parent column that contains just the measures\n col.headerTemplate = undefined;\n this.resolveToggle(siblingCol, newState);\n }\n } else {\n const parentCols = col.parent ? col.parent.children : this._autoGeneratedCols.filter(x => x.level === 0);\n const fieldColumn = parentCols.filter(x => x.header === col.header && !x.columnGroup)[0];\n const groupColumn = parentCols.filter(x => x.header === col.header && x.columnGroup)[0];\n this.resolveToggle(groupColumn, newState);\n if (newState) {\n fieldColumn.headerTemplate = this.headerTemplate;\n } else {\n fieldColumn.headerTemplate = undefined;\n }\n }\n }\n\n /**\n * @hidden @internal\n */\n public override setupColumns() {\n super.setupColumns();\n }\n\n /**\n * @hidden @internal\n */\n public override dataRebinding(event: IForOfDataChangingEventArgs) {\n if (this.hasHorizontalLayout) {\n this.dimensionDataColumns = this.generateDimensionColumns();\n }\n\n super.dataRebinding(event);\n }\n\n /**\n * Auto-sizes row dimension cells.\n *\n * @remarks\n * Only sizes based on the dimension cells in view.\n * @example\n * ```typescript\n * this.grid.autoSizeRowDimension(dimension);\n * ```\n * @param dimension The row dimension to size.\n */\n public autoSizeRowDimension(dimension: IPivotDimension) {\n if (this.getDimensionType(dimension) === PivotDimensionType.Row) {\n const relatedDims: string[] = PivotUtil.flatten([dimension]).map((x: IPivotDimension) => x.memberName);\n const contentCollection = this.getContentCollection(dimension);\n const content = contentCollection.filter(x => relatedDims.indexOf(x.dimension.memberName) !== -1);\n const headers = content.map(x => x.headerGroups.toArray()).flat().map(x => x.header && x.header.refInstance);\n if (this.pivotUI.showRowHeaders) {\n const dimensionHeader = this.theadRow.rowDimensionHeaders.find(x => x.column.field === dimension.memberName);\n headers.push(dimensionHeader);\n }\n const autoWidth = this.getLargesContentWidth(headers);\n if (dimension.width === \"auto\") {\n dimension.autoWidth = parseFloat(autoWidth);\n } else {\n dimension.width = autoWidth;\n }\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Inserts dimension in target collection by type at specified index or at the collection's end.\n *\n * @example\n * ```typescript\n * this.grid.insertDimensionAt(dimension, PivotDimensionType.Row, 1);\n * ```\n * @param dimension The dimension that will be added.\n * @param targetCollectionType The target collection type to add to. Can be Row, Column or Filter.\n * @param index The index in the collection at which to add.\n * This parameter is optional. If not set it will add it to the end of the collection.\n */\n public insertDimensionAt(dimension: IPivotDimension, targetCollectionType: PivotDimensionType, index?: number) {\n const targetCollection = this.getDimensionsByType(targetCollectionType);\n if (index !== undefined) {\n targetCollection.splice(index, 0, dimension);\n } else {\n targetCollection.push(dimension);\n }\n if (targetCollectionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n this.pipeTrigger++;\n this.dimensionsChange.emit({ dimensions: targetCollection, dimensionCollectionType: targetCollectionType });\n if (targetCollectionType === PivotDimensionType.Filter) {\n this.dimensionDataColumns = this.generateDimensionColumns();\n this.reflow();\n }\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Move dimension from its currently collection to the specified target collection by type at specified index or at the collection's end.\n *\n * @example\n * ```typescript\n * this.grid.moveDimension(dimension, PivotDimensionType.Row, 1);\n * ```\n * @param dimension The dimension that will be moved.\n * @param targetCollectionType The target collection type to move it to. Can be Row, Column or Filter.\n * @param index The index in the collection at which to add.\n * This parameter is optional. If not set it will add it to the end of the collection.\n */\n public moveDimension(dimension: IPivotDimension, targetCollectionType: PivotDimensionType, index?: number) {\n const prevCollectionType = this.getDimensionType(dimension);\n if (prevCollectionType === null) return;\n // remove from old collection\n this._removeDimensionInternal(dimension);\n // add to target\n this.insertDimensionAt(dimension, targetCollectionType, index);\n\n if (prevCollectionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n }\n\n /**\n * Removes dimension from its currently collection.\n * @remarks\n * This is different than toggleDimension that enabled/disables the dimension.\n * This completely removes the specified dimension from the collection.\n * @example\n * ```typescript\n * this.grid.removeDimension(dimension);\n * ```\n * @param dimension The dimension to be removed.\n */\n public removeDimension(dimension: IPivotDimension) {\n const prevCollectionType = this.getDimensionType(dimension);\n this._removeDimensionInternal(dimension);\n if (prevCollectionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n if (prevCollectionType === PivotDimensionType.Filter) {\n this.reflow();\n }\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n\n /**\n * Toggles the dimension's enabled state on or off.\n * @remarks\n * The dimension remains in its current collection. This just changes its enabled state.\n * @example\n * ```typescript\n * this.grid.toggleDimension(dimension);\n * ```\n * @param dimension The dimension to be toggled.\n */\n public toggleDimension(dimension: IPivotDimension) {\n const dimType = this.getDimensionType(dimension);\n if (dimType === null) return;\n const collection = this.getDimensionsByType(dimType);\n dimension.enabled = !dimension.enabled;\n if (dimType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n if (!dimension.enabled && dimension.filter) {\n this.filteringService.clearFilter(dimension.memberName);\n }\n this.pipeTrigger++;\n this.dimensionsChange.emit({ dimensions: collection, dimensionCollectionType: dimType });\n this.cdr.detectChanges();\n if (dimType === PivotDimensionType.Filter) {\n this.reflow();\n }\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Inserts value at specified index or at the end.\n *\n * @example\n * ```typescript\n * this.grid.insertValueAt(value, 1);\n * ```\n * @param value The value definition that will be added.\n * @param index The index in the collection at which to add.\n * This parameter is optional. If not set it will add it to the end of the collection.\n */\n public insertValueAt(value: IPivotValue, index?: number) {\n if (!this.pivotConfiguration.values) {\n this.pivotConfiguration.values = [];\n }\n const values = this.pivotConfiguration.values;\n if (index !== undefined) {\n values.splice(index, 0, value);\n } else {\n values.push(value);\n }\n this.setupColumns();\n this.pipeTrigger++;\n this.cdr.detectChanges();\n this.valuesChange.emit({ values });\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Move value from its currently at specified index or at the end.\n *\n * @example\n * ```typescript\n * this.grid.moveValue(value, 1);\n * ```\n * @param value The value that will be moved.\n * @param index The index in the collection at which to add.\n * This parameter is optional. If not set it will add it to the end of the collection.\n */\n public moveValue(value: IPivotValue, index?: number) {\n if (this.pivotConfiguration.values.indexOf(value) === -1) return;\n // remove from old index\n this.removeValue(value);\n // add to new\n this.insertValueAt(value, index);\n }\n\n /**\n * Removes value from collection.\n * @remarks\n * This is different than toggleValue that enabled/disables the value.\n * This completely removes the specified value from the collection.\n * @example\n * ```typescript\n * this.grid.removeValue(dimension);\n * ```\n * @param value The value to be removed.\n */\n public removeValue(value: IPivotValue,) {\n const values = this.pivotConfiguration.values;\n const currentIndex = values.indexOf(value);\n if (currentIndex !== -1) {\n values.splice(currentIndex, 1);\n this.setupColumns();\n this.pipeTrigger++;\n this.valuesChange.emit({ values });\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n }\n\n /**\n * Toggles the value's enabled state on or off.\n * @remarks\n * The value remains in its current collection. This just changes its enabled state.\n * @example\n * ```typescript\n * this.grid.toggleValue(value);\n * ```\n * @param value The value to be toggled.\n */\n public toggleValue(value: IPivotValue) {\n if (this.pivotConfiguration.values.indexOf(value) === -1) return;\n value.enabled = !value.enabled;\n this.setupColumns();\n this.pipeTrigger++;\n this.valuesChange.emit({ values: this.pivotConfiguration.values });\n this.reflow();\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Sort the dimension and its children in the provided direction.\n * @example\n * ```typescript\n * this.grid.sortDimension(dimension, SortingDirection.Asc);\n * ```\n * @param value The value to be toggled.\n */\n public sortDimension(dimension: IPivotDimension, sortDirection: SortingDirection) {\n const dimensionType = this.getDimensionType(dimension);\n dimension.sortDirection = sortDirection;\n // apply same sort direction to children.\n let dim = dimension;\n if (this.pivotUI.rowLayout === PivotRowLayoutType.Vertical) {\n while (dim.childLevel) {\n dim.childLevel.sortDirection = dimension.sortDirection;\n dim = dim.childLevel;\n }\n }\n\n this.pipeTrigger++;\n this.dimensionsSortingExpressionsChange.emit(this.dimensionsSortingExpressions);\n if (dimensionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n this.cdr.detectChanges();\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Filters a single `IPivotDimension`.\n *\n * @example\n * ```typescript\n * public filter() {\n * const set = new Set();\n * set.add('Value 1');\n * set.add('Value 2');\n * this.grid1.filterDimension(this.pivotConfigHierarchy.rows[0], set, IgxStringFilteringOperand.instance().condition('in'));\n * }\n * ```\n */\n public filterDimension(dimension: IPivotDimension, value: any, conditionOrExpressionTree?: IFilteringOperation | IFilteringExpressionsTree) {\n this.filteringService.filter(dimension.memberName, value, conditionOrExpressionTree);\n const dimensionType = this.getDimensionType(dimension);\n if (dimensionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n this.cdr.detectChanges();\n }\n\n /**\n * @hidden @internal\n */\n public getRowDimensionByName(memberName: string) {\n const visibleRows = this.pivotUI.rowLayout === PivotRowLayoutType.Vertical ?\n this.pivotConfiguration.rows :\n PivotUtil.flatten(this.pivotConfiguration.rows);\n const dimIndex = visibleRows.findIndex((target) => target.memberName === memberName);\n const dim = visibleRows[dimIndex];\n return dim;\n }\n\n /**\n * @hidden @internal\n */\n public getDimensionsByType(dimension: PivotDimensionType) {\n switch (dimension) {\n case PivotDimensionType.Row:\n if (!this.pivotConfiguration.rows) {\n this.pivotConfiguration.rows = [];\n }\n return this.pivotConfiguration.rows;\n case PivotDimensionType.Column:\n if (!this.pivotConfiguration.columns) {\n this.pivotConfiguration.columns = [];\n }\n return this.pivotConfiguration.columns;\n case PivotDimensionType.Filter:\n if (!this.pivotConfiguration.filters) {\n this.pivotConfiguration.filters = [];\n }\n return this.pivotConfiguration.filters;\n default:\n return null;\n }\n }\n\n /**\n * @hidden @internal\n */\n public resizeRowDimensionPixels(dimension: IPivotDimension, newWidth: number) {\n const isPercentageWidth = dimension.width && typeof dimension.width === 'string' && dimension.width.indexOf('%') !== -1;\n if (isPercentageWidth) {\n dimension.width = this.reverseDimensionWidthToPercent(newWidth).toFixed(2) + '%';\n } else {\n dimension.width = newWidth + 'px';\n }\n\n // Notify the grid to reflow, to update if horizontal scrollbar needs to be rendered/removed.\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n\n /*\n * @hidden\n * @internal\n */\n protected _removeDimensionInternal(dimension) {\n const prevCollectionType = this.getDimensionType(dimension);\n if (prevCollectionType === null) return;\n const prevCollection = this.getDimensionsByType(prevCollectionType);\n const currentIndex = prevCollection.indexOf(dimension);\n prevCollection.splice(currentIndex, 1);\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n\n protected getDimensionType(dimension: IPivotDimension): PivotDimensionType {\n return PivotUtil.flatten(this.pivotConfiguration.rows).indexOf(dimension) !== -1 ? PivotDimensionType.Row :\n PivotUtil.flatten(this.pivotConfiguration.columns).indexOf(dimension) !== -1 ? PivotDimensionType.Column :\n (!!this.pivotConfiguration.filters && PivotUtil.flatten(this.pivotConfiguration.filters).indexOf(dimension) !== -1) ?\n PivotDimensionType.Filter : null;\n }\n\n protected getPivotRowHeaderContentWidth(headerGroup: IgxPivotRowHeaderGroupComponent) {\n const headerSizes = this.getHeaderCellWidth(headerGroup.nativeElement);\n return headerSizes.width + headerSizes.padding;\n }\n\n protected getLargesContentWidth(contents: ElementRef[]): string {\n const largest = new Map<number, number>();\n if (contents.length > 0) {\n const cellsContentWidths = [];\n contents.forEach((elem) => {\n elem instanceof IgxPivotRowHeaderGroupComponent ?\n cellsContentWidths.push(this.getPivotRowHeaderContentWidth(elem)) :\n cellsContentWidths.push(this.getHeaderCellWidth(elem.nativeElement).width);\n });\n const index = cellsContentWidths.indexOf(Math.max(...cellsContentWidths));\n const cellStyle = this.document.defaultView.getComputedStyle(contents[index].nativeElement);\n const cellPadding = parseFloat(cellStyle.paddingLeft) + parseFloat(cellStyle.paddingRight) +\n parseFloat(cellStyle.borderLeftWidth) + parseFloat(cellStyle.borderRightWidth);\n largest.set(Math.max(...cellsContentWidths), cellPadding);\n }\n const largestCell = Math.max(...Array.from(largest.keys()));\n const width = Math.ceil(largestCell + largest.get(largestCell));\n\n if (Number.isNaN(width)) {\n return null;\n } else {\n return width + 'px';\n }\n }\n\n /** @hidden @internal */\n public get hasHorizontalLayout() {\n return this.pivotUI.rowLayout === PivotRowLayoutType.Horizontal;\n }\n\n /**\n * @hidden\n */\n public get hasMultipleValues() {\n return this.values.length > 1;\n }\n\n /**\n * @hidden\n */\n public get excelStyleFilterMaxHeight() {\n // max 10 rows, row size depends on grid size\n const maxHeight = this.renderedRowHeight * 10;\n return `${maxHeight}px`;\n }\n\n /**\n * @hidden\n */\n public get excelStyleFilterMinHeight(): string {\n // min 5 rows, row size depends on grid size\n const minHeight = this.renderedRowHeight * 5;\n return `${minHeight}px`;\n }\n\n /** @hidden @internal */\n public override get activeDescendant(): string | undefined {\n if (this.navigation.isRowHeaderActive || this.navigation.isRowDimensionHeaderActive) {\n return;\n }\n return super.activeDescendant;\n }\n\n /** @hidden @internal */\n public get headerRowActiveDescendant() {\n const activeElem = this.navigation.activeNode;\n if (!activeElem || !Object.keys(activeElem).length || !this.navigation.isRowHeaderActive) {\n return null;\n }\n\n const rowDimensions = this.rowDimensionContentCollection.length > 0 ?\n this.rowDimensionContentCollection.toArray() :\n this.rowDimensionMrlComponent.rowDimensionContentCollection.toArray();\n\n const rowDimensionContentActive = rowDimensions.find(rd => rd && rd.headerGroups?.some(hg => hg.active));\n const activeHeader = rowDimensionContentActive?.headerGroups.toArray().find(hg => hg.active);\n\n return activeHeader ? `${this.id}_${activeHeader.title}` : null;\n }\n\n protected resolveToggle(groupColumn: ColumnType, state: boolean) {\n if (!groupColumn) return;\n groupColumn.hidden = state;\n this.columnGroupStates.set(groupColumn.field, state);\n const childrenTotal = this.hasMultipleValues ?\n groupColumn.children.filter(x => x.columnGroup && x.children.filter(y => !y.columnGroup).length === this.values.length) :\n groupColumn.children.filter(x => !x.columnGroup);\n const childrenSubgroups = this.hasMultipleValues ?\n groupColumn.children.filter(x => x.columnGroup && x.children.filter(y => !y.columnGroup).length === 0) :\n groupColumn.children.filter(x => x.columnGroup);\n childrenTotal.forEach(group => {\n const newState = this.columnGroupStates.get(group.field) || state;\n if (newState) {\n group.headerTemplate = this.headerTemplate;\n } else {\n group.headerTemplate = undefined;\n }\n });\n if (!groupColumn.hidden && childrenSubgroups.length > 0) {\n childrenSubgroups.forEach(group => {\n const newState = this.columnGroupStates.get(group.field) || state;\n this.resolveToggle(group, newState);\n });\n }\n }\n\n protected override buildDataView(data: any[]) {\n this._dataView = data;\n }\n\n /**\n * @hidden @internal\n */\n protected override getDataBasedBodyHeight(): number {\n const dvl = this.dataView?.length || 0;\n return dvl < this._defaultTargetRecordNumber ? 0 : this.defaultTargetBodyHeight;\n }\n\n protected override horizontalScrollHandler(event) {\n const scrollLeft = event.target.scrollLeft;\n this.theadRow.headerContainers.forEach(headerForOf => {\n headerForOf.onHScroll(scrollLeft);\n });\n super.horizontalScrollHandler(event);\n }\n\n protected override verticalScrollHandler(event) {\n this.verticalRowDimScrollContainers.forEach(x => {\n x.onScroll(event);\n });\n super.verticalScrollHandler(event);\n }\n\n /**\n * @hidden\n */\n protected override autogenerateColumns() {\n let columns = [];\n const data = this.gridAPI.filterDataByExpressions(this.filteringExpressionsTree);\n this.dimensionDataColumns = this.generateDimensionColumns();\n const flattenedColumnsWithSorting = PivotUtil.flatten(this.columnDimensions).filter(dim => dim.sortDirection);\n const expressions = flattenedColumnsWithSorting.length > 0 ? PivotSortUtil.generateDimensionSortingExpressions(flattenedColumnsWithSorting) : [];\n let sortedData = data;\n if (expressions.length > 0) {\n sortedData = DataUtil.sort(cloneArray(data), expressions, this.sortStrategy, this);\n }\n let fieldsMap;\n if (this.pivotConfiguration.columnStrategy && this.pivotConfiguration.columnStrategy instanceof NoopPivotDimensionsStrategy) {\n const fields = this.generateDataFields(sortedData);\n if (fields.length === 0) return;\n const rowFields = PivotUtil.flatten(this.pivotConfiguration.rows).map(x => x.memberName);\n const keyFields = Object.values(this.pivotKeys);\n const filteredFields = fields.filter(x => rowFields.indexOf(x) === -1 && keyFields.indexOf(x) === -1 &&\n x.indexOf(this.pivotKeys.rowDimensionSeparator + this.pivotKeys.level) === -1 &&\n x.indexOf(this.pivotKeys.rowDimensionSeparator + this.pivotKeys.records) === -1);\n fieldsMap = this.generateFromData(filteredFields);\n } else {\n fieldsMap = PivotUtil.getFieldsHierarchy(\n sortedData,\n this.columnDimensions,\n PivotDimensionType.Column,\n this.pivotKeys,\n this.pivotValueCloneStrategy\n );\n }\n columns = this.generateColumnHierarchy(fieldsMap, sortedData);\n this._autoGeneratedCols = columns;\n // reset expansion states if any are stored.\n this.columnGroupStates.forEach((value, key) => {\n if (value) {\n const primaryColumn = columns.find(x => x.field === key && x.headerTemplate === this.headerTemplate);\n const groupSummaryColumn = columns.find(x => x.field === key && x.headerTemplate !== this.headerTemplate);\n this.toggleRowGroup(primaryColumn, value);\n if (groupSummaryColumn) {\n groupSummaryColumn.headerTemplate = this.headerTemplate;\n }\n }\n });\n\n this.updateColumns(columns);\n this.pipeTrigger++;\n this.reflow();\n }\n\n protected generateDimensionColumns(): IgxColumnComponent[] {\n const columns = [];\n this.allVisibleDimensions.forEach((dim) => {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n ref.instance.field = dim.memberName;\n ref.instance.header = dim.displayName || dim.memberName;\n ref.instance.headerTemplate = this.rowDimensionHeaderTemplate;\n ref.instance.resizable = this.rowDimensionResizing;\n ref.instance.sortable = dim.sortable === undefined ? true : dim.sortable;\n ref.instance.width = this.rowDimensionWidth(dim);\n ref.instance.filteringIgnoreCase = false;\n ref.changeDetectorRef.detectChanges();\n columns.push(ref.instance);\n });\n return columns;\n }\n\n protected override calculateGridSizes(recalcFeatureWidth = true) {\n super.calculateGridSizes(recalcFeatureWidth);\n if (this.hasDimensionsToAutosize) {\n this.cdr.detectChanges();\n this.zone.onStable.pipe(first()).subscribe(() => {\n requestAnimationFrame(() => {\n this.autoSizeDimensionsInView();\n });\n });\n }\n }\n\n protected getContentCollection(dimenstion: IPivotDimension) {\n let contentCollection;\n if (this.hasHorizontalLayout) {\n const allMrlContents = this.rowDimensionMrlRowsCollection.map(mrlRow => mrlRow.contentCells.toArray()).flat();\n contentCollection = allMrlContents.filter(cell => cell.rootDimension === dimenstion);\n } else {\n contentCollection = this.rowDimensionContentCollection.toArray();\n }\n return contentCollection;\n }\n\n protected autoSizeDimensionsInView() {\n if (!this.hasDimensionsToAutosize) return;\n for (const dim of this.visibleRowDimensions) {\n if (dim.width === 'auto') {\n const contentWidths = [];\n const relatedDims = PivotUtil.flatten([dim]).map(x => x.memberName);\n const contentCollection = this.getContentCollection(dim);\n const content = contentCollection.filter(x => relatedDims.indexOf(x.dimension.memberName) !== -1);\n const headers = content.map(x => x.headerGroups.toArray()).flat().map(x => x.header && x.header.refInstance);\n headers.forEach((header) => contentWidths.push(header?.nativeElement?.offsetWidth || 0));\n if (this.pivotUI.showRowHeaders) {\n const dimensionHeader = this.theadRow.rowDimensionHeaders.find(x => x.column.field === dim.memberName);\n contentWidths.push(parseFloat(this.getLargesContentWidth([dimensionHeader])));\n }\n const max = Math.max(...contentWidths);\n if (max === 0) {\n // cells not in DOM yet...\n continue;\n }\n const maxSize = Math.ceil(Math.max(...contentWidths));\n dim.autoWidth = maxSize;\n }\n }\n\n if (this.isColumnWidthSum) {\n this.calcWidth = this.getColumnWidthSum();\n }\n }\n\n /** @hidden @internal */\n public get hasDimensionsToAutosize() {\n return this.rowDimensions.some(x => x.width === 'auto' && !x.autoWidth);\n }\n\n protected generateFromData(fields: string[]) {\n const separator = this.pivotKeys.columnDimensionSeparator;\n const dataArr = fields.map(x => x.split(separator)).sort(x => x.length);\n const hierarchy = new Map<string, any>();\n const columnDimensions = PivotUtil.flatten(this.columnDimensions);\n dataArr.forEach(arr => {\n let currentHierarchy = hierarchy;\n const path = [];\n let index = 0;\n for (const val of arr) {\n path.push(val);\n const newPath = path.join(separator);\n let targetHierarchy = currentHierarchy.get(newPath);\n if (!targetHierarchy) {\n const currentColumnDimension = columnDimensions[index];\n currentHierarchy.set(newPath, { value: newPath, expandable: !!currentColumnDimension.childLevel, children: new Map<string, any>(), dimension: currentColumnDimension });\n targetHierarchy = currentHierarchy.get(newPath);\n }\n currentHierarchy = targetHierarchy.children;\n index++;\n }\n });\n return hierarchy;\n }\n protected generateColumnHierarchy(fields: Map<string, any>, data, parent = null): IgxColumnComponent[] {\n let columns = [];\n if (fields.size === 0) {\n this.values.forEach((value) => {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n let columnDataType = value.dataType || this.resolveDataTypes(data.length ? data[0][value.member] : null);\n\n if (value.aggregate?.key?.toLowerCase() === 'count' && (columnDataType === GridColumnDataType.Currency || columnDataType == GridColumnDataType.Percent)) {\n columnDataType = GridColumnDataType.Number;\n }\n\n ref.instance.header = value.displayName;\n ref.instance.field = value.member;\n ref.instance.parent = parent;\n ref.instance.sortable = true;\n ref.instance.dataType = columnDataType;\n ref.instance.formatter = value.formatter;\n columns.push(ref.instance);\n });\n return columns;\n }\n const currentFields = fields;\n currentFields.forEach((value) => {\n let shouldGenerate = true;\n if (data.length === 0) {\n shouldGenerate = false;\n }\n if (shouldGenerate && (value.children == null || value.children.length === 0 || value.children.size === 0)) {\n const col = this.createColumnForDimension(value, data, parent, this.hasMultipleValues);\n\n if (!this.hasMultipleValues && this.values.length > 0) {\n PivotUtil.updateColumnTypeByAggregator([col], this.values[0], true);\n }\n\n columns.push(col);\n if (this.hasMultipleValues) {\n const measureChildren = this.getMeasureChildren(data, col, false, value.dimension.width);\n\n measureChildren.forEach((child, index) => {\n const pivotValue = this.values[index];\n PivotUtil.updateColumnTypeByAggregator([child], pivotValue, this.values.length === 1);\n });\n\n col.children.reset(measureChildren);\n columns = columns.concat(measureChildren);\n }\n\n } else if (shouldGenerate) {\n const col = this.createColumnForDimension(value, data, parent, true);\n if (value.expandable) {\n col.headerTemplate = this.headerTemplate;\n }\n const children = this.generateColumnHierarchy(value.children, data, col);\n const filteredChildren = children.filter(x => x.level === col.level + 1);\n columns.push(col);\n if (this.hasMultipleValues) {\n let measureChildren = this.getMeasureChildren(data, col, true, value.dimension.width);\n const nestedChildren = filteredChildren;\n //const allChildren = children.concat(measureChildren);\n col.children.reset(nestedChildren);\n columns = columns.concat(children);\n if (value.dimension.childLevel) {\n const sibling = this.createColumnForDimension(value, data, parent, true);\n columns.push(sibling);\n\n measureChildren = this.getMeasureChildren(data, sibling, false, value.dimension?.width);\n sibling.children.reset(measureChildren);\n columns = columns.concat(measureChildren);\n }\n\n } else {\n col.children.reset(filteredChildren);\n columns = columns.concat(children);\n if (value.dimension.childLevel) {\n const sibling = this.createColumnForDimension(value, data, parent, false);\n columns.push(sibling);\n }\n }\n }\n });\n\n return columns;\n }\n\n\n protected generateConfig() {\n if (!this.data) return;\n\n const data = this.data;\n const fields = this.generateDataFields(data);\n const columnDimensions: IPivotDimension[] = [];\n const rowDimensions: IPivotDimension[] = [];\n const values: IPivotValue[] = [];\n let isFirstDate = true;\n fields.forEach((field) => {\n const dataType = this.resolveDataTypes(data[0][field]);\n switch (dataType) {\n case \"number\":\n {\n const value: IPivotValue = {\n member: field,\n displayName: field,\n dataType: dataType,\n aggregate: {\n key: 'sum',\n label: 'Sum',\n aggregatorName: \"SUM\"\n },\n enabled: true\n };\n values.push(value);\n break;\n }\n case \"date\":\n {\n const dimension: IPivotDimension = new IgxPivotDateDimension(\n {\n memberName: field,\n enabled: isFirstDate,\n dataType: dataType\n }\n )\n rowDimensions.push(dimension);\n isFirstDate = false;\n break;\n }\n default: {\n const dimension: IPivotDimension = {\n memberName: field,\n enabled: false,\n dataType: dataType\n };\n columnDimensions.push(dimension);\n break;\n }\n }\n });\n const config: IPivotConfiguration = {\n columns: columnDimensions,\n rows: rowDimensions,\n values: values\n };\n this.pivotConfiguration = config;\n }\n\n protected createColumnForDimension(value: any, data: any, parent: ColumnType, isGroup: boolean) {\n const key = value.value;\n const ref = isGroup ?\n createComponent(IgxColumnGroupComponent, { environmentInjector: this.envInjector, elementInjector: this.injector }) :\n createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n ref.instance.header = parent != null ? key.split(parent.header + this.pivotKeys.columnDimensionSeparator)[1] : key;\n ref.instance.field = key;\n ref.instance.parent = parent;\n if (value.dimension.width) {\n ref.instance.width = value.dimension.width;\n }\n const valueDefinition = this.values[0];\n ref.instance.dataType = valueDefinition?.dataType || this.resolveDataTypes(data[0][valueDefinition?.member]);\n ref.instance.formatter = valueDefinition?.formatter;\n ref.instance.sortable = true;\n ref.changeDetectorRef.detectChanges();\n return ref.instance;\n }\n\n protected resolveColumnDimensionWidth(dim: IPivotDimension) {\n if (dim.width) {\n return dim.width;\n }\n return this.minColumnWidth + 'px';\n }\n\n protected getMeasureChildren(data, parent, hidden, parentWidth) {\n const cols = [];\n const count = this.values.length;\n const childWidth = parseInt(parentWidth, 10) / count;\n const isPercent = parentWidth && parentWidth.indexOf('%') !== -1;\n const isAuto = parentWidth && parentWidth.indexOf('auto') !== -1;\n this.values.forEach(val => {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n ref.instance.header = val.displayName || val.member;\n ref.instance.field = parent.field + this.pivotKeys.columnDimensionSeparator + val.member;\n ref.instance.parent = parent;\n if (parentWidth) {\n ref.instance.width = isAuto ? 'auto' : isPercent ? childWidth + '%' : childWidth + 'px';\n }\n ref.instance.hidden = hidden;\n ref.instance.sortable = this._sortableColumns;\n ref.instance.dataType = val.dataType || this.resolveDataTypes(data[0][val.member]);\n ref.instance.formatter = val.formatter;\n ref.changeDetectorRef.detectChanges();\n cols.push(ref.instance);\n });\n return cols;\n }\n\n /**\n * @hidden @internal\n */\n @ViewChild('emptyPivotGridTemplate', { read: TemplateRef, static: true })\n public defaultEmptyPivotGridTemplate: TemplateRef<any>;\n\n /**\n * Gets/Sets a custom template when pivot grid is empty.\n *\n * @example\n * ```html\n * <igx-pivot-grid [emptyPivotGridTemplate]=\"myTemplate\"><igx-pivot-grid>\n * ```\n */\n @Input()\n public emptyPivotGridTemplate: TemplateRef<void>;\n\n /**\n * @hidden @internal\n */\n public override get template(): TemplateRef<any> {\n const allEnabledDimensions = this.rowDimensions.concat(this.columnDimensions);\n if (allEnabledDimensions.length === 0 && this.values.length === 0) {\n // no enabled values and dimensions\n return this.emptyPivotGridTemplate || this.defaultEmptyPivotGridTemplate;\n }\n return super.template;\n }\n\n private emitInitEvents(pivotConfig: IPivotConfiguration) {\n const dimensions = PivotUtil.flatten(this.allDimensions);\n dimensions.forEach(dim => {\n this.dimensionInit.emit(dim);\n });\n const values = pivotConfig?.values;\n values?.forEach(val => {\n this.valueInit.emit(val);\n });\n }\n\n protected rowDimensionByName(memberName: string) {\n return this.visibleRowDimensions.find((rowDim) => rowDim.memberName === memberName);\n }\n\n protected calculateResizerTop() {\n return this.pivotUI.showRowHeaders ?\n (this.theadRow.pivotFilterContainer?.nativeElement.offsetHeight || 0) + (this.theadRow.pivotRowContainer?.nativeElement.offsetHeight || 0) :\n this.theadRow.nativeElement.offsetHeight;\n }\n\n protected override updateDefaultRowHeight() {\n super.updateDefaultRowHeight();\n if (this.hasHorizontalLayout) {\n // Trigger pipes to recalc heights for the horizontal layout mrl rows.\n this.regroupTrigger++;\n }\n }\n\n /**\n * @hidden @internal\n */\n public createRow(index: number, data?: any): RowType {\n let row: RowType;\n\n const dataIndex = this._getDataViewIndex(index);\n const rec = data ?? this.dataView[dataIndex];\n\n\n if (!row && rec) {\n row = new IgxPivotGridRow(this, index, rec);\n }\n return row;\n }\n}\n","<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar,igc-grid-toolbar\"></ng-content>\n\n<!-- Grid table head row area -->\n<igx-pivot-header-row class=\"igx-grid-thead igx-grid-thead--pivot\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [width]=\"calcWidth\"\n [pinnedStartColumnCollection]=\"pinnedStartColumns\"\n [pinnedEndColumnCollection]=\"pinnedEndColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n>\n</igx-pivot-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <ng-container *ngTemplateOutlet=\"rowDimensions.length ? (hasHorizontalLayout ? horizontalRowDimensionsTemplate : defaultRowDimensionsTemplate) : emptyRowDimensionsTemplate; context: this\"></ng-container>\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)=\"preventContainerScroll($event)\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]=\"totalHeight\" [style.width.px]=\"pivotContentCalcWidth || null\" [style.width]=\"!platform.isBrowser ? '100%' : undefined\" #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n @if (hasMovableColumns && columnInDrag && pinnedColumns.length <= 0) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n }\n @if (hasMovableColumns && columnInDrag && pinnedColumns.length > 0) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedStartWidth\"></span>\n }\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"renderData\n | pivotGridFilter:pivotConfiguration:filterStrategy:advancedFilteringExpressionsTree:filteringPipeTrigger:pipeTrigger\n | pivotGridSort:pivotConfiguration:sortStrategy:pipeTrigger\n | pivotGridRow:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n | pivotGridColumn:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n | pivotGridAutoTransform:pivotConfiguration:pipeTrigger\n | pivotGridColumnSort:sortingExpressions:sortStrategy:pipeTrigger\n | pivotGridRowExpansion:pivotConfiguration:expansionStates:defaultExpandState:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxGridForOfVariableSizes]=\"false\"\n #verticalScrollContainer (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]=\"recordTemplate\"\n [igxTemplateOutletContext]=\"getContext(rowData, rowIndex)\"\n (cachedViewLoaded)=\"cachedViewLoaded($event)\">\n </ng-template>\n </ng-template>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData>\n <igx-pivot-row [gridID]=\"id\" [index]=\"rowIndex\" [data]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:isRecordMerged(rowData):false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-pivot-row>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: this }\"></ng-container>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n @if (shouldOverlayLoading) {\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n }\n </div>\n @if (hasMovableColumns && columnInDrag) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n }\n <div [hidden]=\"!hasVerticalScroll()\" class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=\" isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]=\"calcHeight\">\n <ng-template igxGridFor [igxGridForOf]=\"[]\" #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]=\"!isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]=\"snackbarDisplayTime\">{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]=\"pivotPinnedStartWidth\" [style.min-width.px]=\"pivotPinnedStartWidth\"></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]=\"pivotUnpinnedWidth\">\n <ng-template igxGridFor [igxGridForOf]=\"EMPTY_DATA\" #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.width.px]=\"pivotPinnedEndWidth\" [style.min-width.px]=\"pivotPinnedEndWidth\" [hidden]=\"pivotPinnedEndWidth === 0\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" #tfoot>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer,igc-grid-footer\"></ng-content>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n </span>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n@if (colResizingService.showResizer) {\n <igx-pivot-grid-column-resizer [restrictResizerTop]=\"calculateResizerTop()\"></igx-pivot-grid-column-resizer>\n}\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n\n<ng-template #headerTemplate let-column>\n <div class=\"igx-grid__tr--header\">\n <igx-icon\n family=\"default\"\n [name]=\"getColumnGroupExpandState(column) ? 'tree_expand' : 'tree_collapse'\"\n [attr.draggable]=\"false\"\n (click)=\"toggleColumn(column)\">\n </igx-icon>\n {{column.header}}\n </div>\n</ng-template>\n\n<ng-template #defaultRowDimensionsTemplate>\n @for (dim of rowDimensions; track dim.memberName; let dimIndex = $index) {\n <div tabindex=\"0\" [style.height.px]=\"totalHeight\" #rowDimensionContainer class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n <ng-template igxGridFor let-rowData\n [igxGridForOf]=\"dataView | pivotGridCellMerging:pivotConfiguration:dim:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"renderedRowHeight\"\n [igxForSizePropName]=\"'height'\"\n #verticalRowDimScrollContainer\n >\n <igx-pivot-row-dimension-content\n class=\"igx-grid-thead\" [grid]=\"this\"\n [dimension]=\"rowData.dimensions[dimIndex]\"\n [rootDimension]=\"dim\"\n [style.height.px]=\"renderedRowHeight * (rowData.rowSpan || 1)\"\n [rowIndex]=\"rowIndex\" [rowData]=\"rowData\"\n [width]=\"rowDimensionWidthToPixels(dim)\">\n </igx-pivot-row-dimension-content>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(dim) }\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #horizontalRowDimensionsTemplate>\n <div tabindex=\"0\" class=\"igx-grid__tbody-pivot-mrl-dimension\" #rowDimensionContainer [style.height.px]=\"totalHeight\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n @if (dataView | pivotGridHorizontalRowGrouping:pivotConfiguration:pipeTrigger:regroupTrigger; as groupedData) {\n <ng-template #verticalRowDimScrollContainer role=\"rowgroup\" igxGridFor let-rowGroup let-rowIndex=\"index\"\n [igxGridForOf]=\"groupedData\"\n [igxForScrollOrientation]=\"'vertical'\"\n [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"renderedRowHeight\"\n [igxForSizePropName]=\"'height'\"\n >\n <igx-pivot-row-dimension-mrl-row [rowIndex]=\"rowIndex\" [rowGroup]=\"rowGroup\" [groupedData]=\"groupedData\" [style.height.px]=\"renderedRowHeight * rowGroup.length\"></igx-pivot-row-dimension-mrl-row>\n </ng-template>\n }\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: pivotRowWidths }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyRowDimensionsTemplate>\n <div tabindex=\"0\" #rowDimensionContainer role=\"rowgroup\" class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n @if ((columnDimensions.length > 0 || values.length > 0) && data.length > 0) {\n <igx-pivot-row-dimension-content class=\"igx-grid-thead\" [grid]=\"this\"\n [dimension]=\"emptyRowDimension\"\n [rootDimension]=\"emptyRowDimension\"\n [rowIndex]=\"0\" [rowData]=\"dataView[0]\"\n [width]=\"rowDimensionWidthToPixels(emptyRowDimension)\">\n </igx-pivot-row-dimension-content>\n }\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(emptyRowDimension) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyPivotGridTemplate>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{resourceStrings.igx_grid_pivot_empty_message}}</span>\n </span>\n</ng-template>\n\n<ng-template #emptyRowDimensionFill let-width=\"widthPx\">\n @if (emptyBottomSize > 0) {\n <div class=\"igx-pivot-grid-row-filler__wrapper\" [style.height.px]=\"emptyBottomSize\" [style.width.px]=\"width\">\n <!-- Reuse header styles to keep visuals consistent -->\n <div class=\"igx-grid-thead__wrapper\">\n <div class=\"igx-grid-th\"></div>\n </div>\n </div>\n }\n</ng-template>\n\n<div [hidden]=\"true\">\n <igx-grid-excel-style-filtering [maxHeight]=\"excelStyleFilterMaxHeight\" [minHeight]=\"excelStyleFilterMinHeight\">\n <div igxExcelStyleColumnOperations [hidden]=\"true\"></div>\n <igx-excel-style-filter-operations>\n <igx-excel-style-search></igx-excel-style-search>\n </igx-excel-style-filter-operations>\n </igx-grid-excel-style-filtering>\n</div>\n\n@if (platform.isElements) {\n <div #sink style=\"display: none;\"></div>\n <ng-content select=\"igx-grid-state,igc-grid-state\"></ng-content>\n}\n","import { IgxPivotDataSelectorComponent } from './pivot-data-selector.component';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\nimport { IgxPivotValueChipTemplateDirective } from './pivot-grid.directives';\n\nexport * from './pivot-grid.component';\nexport * from './pivot-data-selector.component';\nexport * from './pivot-grid.directives';\nexport * from './pivot-sort-strategy';\n\n/* Imports that cannot be resolved from IGX_GRID_COMMON_DIRECTIVES spread\n NOTE: Do not remove! Issue: https://github.com/IgniteUI/igniteui-angular/issues/13310\n*/\n\nimport {\n IgxRowDirective,\n IgxGridFooterComponent,\n IgxAdvancedFilteringDialogComponent,\n IgxHeaderCollapsedIndicatorDirective,\n IgxHeaderExpandedIndicatorDirective,\n IgxRowCollapsedIndicatorDirective,\n IgxRowExpandedIndicatorDirective,\n IgxSortAscendingHeaderIconDirective,\n IgxSortDescendingHeaderIconDirective,\n IgxSortHeaderIconDirective,\n IgxExcelStyleHeaderIconDirective,\n IgxDragIndicatorIconDirective,\n IgxRowDragGhostDirective,\n IgxGridStateDirective,\n IgxGridHeaderComponent,\n IgxGridHeaderGroupComponent,\n IgxGridHeaderRowComponent,\n IgxFilterCellTemplateDirective,\n IgxSummaryTemplateDirective,\n IgxCellTemplateDirective,\n IgxCellValidationErrorDirective,\n IgxCellHeaderTemplateDirective,\n IgxCellFooterTemplateDirective,\n IgxCellEditorTemplateDirective,\n IgxCollapsibleIndicatorTemplateDirective,\n IgxColumnComponent,\n IgxColumnGroupComponent,\n IgxColumnLayoutComponent,\n IgxColumnActionsComponent,\n IgxColumnHidingDirective,\n IgxColumnPinningDirective,\n IgxRowSelectorDirective,\n IgxGroupByRowSelectorDirective,\n IgxHeadSelectorDirective,\n IgxCSVTextDirective,\n IgxExcelTextDirective,\n IgxGridToolbarActionsComponent,\n IgxGridToolbarAdvancedFilteringComponent,\n IgxGridToolbarComponent,\n IgxGridToolbarExporterComponent,\n IgxGridToolbarHidingComponent,\n IgxGridToolbarPinningComponent,\n IgxGridToolbarTitleComponent,\n IgxGridToolbarDirective,\n IgxGridExcelStyleFilteringComponent,\n IgxExcelStyleHeaderComponent,\n IgxExcelStyleSortingComponent,\n IgxExcelStylePinningComponent,\n IgxExcelStyleHidingComponent,\n IgxExcelStyleSelectingComponent,\n IgxExcelStyleClearFiltersComponent,\n IgxExcelStyleConditionalFilterComponent,\n IgxExcelStyleMovingComponent,\n IgxExcelStyleSearchComponent,\n IgxExcelStyleColumnOperationsTemplateDirective,\n IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleLoadingValuesTemplateDirective,\n IgxGridActionButtonComponent,\n IgxGridActionsBaseDirective,\n IgxGridEditingActionsComponent,\n IgxGridPinningActionsComponent\n} from \"igniteui-angular/grids/core\";\n\n/* NOTE: Pivot grid directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_PIVOT_GRID_DIRECTIVES = [\n IgxPivotGridComponent,\n IgxPivotDataSelectorComponent,\n IgxPivotValueChipTemplateDirective,\n // IGX_GRID_COMMON_DIRECTIVES:\n IgxRowDirective,\n IgxGridFooterComponent,\n IgxAdvancedFilteringDialogComponent,\n IgxRowExpandedIndicatorDirective,\n IgxRowCollapsedIndicatorDirective,\n IgxHeaderExpandedIndicatorDirective,\n IgxHeaderCollapsedIndicatorDirective,\n IgxExcelStyleHeaderIconDirective,\n IgxSortAscendingHeaderIconDirective,\n IgxSortDescendingHeaderIconDirective,\n IgxSortHeaderIconDirective,\n IgxDragIndicatorIconDirective,\n IgxRowDragGhostDirective,\n IgxGridStateDirective,\n // IGX_GRID_ACTIONS\n IgxGridPinningActionsComponent,\n IgxGridEditingActionsComponent,\n IgxGridActionsBaseDirective,\n IgxGridActionButtonComponent,\n // IGX_GRID_HEADERS_DIRECTIVES:\n IgxGridHeaderComponent,\n IgxGridHeaderGroupComponent,\n IgxGridHeaderRowComponent,\n // IGX_GRID_COLUMN_DIRECTIVES:\n IgxFilterCellTemplateDirective,\n IgxSummaryTemplateDirective,\n IgxCellTemplateDirective,\n IgxCellValidationErrorDirective,\n IgxCellHeaderTemplateDirective,\n IgxCellFooterTemplateDirective,\n IgxCellEditorTemplateDirective,\n IgxCollapsibleIndicatorTemplateDirective,\n IgxColumnComponent,\n IgxColumnGroupComponent,\n IgxColumnLayoutComponent,\n // IGX_GRID_COLUMN_ACTIONS_DIRECTIVES:\n IgxColumnActionsComponent,\n IgxColumnHidingDirective,\n IgxColumnPinningDirective,\n // IGX_GRID_SELECTION_DIRECTIVES:\n IgxRowSelectorDirective,\n IgxGroupByRowSelectorDirective,\n IgxHeadSelectorDirective,\n // IGX_GRID_TOOLBAR_DIRECTIVES:\n IgxCSVTextDirective,\n IgxExcelTextDirective,\n IgxGridToolbarActionsComponent,\n IgxGridToolbarAdvancedFilteringComponent,\n IgxGridToolbarComponent,\n IgxGridToolbarExporterComponent,\n IgxGridToolbarHidingComponent,\n IgxGridToolbarPinningComponent,\n IgxGridToolbarTitleComponent,\n IgxGridToolbarDirective,\n // IGX_GRID_EXCEL_STYLE_FILTER_DIRECTIVES:\n IgxGridExcelStyleFilteringComponent,\n IgxExcelStyleHeaderComponent,\n IgxExcelStyleSortingComponent,\n IgxExcelStylePinningComponent,\n IgxExcelStyleHidingComponent,\n IgxExcelStyleSelectingComponent,\n IgxExcelStyleClearFiltersComponent,\n IgxExcelStyleConditionalFilterComponent,\n IgxExcelStyleMovingComponent,\n IgxExcelStyleSearchComponent,\n IgxExcelStyleColumnOperationsTemplateDirective,\n IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleLoadingValuesTemplateDirective\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵSize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igniteui-angular-grids-pivot-grid.mjs","sources":["../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header.component.ts","../../../projects/igniteui-angular/grids/core/src/headers/grid-header.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-header-group.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header-group.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-header-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-header-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid-navigation.service.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-filtering.service.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header-group.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-content.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-content.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-sort-strategy.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-sort-util.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.directives.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.pipes.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-mrl-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-mrl-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid-row.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-data-selector.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-data-selector.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.module.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/igniteui-angular-grids-pivot-grid.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject } from '@angular/core';\n\nimport { PivotGridType, PivotRowLayoutType, PivotUtil } from 'igniteui-angular/grids/core';\n\nimport { IgxGridHeaderComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotColumnResizingService } from 'igniteui-angular/grids/core';\nimport { SortingIndexPipe } from 'igniteui-angular/grids/core';\nimport { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { takeUntil } from 'rxjs/operators';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { ISortingExpression, SortingDirection } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-dimension-header',\n templateUrl: '../../core/src/headers/grid-header.component.html',\n imports: [IgxIconComponent, NgTemplateOutlet, NgClass, SortingIndexPipe]\n})\nexport class IgxPivotRowDimensionHeaderComponent extends IgxGridHeaderComponent implements AfterViewInit {\n public override colResizingService = inject(IgxPivotColumnResizingService);\n public refInstance = inject(ElementRef<HTMLElement>);\n\n private pivotGrid: PivotGridType;\n\n constructor() {\n super();\n\n this.pivotGrid = this.grid as PivotGridType;\n this.pivotGrid.dimensionsSortingExpressionsChange\n .pipe(takeUntil(this._destroy$))\n .subscribe((_: ISortingExpression[]) => this.setSortIndex());\n }\n\n public ngAfterViewInit(): void {\n this.setSortIndex();\n }\n\n @HostListener('click', ['$event'])\n public override onClick(event: MouseEvent) {\n event.preventDefault();\n }\n\n /**\n * @hidden @internal\n */\n public override get selectable(): boolean {\n return false;\n }\n\n /**\n * @hidden @internal\n */\n public override onSortingIconClick(event) {\n event.stopPropagation();\n const dim = this.pivotGrid.getRowDimensionByName(this.column.field);\n const startDirection = dim.sortDirection || SortingDirection.None;\n const direction = startDirection + 1 > SortingDirection.Desc ?\n SortingDirection.None : startDirection + 1;\n this.pivotGrid.sortDimension(dim, direction);\n }\n\n protected override getSortDirection() {\n const dim = this.pivotGrid.getRowDimensionByName(this.column.field);\n this.sortDirection = dim?.sortDirection || SortingDirection.None;\n }\n\n protected setSortIndex() {\n if (this.column.sortable && this.sortIconContainer) {\n const visibleRows = this.pivotGrid.pivotUI.rowLayout === PivotRowLayoutType.Vertical ?\n this.pivotGrid.pivotConfiguration.rows :\n PivotUtil.flatten(this.pivotGrid.pivotConfiguration.rows);\n const dimIndex = visibleRows.findIndex((target) => target.memberName === this.column.field);\n const dim = visibleRows[dimIndex];\n let newSortIndex = -1;\n if (dim.sortDirection) {\n let priorSortedDims = 0;\n for (let i = 0; i < dimIndex; i++) {\n if (visibleRows[i].sortDirection) {\n priorSortedDims++;\n }\n }\n\n // Sort index starts from 1.\n newSortIndex = priorSortedDims + 1;\n }\n\n this.sortIconContainer.nativeElement.setAttribute(\"data-sortIndex\", newSortIndex >= 0 ? newSortIndex : \"\");\n }\n }\n}\n","<ng-template #defaultColumn>\n <span [title]=\"title\">{{ column.header || column.field }}</span>\n</ng-template>\n\n<ng-template #defaultESFHeaderIconTemplate>\n <igx-icon family=\"default\" name=\"more_vert\"></igx-icon>\n</ng-template>\n\n<ng-template #defaultSortHeaderIconTemplate>\n <igx-icon\n family=\"default\"\n [name]=\"sortDirection < 2 ? 'sort_asc' : 'sort_desc'\">\n </igx-icon>\n</ng-template>\n\n<span class=\"igx-grid-th__title\">\n <ng-container\n *ngTemplateOutlet=\"column.headerTemplate ? column.headerTemplate : defaultColumn; context: { $implicit: column, column: column}\">\n </ng-container>\n</span>\n@if (!column.columnGroup) {\n <div class=\"igx-grid-th__icons\">\n @if (column.sortable && !disabled) {\n <div #sortIconContainer class=\"sort-icon\"\n [attr.data-sortIndex]=\"(grid.sortingOptions.mode === 'single' && grid.sortingExpressions.length <=1) ? null : column.field | sortingIndex:grid.sortingExpressions\"\n (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"onSortingIconClick($event)\">\n <ng-container *ngTemplateOutlet=\"sortIconTemplate; context: { $implicit: this }\"></ng-container>\n </div>\n }\n @if (grid.allowFiltering && column.filterable && grid.filterMode === 'excelStyleFilter') {\n <div [ngClass]=\"filterIconClassName\" (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"onFilteringIconClick($event)\" >\n <ng-container *ngTemplateOutlet=\"esfIconTemplate; context: { $implicit: this }\"></ng-container>\n </div>\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input, ViewChild } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\nimport {\n IGX_GRID_BASE,\n IgxColumnMovingDragDirective,\n IgxColumnMovingDropDirective,\n IgxGridHeaderGroupComponent,\n IgxHeaderGroupStylePipe,\n IgxPivotColumnResizingService,\n IgxPivotResizeHandleDirective,\n IPivotDimension,\n PivotGridType,\n PivotRowHeaderGroupType\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderComponent } from './pivot-row-dimension-header.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { SortingDirection } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-header-group',\n templateUrl: './pivot-row-dimension-header-group.component.html',\n imports: [IgxIconComponent, IgxPivotRowDimensionHeaderComponent, NgClass, NgStyle, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxPivotResizeHandleDirective, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowHeaderGroupComponent extends IgxGridHeaderGroupComponent implements PivotRowHeaderGroupType {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n public override colResizingService = inject(IgxPivotColumnResizingService);\n\n /**\n * @hidden\n */\n @HostBinding('style.user-select')\n public userSelect = 'none';\n\n /**\n * @hidden\n */\n public get role(): string {\n return 'columnheader';\n }\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public rowIndex: number;\n\n @Input()\n public set dimWidth(value: number) {\n this.column.width = value + 'px';\n }\n public get dimWidth() {\n return parseFloat(this.column.width);\n }\n\n public get parent() {\n return this;\n };\n\n @Input()\n public rootDimension: IPivotDimension;\n\n @ViewChild(IgxPivotRowDimensionHeaderComponent)\n public override header: IgxPivotRowDimensionHeaderComponent;\n\n @HostBinding('attr.id')\n public override get headerID() {\n return `${this.grid.id}_-2_${this.rootDimension.memberName}_${this.visibleIndex}`;\n }\n\n @HostBinding('attr.title')\n public override get title() {\n return this.rootDimension.displayName;\n }\n\n /**\n * @hidden\n * @internal\n */\n public get visibleIndex(): number {\n const rows = this.grid.visibleRowDimensions;\n return rows.indexOf(this.rootDimension);\n }\n\n @HostBinding('class.igx-grid-th--active')\n public override get active() {\n const nav = this.grid.navigation;\n const node = nav.activeNode;\n return node && !this.column.columnGroup ?\n nav.isRowDimensionHeaderActive &&\n node.row === this.rowIndex &&\n node.column === this.visibleIndex :\n false;\n }\n\n @HostBinding('class.asc')\n public get sortAscendingStyle() {\n return this.rootDimension.sortDirection === SortingDirection.Asc;\n }\n\n @HostBinding('class.desc')\n public get sortDescendingStyle() {\n return this.rootDimension.sortDirection === SortingDirection.Desc;\n }\n\n @HostBinding('class.igx-grid-th--sortable')\n public get sortableStyle() {\n return true;\n }\n\n @HostBinding('class.igx-grid-th--sorted')\n public get sortedStyle() {\n return this.rootDimension.sortDirection !== undefined && this.rootDimension.sortDirection !== SortingDirection.None;\n }\n\n protected override get activeNode() {\n this.grid.navigation.isRowDimensionHeaderActive = true;\n this.grid.navigation.isRowHeaderActive = false;\n return {\n row: this.rowIndex, column: this.visibleIndex, level: null,\n mchCache: {\n level: 0,\n visibleIndex: this.visibleIndex\n },\n layout: null\n };\n }\n\n public override activate() {\n this.grid.navigation.setActiveNode(this.activeNode);\n }\n\n /**\n * @hidden @internal\n */\n public override pointerdown(_event: PointerEvent): void {\n this.activate();\n }\n\n /**\n * @hidden @internal\n */\n public override onMouseDown(_event: MouseEvent): void {\n this.activate();\n }\n\n public override get selectable(): boolean {\n return false;\n }\n\n protected getHeaderWidthFromDimension() {\n return this.grid.hasHorizontalLayout && this.dimWidth === -1 ? 'fit-content' : null;\n }\n}\n","<ng-template #defaultColumn>\n <span class=\"igx-grid-th__group-title\" [title]=\"title\">{{column.header}}</span>\n</ng-template>\n\n<ng-template #defaultCollapseIndicator>\n <igx-icon\n family=\"default\"\n [name]=\"column.expanded ? 'tree_collapse' : 'tree_expand'\">\n </igx-icon>\n</ng-template>\n\n@if (!column.columnGroup) {\n @if (grid.hasMovableColumns) {\n <span class=\"igx-grid-th__drop-indicator-left\"></span>\n }\n <igx-pivot-row-dimension-header\n [attr.role]=\"role\"\n class=\"igx-grid-th--fw\"\n [id]=\"header ? grid.id + '_' + header.title : grid.id + '_' + column.field\"\n [ngClass]=\"column.headerClasses\"\n [ngStyle]=\"column.headerStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [igxColumnMovingDrag]=\"column\"\n [ghostHost]=\"grid.outlet.nativeElement\"\n [attr.droppable]=\"true\"\n (pointerdown)=\"pointerdown($event)\"\n [igxColumnMovingDrop]=\"column\"\n [column]=\"column\"\n (keydown)=\"grid.navigation.headerNavigation($event)\"\n [style.min-width]=\"getHeaderWidthFromDimension()\"\n [style.width]=\"getHeaderWidthFromDimension()\"\n >\n </igx-pivot-row-dimension-header>\n @if (!column.columnGroup && column.resizable) {\n <span class=\"igx-grid-th__resize-handle\"\n [igxPivotResizeHandle]=\"column\"\n [igxPivotResizeHandleHeader]=\"this\"\n [attr.draggable]=\"false\"\n [style.cursor]=\"colResizingService.resizeCursor\">\n </span>\n }\n @if (grid.hasMovableColumns) {\n <span class=\"igx-grid-th__drop-indicator-right\"></span>\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n QueryList,\n Renderer2,\n ViewChild,\n SimpleChanges,\n ViewChildren,\n HostBinding,\n inject\n} from '@angular/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\n\nimport { AbsoluteScrollStrategy, AutoPositionStrategy, ColumnType, OverlaySettings, PositionSettings, SortingDirection, VerticalAlignment } from 'igniteui-angular/core';\nimport {\n DropPosition,\n IGX_GRID_BASE,\n IgxExcelStyleColumnOperationsTemplateDirective,\n IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleSearchComponent,\n IgxGridExcelStyleFilteringComponent,\n IgxGridHeaderGroupComponent,\n IgxGridHeaderRowComponent,\n IgxGridTopLevelColumns,\n IgxHeaderGroupStylePipe,\n IPivotAggregator,\n IPivotDimension,\n IPivotValue,\n PivotDimensionType,\n PivotGridType,\n PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';\nimport { IgxDropDirective, IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IBaseChipEventArgs, IgxChipComponent, IgxChipsAreaComponent } from 'igniteui-angular/chips';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxBadgeComponent } from 'igniteui-angular/badge';\nimport { IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, ISelectionEventArgs } from 'igniteui-angular/drop-down';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-header-row',\n templateUrl: './pivot-header-row.component.html',\n imports: [IgxDropDirective, IgxChipsAreaComponent, IgxChipComponent, IgxIconComponent,\n IgxPrefixDirective, IgxBadgeComponent, IgxSuffixDirective, IgxDropDownItemNavigationDirective,\n NgTemplateOutlet, IgxGridHeaderGroupComponent, NgClass, NgStyle, IgxGridForOfDirective,\n IgxDropDownComponent, IgxDropDownItemComponent, IgxGridExcelStyleFilteringComponent,\n IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleSearchComponent, IgxHeaderGroupStylePipe, IgxGridTopLevelColumns,\n IgxPivotRowHeaderGroupComponent]\n})\nexport class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implements OnChanges {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n protected renderer = inject(Renderer2);\n\n public aggregateList: IPivotAggregator[] = [];\n\n public value: IPivotValue;\n public filterDropdownDimensions: Set<any> = new Set<any>();\n public filterAreaDimensions: Set<any> = new Set<any>();\n private _dropPos = DropPosition.AfterDropTarget;\n private _subMenuPositionSettings: PositionSettings = {\n verticalStartPoint: VerticalAlignment.Bottom,\n closeAnimation: undefined\n };\n private _subMenuOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: false,\n positionStrategy: new AutoPositionStrategy(this._subMenuPositionSettings),\n scrollStrategy: new AbsoluteScrollStrategy()\n };\n\n /**\n * @hidden @internal\n */\n @ViewChild('esf') public esf: any;\n\n /**\n * @hidden @internal\n */\n @ViewChild('filterAreaHidden', { static: false }) public filterArea;\n\n /**\n * @hidden @internal\n */\n @ViewChild('filterIcon') public filtersButton;\n\n /**\n * @hidden @internal\n */\n @ViewChild('dropdownChips') public dropdownChips;\n\n /**\n * @hidden @internal\n */\n @ViewChild('pivotFilterContainer') public pivotFilterContainer;\n\n /**\n * @hidden @internal\n */\n @ViewChild('pivotRowContainer') public pivotRowContainer;\n\n /**\n * @hidden\n * @internal\n */\n @ViewChildren('notifyChip')\n public notificationChips: QueryList<IgxChipComponent>;\n\n /**\n * @hidden\n * @internal\n * The virtualized part of the header row containing the unpinned header groups.\n */\n @ViewChildren('headerVirtualContainer', { read: IgxGridForOfDirective })\n public headerContainers: QueryList<IgxGridForOfDirective<ColumnType, ColumnType[]>>;\n\n /**\n * @hidden\n * @internal\n */\n @ViewChildren('rowDimensionHeaders')\n public rowDimensionHeaders: QueryList<IgxPivotRowHeaderGroupComponent>;\n\n public override get headerForOf() {\n return this.headerContainers?.last;\n }\n\n @HostBinding('attr.aria-activedescendant')\n public override get activeDescendant(): string {\n const activeElem = this.navigation.activeNode;\n if (!activeElem || !Object.keys(activeElem).length || this.grid.navigation.headerRowActiveDescendant) {\n return null;\n }\n\n if (this.navigation.isRowDimensionHeaderActive) {\n const activeHeader = this.grid.theadRow.rowDimensionHeaders.find(h => h.active);\n if (activeHeader) {\n const key = activeHeader.title ?? activeHeader.rootDimension?.memberName;\n return key ? `${this.grid.id}_${key}` : null;\n }\n return null;\n }\n\n return super.activeDescendant;\n }\n\n /**\n * @hidden\n * @internal\n * Default is a single empty level since default depth is 1\n */\n public columnDimensionsByLevel: any[] = [[]];\n\n /**\n * @hidden @internal\n */\n public get isFiltersButton(): boolean {\n let chipsWidth = 0;\n this.filterDropdownDimensions.clear();\n this.filterAreaDimensions.clear();\n if (this.filterArea?.chipsList && this.filterArea.chipsList.length !== 0) {\n const styles = getComputedStyle(this.pivotFilterContainer.nativeElement);\n const containerPaddings = parseFloat(styles.paddingLeft) + parseFloat(styles.paddingRight);\n chipsWidth += containerPaddings + (this.filtersButton && this.filterArea?.chipsList.length > 1 ? this.filtersButton.el.nativeElement.getBoundingClientRect().width : 0);\n this.filterArea.chipsList.forEach(chip => {\n const dim = this.grid.filterDimensions.find(x => x.memberName === chip.id);\n if (dim) {\n // 8 px margin between chips\n const currentChipWidth = chip.nativeElement.getBoundingClientRect().width + 8;\n if (chipsWidth + currentChipWidth < this.grid.pivotRowWidths) {\n this.filterAreaDimensions.add(dim);\n } else {\n this.filterDropdownDimensions.add(dim);\n }\n chipsWidth += currentChipWidth;\n }\n });\n return this.filterDropdownDimensions.size > 0;\n }\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public get totalDepth() {\n const columnDimensions = this.grid.columnDimensions;\n if (columnDimensions.length === 0) {\n return 1;\n }\n let totalDepth = columnDimensions.map(x => this.grid.data?.length > 0 ? PivotUtil.getDimensionDepth(x) + 1 : 0).reduce((acc, val) => acc + val);\n if (this.grid.hasMultipleValues) {\n totalDepth += 1;\n }\n return totalDepth;\n }\n\n /**\n * @hidden\n * @internal\n */\n public get maxContainerHeight() {\n return this.totalDepth * this.grid.renderedRowHeight;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override get isLeafHeaderAriaHidden(): boolean {\n return super.isLeafHeaderAriaHidden || this.grid.navigation.isRowHeaderActive || this.grid.navigation.isRowDimensionHeaderActive;\n }\n\n /**\n * @hidden\n * @internal\n */\n public calcHeight(col: ColumnType, index: number) {\n return !col.columnGroup && col.level < this.totalDepth && col.level === index ? (this.totalDepth - col.level) * this.grid.rowHeight : this.grid.rowHeight;\n }\n\n /**\n * @hidden\n * @internal\n */\n public isDuplicateOfExistingParent(col: ColumnType, lvl: number) {\n const parentCollection = lvl > 0 ? this.columnDimensionsByLevel[lvl - 1] : [];\n const duplicate = parentCollection.indexOf(col) !== -1;\n\n return duplicate;\n }\n\n /**\n * @hidden\n * @internal\n */\n public isMultiRow(col: ColumnType, lvl: number) {\n const isLeaf = !col.columnGroup;\n return isLeaf && lvl !== this.totalDepth - 1;\n }\n\n /**\n * @hidden\n * @internal\n */\n public populateColumnDimensionsByLevel() {\n const res = [];\n for (let i = 0; i < this.totalDepth; i++) {\n res[i] = [];\n }\n const cols = this.unpinnedColumnCollection;\n // populate column dimension matrix recursively\n this.populateDimensionRecursively(cols.filter(x => x.level === 0), 0, res);\n this.columnDimensionsByLevel = res;\n }\n\n protected populateDimensionRecursively(currentLevelColumns: ColumnType[], level = 0, res: any[]) {\n currentLevelColumns.forEach(col => {\n if (res[level]) {\n res[level].push(col);\n if (col.columnGroup && col.children.length > 0) {\n const visibleColumns = col.children.toArray().filter(x => !x.hidden);\n this.populateDimensionRecursively(visibleColumns, level + 1, res);\n } else if (level < this.totalDepth - 1) {\n for (let i = level + 1; i <= this.totalDepth - 1; i++) {\n res[i].push(col);\n }\n }\n }\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.unpinnedColumnCollection) {\n this.populateColumnDimensionsByLevel();\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDragStart(event, area) {\n this.cdr.detectChanges();\n for (const chip of this.notificationChips) {\n const parent = chip.nativeElement.parentElement;\n if (area.chipsList.toArray().indexOf(chip) === -1 &&\n parent.children.length > 0 &&\n parent.children.item(0).id !== 'empty') {\n chip.nativeElement.hidden = false;\n parent.parentElement.scrollTo({ left: chip.nativeElement.offsetLeft });\n }\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDragEnd() {\n for (const chip of this.notificationChips) {\n chip.nativeElement.hidden = true;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public getAreaHeight(area: IgxChipsAreaComponent) {\n const chips = area.chipsList;\n return chips && chips.length > 0 ? chips.first.nativeElement.offsetHeight : 0;\n }\n\n /**\n * @hidden\n * @internal\n */\n public rowRemoved(event: IBaseChipEventArgs) {\n const row = this.grid.pivotConfiguration.rows.find(x => x.memberName === event.owner.id);\n this.grid.toggleDimension(row);\n }\n\n /**\n * @hidden\n * @internal\n */\n public columnRemoved(event: IBaseChipEventArgs) {\n const col = this.grid.pivotConfiguration.columns.find(x => x.memberName === event.owner.id);\n this.grid.toggleDimension(col);\n }\n\n /**\n * @hidden\n * @internal\n */\n public valueRemoved(event: IBaseChipEventArgs) {\n const value = this.grid.pivotConfiguration.values.find(x => x.member === event.owner.id || x.displayName === event.owner.id);\n this.grid.toggleValue(value);\n }\n\n /**\n * @hidden\n * @internal\n */\n public filterRemoved(event: IBaseChipEventArgs) {\n const filter = this.grid.pivotConfiguration.filters.find(x => x.memberName === event.owner.id);\n this.grid.toggleDimension(filter);\n if (this.filterDropdownDimensions.size > 0) {\n this.onFiltersAreaDropdownClick({ target: this.filtersButton.el.nativeElement }, undefined, false);\n } else {\n this.grid.filteringService.hideESF();\n }\n }\n\n public onFiltersSelectionChanged(event?: IBaseChipEventArgs) {\n this.dropdownChips.chipsList.forEach(chip => {\n if (chip.id !== event.owner.id) {\n chip.selected = false\n }\n });\n this.onFiltersAreaDropdownClick({ target: this.filtersButton.el.nativeElement }, this.grid.filterDimensions.find(dim => dim.memberName === event.owner.id), false);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onFilteringIconPointerDown(event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n /**\n * @hidden\n * @internal\n */\n public onFilteringIconClick(event, dimension) {\n event.stopPropagation();\n event.preventDefault();\n const dim = dimension;\n const col = this.grid.dimensionDataColumns.find(x => x.field === dim.memberName || x.field === dim.member);\n this.grid.filteringService.toggleFilterDropdown(event.target, col);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onSummaryClick(eventArgs, value: IPivotValue, dropdown: IgxDropDownComponent, chip: IgxChipComponent) {\n this._subMenuOverlaySettings.target = eventArgs.currentTarget;\n this.updateDropDown(value, dropdown, chip);\n }\n\n /**\n * @hidden @internal\n */\n public onFiltersAreaDropdownClick(event, dimension?, shouldReattach = true) {\n const dim = dimension || this.filterDropdownDimensions.values().next().value;\n const col = this.grid.dimensionDataColumns.find(x => x.field === dim.memberName || x.field === dim.member);\n if (shouldReattach) {\n this.dropdownChips.chipsList.forEach(chip => {\n chip.selected = false\n });\n this.dropdownChips.chipsList.first.selected = true;\n }\n this.grid.filteringService.toggleFiltersESF(this.esf, event.target, col, shouldReattach);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onAggregationChange(event: ISelectionEventArgs) {\n\n if (!this.isSelected(event.newSelection.value)) {\n this.value.aggregate = event.newSelection.value;\n const isSingleValue = this.grid.values.length === 1;\n\n PivotUtil.updateColumnTypeByAggregator(this.grid.columns, this.value, isSingleValue);\n\n this.grid.pipeTrigger++;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public isSelected(val: IPivotAggregator) {\n return this.value.aggregate.key === val.key;\n }\n\n /**\n * @hidden\n * @internal\n */\n public onChipSort(_event, dimension: IPivotDimension) {\n if (dimension.sortable === undefined || dimension.sortable) {\n const startDirection = dimension.sortDirection || SortingDirection.None;\n const direction = startDirection + 1 > SortingDirection.Desc ?\n SortingDirection.None : startDirection + 1;\n this.grid.sortDimension(dimension, direction);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDragOver(event, dimension?: PivotDimensionType) {\n if (!event.dragChip || !event.dragChip.data?.pivotArea) return;\n const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id\n || x.displayName === event.dragChip.id) :\n !this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id || x.displayName === event.dragChip.id);\n if (typeMismatch) {\n // cannot drag between dimensions and value\n return;\n }\n // if we are in the left half of the chip, drop on the left\n // else drop on the right of the chip\n const clientRect = event.owner.nativeElement.getBoundingClientRect();\n const pos = clientRect.width / 2;\n\n this._dropPos = event.originalEvent.offsetX > pos ? DropPosition.AfterDropTarget : DropPosition.BeforeDropTarget;\n if (this._dropPos === DropPosition.AfterDropTarget) {\n event.owner.nativeElement.previousElementSibling.style.visibility = 'hidden';\n event.owner.nativeElement.nextElementSibling.style.visibility = '';\n } else {\n event.owner.nativeElement.nextElementSibling.style.visibility = 'hidden';\n event.owner.nativeElement.previousElementSibling.style.visibility = '';\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDragLeave(event) {\n event.owner.nativeElement.previousElementSibling.style.visibility = 'hidden';\n event.owner.nativeElement.nextElementSibling.style.visibility = 'hidden';\n this._dropPos = DropPosition.AfterDropTarget;\n }\n\n /**\n * @hidden\n * @internal\n */\n public onAreaDragLeave(event, area) {\n const dataChips = area.chipsList.toArray().filter(x => this.notificationChips.toArray().indexOf(x) === -1);\n dataChips.forEach(element => {\n if (element.nativeElement.previousElementSibling) {\n element.nativeElement.previousElementSibling.style.visibility = 'hidden';\n }\n if (element.nativeElement.nextElementSibling) {\n element.nativeElement.nextElementSibling.style.visibility = 'hidden';\n }\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n public onValueDrop(event, area) {\n if (!(event.dragChip && event.dragChip.data?.pivotArea) && !(event.dragData?.chip && !!event.dragData.chip.data.pivotArea)) return;\n //values can only be reordered\n const values = this.grid.pivotConfiguration.values;\n const dragId = event.dragChip?.id || event.dragData?.chip.id;\n const chipsArray = area.chipsList.toArray();\n let chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;\n chipIndex = this._dropPos === DropPosition.AfterDropTarget ? chipIndex + 1 : chipIndex;\n const value = values.find(x => x.member === dragId || x.displayName === dragId);\n if (value) {\n const dragChipIndex = chipsArray.indexOf(event.dragChip || event.dragData.chip);\n this.grid.moveValue(value, dragChipIndex >= chipIndex ? chipIndex : chipIndex - 1);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onDimDrop(event, area, dimensionType: PivotDimensionType) {\n if (!(event.dragChip && event.dragChip.data?.pivotArea) && !(event.dragData?.chip && !!event.dragData.chip.data.pivotArea)) return;\n const dragId = event.dragChip?.id || event.dragData?.chip.id;\n const currentDim = this.grid.getDimensionsByType(dimensionType);\n const chipsArray = area.chipsList.toArray();\n const chip = chipsArray.find(x => x.id === dragId);\n const isNewChip = chip === undefined;\n const isReorder = event.owner.id !== undefined;\n //const chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;\n const chipIndex = currentDim.findIndex(x => x.memberName === event.owner.id) !== -1 ?\n currentDim.findIndex(x => x.memberName === event.owner.id) : currentDim.length;\n const targetIndex = this._dropPos === DropPosition.AfterDropTarget ? chipIndex + 1 : chipIndex;\n if (isNewChip) {\n // chip moved from an external collection\n const dim = this.grid.allDimensions.find(x => x && x.memberName === dragId);\n if (!dim) {\n // you have dragged something that is not a dimension\n return;\n }\n this.grid.moveDimension(dim, dimensionType, targetIndex);\n } else if (isReorder) {\n // chip from same collection, reordered.\n const newDim = currentDim.find(x => x.memberName === dragId);\n const dragChipIndex = currentDim.findIndex(x => x.memberName === dragId);\n this.grid.moveDimension(newDim, dimensionType, dragChipIndex > chipIndex ? targetIndex : targetIndex - 1);\n }\n this.grid.pipeTrigger++;\n this.grid.dimensionsChange.emit({ dimensions: currentDim, dimensionCollectionType: dimensionType });\n // clean states\n this.onDimDragEnd();\n this.onAreaDragLeave(event, area);\n }\n\n protected updateDropDown(value: IPivotValue, dropdown: IgxDropDownComponent, chip: IgxChipComponent) {\n this.value = value;\n dropdown.width = chip.nativeElement.clientWidth + 'px';\n this.aggregateList = PivotUtil.getAggregateList(value, this.grid);\n this.cdr.detectChanges();\n dropdown.open(this._subMenuOverlaySettings);\n }\n\n protected getRowDimensionColumn(dim: IPivotDimension): ColumnType {\n return this.grid.dimensionDataColumns ? this.grid.dimensionDataColumns.find((col) => col.field === dim.memberName) : null;\n }\n}\n","<div>\n <div class=\"igx-grid-thead__wrapper igx-grid-thead__wrapper--pivot\" role=\"row\" [style.width.px]=\"width\">\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n <div class='igx-grid__tr-pivot--filter-container'>\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotFilterContainer\n class=\"igx-grid__tr-pivot igx-grid__tr-pivot--filter\" [style.min-width.px]=\"grid.pivotRowWidths - 1\"\n [style.max-width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, filterArea)\"\n igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\" (pointerdown)=\"$event.preventDefault()\">\n <!-- Filter area -->\n <igx-chips-area #filterArea droppable='true'>\n @if (grid.filterDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_filter_drop_area}}</span>\n }\n @for (filter of this.filterAreaDimensions; track filter; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(filterArea)'></span>\n <igx-chip [id]=\"filter.memberName\" [draggable]=\"true\" [data]=\"{ pivotArea: 'filter' }\"\n [removable]=\"true\" (remove)=\"filterRemoved($event)\" (dragOver)=\"onDimDragOver($event, 2)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, filterArea, 2)\"\n (moveStart)='onDimDragStart($event, filterArea)' (moveEnd)='onDimDragEnd()'>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, filter)'>\n </igx-icon>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(filterArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, filterArea, 2)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_filter_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n @if (isFiltersButton && grid.filterDimensions.length !== 0) {\n <div class=\"igx-grid__pivot-filter-toggle\">\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n #filterIcon\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFiltersAreaDropdownClick($event)'>\n </igx-icon>\n <igx-badge value=\"{{this.filterDropdownDimensions.size}}\"></igx-badge>\n </div>\n }\n </div>\n }\n <div class='igx-grid__tr-pivot--drop-row-area'>\n @if (grid.pivotUI.showConfiguration && grid.pivotUI.showRowHeaders) {\n <div #pivotRowContainer [style.width.px]=\"grid.pivotRowWidths - 1\"\n class=\"igx-grid__tr-pivot igx-grid__tr-pivot--small-row-area\" igxDrop\n (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\"\n (dropped)=\"onDimDrop($event, rowArea, 0)\">\n <igx-chips-area #rowArea droppable='true'>\n @if (grid.rowDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n }\n @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, row)\">\n <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, row)'>\n </igx-icon>\n {{ row.displayName || row.memberName}}\n @if (row.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n </div>\n </div>\n\n <div class=\"igx-grid__tr-pivot-group\">\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotColumnContainer class=\"igx-grid__tr-pivot\"\n (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop (igxDragLeave)=\"onAreaDragLeave($event, colArea)\">\n <!-- Columns area -->\n <igx-chips-area #colArea droppable='true'>\n @if (grid.columnDimensions.length === 0) {\n <span id='empty' (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop\n class='igx-grid__pivot-empty-chip-area'>\n {{grid.resourceStrings.igx_grid_pivot_empty_column_drop_area}}</span>\n }\n @for (col of grid.columnDimensions; track col.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(colArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"col.memberName\" [data]=\"{ pivotArea: 'column' }\"\n [removable]=\"true\" (remove)=\"columnRemoved($event)\" (dragOver)=\"onDimDragOver($event, 1)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, colArea, 1)\"\n (moveStart)='onDimDragStart($event, colArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, col)\">\n <igx-icon\n family=\"default\"\n name=\"view_column\"\n igxPrefix>\n </igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, col)'>\n </igx-icon>\n {{col.displayName || col.memberName}}\n @if (col.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"col.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(colArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, colArea, 1)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_column_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n\n @if (grid.pivotUI.showConfiguration) {\n <div #pivotValueContainer class=\"igx-grid__tr-pivot\"\n (pointerdown)=\"$event.preventDefault()\" (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n (igxDragLeave)=\"onAreaDragLeave($event, valueArea)\">\n <!-- Value area -->\n <igx-chips-area #valueArea droppable='true'>\n @if (grid.values.length === 0) {\n <span id='empty' (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_value_drop_area}}</span>\n }\n @for (value of grid.values; track value.member; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(valueArea)'></span>\n <igx-chip #currChip [draggable]=\"true\" [id]=\"value.displayName || value.member\" [data]=\"{ pivotArea: 'value' }\"\n [removable]=\"true\" (remove)=\"valueRemoved($event)\"\n (dragLeave)=\"onDimDragLeave($event)\" (dragOver)=\"onDimDragOver($event)\"\n (dragDrop)=\"onValueDrop($event, valueArea)\">\n <div class=\"igx-grid__tr-pivot-toggle-icons\" igxPrefix\n (click)='onSummaryClick($event, value, dropdown, currChip)'\n (pointerdown)='$event.stopPropagation()' [igxDropDownItemNavigation]=\"dropdown\">\n <igx-icon family=\"default\" name=\"functions\"></igx-icon>\n <igx-icon family=\"default\" name=\"arrow_drop_down\"></igx-icon>\n </div>\n <ng-container *ngTemplateOutlet=\"grid.valueChipTemplate ? grid.valueChipTemplate : valueChipDefaultTemplate; context: { $implicit: value }\"></ng-container>\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(valueArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onValueDrop($event, valueArea)\" #notifyValueChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_value_drop_chip}}\n </igx-chip>\n </igx-chips-area>\n </div>\n }\n </div>\n </div>\n </div>\n <div role=\"rowgroup\" class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n @if (!grid.pivotUI.showRowHeaders || grid.rowDimensions.length === 0) {\n <div #pivotContainer class=\"igx-grid__tr-pivot igx-grid__tr-pivot--row-area\"\n [style.width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\" igxDrop\n (dropped)=\"onDimDrop($event, rowArea, 0)\" (pointerdown)=\"$event.preventDefault()\">\n <!-- Row area -->\n <igx-chips-area #rowArea droppable='true'>\n @if (grid.pivotUI.showConfiguration || grid.rowDimensions.length === 0) {\n @if (grid.rowDimensions.length === 0) {\n <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n }\n @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n (click)=\"onChipSort($event, row)\">\n <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n igxPrefix\n (pointerdown)='onFilteringIconPointerDown($event)'\n (click)='onFilteringIconClick($event, row)'>\n </igx-icon>\n {{ row.displayName || row.memberName}}\n @if (row.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n igxSuffix>\n </igx-icon>\n }\n </igx-chip>\n @if (last) {\n <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n [style.height.px]='getAreaHeight(rowArea)'></span>\n }\n }\n <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n </igx-chip>\n }\n </igx-chips-area>\n </div>\n }\n\n @if (grid.pivotUI.showRowHeaders && grid.rowDimensions.length > 0) {\n <div class=\"igx-grid__tr igx-grid__tr-header-row\" [style.width.px]=\"grid.pivotRowWidths - 1\">\n @for (dim of grid.visibleRowDimensions; track dim; let colIndex = $index; let isLast = $last) {\n @if (getRowDimensionColumn(dim); as dimCol) {\n <igx-pivot-row-header-group #rowDimensionHeaders\n [ngClass]=\"dimCol.headerGroupClasses\"\n [ngStyle]=\"dimCol.headerGroupStyles | igxHeaderGroupStyle:dimCol:grid.pipeTrigger\"\n [style.width.px]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [style.flex-basis.px]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [column]=\"dimCol\"\n [rootDimension]=\"grid.visibleRowDimensions[colIndex]\"\n [dimWidth]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n [rowIndex]=\"-1\" >\n </igx-pivot-row-header-group>\n }\n }\n </div>\n }\n\n <!-- Pinned columns collection from the start -->\n @if (pinnedStartColumnCollection.length) {\n @for (column of pinnedStartColumnCollection | igxTopLevel; track column) {\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-header-group>\n }\n }\n <div class=\"igx-grid-thead--virtualizationWrapper\" [style.max-height.px]=\"maxContainerHeight\" (click)=\"grid.navigation.focusOutRowHeader($event)\">\n @for (dimLevelColumns of columnDimensionsByLevel; track $index; let i = $index) {\n <div class=\"igx-grid-thead__group igx-grid-thead--virtualizationContainer\" [style.height.px]=\"totalDepth > 1 ? grid.rowHeight : undefined\" [style.width.px]=\"grid.unpinnedWidth\">\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"dimLevelColumns\" [igxGridForOfUniqueSizeCache]=\"true\" [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\" [igxForScrollOrientation]=\"'horizontal'\">\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [style.height.px]=\"totalDepth > 1 ? calcHeight(column, i) : undefined\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n [class.igx-grid__tr-pivot--columnDimensionLeaf]=\"isDuplicateOfExistingParent(column, i)\"\n [class.igx-grid__tr-pivot--columnMultiRowSpan]=\"isMultiRow(column, i)\"\n >\n </igx-grid-header-group>\n </ng-template>\n </div>\n }\n </div>\n\n <!-- Pinned columns collection at the end -->\n @if (pinnedEndColumnCollection.length) {\n @for (column of pinnedEndColumnCollection | igxTopLevel; track column) {\n <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n [style.min-width]=\"column.resolvedWidth\"\n [style.flex-basis]=\"column.resolvedWidth\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-header-group>\n }\n }\n </div>\n\n <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n @for (column of visibleLeafColumns; track column.index) {\n <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n }\n </div>\n </div>\n</div>\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\">\n</div>\n\n<igx-drop-down #dropdown (selectionChanging)='onAggregationChange($event)'>\n @for (item of aggregateList; track item.key) {\n <igx-drop-down-item [selected]='isSelected(item)' [value]='item'>\n {{ item.label }}\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<div [hidden]='true'>\n <igx-grid-excel-style-filtering [maxHeight]='grid.excelStyleFilterMaxHeight' [minHeight]='grid.excelStyleFilterMinHeight' #esf>\n <div igxExcelStyleColumnOperations>\n <igx-chips-area #dropdownChips>\n @for (filter of this.filterDropdownDimensions; track filter) {\n <igx-chip [id]=\"filter.memberName\"\n [removable]=\"true\" (remove)=\"filterRemoved($event)\"\n (chipClick)='onFiltersSelectionChanged($event)' [selectable]='true' [selected]='filter === this.filterDropdownDimensions.values().next().value'>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n }\n </igx-chips-area>\n </div>\n <igx-excel-style-filter-operations>\n <igx-excel-style-search></igx-excel-style-search>\n </igx-excel-style-filter-operations>\n </igx-grid-excel-style-filtering>\n</div>\n\n<div style=\"visibility: hidden; position: absolute; top: -10000px\">\n <igx-chips-area #filterAreaHidden droppable='true'>\n @for (filter of grid.filterDimensions; track filter) {\n <igx-chip\n [id]=\"filter.memberName\"\n [draggable]=\"true\"\n [removable]=\"true\"\n (remove)=\"filterRemoved($event)\">\n <igx-icon family=\"default\" name=\"filter_list\" igxPrefix></igx-icon>\n {{filter.displayName || filter.memberName}}\n </igx-chip>\n }\n </igx-chips-area>\n</div>\n\n<ng-template #valueChipDefaultTemplate let-value>\n {{value.aggregate.key}}({{value.displayName || value.member}})\n</ng-template>\n","import { IActiveNode, IgxGridNavigationService, IMultiRowLayoutNode, IPivotDimension, IPivotGridRecord, PivotSummaryPosition, PivotUtil } from 'igniteui-angular/grids/core';\nimport { Injectable } from '@angular/core';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\nimport { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';\nimport { take, timeout } from 'rxjs/operators';\nimport { HEADER_KEYS, ROW_COLLAPSE_KEYS, ROW_EXPAND_KEYS, SortingDirection } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxPivotGridNavigationService extends IgxGridNavigationService {\n public override grid: IgxPivotGridComponent;\n public isRowHeaderActive = false;\n public isRowDimensionHeaderActive = false;\n\n public get lastRowDimensionsIndex() {\n return this.grid.visibleRowDimensions.length - 1;\n }\n\n public get lastRowDimensionMRLRowIndex() {\n return this.grid.verticalRowDimScrollContainers.first.igxGridForOf.length - 1;\n }\n\n public focusOutRowHeader() {\n this.isRowHeaderActive = false;\n this.isRowDimensionHeaderActive = false;\n }\n\n public override async handleNavigation(event: KeyboardEvent) {\n if (this.isRowHeaderActive) {\n const key = event.key.toLowerCase();\n const ctrl = event.ctrlKey;\n if (!HEADER_KEYS.has(key)) {\n return;\n }\n event.preventDefault();\n\n const newActiveNode: IActiveNode = {\n row: this.activeNode.row,\n column: this.activeNode.column,\n level: null,\n mchCache: null,\n layout: this.activeNode.layout\n }\n\n if (event.altKey) {\n this.handleAlt(key, event);\n return;\n }\n\n let verticalContainer;\n if (this.grid.hasHorizontalLayout) {\n let newPosition = {\n row: this.activeNode.row,\n column: this.activeNode.column,\n layout: this.activeNode.layout\n };\n verticalContainer = this.grid.verticalRowDimScrollContainers.first;\n if (key.includes('left')) {\n newPosition = await this.getNextHorizontalPosition(true, ctrl);\n }\n if (key.includes('right')) {\n newPosition = await this.getNextHorizontalPosition(false, ctrl);\n }\n if (key.includes('up') || key === 'home') {\n newPosition = await this.getNextVerticalPosition(true, ctrl || key === 'home', key === 'home');\n }\n\n if (key.includes('down') || key === 'end') {\n newPosition = await this.getNextVerticalPosition(false, ctrl || key === 'end', key === 'end');\n }\n\n newActiveNode.row = newPosition.row;\n newActiveNode.column = newPosition.column;\n newActiveNode.layout = newPosition.layout;\n } else {\n if ((key.includes('left') || key === 'home') && this.activeNode.column > 0) {\n newActiveNode.column = ctrl || key === 'home' ? 0 : this.activeNode.column - 1;\n }\n if ((key.includes('right') || key === 'end') && this.activeNode.column < this.lastRowDimensionsIndex) {\n newActiveNode.column = ctrl || key === 'end' ? this.lastRowDimensionsIndex : this.activeNode.column + 1;\n }\n\n verticalContainer = this.grid.verticalRowDimScrollContainers.toArray()[newActiveNode.column];\n if (key.includes('up')) {\n if (ctrl) {\n newActiveNode.row = 0;\n } else if (this.activeNode.row > 0) {\n newActiveNode.row = this.activeNode.row - 1;\n } else {\n newActiveNode.row = -1;\n newActiveNode.column = newActiveNode.layout ? newActiveNode.layout.colStart - 1 : 0;\n newActiveNode.layout = null;\n this.isRowDimensionHeaderActive = true;\n this.isRowHeaderActive = false;\n this.grid.theadRow.nativeElement.focus();\n }\n }\n\n if (key.includes('down') && this.activeNode.row < this.findLastDataRowIndex()) {\n newActiveNode.row = ctrl ? verticalContainer.igxForOf.length - 1 : Math.min(this.activeNode.row + 1, verticalContainer.igxForOf.length - 1);\n }\n\n if (key.includes('left') || key.includes('right')) {\n const prevRIndex = this.activeNode.row;\n const prevScrContainer = this.grid.verticalRowDimScrollContainers.toArray()[this.activeNode.column];\n const src = prevScrContainer.getScrollForIndex(prevRIndex);\n newActiveNode.row = this.activeNode.mchCache && this.activeNode.mchCache.level === newActiveNode.column ?\n this.activeNode.mchCache.visibleIndex :\n verticalContainer.getIndexAtScroll(src);\n newActiveNode.mchCache = {\n visibleIndex: this.activeNode.row,\n level: this.activeNode.column\n };\n }\n }\n\n this.setActiveNode(newActiveNode);\n if (!this.grid.hasHorizontalLayout && verticalContainer.isIndexOutsideView(newActiveNode.row)) {\n verticalContainer.scrollTo(newActiveNode.row);\n }\n } else {\n super.handleNavigation(event);\n }\n }\n\n public override handleAlt(key: string, event: KeyboardEvent): void {\n event.preventDefault();\n\n let rowData, dimIndex;\n if (!this.grid.hasHorizontalLayout) {\n dimIndex = this.activeNode.column;\n const scrContainer = this.grid.verticalRowDimScrollContainers.toArray()[dimIndex];\n rowData = scrContainer.igxGridForOf[this.activeNode.row];\n } else {\n const mrlRow = this.grid.rowDimensionMrlRowsCollection.find(mrl => mrl.rowIndex === this.activeNode.row);\n rowData = mrlRow.rowGroup[this.activeNode.layout.rowStart - 1];\n dimIndex = this.activeNode.layout.colStart - 1;\n }\n const dimension = this.grid.visibleRowDimensions[dimIndex];\n const expansionRowKey = PivotUtil.getRecordKey(rowData, dimension);\n const isExpanded = this.grid.expansionStates.get(expansionRowKey) ?? true;\n\n let prevCellLayout;\n if (this.grid.hasHorizontalLayout) {\n const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n prevCellLayout = this.getNextVerticalColumnIndex(\n parentRow,\n Math.min(parentRow.rowGroup.length, this.activeNode.layout.rowStart),\n this.activeNode.layout.colStart);\n }\n\n if (ROW_EXPAND_KEYS.has(key) && !isExpanded) {\n this.grid.gridAPI.set_row_expansion_state(expansionRowKey, true, event)\n } else if (ROW_COLLAPSE_KEYS.has(key) && isExpanded) {\n this.grid.gridAPI.set_row_expansion_state(expansionRowKey, false, event)\n }\n\n if ((ROW_EXPAND_KEYS.has(key) && !isExpanded) || (ROW_COLLAPSE_KEYS.has(key) && isExpanded)) {\n this.onRowToggle(!isExpanded, dimension, rowData, prevCellLayout);\n }\n this.updateActiveNodeLayout();\n this.grid.notifyChanges();\n }\n\n public updateActiveNodeLayout() {\n if (this.grid.hasHorizontalLayout) {\n const mrlRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n const activeCell = mrlRow.contentCells.toArray()[this.activeNode.column];\n this.activeNode.layout = activeCell.layout;\n }\n }\n\n /** Update active cell when toggling row expand when horizontal summaries have position set to top */\n public onRowToggle(newExpandState: boolean, dimension: IPivotDimension, rowData: IPivotGridRecord, prevCellLayout: IMultiRowLayoutNode){\n if (this.grid.hasHorizontalLayout &&\n rowData.totalRecordDimensionName !== dimension.memberName &&\n dimension.horizontalSummary && this.grid.pivotUI.horizontalSummariesPosition === PivotSummaryPosition.Top) {\n const maxActiveRow = Math.min(this.lastRowDimensionMRLRowIndex, this.activeNode.row);\n const parentRowUpdated = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === maxActiveRow);\n const maxRowEnd = parentRowUpdated.rowGroup.length + 1;\n const nextRowStart = Math.max(1, this.activeNode.layout.rowStart + (!newExpandState ? -1 : 1));\n const curValidRowStart = Math.min(parentRowUpdated.rowGroup.length, nextRowStart);\n // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n\n const curCellLayout = this.getNextVerticalColumnIndex(parentRowUpdated, curValidRowStart, this.activeNode.layout.colStart);\n const nextBlock = (!newExpandState && prevCellLayout.rowStart === 1) || (newExpandState && prevCellLayout.rowEnd >= maxRowEnd);\n this.activeNode.row += nextBlock ? (!newExpandState ? -1 : 1) : 0;\n this.activeNode.column = curCellLayout.columnVisibleIndex;\n this.activeNode.layout = curCellLayout;\n }\n }\n\n public override async headerNavigation(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n const ctrl = event.ctrlKey;\n if (!HEADER_KEYS.has(key)) {\n return;\n }\n\n if (this.isRowDimensionHeaderActive) {\n event.preventDefault();\n\n const newActiveNode: IActiveNode = {\n row: this.activeNode.row,\n column: this.activeNode.column,\n level: null,\n mchCache: this.activeNode.mchCache,\n layout: null\n }\n\n if (ctrl) {\n const dimIndex = this.activeNode.column;\n const dim = this.grid.visibleRowDimensions[dimIndex];\n if (this.activeNode.row === -1) {\n if (key.includes('down') || key.includes('up')) {\n let newSortDirection = SortingDirection.None;\n if (key.includes('down')) {\n newSortDirection = (dim.sortDirection === SortingDirection.Desc) ? SortingDirection.None : SortingDirection.Desc;\n } else if (key.includes('up')) {\n newSortDirection = (dim.sortDirection === SortingDirection.Asc) ? SortingDirection.None : SortingDirection.Asc;\n }\n this.grid.sortDimension(dim, newSortDirection);\n return;\n }\n }\n }\n if ((key.includes('left') || key === 'home') && this.activeNode.column > 0) {\n newActiveNode.column = ctrl || key === 'home' ? 0 : this.activeNode.column - 1;\n }\n if ((key.includes('right') || key === 'end') && this.activeNode.column < this.lastRowDimensionsIndex) {\n newActiveNode.column = ctrl || key === 'end' ? this.lastRowDimensionsIndex : this.activeNode.column + 1;\n } else if (key.includes('right')) {\n this.isRowDimensionHeaderActive = false;\n newActiveNode.column = 0;\n newActiveNode.level = this.activeNode.mchCache?.level || 0;\n newActiveNode.mchCache = this.activeNode.mchCache || {\n level: 0,\n visibleIndex: 0\n };\n }\n\n if (key.includes('down')) {\n if (this.grid.hasHorizontalLayout) {\n this.activeNode.row = 0;\n this.activeNode.layout = {\n rowStart: 1,\n rowEnd: 2,\n colStart: newActiveNode.column + 1,\n colEnd: newActiveNode.column + 2,\n columnVisibleIndex: newActiveNode.column\n };\n\n const newPosition = await this.getNextVerticalPosition(true, ctrl || key === 'home', key === 'home');\n newActiveNode.row = 0;\n newActiveNode.column = newPosition.column;\n newActiveNode.layout = newPosition.layout;\n } else {\n const verticalContainer = this.grid.verticalRowDimScrollContainers.toArray()[newActiveNode.column];\n newActiveNode.row = ctrl ? verticalContainer.igxForOf.length - 1 : 0;\n }\n\n this.isRowDimensionHeaderActive = false;\n this.isRowHeaderActive = true;\n this.grid.rowDimensionContainer.toArray()[this.grid.hasHorizontalLayout ? 0 : newActiveNode.column].nativeElement.focus();\n }\n\n this.setActiveNode(newActiveNode);\n } else if (key.includes('left') && this.activeNode.column === 0 && this.grid.pivotUI.showRowHeaders) {\n this.isRowDimensionHeaderActive = true;\n const newActiveNode: IActiveNode = {\n row: this.activeNode.row,\n column: this.lastRowDimensionsIndex,\n level: null,\n mchCache: this.activeNode.mchCache,\n layout: null\n }\n\n this.setActiveNode(newActiveNode);\n } else {\n super.headerNavigation(event);\n }\n }\n\n public override focusTbody(event) {\n if (!this.activeNode || this.activeNode.row === null || this.activeNode.row === undefined) {\n this.activeNode = this.lastActiveNode;\n } else {\n super.focusTbody(event);\n }\n }\n\n public async getNextVerticalPosition(previous, ctrl, homeEnd) {\n const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n const maxRowEnd = parentRow.rowGroup.length + 1;\n const curValidRowStart = Math.min(parentRow.rowGroup.length, this.activeNode.layout.rowStart);\n // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n const curCellLayout = this.getNextVerticalColumnIndex(parentRow, curValidRowStart, this.activeNode.layout.colStart);\n const nextBlock = (previous && curCellLayout.rowStart === 1) || (!previous && curCellLayout.rowEnd === maxRowEnd);\n if (nextBlock &&\n ((previous && this.activeNode.row === 0) ||\n (!previous && this.activeNode.row === this.lastRowDimensionMRLRowIndex))) {\n if (previous && this.grid.pivotUI.showRowHeaders) {\n this.isRowDimensionHeaderActive = true;\n this.isRowHeaderActive = false;\n this.grid.theadRow.nativeElement.focus();\n return { row: -1, column: this.activeNode.layout.colStart - 1, layout: this.activeNode.layout };\n }\n return { row: this.activeNode.row, column: this.activeNode.column, layout: this.activeNode.layout };\n }\n\n const nextMRLRowIndex = previous ?\n (ctrl ? 0 : this.activeNode.row - 1) :\n (ctrl ? this.lastRowDimensionMRLRowIndex : this.activeNode.row + 1) ;\n let nextRow = nextBlock || ctrl ? this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === nextMRLRowIndex) : parentRow;\n if (!nextRow) {\n const nextDataViewIndex = previous ?\n (ctrl ? 0 : parentRow.rowGroup[curCellLayout.rowStart - 1].dataIndex - 1) :\n (ctrl ? this.grid.dataView.length - 1 : parentRow.rowGroup[curCellLayout.rowEnd - 2].dataIndex + 1);\n await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n nextRow = nextBlock || ctrl ? this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === nextMRLRowIndex) : parentRow;\n }\n\n const nextRowStart = nextBlock ?\n (previous ? nextRow.rowGroup.length : 1) :\n (previous ? curCellLayout.rowStart - 1 : curCellLayout.rowEnd);\n const maxColEnd = Math.max(...nextRow.contentCells.map(cell => cell.layout.colEnd));\n const nextColumnLayout = this.getNextVerticalColumnIndex(\n nextRow,\n ctrl ? (previous ? 1 : nextRow.rowGroup.length) : nextRowStart,\n homeEnd ? (previous ? 1 : maxColEnd - 1) : this.activeNode.layout.colStart\n );\n\n const nextDataViewIndex = previous ?\n nextRow.rowGroup[nextColumnLayout.rowStart - 1].dataIndex:\n nextRow.rowGroup[nextColumnLayout.rowEnd - 2].dataIndex;\n await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n\n return {\n row: nextBlock || ctrl ? nextMRLRowIndex : this.activeNode.row,\n column: nextColumnLayout.columnVisibleIndex,\n layout: {\n rowStart: nextColumnLayout.rowStart,\n rowEnd: nextColumnLayout.rowEnd,\n colStart: homeEnd ? nextColumnLayout.colStart : this.activeNode.layout.colStart,\n colEnd: nextColumnLayout.colEnd,\n columnVisibleIndex: nextColumnLayout.columnVisibleIndex\n } as IMultiRowLayoutNode\n };\n }\n\n public async getNextHorizontalPosition(previous, ctrl) {\n const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n const maxColEnd = Math.max(...parentRow.contentCells.map(cell => cell.layout.colEnd));\n // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n const curCellLayout = this.getNextVerticalColumnIndex(parentRow, this.activeNode.layout.rowStart, this.activeNode.layout.colStart);\n\n if ((previous && curCellLayout.colStart === 1) || (!previous && curCellLayout.colEnd === maxColEnd)) {\n return { row: this.activeNode.row, column: this.activeNode.column, layout: this.activeNode.layout };\n }\n\n const nextColStartNormal = curCellLayout.colStart + (previous ? -1 : curCellLayout.colEnd - curCellLayout.colStart);\n const nextColumnLayout = this.getNextVerticalColumnIndex(\n parentRow,\n this.activeNode.layout.rowStart,\n ctrl ? (previous ? 1 : maxColEnd - 1) : nextColStartNormal\n );\n\n const nextDataViewIndex = parentRow.rowGroup[nextColumnLayout.rowStart - 1].dataIndex\n await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n\n return {\n row: this.activeNode.row,\n column: nextColumnLayout.columnVisibleIndex,\n layout: {\n rowStart: this.activeNode.layout.rowStart,\n rowEnd: nextColumnLayout.rowEnd,\n colStart: nextColumnLayout.colStart,\n colEnd: nextColumnLayout.colEnd,\n columnVisibleIndex: nextColumnLayout.columnVisibleIndex\n } as IMultiRowLayoutNode\n };\n }\n\n private async scrollToNextHorizontalDimRow(nextDataViewIndex: number) {\n const verticalContainer = this.grid.verticalScrollContainer;\n if (verticalContainer.isIndexOutsideView(nextDataViewIndex)) {\n verticalContainer.scrollTo(nextDataViewIndex);\n await new Promise((resolve) => {\n this.grid.gridScroll.pipe(take(1), timeout({ first: 10000 })).subscribe({\n next: (value) => resolve(value),\n error: (err) => resolve(err)\n });\n });\n }\n }\n\n\n private getNextVerticalColumnIndex(nextRow: IgxPivotRowDimensionMrlRowComponent, newRowStart, newColStart) {\n const nextCell = nextRow.contentCells.find(cell => {\n return cell.layout.rowStart <= newRowStart && newRowStart < cell.layout.rowEnd &&\n cell.layout.colStart <= newColStart && newColStart < cell.layout.colEnd;\n });\n return nextCell.layout;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { DimensionValuesFilteringStrategy, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxFilteringService } from 'igniteui-angular/grids/core';\nimport { ColumnType, FilteringExpressionsTree, FilteringLogic, IFilteringExpressionsTree, IFilteringOperation } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxPivotFilteringService extends IgxFilteringService {\n private filtersESFId;\n\n public override clearFilter(field: string): void {\n this.clear_filter(field);\n }\n\n public override clear_filter(fieldName: string) {\n super.clear_filter(fieldName);\n const grid = this.grid;\n const allDimensions = grid.allDimensions;\n const allDimensionsFlat = PivotUtil.flatten(allDimensions);\n const dim = allDimensionsFlat.find(x => x.memberName === fieldName);\n dim.filter = undefined;\n grid.filteringPipeTrigger++;\n if (allDimensions.indexOf(dim) !== -1) {\n // update columns\n (grid as any).setupColumns();\n }\n }\n protected override filter_internal(fieldName: string, term, conditionOrExpressionsTree: IFilteringOperation | IFilteringExpressionsTree,\n ignoreCase: boolean) {\n super.filter_internal(fieldName, term, conditionOrExpressionsTree, ignoreCase);\n const grid = this.grid;\n const config = grid.pivotConfiguration;\n const allDimensions = PivotUtil.flatten(config.rows.concat(config.columns).concat(config.filters).filter(x => x !== null && x !== undefined));\n const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n const dim = enabledDimensions.find(x => x.memberName === fieldName || x.member === fieldName);\n const filteringTree = dim.filter || new FilteringExpressionsTree(FilteringLogic.And);\n const fieldFilterIndex = filteringTree.findIndex(fieldName);\n if (fieldFilterIndex > -1) {\n filteringTree.filteringOperands.splice(fieldFilterIndex, 1);\n }\n\n this.prepare_filtering_expression(filteringTree, fieldName, term, conditionOrExpressionsTree, ignoreCase, fieldFilterIndex);\n dim.filter = filteringTree;\n grid.filteringPipeTrigger++;\n grid.filterStrategy = grid.filterStrategy ?? new DimensionValuesFilteringStrategy();\n if (allDimensions.indexOf(dim) !== -1) {\n // update columns\n (grid as any).setupColumns();\n }\n }\n\n public toggleFiltersESF(dropdown: any, element: HTMLElement, column: ColumnType, shouldReattach: boolean) {\n const filterIcon = column.filteringExpressionsTree ? 'igx-excel-filter__icon--filtered' : 'igx-excel-filter__icon';\n const filterIconTarget = element.querySelector(`.${filterIcon}`) as HTMLElement || element;\n\n const { id, ref } = this.grid.createFilterESF(dropdown, column, {\n ...this._filterMenuOverlaySettings,\n ...{ target: filterIconTarget }\n }, shouldReattach);\n\n this.filtersESFId = id;\n\n if (shouldReattach) {\n this._overlayService.opening\n .pipe(\n first(overlay => overlay.id === id),\n takeUntil(this.destroy$)\n )\n .subscribe(() => this.lastActiveNode = this.grid.navigation.activeNode);\n\n this._overlayService.closed\n .pipe(\n first(overlay => overlay.id === id),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this._overlayService.detach(id);\n ref?.destroy();\n this.grid.navigation.activeNode = this.lastActiveNode;\n this.grid.theadRow.nativeElement.focus();\n });\n\n this.grid.columnPinned.pipe(first()).subscribe(() => ref?.destroy());\n this._overlayService.show(id);\n }\n }\n\n public hideESF() {\n this._overlayService.hide(this.filtersESFId);\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, Input, NgZone, ViewChild } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport {\n IGX_GRID_BASE,\n IgxColumnComponent,\n IgxColumnMovingDragDirective,\n IgxColumnMovingDropDirective,\n IgxGridHeaderGroupComponent,\n IgxHeaderGroupStylePipe,\n IgxPivotColumnResizingService,\n IgxPivotResizeHandleDirective,\n IMultiRowLayoutNode,\n IPivotDimension,\n PivotGridType,\n PivotRowHeaderGroupType\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderComponent } from './pivot-row-dimension-header.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\n\n/**\n * @hidden\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-dimension-header-group',\n templateUrl: './pivot-row-dimension-header-group.component.html',\n imports: [IgxIconComponent, IgxPivotRowDimensionHeaderComponent, NgClass, NgStyle, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxPivotResizeHandleDirective, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowDimensionHeaderGroupComponent extends IgxGridHeaderGroupComponent implements PivotRowHeaderGroupType {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n public override colResizingService = inject(IgxPivotColumnResizingService);\n protected zone = inject(NgZone);\n\n /**\n * @hidden\n */\n @HostBinding('style.user-select')\n public userSelect = 'none';\n\n /**\n * @hidden\n */\n public get role(): string {\n return 'rowheader';\n }\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public rowIndex: number;\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public colIndex: number;\n\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public layout: IMultiRowLayoutNode;\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public parent: any;\n\n @ViewChild(IgxPivotRowDimensionHeaderComponent)\n public override header: IgxPivotRowDimensionHeaderComponent;\n\n @HostBinding('attr.id')\n public override get headerID() {\n return `${this.grid.id}_-2_${this.rowIndex}_${this.visibleIndex}`;\n }\n\n @HostBinding('attr.title')\n public override get title() {\n return this.column.header;\n }\n\n /**\n * @hidden @internal\n */\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent) {\n if (this.grid.rowSelection === 'none') {\n return;\n }\n event?.stopPropagation();\n const key = this.parent.getRowDimensionKey(this.column as IgxColumnComponent);\n if (this.grid.selectionService.isRowSelected(key)) {\n this.grid.selectionService.deselectRow(key, event);\n } else {\n this.grid.selectionService.selectRowById(key, true, event);\n }\n\n this.zone.run(() => {});\n }\n\n /**\n * @hidden\n * @internal\n */\n public get visibleIndex(): number {\n if (this.grid.hasHorizontalLayout) {\n return this.colIndex;\n }\n\n const field = this.column.field;\n const rows = this.grid.rowDimensions;\n const rootDimension = this.findRootDimension(field);\n return rows.indexOf(rootDimension);\n }\n\n @HostBinding('class.igx-grid-th--active')\n public override get active() {\n const nav = this.grid.navigation;\n const node = nav.activeNode;\n return node && !this.column.columnGroup ?\n nav.isRowHeaderActive &&\n node.row === this.rowIndex &&\n node.column === this.visibleIndex :\n false;\n }\n\n protected override get activeNode() {\n this.grid.navigation.isRowHeaderActive = true;\n this.grid.navigation.isRowDimensionHeaderActive = false;\n return {\n row: this.rowIndex, column: this.visibleIndex, level: null,\n mchCache: null,\n layout: this.layout || null\n };\n }\n\n\n protected getHeaderWidthFromDimension() {\n if (this.grid.hasHorizontalLayout) {\n return this.parent.width === -1 ? 'fit-content' : this.width;\n }\n return this.grid.rowDimensionWidth(this.parent.rootDimension);\n }\n\n private findRootDimension(field: string): IPivotDimension {\n const rows = this.grid.rowDimensions;\n let tempRow;\n let result = null;\n rows.forEach(row => {\n tempRow = row;\n do {\n if (tempRow.memberName === field) {\n result = row;\n }\n tempRow = tempRow.childLevel;\n } while (tempRow)\n });\n return result;\n }\n\n\n public override activate() {\n this.grid.navigation.isRowHeader = true;\n this.grid.navigation.setActiveNode(this.activeNode);\n }\n\n /**\n * @hidden @internal\n */\n public override pointerdown(_event: PointerEvent): void {\n this.activate();\n }\n\n /**\n * @hidden @internal\n */\n public override onMouseDown(_event: MouseEvent): void {\n this.activate();\n }\n\n public override get selectable(): boolean {\n return false;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n createComponent,\n EnvironmentInjector,\n HostBinding,\n inject,\n Injector,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport {\n IGX_GRID_BASE,\n IgxColumnComponent,\n IgxGridHeaderRowComponent,\n IgxHeaderGroupStylePipe,\n IMultiRowLayoutNode,\n IPivotDimension,\n IPivotDimensionData,\n IPivotGridGroupRecord,\n PivotGridType,\n PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderGroupComponent } from './pivot-row-dimension-header-group.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-dimension-content',\n templateUrl: './pivot-row-dimension-content.component.html',\n imports: [IgxPivotRowDimensionHeaderGroupComponent, NgClass, NgStyle, IgxIconComponent, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowDimensionContentComponent extends IgxGridHeaderRowComponent implements OnChanges {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n protected injector = inject(Injector);\n protected envInjector = inject(EnvironmentInjector);\n protected viewRef = inject(ViewContainerRef);\n\n @HostBinding('style.grid-row-start')\n public get rowStart(): string {\n return this.layout ? `${this.layout.rowStart}` : \"\";\n }\n\n @HostBinding('style.grid-row-end')\n public get rowsEnd(): string {\n return this.layout ? `${this.layout.rowEnd}` : \"\";\n }\n\n @HostBinding('style.grid-column-start')\n public get colStart(): string {\n return this.layout ? `${this.layout.colStart}` : \"\";\n }\n\n @HostBinding('style.grid-column-end')\n public get colEnd(): string {\n return this.layout ? `${this.layout.colEnd}` : \"\";\n }\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public rowIndex: number;\n\n /**\n * @hidden\n * @internal\n */\n @Input()\n public colIndex: number;\n\n @Input()\n public layout: IMultiRowLayoutNode;\n\n @Input()\n public dimension: IPivotDimension;\n\n @Input()\n public rootDimension: IPivotDimension;\n\n @Input()\n public rowData: IPivotGridGroupRecord;\n\n /**\n * @hidden @internal\n */\n @ViewChild('headerTemplate', { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n /**\n * @hidden @internal\n */\n @ViewChild('headerDefaultTemplate', { read: TemplateRef, static: true })\n public headerTemplateDefault: TemplateRef<any>;\n\n @ViewChildren(IgxPivotRowDimensionHeaderGroupComponent)\n public headerGroups: QueryList<IgxPivotRowDimensionHeaderGroupComponent>\n\n /**\n * @hidden @internal\n */\n public rowDimensionData: IPivotDimensionData;\n\n public get rowDimensionColumn() {\n return this.rowDimensionData?.column;\n }\n\n /**\n * @hidden\n * @internal\n */\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.rowData) {\n // generate new rowDimension on row data change\n this.rowDimensionData = null;\n this.viewRef.clear();\n this.extractFromDimensions();\n this.viewRef.clear();\n }\n if (changes.width && this.rowDimensionData) {\n const data = this.rowDimensionData;\n data.column.width = this.grid.rowDimensionWidthToPixels(this.rootDimension) + 'px';\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public toggleRowDimension(event) {\n this.grid.toggleRow(this.getRowDimensionKey());\n this.grid.navigation.onRowToggle(this.getExpandState(), this.dimension, this.rowData, this.layout);\n event?.stopPropagation();\n }\n\n\n /**\n * @hidden\n * @internal\n */\n public getRowDimensionKey() {\n const dimData = this.rowDimensionData;\n const key = PivotUtil.getRecordKey(this.rowData, dimData.dimension);\n return key;\n }\n\n public getExpandState() {\n return this.grid.gridAPI.get_row_expansion_state(this.getRowDimensionKey());\n }\n\n public getLevel() {\n return this.grid.hasHorizontalLayout ? 0 : this.dimension.level;\n }\n\n protected extractFromDimensions() {\n if (this.dimension && this.rowData) {\n const col = this.extractFromDimension(this.dimension, this.rowData);\n const prevDims = [];\n this.rowDimensionData = {\n column: col,\n dimension: this.dimension,\n prevDimensions: prevDims\n };\n }\n }\n\n protected extractFromDimension(dim: IPivotDimension, rowData: IPivotGridGroupRecord) {\n const field = dim.memberName;\n const header = rowData?.dimensionValues.get(field);\n const col = this._createColComponent(field, header, dim);\n return col;\n }\n\n protected _createColComponent(field: string, header: string, dim: IPivotDimension) {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector});\n ref.instance.field = field;\n ref.instance.header = header;\n ref.instance.width = this.grid.rowDimensionWidthToPixels(this.rootDimension) + 'px';\n ref.instance.resizable = this.grid.rowDimensionResizing;\n (ref as any).instance._vIndex = this.grid.columns.length + this.rowIndex + this.rowIndex * this.grid.pivotConfiguration.rows.length;\n\n\n if (header && dim.childLevel && (!this.rowData.totalRecordDimensionName || this.rowData.totalRecordDimensionName !== dim.memberName)) {\n ref.instance.headerTemplate = this.headerTemplate;\n } else {\n ref.instance.headerTemplate = this.headerTemplateDefault;\n }\n return ref.instance;\n }\n}\n","<div class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n <div class=\"igx-grid__tr igx-grid__tr-header-row\" role=\"row\" [style.width.px]=\"width\">\n <igx-pivot-row-dimension-header-group [ngClass]=\"rowDimensionColumn.headerGroupClasses\"\n [ngStyle]=\"rowDimensionColumn.headerGroupStyles | igxHeaderGroupStyle:rowDimensionColumn:grid.pipeTrigger\" [column]=\"rowDimensionColumn\"\n [rowIndex]=\"rowIndex\"\n [colIndex]=\"colIndex\"\n [layout]=\"layout\"\n [parent]='this'>\n </igx-pivot-row-dimension-header-group>\n </div>\n</div>\n\n<ng-template #headerTemplate let-column>\n <div class='igx-grid__tr--header igx-grid__row-indentation--level-{{getLevel()}}'>\n <igx-icon\n family=\"default\"\n [name]=\"getExpandState() ? 'tree_collapse' : 'tree_expand'\"\n [attr.draggable]=\"false\"\n (click)=\"toggleRowDimension($event)\"\n >\n </igx-icon>\n {{column.header}}\n </div>\n</ng-template>\n\n<ng-template #headerDefaultTemplate let-column>\n <div class='igx-grid__tr--header igx-grid__row-indentation--level-{{getLevel()}}' style=\"--component-size: 3\">\n <!--Using the igx-icon as a sizable spacer spacer here-->\n <igx-icon style='flex-shrink: 0;' [attr.draggable]=\"false\"></igx-icon>\n {{column.header}}\n </div>\n</ng-template>\n","import { parseDate } from 'igniteui-angular/core';\nimport { GridColumnDataType } from 'igniteui-angular/core';\nimport { DefaultSortingStrategy, SortingDirection } from 'igniteui-angular/core';\nimport { IPivotGridRecord, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\n\nexport class DefaultPivotGridRecordSortingStrategy extends DefaultSortingStrategy {\n protected static override _instance: DefaultPivotGridRecordSortingStrategy = null;\n public static override instance(): DefaultPivotGridRecordSortingStrategy {\n return this._instance || (this._instance = new this());\n }\n public override sort(data: any[],\n fieldName: string,\n dir: SortingDirection,\n ignoreCase: boolean,\n valueResolver: (obj: any, key: string, isDate?: boolean) => any,\n isDate?: boolean,\n isTime?: boolean,\n _grid?: PivotGridType) {\n return super.sort(data, fieldName, dir, ignoreCase, this.getFieldValue, isDate, isTime);\n }\n\n protected getFieldValue(obj: IPivotGridRecord, key: string, _isDate = false, _isTime = false): any {\n return obj.aggregationValues.get(key);\n }\n}\n\n\nexport class DefaultPivotSortingStrategy extends DefaultSortingStrategy {\n protected static override _instance: DefaultPivotSortingStrategy = null;\n protected dimension;\n public static override instance(): DefaultPivotSortingStrategy {\n return this._instance || (this._instance = new this());\n }\n public override sort(data: any[],\n fieldName: string,\n dir: SortingDirection,\n ignoreCase: boolean,\n valueResolver: (obj: any, key: string, isDate?: boolean) => any,\n isDate?: boolean,\n isTime?: boolean,\n grid?: PivotGridType) {\n const key = fieldName;\n const allDimensions = grid.allDimensions;\n const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n this.dimension = PivotUtil.flatten(enabledDimensions).find(x => x.memberName === key);\n return super.sort(data, key, dir, ignoreCase, this.getFieldValue, isDate, isTime);\n }\n\n protected getFieldValue(obj: any, key: string, _isDate = false, isTime = false): any {\n let resolvedValue = PivotUtil.extractValueFromDimension(this.dimension, obj) || obj[0];\n const formatAsDate = this.dimension.dataType === GridColumnDataType.Date || this.dimension.dataType === GridColumnDataType.DateTime;\n if (formatAsDate) {\n const date = parseDate(resolvedValue);\n resolvedValue = isTime && date ?\n new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) : date;\n\n }\n return resolvedValue;\n }\n}\n","import { ISortingExpression, SortingDirection } from 'igniteui-angular/core';\nimport { IPivotDimension, PivotUtil } from 'igniteui-angular/grids/core';\nimport { DefaultPivotSortingStrategy } from './pivot-sort-strategy';\n\nexport class PivotSortUtil {\n public static generateDimensionSortingExpressions(dimensions: IPivotDimension[]): ISortingExpression[] {\n const expressions: ISortingExpression[] = [];\n PivotUtil.flatten(dimensions).forEach(x => {\n if (x.sortDirection) {\n expressions.push({\n dir: x.sortDirection,\n fieldName: x.memberName,\n strategy: DefaultPivotSortingStrategy.instance()\n });\n } else {\n expressions.push({\n dir: SortingDirection.None,\n fieldName: x.memberName,\n strategy: DefaultPivotSortingStrategy.instance()\n });\n }\n });\n return expressions;\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { IgxColumnTemplateContext, IgxPivotGridValueTemplateContext } from 'igniteui-angular/grids/core';\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxPivotValueChip]',\n standalone: true\n})\nexport class IgxPivotValueChipTemplateDirective {\n public template = inject<TemplateRef<IgxPivotGridValueTemplateContext>>(TemplateRef);\n\n public static ngTemplateContextGuard(_directive: IgxPivotValueChipTemplateDirective,\n context: unknown): context is IgxPivotGridValueTemplateContext {\n return true;\n }\n}\n\n/**\n * @hidden\n */\n@Directive({\n selector: '[igxPivotRowDimensionHeader]',\n standalone: true\n})\nexport class IgxPivotRowDimensionHeaderTemplateDirective {\n public template = inject<TemplateRef<IgxColumnTemplateContext>>(TemplateRef);\n\n public static ngTemplateContextGuard(_directive: IgxPivotRowDimensionHeaderTemplateDirective,\n context: unknown): context is IgxColumnTemplateContext {\n return true;\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport {\n DEFAULT_PIVOT_KEYS,\n DimensionValuesFilteringStrategy,\n GridBaseAPIService,\n GridType,\n IGX_GRID_BASE,\n IPivotConfiguration,\n IPivotDimension,\n IPivotGridColumn,\n IPivotGridGroupRecord,\n IPivotGridHorizontalGroup,\n IPivotGridRecord,\n IPivotKeys,\n IPivotValue,\n PivotColumnDimensionsStrategy,\n PivotGridType,\n PivotRowDimensionsStrategy,\n PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { cloneArray, columnFieldPath, DataUtil, FilteringExpressionsTree, FilterUtil, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringStrategy, IGridSortingStrategy, ISortingExpression, resolveNestedPath } from 'igniteui-angular/core';\nimport { IgxGridBaseDirective } from 'igniteui-angular/grids/grid';\nimport { PivotSortUtil } from './pivot-sort-util';\nimport { DefaultPivotGridRecordSortingStrategy } from './pivot-sort-strategy';\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridRow',\n pure: true,\n standalone: true\n})\nexport class IgxPivotRowPipe implements PipeTransform {\n private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n\n public transform(\n collection: any,\n config: IPivotConfiguration,\n cloneStrategy: IDataCloneStrategy,\n _: Map<any, boolean>,\n _pipeTrigger?: number,\n __?\n ): IPivotGridRecord[] {\n const pivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n const enabledRows = config.rows?.filter(x => x.enabled) || [];\n const enabledColumns = config.columns?.filter(x => x.enabled) || [];\n const enabledValues = config.values?.filter(x => x.enabled) || [];\n if (enabledRows.length === 0 && enabledColumns.length === 0 && enabledValues.length === 0) {\n // nothing to group and aggregate by ...\n return [];\n }\n const rowStrategy = config.rowStrategy || PivotRowDimensionsStrategy.instance();\n const data = cloneArray(collection, true);\n return rowStrategy.process(data, enabledRows, config.values, cloneStrategy, pivotKeys);\n }\n}\n\n/**\n * @hidden\n * Transforms generic array data into IPivotGridRecord[]\n */\n@Pipe({\n name: 'pivotGridAutoTransform',\n pure: true,\n standalone: true\n})\nexport class IgxPivotAutoTransform implements PipeTransform {\n public transform(\n collection: any[],\n config: IPivotConfiguration,\n _pipeTrigger?: number,\n __?,\n ): IPivotGridRecord[] {\n let needsTransformation = false;\n if (collection.length > 0) {\n needsTransformation = !this.isPivotRecord(collection[0]);\n }\n\n if (!needsTransformation) return collection;\n\n const res = this.processCollectionToPivotRecord(config, collection);\n return res;\n }\n\n protected isPivotRecord(arg: IPivotGridRecord): arg is IPivotGridRecord {\n return !!(arg as IPivotGridRecord).aggregationValues;\n }\n\n protected processCollectionToPivotRecord(config: IPivotConfiguration, collection: any[]): IPivotGridRecord[] {\n const pivotKeys: IPivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n const enabledRows = config.rows.filter(x => x.enabled);\n const allFlat: IPivotDimension[] = PivotUtil.flatten(enabledRows);\n const result: IPivotGridRecord[] = [];\n for (const rec of collection) {\n const pivotRec: IPivotGridRecord = {\n dimensionValues: new Map<string, string>(),\n aggregationValues: new Map<string, string>(),\n children: new Map<string, IPivotGridRecord[]>(),\n dimensions: []\n };\n const keys = Object.keys(rec)\n for (const key of keys) {\n const dim = allFlat.find(x => x.memberName === key);\n if (dim) {\n //field has matching dimension\n pivotRec.dimensions.push(dim);\n pivotRec.dimensionValues.set(key, rec[key]);\n } else if (key.indexOf(pivotKeys.rowDimensionSeparator + pivotKeys.records) !== -1) {\n // field that contains child collection\n const dimKey = key.slice(0, key.indexOf(pivotKeys.rowDimensionSeparator + pivotKeys.records));\n const childData = rec[key];\n const childPivotData = this.processCollectionToPivotRecord(config, childData);\n pivotRec.children.set(dimKey, childPivotData);\n } else {\n // an aggregation\n pivotRec.aggregationValues.set(key, rec[key]);\n }\n }\n const flattened = PivotUtil.flatten(config.rows);\n pivotRec.dimensions.sort((x, y) => flattened.indexOf(x) - flattened.indexOf(y));\n result.push(pivotRec);\n }\n return result;\n }\n\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridRowExpansion',\n pure: true,\n standalone: true\n})\nexport class IgxPivotRowExpansionPipe implements PipeTransform {\n private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n expansionStates: Map<any, boolean>,\n defaultExpand: boolean,\n _pipeTrigger?: number,\n __?,\n ): IPivotGridRecord[] {\n const enabledRows = config.rows?.filter(x => x.enabled) || [];\n const data = collection ? cloneArray(collection, true) : [];\n const horizontalRowDimensions = [];\n for (const row of enabledRows) {\n if (this.grid?.hasHorizontalLayout) {\n PivotUtil.flattenGroupsHorizontally(\n data,\n row,\n expansionStates,\n defaultExpand,\n horizontalRowDimensions,\n this.grid.pivotUI.horizontalSummariesPosition\n );\n } else {\n PivotUtil.flattenGroups(data, row, expansionStates, defaultExpand);\n }\n }\n\n let finalData = data;\n if (this.grid?.hasHorizontalLayout) {\n const allRowDims = PivotUtil.flatten(this.grid.rowDimensions);\n this.grid.visibleRowDimensions = allRowDims.filter((rowDim) => horizontalRowDimensions.some(targetDim => targetDim.memberName === rowDim.memberName));\n } else {\n if (this.grid) {\n this.grid.visibleRowDimensions = enabledRows;\n }\n finalData = enabledRows.length > 0 ?\n finalData.filter(x => x.dimensions.length === enabledRows.length) : finalData;\n }\n\n if (this.grid) {\n this.grid.setFilteredSortedData(finalData, false);\n }\n return finalData;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridCellMerging',\n pure: true,\n standalone: true\n})\nexport class IgxPivotCellMergingPipe implements PipeTransform {\n private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n dim: IPivotDimension,\n _pipeTrigger?: number\n ): IPivotGridGroupRecord[] {\n if (collection.length === 0 || config.rows.length === 0) return collection;\n const data: IPivotGridGroupRecord[] = collection ? cloneArray(collection, true) : [];\n const res: IPivotGridGroupRecord[] = [];\n\n let groupData: IPivotGridGroupRecord[] = [];\n let prevId;\n const enabledRows = this.grid.hasHorizontalLayout ? (this.grid as any).visibleRowDimensions : config.rows?.filter(x => x.enabled);\n const dimIndex = enabledRows.indexOf(dim);\n for (const rec of data) {\n let currentDim;\n if (this.grid.hasHorizontalLayout) {\n currentDim = dim;\n rec.dimensions = enabledRows;\n } else {\n currentDim = rec.dimensions[dimIndex];\n }\n\n const id = PivotUtil.getRecordKey(rec, currentDim);\n if (groupData.length > 0 && prevId !== id) {\n const h = groupData.length > 1 ? groupData.length * this.grid.renderedRowHeight : undefined;\n groupData[0].height = h;\n groupData[0].rowSpan = groupData.length;\n res.push(groupData[0]);\n groupData = [];\n }\n groupData.push(rec);\n prevId = id;\n }\n if (groupData.length > 0) {\n const h = groupData.length > 1 ? groupData.length * this.grid.rowHeight + (groupData.length - 1) + 1 : undefined;\n groupData[0].height = h;\n groupData[0].rowSpan = groupData.length;\n res.push(groupData[0]);\n }\n return res;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: \"pivotGridHorizontalRowGrouping\",\n standalone: true\n})\nexport class IgxPivotGridHorizontalRowGrouping implements PipeTransform {\n private grid = inject<GridType>(IGX_GRID_BASE);\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n _pipeTrigger?: number,\n _regroupTrigger?: number\n ): IPivotGridRecord[][] {\n if (collection.length === 0 || config.rows.length === 0) return null;\n const data: IPivotGridRecord[] = collection ? cloneArray(collection, true) : [];\n const res: IPivotGridRecord[][] = [];\n\n const groupDim = config.rows.filter(dim => dim.enabled)[0];\n let curGroup = [];\n let curGroupValue = data[0].dimensionValues.get(groupDim.memberName);\n for (const [index, curRec] of data.entries()) {\n curRec.dataIndex = index;\n const curRecValue = curRec.dimensionValues.get(groupDim.memberName);\n if (curGroup.length === 0 || curRecValue === curGroupValue) {\n curGroup.push(curRec);\n } else {\n curGroup[\"height\"] = this.grid.renderedRowHeight * curGroup.length;\n res.push(curGroup);\n curGroup = [curRec];\n curGroupValue = curRecValue;\n }\n }\n res.push(curGroup);\n\n return res;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: \"pivotGridHorizontalRowCellMerging\",\n standalone: true\n})\nexport class IgxPivotGridHorizontalRowCellMerging implements PipeTransform {\n private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n _pipeTrigger?: number\n ): IPivotGridHorizontalGroup[] {\n if (collection.length === 0 || config.rows.length === 0) return [{\n colStart: 1,\n colSpan: 1,\n rowStart: 1,\n rowSpan: 1,\n records: collection\n }];\n const data: IPivotGridRecord[] = collection ? cloneArray(collection, true) : [];\n const res: IPivotGridHorizontalGroup[] = [];\n\n // Merge vertically for each row dimension.\n const verticalMergeGroups: IPivotGridHorizontalGroup[][] = [...data.map(_ => [])];\n for (let dimIndex = 0; dimIndex < this.grid.visibleRowDimensions.length; dimIndex++) {\n const curDim = this.grid.visibleRowDimensions[dimIndex];\n let curGroup: IPivotGridHorizontalGroup = {\n colStart: dimIndex + 1,\n colSpan: 1,\n rowStart: 1,\n rowSpan: 1,\n value: data[0].dimensionValues.get(curDim.memberName),\n rootDimension: curDim,\n dimensions: [curDim],\n records: [data[0]]\n };\n for (let i = 1; i < data.length; i++) {\n const curRec = data[i];\n const curRecValue = curRec.dimensionValues.get(curDim.memberName);\n const previousRowCell = verticalMergeGroups[i][verticalMergeGroups[i].length - 1];\n if (curRecValue === curGroup.value && !previousRowCell) {\n // If previousRowCell is non existing, its merged so we can push in this vertigal group as well.\n curGroup.rowSpan++;\n curGroup.records.push(curRec);\n } else {\n verticalMergeGroups[curGroup.rowStart - 1].push(curGroup);\n curGroup = {\n colStart: dimIndex + 1,\n colSpan: 1,\n rowStart: curGroup.rowStart + curGroup.rowSpan,\n rowSpan: 1,\n value: curRec.dimensionValues.get(curDim.memberName),\n rootDimension: curDim,\n dimensions: [curDim],\n records: [curRec]\n };\n }\n }\n\n verticalMergeGroups[curGroup.rowStart - 1].push(curGroup);\n }\n\n // Merge rows in a single array\n const sortedGroups = verticalMergeGroups.reduce((prev, cur) => prev.concat(...cur), []);\n\n // Horizontally merge any groups that can be merged or have been\n res.push(sortedGroups[0]);\n let prevGroup = sortedGroups[0];\n for (let i = 1; i < sortedGroups.length; i++) {\n const curGroup = sortedGroups[i];\n if (curGroup.value && prevGroup.value !== curGroup.value) {\n prevGroup = curGroup;\n res.push(curGroup);\n } else {\n prevGroup.dimensions.push(curGroup.rootDimension);\n prevGroup.colSpan++;\n }\n }\n\n return res;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridColumn',\n pure: true,\n standalone: true\n})\nexport class IgxPivotColumnPipe implements PipeTransform {\n\n public transform(\n collection: IPivotGridRecord[],\n config: IPivotConfiguration,\n cloneStrategy: IDataCloneStrategy,\n _: Map<any, boolean>,\n _pipeTrigger?: number,\n __?\n ): IPivotGridRecord[] {\n const pivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n const enabledColumns = config.columns?.filter(x => x.enabled) || [];\n const enabledValues = config.values?.filter(x => x.enabled) || [];\n\n const colStrategy = config.columnStrategy || PivotColumnDimensionsStrategy.instance();\n const data = cloneArray(collection, true);\n return colStrategy.process(data, enabledColumns, enabledValues, cloneStrategy, pivotKeys);\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridFilter',\n pure: true,\n standalone: true\n})\nexport class IgxPivotGridFilterPipe implements PipeTransform {\n private gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n\n public transform(collection: any[],\n config: IPivotConfiguration,\n filterStrategy: IFilteringStrategy,\n advancedExpressionsTree: IFilteringExpressionsTree,\n _filterPipeTrigger: number,\n _pipeTrigger: number): any[] {\n const expressionsTree = PivotUtil.buildExpressionTree(config);\n\n const state = {\n expressionsTree,\n strategy: filterStrategy || new DimensionValuesFilteringStrategy(),\n advancedExpressionsTree\n };\n\n if (FilteringExpressionsTree.empty(state.expressionsTree) && FilteringExpressionsTree.empty(state.advancedExpressionsTree)) {\n return collection;\n }\n\n const result = FilterUtil.filter(cloneArray(collection, true), state, this.gridAPI.grid);\n\n return result;\n }\n}\n\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridColumnSort',\n pure: true,\n standalone: true\n})\nexport class IgxPivotGridColumnSortingPipe implements PipeTransform {\n public transform(\n collection: IPivotGridRecord[],\n expressions: ISortingExpression[],\n sorting: IGridSortingStrategy,\n _pipeTrigger: number\n ): IPivotGridRecord[] {\n let result: IPivotGridRecord[];\n\n if (!expressions.length) {\n result = collection;\n } else {\n for (const expr of expressions) {\n expr.strategy = DefaultPivotGridRecordSortingStrategy.instance();\n }\n result = PivotUtil.sort(cloneArray(collection), expressions, sorting);\n }\n return result;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'pivotGridSort',\n pure: true,\n standalone: true\n})\nexport class IgxPivotGridSortingPipe implements PipeTransform {\n private gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n\n public transform(collection: any[], config: IPivotConfiguration, sorting: IGridSortingStrategy, _pipeTrigger: number): any[] {\n let result: any[];\n const allDimensions = config.rows || [];\n const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n const expressions = PivotSortUtil.generateDimensionSortingExpressions(enabledDimensions);\n if (!expressions.length) {\n result = collection;\n } else {\n result = DataUtil.sort(cloneArray(collection), expressions, sorting, this.gridAPI.grid);\n }\n\n return result;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: \"filterPivotItems\",\n standalone: true\n})\nexport class IgxFilterPivotItemsPipe implements PipeTransform {\n public transform(\n collection: (IPivotDimension | IPivotValue)[],\n filterCriteria: string,\n _pipeTrigger: number\n ): any[] {\n if (!collection) {\n return collection;\n }\n let copy = collection.slice(0);\n if (filterCriteria && filterCriteria.length > 0) {\n const filterFunc = (c) => {\n const filterText = c.member || c.memberName;\n if (!filterText) {\n return false;\n }\n return (\n filterText\n .toLocaleLowerCase()\n .indexOf(filterCriteria.toLocaleLowerCase()) >= 0 ||\n (c.children?.some(filterFunc) ?? false)\n );\n };\n copy = collection.filter(filterFunc);\n }\n return copy;\n }\n}\n\nexport interface GridStyleCSSProperty {\n [prop: string]: any;\n}\n\n@Pipe({\n name: 'igxPivotCellStyleClasses',\n standalone: true\n})\nexport class IgxPivotGridCellStyleClassesPipe implements PipeTransform {\n\n public transform(cssClasses: GridStyleCSSProperty, _: any, rowData: IPivotGridRecord, columnData: IPivotGridColumn, index: number, __: number): string {\n if (!cssClasses) {\n return '';\n }\n\n const result = [];\n const pathParts = columnFieldPath(columnData.field);\n\n for (const cssClass of Object.keys(cssClasses)) {\n const callbackOrValue = cssClasses[cssClass];\n const apply = typeof callbackOrValue === 'function' ?\n callbackOrValue(rowData, columnData, resolveNestedPath(rowData, pathParts), index) : callbackOrValue;\n if (apply) {\n result.push(cssClass);\n }\n }\n\n return result.join(' ');\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n HostBinding, inject, Input, ViewContainerRef\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\nimport {\n IGX_GRID_BASE,\n IgxColumnComponent,\n IgxGridCellComponent,\n IgxGridCellStylesPipe,\n IgxGridNotGroupedPipe,\n IgxGridTransactionStatePipe,\n IgxRowDirective,\n IPivotGridColumn,\n IPivotGridRecord,\n PivotGridType,\n PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotGridCellStyleClassesPipe } from './pivot-grid.pipes';\nimport { IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row',\n templateUrl: './pivot-row.component.html',\n providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }],\n imports: [IgxGridForOfDirective, IgxGridCellComponent, NgClass, NgStyle, IgxCheckboxComponent, IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridTransactionStatePipe, IgxPivotGridCellStyleClassesPipe]\n})\nexport class IgxPivotRowComponent extends IgxRowDirective {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n protected viewRef = inject(ViewContainerRef);\n\n /**\n * @hidden\n */\n @Input()\n @HostBinding('attr.aria-selected')\n public override get selected(): boolean {\n let isSelected = false;\n for (const rowDim of this.data.dimensions) {\n const key = PivotUtil.getRecordKey(this.data, rowDim);\n if (this.selectionService.isPivotRowSelected(key)) {\n isSelected = true;\n }\n }\n return isSelected;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override get viewIndex(): number {\n return this.index;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override disabled = false;\n\n /**\n * @hidden\n * @internal\n */\n public override get addRowUI(): any {\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override get inEditMode(): boolean {\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override set pinned(_value: boolean) {\n }\n\n public override get pinned(): boolean {\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override delete() {\n }\n\n /**\n * @hidden\n * @internal\n */\n public override beginAddRow() {\n }\n\n /**\n * @hidden\n * @internal\n */\n public override update(_value: any) {\n }\n\n /**\n * @hidden\n * @internal\n */\n public override pin() {\n return false;\n }\n\n /**\n * @hidden\n * @internal\n */\n public override unpin() {\n return false;\n }\n\n /**\n * The pivot record data passed to the row component.\n *\n * ```typescript\n * // get the pivot row data for the first selected row\n * let selectedRowData = this.grid.selectedRows[0].data;\n * ```\n */\n @Input()\n public override get data(): IPivotGridRecord {\n return this._data;\n }\n\n public override set data(v: IPivotGridRecord) {\n this._data = v;\n }\n\n /**\n * @hidden\n * @internal\n */\n public get pivotAggregationData() {\n const aggregations = this.data.aggregationValues;\n const obj = {};\n aggregations.forEach((value, key) => {\n obj[key] = value;\n });\n return obj;\n }\n\n public getCellClass(col: IgxColumnComponent) {\n const values = this.grid.values;\n if (values.length === 1) {\n return values[0].styles;\n }\n const colName = col.field.split(this.grid.pivotKeys.columnDimensionSeparator);\n const measureName = colName[colName.length - 1];\n return values.find(v => v.member === measureName)?.styles;\n }\n\n public override isCellActive(visibleColumnIndex) {\n const nav = this.grid.navigation\n const node = nav.activeNode;\n return node && Object.keys(node).length !== 0 ?\n !nav.isRowHeaderActive &&\n !nav.isRowDimensionHeaderActive &&\n super.isCellActive(visibleColumnIndex) :\n false;\n }\n\n public getColumnData(col: IgxColumnComponent) : IPivotGridColumn {\n const path = col.field.split(this.grid.pivotKeys.columnDimensionSeparator);\n const keyValueMap = new Map<string, string>();\n const colDimensions = PivotUtil.flatten(this.grid.columnDimensions);\n for (const dim of colDimensions) {\n keyValueMap.set(dim.memberName, path.shift());\n }\n let pivotValue;\n if (this.grid.hasMultipleValues && path.length) {\n pivotValue = this.grid.values.find(x => x.member === path[0]);\n } else {\n pivotValue = this.grid.values ? this.grid.values[0] : undefined;\n }\n return {\n field: col.field,\n dimensions: this.grid.columnDimensions,\n dimensionValues: keyValueMap,\n value: pivotValue\n };\n }\n}\n","<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field]\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n","import {\n ChangeDetectionStrategy,\n Component,\n EnvironmentInjector,\n HostBinding,\n inject,\n Injector,\n Input,\n QueryList,\n ViewChildren,\n ViewContainerRef\n} from '@angular/core';\nimport { IGX_GRID_BASE, IPivotDimension, IPivotDimensionData, IPivotGridHorizontalGroup, IPivotGridRecord, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxGridHeaderRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-content.component';\nimport { IgxPivotGridHorizontalRowCellMerging } from './pivot-grid.pipes';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-pivot-row-dimension-mrl-row',\n templateUrl: './pivot-row-dimension-mrl-row.component.html',\n imports: [IgxPivotRowDimensionContentComponent, IgxPivotGridHorizontalRowCellMerging]\n})\nexport class IgxPivotRowDimensionMrlRowComponent extends IgxGridHeaderRowComponent {\n public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n protected injector = inject(Injector);\n protected envInjector = inject(EnvironmentInjector);\n protected viewRef = inject(ViewContainerRef);\n\n @ViewChildren(IgxPivotRowDimensionContentComponent)\n public rowDimensionContentCollection: QueryList<IgxPivotRowDimensionContentComponent>;\n\n @HostBinding('class.igx-grid__tbody-pivot-dimension')\n public pivotDim = true;\n\n @HostBinding('class.igx-grid__mrl-block')\n public mrlBlock = true;\n\n @HostBinding('style.grid-template-rows')\n public get rowsTemplate(): string {\n return this.getRowMRLTemplate(true, this.rowGroup);\n }\n\n @HostBinding('style.grid-template-columns')\n public get colsTemplate(): string {\n return this.getRowMRLTemplate(false, this.rowGroup);\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public rowIndex: number;\n\n /**\n * @hidden @internal\n */\n @Input()\n public rowGroup: IPivotGridRecord[];\n\n /**\n * @hidden @internal\n */\n @Input()\n public groupedData: IPivotGridRecord[][];\n\n /**\n * @hidden @internal\n */\n @ViewChildren(IgxPivotRowDimensionContentComponent)\n public contentCells: QueryList<IgxPivotRowDimensionContentComponent>\n\n /**\n * @hidden @internal\n */\n public rowDimensionData: IPivotDimensionData;\n\n protected getRowMRLTemplate(forRows: boolean, rows: IPivotGridRecord[]) {\n if (forRows) {\n return `repeat(${rows.length},1fr)`;\n } else if (this.grid.visibleRowDimensions && this.grid.dimensionDataColumns) {\n const res = [];\n this.grid.visibleRowDimensions.forEach(dim => {\n res.push(this.grid.rowDimensionWidth(dim));\n });\n return res.join(' ');\n }\n }\n\n public rowDimensionWidthCombined(dims: IPivotDimension[]) {\n let resWidth = 0;\n for (const dim of (dims || [])) {\n const rowDimWidth = this.grid.rowDimensionWidth(dim);\n if (rowDimWidth === 'fit-content') {\n return -1;\n } else {\n resWidth += parseFloat(rowDimWidth);\n }\n }\n return resWidth;\n }\n\n protected getGroupKey(group: IPivotGridHorizontalGroup) {\n const rec = group.records[0];\n const key = PivotUtil.getRecordKey(rec, group.rootDimension);\n return key;\n }\n}\n","@for (\n cell of rowGroup | pivotGridHorizontalRowCellMerging:grid.pivotConfiguration:grid.pipeTrigger;\n track getGroupKey(cell); let cellIndex = $index\n) {\n <igx-pivot-row-dimension-content class=\"igx-grid-thead\"\n [grid]=\"grid\"\n [dimension]=\"cell.rootDimension\"\n [rootDimension]=\"cell.rootDimension\"\n [rowIndex]=\"rowIndex\"\n [colIndex]=\"cellIndex\"\n [rowData]=\"cell.records[0]\"\n [width]=\"rowDimensionWidthCombined(cell.dimensions)\"\n [layout]=\"{\n rowStart: cell.rowStart,\n rowEnd: cell.rowStart + cell.rowSpan,\n colStart: cell.colStart,\n colEnd: cell.colStart + cell.colSpan,\n columnVisibleIndex: cellIndex\n }\">\n </igx-pivot-row-dimension-content>\n}\n","import { PivotUtil, RowType } from 'igniteui-angular/grids/core';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\n\n\nexport class IgxPivotGridRow implements RowType {\n\n /** The index of the row within the grid */\n public index: number;\n\n /**\n * The grid that contains the row.\n */\n public grid: IgxPivotGridComponent;\n private _data?: any;\n\n constructor(grid: IgxPivotGridComponent, index: number, data?: any) {\n this.grid = grid;\n this.index = index;\n this._data = data && data.addRow && data.recordRef ? data.recordRef : data;\n }\n\n /**\n * The data passed to the row component.\n */\n public get data(): any {\n return this._data ?? this.grid.dataView[this.index];\n }\n\n /**\n * Returns the view index calculated per the grid page.\n */\n public get viewIndex(): number {\n return this.index + this.grid.page * this.grid.perPage;\n }\n\n /**\n * Gets the row key.\n * A row in the grid is identified either by:\n * - primaryKey data value,\n * - the whole rowData, if the primaryKey is omitted.\n *\n * ```typescript\n * let rowKey = row.key;\n * ```\n */\n public get key(): any {\n const dimension = this.grid.visibleRowDimensions[this.grid.visibleRowDimensions.length - 1];\n const recordKey = PivotUtil.getRecordKey(this.data, dimension);\n return recordKey ? recordKey : null;\n }\n\n /**\n * Gets whether the row is selected.\n * Default value is `false`.\n * ```typescript\n * row.selected = true;\n * ```\n */\n public get selected(): boolean {\n return this.grid.selectionService.isRowSelected(this.key);\n }\n\n public set selected(val: boolean) {\n if (val) {\n this.grid.selectionService.selectRowsWithNoEvent([this.key]);\n } else {\n this.grid.selectionService.deselectRowsWithNoEvent([this.key]);\n }\n this.grid.cdr.markForCheck();\n }\n}\n","import { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, ElementRef, HostBinding, Input, OnInit, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ContentChild, createComponent, CUSTOM_ELEMENTS_SCHEMA, booleanAttribute, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\n\nimport { first, take, takeUntil } from 'rxjs/operators';\nimport { DEFAULT_PIVOT_KEYS, IDimensionsChange, IgxFilteringService, IgxGridNavigationService, IgxGridValidationService, IgxPivotDateDimension, IgxPivotGridValueTemplateContext, IPivotConfiguration, IPivotConfigurationChangedEventArgs, IPivotDimension, IPivotUISettings, IPivotValue, IValuesChange, PivotDimensionType, PivotRowLayoutType, PivotSummaryPosition, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxGridSelectionService } from 'igniteui-angular/grids/core';\nimport { GridType, IGX_GRID_BASE, IGX_GRID_SERVICE_BASE, IgxColumnTemplateContext, PivotGridType, RowType } from 'igniteui-angular/grids/core';\nimport { IgxGridCRUDService } from 'igniteui-angular/grids/core';\nimport { IgxGridSummaryService } from 'igniteui-angular/grids/core';\nimport { IgxPivotHeaderRowComponent } from './pivot-header-row.component';\nimport { IgxColumnGroupComponent } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent } from 'igniteui-angular/grids/core';\nimport { FilterMode, GridPagingMode, GridSummaryPosition } from 'igniteui-angular/grids/core';\nimport { WatchChanges } from 'igniteui-angular/grids/core';\nimport { cloneArray, ColumnType, DataUtil, DefaultDataCloneStrategy, GridColumnDataType, GridSummaryCalculationMode, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringOperation, IFilteringStrategy, ISortingExpression, OverlaySettings, resizeObservable, ɵSize, SortingDirection, IgxOverlayOutletDirective } from 'igniteui-angular/core';\nimport {\n IGridEditEventArgs,\n ICellPosition,\n IColumnMovingEndEventArgs, IColumnMovingEventArgs, IColumnMovingStartEventArgs,\n IColumnVisibilityChangedEventArgs,\n IGridEditDoneEventArgs,\n IGridToolbarExportEventArgs,\n IPinColumnCancellableEventArgs,\n IPinColumnEventArgs,\n IPinRowEventArgs,\n IRowDataCancelableEventArgs,\n IRowDataEventArgs,\n IRowDragEndEventArgs,\n IRowDragStartEventArgs\n} from 'igniteui-angular/grids/core';\nimport { DropPosition } from 'igniteui-angular/grids/core';\nimport { DimensionValuesFilteringStrategy, NoopPivotDimensionsStrategy } from 'igniteui-angular/grids/core';\nimport { IgxGridExcelStyleFilteringComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleFilterOperationsTemplateDirective } from 'igniteui-angular/grids/core';\nimport { IgxPivotGridNavigationService } from './pivot-grid-navigation.service';\nimport { IgxPivotColumnResizingService } from 'igniteui-angular/grids/core';\nimport { State, Transaction, TransactionService } from 'igniteui-angular/core';\nimport { IgxPivotFilteringService } from './pivot-filtering.service';\nimport { GridBaseAPIService } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-content.component';\nimport { IgxPivotGridColumnResizerComponent } from 'igniteui-angular/grids/core';\nimport { PivotSortUtil } from './pivot-sort-util';\nimport { IgxPivotRowDimensionHeaderTemplateDirective, IgxPivotValueChipTemplateDirective } from './pivot-grid.directives';\nimport { IgxPivotRowPipe, IgxPivotRowExpansionPipe, IgxPivotAutoTransform, IgxPivotColumnPipe, IgxPivotGridFilterPipe, IgxPivotGridSortingPipe, IgxPivotGridColumnSortingPipe, IgxPivotCellMergingPipe, IgxPivotGridHorizontalRowGrouping } from './pivot-grid.pipes';\nimport { IgxGridRowClassesPipe, IgxGridRowStylesPipe } from 'igniteui-angular/grids/core';\nimport { IgxExcelStyleSearchComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowComponent } from './pivot-row.component';\nimport { IgxColumnMovingDropDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridDragSelectDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridBodyDirective } from 'igniteui-angular/grids/core';\nimport { IgxColumnResizingService } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';\nimport { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';\nimport { IForOfDataChangingEventArgs, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';\nimport { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';\nimport { IgxSnackbarComponent } from 'igniteui-angular/snackbar';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxPivotGridRow } from './pivot-grid-row';\nimport { IgxGridBaseDirective, IgxGridRowComponent } from 'igniteui-angular/grids/grid';\n\nlet NEXT_ID = 0;\nconst MINIMUM_COLUMN_WIDTH = 200;\nconst MINIMUM_COLUMN_WIDTH_SUPER_COMPACT = 104;\n\n/* blazorAdditionalDependency: Column */\n/* blazorAdditionalDependency: ColumnGroup */\n/* blazorAdditionalDependency: ColumnLayout */\n/* blazorAdditionalDependency: GridToolbar */\n/* blazorAdditionalDependency: GridToolbarActions */\n/* blazorAdditionalDependency: GridToolbarTitle */\n/* blazorAdditionalDependency: GridToolbarAdvancedFiltering */\n/* blazorAdditionalDependency: GridToolbarExporter */\n/* blazorAdditionalDependency: GridToolbarHiding */\n/* blazorAdditionalDependency: GridToolbarPinning */\n/* blazorAdditionalDependency: ActionStrip */\n/* blazorAdditionalDependency: GridActionsBaseDirective */\n/* blazorAdditionalDependency: GridEditingActions */\n/* blazorAdditionalDependency: GridPinningActions */\n/* blazorAdditionalDependency: PivotDateDimension */\n/* blazorIndirectRender */\n/**\n * Pivot Grid provides a way to present and manipulate data in a pivot table view.\n *\n * @igxModule IgxPivotGridModule\n * @igxGroup Grids & Lists\n * @igxKeywords pivot, grid, table\n * @igxTheme igx-grid-theme\n * @remarks\n * The Ignite UI Pivot Grid is used for grouping and aggregating simple flat data into a pivot table. Once data\n * has been bound and the dimensions and values configured it can be manipulated via sorting and filtering.\n * @example\n * ```html\n * <igx-pivot-grid [data]=\"data\" [pivotConfiguration]=\"configuration\">\n * </igx-pivot-grid>\n * ```\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n selector: 'igx-pivot-grid',\n templateUrl: 'pivot-grid.component.html',\n providers: [\n IgxGridCRUDService,\n IgxGridValidationService,\n IgxGridSummaryService,\n IgxGridSelectionService,\n IgxColumnResizingService,\n GridBaseAPIService,\n { provide: IGX_GRID_SERVICE_BASE, useClass: GridBaseAPIService },\n { provide: IGX_GRID_BASE, useExisting: IgxPivotGridComponent },\n { provide: IgxFilteringService, useClass: IgxPivotFilteringService },\n IgxGridNavigationService,\n IgxPivotGridNavigationService,\n IgxPivotColumnResizingService,\n IgxForOfSyncService,\n IgxForOfScrollSyncService\n ],\n imports: [\n NgClass,\n NgStyle,\n NgTemplateOutlet,\n IgxPivotHeaderRowComponent,\n IgxGridBodyDirective,\n IgxGridDragSelectDirective,\n IgxColumnMovingDropDirective,\n IgxGridForOfDirective,\n IgxTemplateOutletDirective,\n IgxPivotRowComponent,\n IgxToggleDirective,\n IgxCircularProgressBarComponent,\n IgxSnackbarComponent,\n IgxOverlayOutletDirective,\n IgxPivotGridColumnResizerComponent,\n IgxIconComponent,\n IgxPivotRowDimensionContentComponent,\n IgxGridExcelStyleFilteringComponent,\n IgxExcelStyleColumnOperationsTemplateDirective,\n IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleSearchComponent,\n IgxGridRowClassesPipe,\n IgxGridRowStylesPipe,\n IgxPivotRowPipe,\n IgxPivotRowExpansionPipe,\n IgxPivotAutoTransform,\n IgxPivotColumnPipe,\n IgxPivotGridFilterPipe,\n IgxPivotGridSortingPipe,\n IgxPivotGridColumnSortingPipe,\n IgxPivotCellMergingPipe,\n IgxPivotGridHorizontalRowGrouping,\n IgxPivotRowDimensionMrlRowComponent\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IgxPivotGridComponent extends IgxGridBaseDirective implements OnInit, AfterContentInit,\n PivotGridType, AfterViewInit, OnChanges {\n public override readonly gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n public override navigation = inject(IgxPivotGridNavigationService);\n protected override colResizingService = inject(IgxPivotColumnResizingService);\n\n /**\n * Emitted when the dimension collection is changed via the grid chip area.\n *\n * @remarks\n * Returns the new dimension collection and its type:\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (dimensionsChange)=\"dimensionsChange($event)\"></igx-grid>\n * ```\n */\n @Output()\n public dimensionsChange = new EventEmitter<IDimensionsChange>();\n\n /**\n * Emitted when any of the pivotConfiguration properties is changed via the grid chip area.\n *\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (pivotConfigurationChanged)=\"configurationChanged($event)\"></igx-grid>\n * ```\n */\n @Output()\n public pivotConfigurationChange = new EventEmitter<IPivotConfigurationChangedEventArgs>();\n\n\n /**\n * Emitted when the dimension is initialized.\n * @remarks\n * Emits the dimension that is about to be initialized.\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (dimensionInit)=\"dimensionInit($event)\"></igx-pivot-grid>\n * ```\n */\n @Output()\n public dimensionInit = new EventEmitter<IPivotDimension>();\n\n /**\n * Emitted when the value is initialized.\n * @remarks\n * Emits the value that is about to be initialized.\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (valueInit)=\"valueInit($event)\"></igx-pivot-grid>\n * ```\n */\n @Output()\n public valueInit = new EventEmitter<IPivotValue>();\n\n\n /**\n * Emitted when a dimension is sorted.\n *\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (dimensionsSortingExpressionsChange)=\"dimensionsSortingExpressionsChange($event)\"></igx-pivot-grid>\n * ```\n */\n @Output()\n public dimensionsSortingExpressionsChange = new EventEmitter<ISortingExpression[]>();\n\n /**\n * Emitted when the values collection is changed via the grid chip area.\n *\n * @remarks\n * Returns the new dimension\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n * (valuesChange)=\"valuesChange($event)\"></igx-grid>\n * ```\n */\n @Output()\n public valuesChange = new EventEmitter<IValuesChange>();\n\n\n /**\n * Gets the sorting expressions generated for the dimensions.\n *\n * @example\n * ```typescript\n * const expressions = this.grid.dimensionsSortingExpressions;\n * ```\n */\n public get dimensionsSortingExpressions() {\n const allEnabledDimensions = this.rowDimensions.concat(this.columnDimensions);\n const dimensionsSortingExpressions = PivotSortUtil.generateDimensionSortingExpressions(allEnabledDimensions);\n return dimensionsSortingExpressions;\n }\n\n /** @hidden @internal */\n @ViewChild(IgxPivotHeaderRowComponent, { static: true })\n public override theadRow: IgxPivotHeaderRowComponent;\n\n /**\n * @hidden @internal\n */\n @ContentChild(IgxPivotValueChipTemplateDirective, { read: IgxPivotValueChipTemplateDirective })\n protected valueChipTemplateDirective: IgxPivotValueChipTemplateDirective;\n\n /**\n * @hidden @internal\n */\n @ContentChild(IgxPivotRowDimensionHeaderTemplateDirective, { read: IgxPivotRowDimensionHeaderTemplateDirective })\n protected rowDimensionHeaderDirective: IgxPivotRowDimensionHeaderTemplateDirective;\n\n /**\n * Gets/Sets a custom template for the value chips.\n *\n * @example\n * ```html\n * <igx-pivot-grid [valueChipTemplate]=\"myTemplate\"><igx-pivot-grid>\n * ```\n */\n @Input()\n public valueChipTemplate: TemplateRef<IgxPivotGridValueTemplateContext>;\n\n @Input()\n public rowDimensionHeaderTemplate: TemplateRef<IgxColumnTemplateContext>;\n\n /* mustSetInCodePlatforms: WebComponents;Blazor;React */\n /* @tsTwoWayProperty (true, \"PivotConfigurationChange\", \"Detail.PivotConfiguration\", false) */\n /**\n * Gets/Sets the pivot configuration with all related dimensions and values.\n *\n * @example\n * ```html\n * <igx-pivot-grid [pivotConfiguration]=\"config\"></igx-pivot-grid>\n * ```\n */\n @Input()\n public set pivotConfiguration(value: IPivotConfiguration) {\n this._pivotConfiguration = value;\n this.emitInitEvents(this._pivotConfiguration);\n this.filteringExpressionsTree = PivotUtil.buildExpressionTree(value);\n if (!this._init) {\n this.setupColumns();\n }\n this.notifyChanges(true);\n }\n\n /* mustSetInCodePlatforms: WebComponents;Blazor */\n public get pivotConfiguration() {\n return this._pivotConfiguration || { rows: null, columns: null, values: null, filters: null };\n }\n\n /**\n * Gets/Sets whether to auto-generate the pivot configuration based on the provided data.\n *\n * @remarks\n * The default value is false. When set to true, it will override all dimensions and values in the pivotConfiguration.\n * @example\n * ```html\n * <igx-pivot-grid [data]=\"Data\" [autoGenerateConfig]=\"true\"></igx-pivot-grid>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public autoGenerateConfig = false;\n\n @Input()\n /**\n * Gets/Sets the pivot ui settings for the pivot grid - chips and their\n * corresponding containers for row, filter, column dimensions and values\n * as well as headers for the row dimensions values.\n * @example\n * ```html\n * <igx-pivot-grid [pivotUI]=\"{ showRowHeaders: true }\"></igx-pivot-grid>\n * ```\n */\n public set pivotUI(value: IPivotUISettings) {\n this._pivotUI = Object.assign(this._pivotUI, value || {});\n this.pipeTrigger++;\n this.notifyChanges(true);\n }\n\n public get pivotUI() {\n return this._pivotUI;\n }\n\n /**\n * @hidden @internal\n */\n @HostBinding('attr.role')\n public role = 'grid';\n\n /**\n * Enables a super compact theme for the component.\n * @remarks\n * Overrides the grid size option if one is set.\n * @example\n * ```html\n * <igx-pivot-grid [superCompactMode]=\"true\"></igx-pivot-grid>\n * ```\n */\n @HostBinding('class.igx-grid__pivot--super-compact')\n @Input()\n public get superCompactMode() {\n return this._superCompactMode;\n }\n\n public set superCompactMode(value) {\n this._superCompactMode = value;\n }\n\n /** @hidden @internal */\n public override get gridSize() {\n if (this.superCompactMode) {\n return ɵSize.Small;\n }\n return super.gridSize;\n }\n\n\n /**\n * Gets/Sets the values clone strategy of the pivot grid when assigning them to different dimensions.\n *\n * @example\n * ```html\n * <igx-pivot-grid #grid [data]=\"localData\" [pivotValueCloneStrategy]=\"customCloneStrategy\"></igx-pivot-grid>\n * ```\n * @hidden @internal\n */\n @Input()\n public get pivotValueCloneStrategy(): IDataCloneStrategy {\n return this._pivotValueCloneStrategy;\n }\n\n public set pivotValueCloneStrategy(strategy: IDataCloneStrategy) {\n if (strategy) {\n this._pivotValueCloneStrategy = strategy;\n }\n }\n\n /**\n * @hidden @internal\n */\n @ViewChild('record_template', { read: TemplateRef, static: true })\n public recordTemplate: TemplateRef<any>;\n\n /**\n * @hidden @internal\n */\n @ViewChild(IgxPivotRowDimensionMrlRowComponent, { read: IgxPivotRowDimensionMrlRowComponent })\n public rowDimensionMrlComponent: IgxPivotRowDimensionMrlRowComponent;\n\n /**\n * @hidden @internal\n */\n @ViewChild('headerTemplate', { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n /**\n * @hidden @internal\n */\n @ViewChildren('rowDimensionContainer', { read: ElementRef })\n public rowDimensionContainer: QueryList<ElementRef<any>>;\n\n /**\n * @hidden @internal\n */\n @ViewChild(IgxPivotGridColumnResizerComponent)\n public override resizeLine: IgxPivotGridColumnResizerComponent;\n\n /**\n * @hidden @internal\n */\n @ViewChildren(IgxGridExcelStyleFilteringComponent, { read: IgxGridExcelStyleFilteringComponent })\n public override excelStyleFilteringComponents: QueryList<IgxGridExcelStyleFilteringComponent>;\n\n /**\n * @hidden @internal\n */\n @ViewChildren(IgxPivotRowDimensionContentComponent)\n protected rowDimensionContentCollection: QueryList<IgxPivotRowDimensionContentComponent>;\n\n /**\n * @hidden @internal\n */\n public override get minColumnWidth() {\n if (this.superCompactMode) {\n return MINIMUM_COLUMN_WIDTH_SUPER_COMPACT;\n } else {\n return MINIMUM_COLUMN_WIDTH;\n }\n }\n\n /**\n * @hidden @internal\n */\n @ViewChildren('verticalRowDimScrollContainer', { read: IgxGridForOfDirective })\n public verticalRowDimScrollContainers: QueryList<IgxGridForOfDirective<any, any[]>>;\n\n /**\n * @hidden @internal\n */\n @ViewChildren(IgxPivotRowDimensionMrlRowComponent)\n public rowDimensionMrlRowsCollection: QueryList<IgxPivotRowDimensionMrlRowComponent>;\n\n /**\n * @hidden @internal\n */\n @Input()\n public override addRowEmptyTemplate: TemplateRef<void>;\n\n /**\n * @hidden @internal\n */\n @Input()\n public override autoGenerateExclude: string[] = [];\n\n /**\n * @hidden @internal\n */\n @Input()\n public override snackbarDisplayTime = 6000;\n\n /**\n * @hidden @internal\n */\n @Output()\n public override cellEdit = new EventEmitter<IGridEditEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override cellEditDone = new EventEmitter<IGridEditDoneEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override cellEditEnter = new EventEmitter<IGridEditEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override cellEditExit = new EventEmitter<IGridEditDoneEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnMovingStart = new EventEmitter<IColumnMovingStartEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnMoving = new EventEmitter<IColumnMovingEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnMovingEnd = new EventEmitter<IColumnMovingEndEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnPin = new EventEmitter<IPinColumnCancellableEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override columnPinned = new EventEmitter<IPinColumnEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowAdd = new EventEmitter<IRowDataCancelableEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowAdded = new EventEmitter<IRowDataEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowDeleted = new EventEmitter<IRowDataEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowDelete = new EventEmitter<IRowDataCancelableEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowDragStart = new EventEmitter<IRowDragStartEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowDragEnd = new EventEmitter<IRowDragEndEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowEditEnter = new EventEmitter<IGridEditEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowEdit = new EventEmitter<IGridEditEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowEditDone = new EventEmitter<IGridEditDoneEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowEditExit = new EventEmitter<IGridEditDoneEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowPinning = new EventEmitter<IPinRowEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Output()\n public override rowPinned = new EventEmitter<IPinRowEventArgs>();\n\n /** @hidden @internal */\n public columnGroupStates = new Map<string, boolean>();\n /** @hidden @internal */\n public dimensionDataColumns: any[];\n /** @hidden @internal */\n public get pivotKeys() {\n return this.pivotConfiguration.pivotKeys || DEFAULT_PIVOT_KEYS;\n }\n /** @hidden @internal */\n public override get type(): GridType[\"type\"] {\n return 'pivot';\n }\n\n /**\n * @hidden @internal\n */\n public override dragRowID = null;\n\n /**\n * @hidden @internal\n */\n public override get rootSummariesEnabled(): boolean {\n return false;\n }\n\n /**\n * @hidden @internal\n */\n public rowDimensionResizing = true;\n\n private _emptyRowDimension: IPivotDimension = { memberName: '', enabled: true, level: 0 };\n /**\n * @hidden @internal\n */\n public get emptyRowDimension(): IPivotDimension {\n return this._emptyRowDimension;\n }\n\n protected _pivotValueCloneStrategy: IDataCloneStrategy = new DefaultDataCloneStrategy();\n protected override _defaultExpandState = false;\n protected override _filterStrategy: IFilteringStrategy = new DimensionValuesFilteringStrategy();\n protected regroupTrigger = 0;\n private _data;\n private _pivotConfiguration: IPivotConfiguration = { rows: null, columns: null, values: null, filters: null };\n private p_id = `igx-pivot-grid-${NEXT_ID++}`;\n private _superCompactMode = false;\n private _pivotUI: IPivotUISettings = {\n showConfiguration: true,\n showRowHeaders: false,\n rowLayout: PivotRowLayoutType.Vertical,\n horizontalSummariesPosition: PivotSummaryPosition.Bottom\n };\n private _sortableColumns = true;\n private _visibleRowDimensions: IPivotDimension[] = [];\n private _shouldUpdateSizes = false;\n\n /**\n * Gets/Sets the default expand state for all rows.\n */\n @Input({ transform: booleanAttribute })\n public get defaultExpandState() {\n return this._defaultExpandState;\n }\n\n public set defaultExpandState(val: boolean) {\n this._defaultExpandState = val;\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get pagingMode(): GridPagingMode {\n return 'local';\n }\n\n public override set pagingMode(_val: GridPagingMode) {\n }\n\n /**\n * @hidden @internal\n */\n @WatchChanges()\n @Input({ transform: booleanAttribute })\n public override get hideRowSelectors(): boolean {\n return false;\n }\n\n public override set hideRowSelectors(_value: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n public override autoGenerate = true;\n\n /**\n * @hidden @internal\n */\n public override get actionStrip() {\n return undefined as any;\n }\n\n /**\n * @hidden @internal\n * @deprecated in version 18.2.0. This property is no longer supported.\n */\n public override get shouldGenerate(): boolean {\n return false;\n }\n\n public override set shouldGenerate(value: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n public override moving = false;\n\n /**\n * @hidden @internal\n */\n public override toolbarExporting = new EventEmitter<IGridToolbarExportEventArgs>();\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get rowDraggable(): boolean {\n return false;\n }\n\n\n public override set rowDraggable(_val: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get allowAdvancedFiltering() {\n return false;\n }\n\n public override set allowAdvancedFiltering(_value) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get filterMode() {\n return FilterMode.quickFilter;\n }\n\n public override set filterMode(_value: FilterMode) {\n }\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get allowFiltering() {\n return false;\n }\n\n public override set allowFiltering(_value) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get page(): number {\n return 0;\n }\n\n public override set page(_val: number) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get perPage(): number {\n return 0;\n }\n\n public override set perPage(_val: number) {\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /**\n * @hidden @internal\n */\n public override get unpinnedColumns(): IgxColumnComponent[] {\n return super.unpinnedColumns;\n }\n\n /**\n * @hidden @internal\n */\n public override get unpinnedDataView(): any[] {\n return super.unpinnedDataView;\n }\n\n /**\n * @hidden @internal\n */\n public override get unpinnedWidth() {\n return super.unpinnedWidth;\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedStartWidth() {\n return super.pinnedStartWidth;\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override set summaryRowHeight(_value: number) {\n }\n\n public override get summaryRowHeight(): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override get transactions(): TransactionService<Transaction, State> {\n return this._transactions;\n }\n\n\n\n /**\n * @hidden @internal\n */\n public override get dragIndicatorIconTemplate(): TemplateRef<any> {\n return;\n }\n\n public override set dragIndicatorIconTemplate(_val: TemplateRef<any>) {\n }\n\n /**\n * @hidden @internal\n */\n @WatchChanges()\n @Input({ transform: booleanAttribute })\n public override get rowEditable(): boolean {\n return;\n }\n\n public override set rowEditable(_val: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get pinning() {\n return {};\n }\n public override set pinning(_value) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get summaryPosition() {\n return;\n }\n\n public override set summaryPosition(_value: GridSummaryPosition) {\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get summaryCalculationMode() {\n return;\n }\n\n public override set summaryCalculationMode(_value: GridSummaryCalculationMode) {\n }\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get showSummaryOnCollapse() {\n return;\n }\n\n public override set showSummaryOnCollapse(_value: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n public override get hiddenColumnsCount(): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedColumnsCount(): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n @Input({ transform: booleanAttribute })\n public override get batchEditing(): boolean {\n return false;\n }\n\n public override set batchEditing(_val: boolean) {\n }\n\n /* csSuppress */\n public override get selectedRows(): any[] {\n if (this.selectionService.getSelectedRows().length === 0) {\n return [];\n }\n const selectedRowIds = [];\n this.dataView.forEach(record => {\n const prev = [];\n for (const dim of this.rowDimensions) {\n let currDim = dim;\n let shouldBreak = false;\n do {\n const key = PivotUtil.getRecordKey(record, currDim);\n if (this.selectionService.isPivotRowSelected(key) && !selectedRowIds.find(x => x === record)) {\n selectedRowIds.push(record);\n shouldBreak = true;\n break;\n }\n currDim = currDim.childLevel;\n } while (currDim);\n prev.push(dim);\n if (shouldBreak) {\n break;\n }\n }\n\n });\n\n return selectedRowIds;\n }\n\n /**\n * @hidden\n */\n public override ngOnInit() {\n // pivot grid always generates columns automatically.\n this.autoGenerate = true;\n super.ngOnInit();\n }\n\n /**\n * @hidden\n */\n public override ngAfterContentInit() {\n // ignore any user defined columns and auto-generate based on pivot config.\n this.updateColumns([]);\n Promise.resolve().then(() => {\n if (this.autoGenerateConfig) {\n this.generateConfig();\n }\n this.setupColumns();\n });\n if (this.valueChipTemplateDirective) {\n this.valueChipTemplate = this.valueChipTemplateDirective.template;\n }\n if (this.rowDimensionHeaderDirective) {\n this.rowDimensionHeaderTemplate = this.rowDimensionHeaderDirective.template;\n }\n }\n\n /**\n * @hidden @internal\n */\n public override ngAfterViewInit() {\n Promise.resolve().then(() => {\n super.ngAfterViewInit();\n });\n }\n\n /**\n * @hidden @internal\n */\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.superCompactMode && !changes.superCompactMode.isFirstChange()) {\n this._shouldUpdateSizes = true;\n resizeObservable(this.verticalScrollContainer.displayContainer).pipe(take(1), takeUntil(this.destroy$)).subscribe(() => this.resizeNotify.next());\n }\n }\n\n /**\n * Notifies for dimension change.\n */\n public notifyDimensionChange(regenerateColumns = false) {\n if (regenerateColumns) {\n this.setupColumns();\n }\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n\n /**\n * Gets the full list of dimensions.\n *\n * @example\n * ```typescript\n * const dimensions = this.grid.allDimensions;\n * ```\n */\n public get allDimensions() {\n const config = this._pivotConfiguration;\n if (!config) return [];\n return (config.rows || []).concat((config.columns || [])).concat(config.filters || []).filter(x => x !== null && x !== undefined);\n }\n\n protected get allVisibleDimensions() {\n const config = this._pivotConfiguration;\n if (!config) return [];\n const uniqueVisibleRowDims = this.visibleRowDimensions.filter(dim => !config.rows.find(configRow => configRow.memberName === dim.memberName));\n const rows = (config.rows || []).concat(...uniqueVisibleRowDims);\n return rows.concat((config.columns || [])).concat(config.filters || []).filter(x => x !== null && x !== undefined);\n }\n\n protected override get shouldResize(): boolean {\n if (!this.dataRowList.first?.cells || this.dataRowList.first.cells.length === 0) {\n return false;\n }\n const isSizePropChanged = super.shouldResize;\n if (isSizePropChanged || this._shouldUpdateSizes) {\n this._shouldUpdateSizes = false;\n return true;\n }\n return false;\n }\n\n protected get emptyBottomSize() {\n return this.totalHeight - (<any>this.verticalScroll).scrollComponent.size;\n }\n\n /** @hidden @internal */\n public createFilterESF(dropdown: any, column: ColumnType, options: OverlaySettings, shouldReatach: boolean) {\n options.outlet = this.outlet;\n if (dropdown) {\n dropdown.initialize(column, this.overlayService);\n dropdown.populateData();\n if (shouldReatach) {\n const id = this.overlayService.attach(dropdown.element, options);\n dropdown.overlayComponentId = id;\n return { id, ref: undefined };\n }\n return { id: dropdown.overlayComponentId, ref: undefined };\n }\n }\n\n /** @hidden */\n public override featureColumnsWidth() {\n return this.pivotRowWidths || 0;\n }\n\n /* blazorSuppress */\n /**\n * Gets/Sets the value of the `id` attribute.\n *\n * @remarks\n * If not provided it will be automatically generated.\n * @example\n * ```html\n * <igx-pivot-grid [id]=\"'igx-pivot-1'\" [data]=\"Data\"></igx-pivot-grid>\n * ```\n */\n @HostBinding('attr.id')\n @Input()\n public get id(): string {\n return this.p_id;\n }\n /* blazorSuppress */\n public set id(value: string) {\n this.p_id = value;\n }\n\n /* treatAsRef */\n /* blazorAlternateType: object */\n /**\n * Gets/Sets the array of data that populates the component.\n * ```html\n * <igx-pivot-grid [data]=\"Data\"></igx-pivot-grid>\n * ```\n */\n @Input()\n public set data(value: any[] | null) {\n this._data = value || [];\n if (!this._init) {\n if (this.autoGenerateConfig) {\n this.generateConfig();\n }\n this.setupColumns();\n this.reflow();\n }\n this.cdr.markForCheck();\n if (this.height === null || this.height.indexOf('%') !== -1) {\n // If the height will change based on how much data there is, recalculate sizes in igxForOf.\n this.notifyChanges(true);\n }\n }\n\n /* treatAsRef */\n /* blazorAlternateType: object */\n /**\n * Returns an array of data set to the component.\n * ```typescript\n * let data = this.grid.data;\n * ```\n */\n public get data(): any[] | null {\n return this._data;\n }\n\n /**\n * @hidden\n */\n public getContext(rowData, rowIndex): any {\n return {\n $implicit: rowData,\n templateID: {\n type: 'dataRow',\n id: null\n },\n index: this.getDataViewIndex(rowIndex, false)\n };\n }\n\n /**\n * @hidden @internal\n */\n public get pivotRowWidths() {\n return this.visibleRowDimensions.length ? this.visibleRowDimensions.reduce((accumulator, dim) => accumulator + this.rowDimensionWidthToPixels(dim), 0) :\n this.rowDimensionWidthToPixels(this.emptyRowDimension);\n }\n\n /**\n * @hidden @internal\n */\n public rowDimensionWidth(dim): string {\n const isAuto = dim.width && dim.width.indexOf('auto') !== -1;\n if (isAuto) {\n return dim.autoWidth ? dim.autoWidth + 'px' : 'fit-content';\n } else {\n return this.rowDimensionWidthToPixels(dim) + 'px';\n }\n }\n\n /**\n * @hidden @internal\n */\n public rowDimensionWidthToPixels(dim: IPivotDimension): number {\n if (!dim?.width) {\n return MINIMUM_COLUMN_WIDTH;\n }\n const isPercent = dim.width && dim.width.indexOf('%') !== -1;\n const isAuto = dim.width && dim.width.indexOf('auto') !== -1;\n if (isPercent) {\n return Math.round(parseFloat(dim.width) / 100 * this.calcWidth);\n } else if (isAuto) {\n return dim.autoWidth;\n } else {\n return parseInt(dim.width, 10);\n }\n }\n\n /**\n * @hidden @internal\n */\n public reverseDimensionWidthToPercent(width: number): number {\n return (width * 100 / this.calcWidth);\n }\n\n /** @hidden @internal */\n public get pivotContentCalcWidth() {\n if (!this.platform.isBrowser) {\n return undefined;\n }\n if (!this.visibleRowDimensions.length) {\n return Math.max(0, this.calcWidth - this.pivotRowWidths);\n }\n\n const totalDimWidth = this.visibleRowDimensions.length > 0 ?\n this.visibleRowDimensions.map((dim) => this.rowDimensionWidthToPixels(dim)).reduce((prev, cur) => prev + cur) :\n 0;\n return this.calcWidth - totalDimWidth;\n }\n\n /** @hidden @internal */\n public get pivotPinnedStartWidth() {\n return !this._init ? this.pinnedStartWidth : 0;\n }\n\n /** @hidden @internal */\n public get pivotPinnedEndWidth() {\n return !this._init ? this.pinnedEndWidth : 0;\n }\n\n /** @hidden @internal */\n public get pivotUnpinnedWidth() {\n return this.unpinnedWidth || 0;\n }\n\n /** @hidden @internal */\n public get rowDimensions() {\n return this.pivotConfiguration.rows?.filter(x => x.enabled) || [];\n }\n\n /** @hidden @internal */\n public set visibleRowDimensions(value: IPivotDimension[]) {\n this._visibleRowDimensions = value;\n }\n\n public get visibleRowDimensions() {\n return this._visibleRowDimensions || this.rowDimensions;\n }\n\n /** @hidden @internal */\n public get columnDimensions() {\n return this.pivotConfiguration.columns?.filter(x => x.enabled) || [];\n }\n\n /** @hidden @internal */\n public get filterDimensions() {\n return this.pivotConfiguration.filters?.filter(x => x.enabled) || [];\n }\n\n /** @hidden @internal */\n public get values() {\n return this.pivotConfiguration.values?.filter(x => x.enabled) || [];\n }\n\n public toggleColumn(col: IgxColumnComponent) {\n const state = this.columnGroupStates.get(col.field);\n const newState = !state;\n this.columnGroupStates.set(col.field, newState);\n this.toggleRowGroup(col, newState);\n this.reflow();\n }\n\n /**\n * @hidden @internal\n */\n public override isRecordPinnedByIndex(_rowIndex: number) {\n return false;\n }\n\n /**\n * @hidden @internal\n */\n public override toggleColumnVisibility(_args: IColumnVisibilityChangedEventArgs) {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override expandAll() {\n }\n\n /**\n * @hidden @internal\n */\n public override collapseAll() {\n }\n\n /**\n * @hidden @internal\n */\n public override expandRow(_rowID: any) {\n }\n\n /**\n * @hidden @internal\n */\n public override collapseRow(_rowID: any) {\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedRows(): IgxGridRowComponent[] {\n return;\n }\n\n /**\n * @hidden @internal\n */\n @Input()\n public override get totalRecords(): number {\n return;\n }\n\n public override set totalRecords(_total: number) {\n }\n\n /**\n * @hidden @internal\n */\n public override moveColumn(_column: IgxColumnComponent, _target: IgxColumnComponent, _pos: DropPosition = DropPosition.AfterDropTarget) {\n }\n\n /**\n * @hidden @internal\n */\n public override addRow(_data: any): void {\n }\n\n /**\n * @hidden @internal\n */\n public override deleteRow(_rowSelector: any): any {\n }\n\n /**\n * @hidden @internal\n */\n public override updateCell(_value: any, _rowSelector: any, _column: string): void {\n }\n\n /**\n * @hidden @internal\n */\n public override updateRow(_value: any, _rowSelector: any): void {\n }\n\n /**\n * @hidden @internal\n */\n public override enableSummaries(..._rest) {\n }\n\n /**\n * @hidden @internal\n */\n public override disableSummaries(..._rest) {\n }\n\n /**\n * @hidden @internal\n */\n public override pinColumn(_columnName: string | IgxColumnComponent, _index?): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override unpinColumn(_columnName: string | IgxColumnComponent, _index?): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override pinRow(_rowID: any, _index?: number, _row?: RowType): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override unpinRow(_rowID: any, _row?: RowType): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedRowHeight() {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get hasEditableColumns(): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get hasSummarizedColumns(): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get hasMovableColumns(): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override get pinnedDataView(): any[] {\n return [];\n }\n\n /**\n * @hidden @internal\n */\n public override openAdvancedFilteringDialog(_overlaySettings?: OverlaySettings) {\n }\n\n /**\n * @hidden @internal\n */\n public override closeAdvancedFilteringDialog(_applyChanges: boolean) {\n }\n\n /**\n * @hidden @internal\n */\n public override endEdit(_commit = true, _event?: Event): boolean {\n return;\n }\n\n /**\n * @hidden @internal\n */\n public override beginAddRowById(_rowID: any, _asChild?: boolean): void {\n }\n\n /**\n * @hidden @internal\n */\n public override beginAddRowByIndex(_index: number): void {\n }\n\n /**\n * @hidden @internal\n */\n public override clearSearch() { }\n\n /**\n * @hidden @internal\n */\n public override refreshSearch(_updateActiveInfo?: boolean, _endEdit = true): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override findNext(_text: string, _caseSensitive?: boolean, _exactMatch?: boolean): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override findPrev(_text: string, _caseSensitive?: boolean, _exactMatch?: boolean): number {\n return 0;\n }\n\n /**\n * @hidden @internal\n */\n public override getNextCell(currRowIndex: number, curVisibleColIndex: number,\n callback: (IgxColumnComponent) => boolean = null): ICellPosition {\n return super.getNextCell(currRowIndex, curVisibleColIndex, callback);\n }\n\n /**\n * @hidden @internal\n */\n public override getPreviousCell(currRowIndex: number, curVisibleColIndex: number,\n callback: (IgxColumnComponent) => boolean = null): ICellPosition {\n return super.getPreviousCell(currRowIndex, curVisibleColIndex, callback);\n }\n\n /**\n * @hidden @internal\n */\n public override getPinnedStartWidth(takeHidden = false) {\n return super.getPinnedStartWidth(takeHidden);\n }\n\n /**\n * @hidden @internal\n */\n public override get totalHeight() {\n return this.calcHeight;\n }\n\n public getColumnGroupExpandState(col: IgxColumnComponent) {\n const state = this.columnGroupStates.get(col.field);\n // columns are expanded by default?\n return state !== undefined && state !== null ? state : false;\n }\n\n public toggleRowGroup(col: IgxColumnComponent, newState: boolean) {\n if (!col) return;\n if (this.hasMultipleValues) {\n const parentCols = col.parent ? col.parent.children.toArray() : this._autoGeneratedCols.filter(x => x.level === 0);\n const siblingCol = parentCols.filter(x => x.header === col.header && x !== col)[0];\n const currIndex = parentCols.indexOf(col);\n const siblingIndex = parentCols.indexOf(siblingCol);\n if (currIndex < siblingIndex) {\n // clicked on the full hierarchy header\n this.resolveToggle(col, newState);\n siblingCol.headerTemplate = this.headerTemplate;\n } else {\n // clicked on summary parent column that contains just the measures\n col.headerTemplate = undefined;\n this.resolveToggle(siblingCol, newState);\n }\n } else {\n const parentCols = col.parent ? col.parent.children : this._autoGeneratedCols.filter(x => x.level === 0);\n const fieldColumn = parentCols.filter(x => x.header === col.header && !x.columnGroup)[0];\n const groupColumn = parentCols.filter(x => x.header === col.header && x.columnGroup)[0];\n this.resolveToggle(groupColumn, newState);\n if (newState) {\n fieldColumn.headerTemplate = this.headerTemplate;\n } else {\n fieldColumn.headerTemplate = undefined;\n }\n }\n }\n\n /**\n * @hidden @internal\n */\n public override setupColumns() {\n super.setupColumns();\n }\n\n /**\n * @hidden @internal\n */\n public override dataRebinding(event: IForOfDataChangingEventArgs) {\n if (this.hasHorizontalLayout) {\n this.dimensionDataColumns = this.generateDimensionColumns();\n }\n\n super.dataRebinding(event);\n }\n\n /**\n * Auto-sizes row dimension cells.\n *\n * @remarks\n * Only sizes based on the dimension cells in view.\n * @example\n * ```typescript\n * this.grid.autoSizeRowDimension(dimension);\n * ```\n * @param dimension The row dimension to size.\n */\n public autoSizeRowDimension(dimension: IPivotDimension) {\n if (this.getDimensionType(dimension) === PivotDimensionType.Row) {\n const relatedDims: string[] = PivotUtil.flatten([dimension]).map((x: IPivotDimension) => x.memberName);\n const contentCollection = this.getContentCollection(dimension);\n const content = contentCollection.filter(x => relatedDims.indexOf(x.dimension.memberName) !== -1);\n const headers = content.map(x => x.headerGroups.toArray()).flat().map(x => x.header && x.header.refInstance);\n if (this.pivotUI.showRowHeaders) {\n const dimensionHeader = this.theadRow.rowDimensionHeaders.find(x => x.column.field === dimension.memberName);\n headers.push(dimensionHeader);\n }\n const autoWidth = this.getLargesContentWidth(headers);\n if (dimension.width === \"auto\") {\n dimension.autoWidth = parseFloat(autoWidth);\n } else {\n dimension.width = autoWidth;\n }\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Inserts dimension in target collection by type at specified index or at the collection's end.\n *\n * @example\n * ```typescript\n * this.grid.insertDimensionAt(dimension, PivotDimensionType.Row, 1);\n * ```\n * @param dimension The dimension that will be added.\n * @param targetCollectionType The target collection type to add to. Can be Row, Column or Filter.\n * @param index The index in the collection at which to add.\n * This parameter is optional. If not set it will add it to the end of the collection.\n */\n public insertDimensionAt(dimension: IPivotDimension, targetCollectionType: PivotDimensionType, index?: number) {\n const targetCollection = this.getDimensionsByType(targetCollectionType);\n if (index !== undefined) {\n targetCollection.splice(index, 0, dimension);\n } else {\n targetCollection.push(dimension);\n }\n if (targetCollectionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n this.pipeTrigger++;\n this.dimensionsChange.emit({ dimensions: targetCollection, dimensionCollectionType: targetCollectionType });\n if (targetCollectionType === PivotDimensionType.Filter) {\n this.dimensionDataColumns = this.generateDimensionColumns();\n this.reflow();\n }\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Move dimension from its currently collection to the specified target collection by type at specified index or at the collection's end.\n *\n * @example\n * ```typescript\n * this.grid.moveDimension(dimension, PivotDimensionType.Row, 1);\n * ```\n * @param dimension The dimension that will be moved.\n * @param targetCollectionType The target collection type to move it to. Can be Row, Column or Filter.\n * @param index The index in the collection at which to add.\n * This parameter is optional. If not set it will add it to the end of the collection.\n */\n public moveDimension(dimension: IPivotDimension, targetCollectionType: PivotDimensionType, index?: number) {\n const prevCollectionType = this.getDimensionType(dimension);\n if (prevCollectionType === null) return;\n // remove from old collection\n this._removeDimensionInternal(dimension);\n // add to target\n this.insertDimensionAt(dimension, targetCollectionType, index);\n\n if (prevCollectionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n }\n\n /**\n * Removes dimension from its currently collection.\n * @remarks\n * This is different than toggleDimension that enabled/disables the dimension.\n * This completely removes the specified dimension from the collection.\n * @example\n * ```typescript\n * this.grid.removeDimension(dimension);\n * ```\n * @param dimension The dimension to be removed.\n */\n public removeDimension(dimension: IPivotDimension) {\n const prevCollectionType = this.getDimensionType(dimension);\n this._removeDimensionInternal(dimension);\n if (prevCollectionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n if (prevCollectionType === PivotDimensionType.Filter) {\n this.reflow();\n }\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n\n /**\n * Toggles the dimension's enabled state on or off.\n * @remarks\n * The dimension remains in its current collection. This just changes its enabled state.\n * @example\n * ```typescript\n * this.grid.toggleDimension(dimension);\n * ```\n * @param dimension The dimension to be toggled.\n */\n public toggleDimension(dimension: IPivotDimension) {\n const dimType = this.getDimensionType(dimension);\n if (dimType === null) return;\n const collection = this.getDimensionsByType(dimType);\n dimension.enabled = !dimension.enabled;\n if (dimType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n if (!dimension.enabled && dimension.filter) {\n this.filteringService.clearFilter(dimension.memberName);\n }\n this.pipeTrigger++;\n this.dimensionsChange.emit({ dimensions: collection, dimensionCollectionType: dimType });\n this.cdr.detectChanges();\n if (dimType === PivotDimensionType.Filter) {\n this.reflow();\n }\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Inserts value at specified index or at the end.\n *\n * @example\n * ```typescript\n * this.grid.insertValueAt(value, 1);\n * ```\n * @param value The value definition that will be added.\n * @param index The index in the collection at which to add.\n * This parameter is optional. If not set it will add it to the end of the collection.\n */\n public insertValueAt(value: IPivotValue, index?: number) {\n if (!this.pivotConfiguration.values) {\n this.pivotConfiguration.values = [];\n }\n const values = this.pivotConfiguration.values;\n if (index !== undefined) {\n values.splice(index, 0, value);\n } else {\n values.push(value);\n }\n this.setupColumns();\n this.pipeTrigger++;\n this.cdr.detectChanges();\n this.valuesChange.emit({ values });\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Move value from its currently at specified index or at the end.\n *\n * @example\n * ```typescript\n * this.grid.moveValue(value, 1);\n * ```\n * @param value The value that will be moved.\n * @param index The index in the collection at which to add.\n * This parameter is optional. If not set it will add it to the end of the collection.\n */\n public moveValue(value: IPivotValue, index?: number) {\n if (this.pivotConfiguration.values.indexOf(value) === -1) return;\n // remove from old index\n this.removeValue(value);\n // add to new\n this.insertValueAt(value, index);\n }\n\n /**\n * Removes value from collection.\n * @remarks\n * This is different than toggleValue that enabled/disables the value.\n * This completely removes the specified value from the collection.\n * @example\n * ```typescript\n * this.grid.removeValue(dimension);\n * ```\n * @param value The value to be removed.\n */\n public removeValue(value: IPivotValue,) {\n const values = this.pivotConfiguration.values;\n const currentIndex = values.indexOf(value);\n if (currentIndex !== -1) {\n values.splice(currentIndex, 1);\n this.setupColumns();\n this.pipeTrigger++;\n this.valuesChange.emit({ values });\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n }\n\n /**\n * Toggles the value's enabled state on or off.\n * @remarks\n * The value remains in its current collection. This just changes its enabled state.\n * @example\n * ```typescript\n * this.grid.toggleValue(value);\n * ```\n * @param value The value to be toggled.\n */\n public toggleValue(value: IPivotValue) {\n if (this.pivotConfiguration.values.indexOf(value) === -1) return;\n value.enabled = !value.enabled;\n this.setupColumns();\n this.pipeTrigger++;\n this.valuesChange.emit({ values: this.pivotConfiguration.values });\n this.reflow();\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Sort the dimension and its children in the provided direction.\n * @example\n * ```typescript\n * this.grid.sortDimension(dimension, SortingDirection.Asc);\n * ```\n * @param value The value to be toggled.\n */\n public sortDimension(dimension: IPivotDimension, sortDirection: SortingDirection) {\n const dimensionType = this.getDimensionType(dimension);\n dimension.sortDirection = sortDirection;\n // apply same sort direction to children.\n let dim = dimension;\n if (this.pivotUI.rowLayout === PivotRowLayoutType.Vertical) {\n while (dim.childLevel) {\n dim.childLevel.sortDirection = dimension.sortDirection;\n dim = dim.childLevel;\n }\n }\n\n this.pipeTrigger++;\n this.dimensionsSortingExpressionsChange.emit(this.dimensionsSortingExpressions);\n if (dimensionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n this.cdr.detectChanges();\n this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n }\n\n /**\n * Filters a single `IPivotDimension`.\n *\n * @example\n * ```typescript\n * public filter() {\n * const set = new Set();\n * set.add('Value 1');\n * set.add('Value 2');\n * this.grid1.filterDimension(this.pivotConfigHierarchy.rows[0], set, IgxStringFilteringOperand.instance().condition('in'));\n * }\n * ```\n */\n public filterDimension(dimension: IPivotDimension, value: any, conditionOrExpressionTree?: IFilteringOperation | IFilteringExpressionsTree) {\n this.filteringService.filter(dimension.memberName, value, conditionOrExpressionTree);\n const dimensionType = this.getDimensionType(dimension);\n if (dimensionType === PivotDimensionType.Column) {\n this.setupColumns();\n }\n this.cdr.detectChanges();\n }\n\n /**\n * @hidden @internal\n */\n public getRowDimensionByName(memberName: string) {\n const visibleRows = this.pivotUI.rowLayout === PivotRowLayoutType.Vertical ?\n this.pivotConfiguration.rows :\n PivotUtil.flatten(this.pivotConfiguration.rows);\n const dimIndex = visibleRows.findIndex((target) => target.memberName === memberName);\n const dim = visibleRows[dimIndex];\n return dim;\n }\n\n /**\n * @hidden @internal\n */\n public getDimensionsByType(dimension: PivotDimensionType) {\n switch (dimension) {\n case PivotDimensionType.Row:\n if (!this.pivotConfiguration.rows) {\n this.pivotConfiguration.rows = [];\n }\n return this.pivotConfiguration.rows;\n case PivotDimensionType.Column:\n if (!this.pivotConfiguration.columns) {\n this.pivotConfiguration.columns = [];\n }\n return this.pivotConfiguration.columns;\n case PivotDimensionType.Filter:\n if (!this.pivotConfiguration.filters) {\n this.pivotConfiguration.filters = [];\n }\n return this.pivotConfiguration.filters;\n default:\n return null;\n }\n }\n\n /**\n * @hidden @internal\n */\n public resizeRowDimensionPixels(dimension: IPivotDimension, newWidth: number) {\n const isPercentageWidth = dimension.width && typeof dimension.width === 'string' && dimension.width.indexOf('%') !== -1;\n if (isPercentageWidth) {\n dimension.width = this.reverseDimensionWidthToPercent(newWidth).toFixed(2) + '%';\n } else {\n dimension.width = newWidth + 'px';\n }\n\n // Notify the grid to reflow, to update if horizontal scrollbar needs to be rendered/removed.\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n\n /*\n * @hidden\n * @internal\n */\n protected _removeDimensionInternal(dimension) {\n const prevCollectionType = this.getDimensionType(dimension);\n if (prevCollectionType === null) return;\n const prevCollection = this.getDimensionsByType(prevCollectionType);\n const currentIndex = prevCollection.indexOf(dimension);\n prevCollection.splice(currentIndex, 1);\n this.pipeTrigger++;\n this.cdr.detectChanges();\n }\n\n protected getDimensionType(dimension: IPivotDimension): PivotDimensionType {\n return PivotUtil.flatten(this.pivotConfiguration.rows).indexOf(dimension) !== -1 ? PivotDimensionType.Row :\n PivotUtil.flatten(this.pivotConfiguration.columns).indexOf(dimension) !== -1 ? PivotDimensionType.Column :\n (!!this.pivotConfiguration.filters && PivotUtil.flatten(this.pivotConfiguration.filters).indexOf(dimension) !== -1) ?\n PivotDimensionType.Filter : null;\n }\n\n protected getPivotRowHeaderContentWidth(headerGroup: IgxPivotRowHeaderGroupComponent) {\n const headerSizes = this.getHeaderCellWidth(headerGroup.nativeElement);\n return headerSizes.width + headerSizes.padding;\n }\n\n protected getLargesContentWidth(contents: ElementRef[]): string {\n const largest = new Map<number, number>();\n if (contents.length > 0) {\n const cellsContentWidths = [];\n contents.forEach((elem) => {\n elem instanceof IgxPivotRowHeaderGroupComponent ?\n cellsContentWidths.push(this.getPivotRowHeaderContentWidth(elem)) :\n cellsContentWidths.push(this.getHeaderCellWidth(elem.nativeElement).width);\n });\n const index = cellsContentWidths.indexOf(Math.max(...cellsContentWidths));\n const cellStyle = this.document.defaultView.getComputedStyle(contents[index].nativeElement);\n const cellPadding = parseFloat(cellStyle.paddingLeft) + parseFloat(cellStyle.paddingRight) +\n parseFloat(cellStyle.borderLeftWidth) + parseFloat(cellStyle.borderRightWidth);\n largest.set(Math.max(...cellsContentWidths), cellPadding);\n }\n const largestCell = Math.max(...Array.from(largest.keys()));\n const width = Math.ceil(largestCell + largest.get(largestCell));\n\n if (Number.isNaN(width)) {\n return null;\n } else {\n return width + 'px';\n }\n }\n\n /** @hidden @internal */\n public get hasHorizontalLayout() {\n return this.pivotUI.rowLayout === PivotRowLayoutType.Horizontal;\n }\n\n /**\n * @hidden\n */\n public get hasMultipleValues() {\n return this.values.length > 1;\n }\n\n /**\n * @hidden\n */\n public get excelStyleFilterMaxHeight() {\n // max 10 rows, row size depends on grid size\n const maxHeight = this.renderedRowHeight * 10;\n return `${maxHeight}px`;\n }\n\n /**\n * @hidden\n */\n public get excelStyleFilterMinHeight(): string {\n // min 5 rows, row size depends on grid size\n const minHeight = this.renderedRowHeight * 5;\n return `${minHeight}px`;\n }\n\n /** @hidden @internal */\n public override get activeDescendant(): string | undefined {\n if (this.navigation.isRowHeaderActive || this.navigation.isRowDimensionHeaderActive) {\n return;\n }\n return super.activeDescendant;\n }\n\n /** @hidden @internal */\n public get headerRowActiveDescendant() {\n const activeElem = this.navigation.activeNode;\n if (!activeElem || !Object.keys(activeElem).length || !this.navigation.isRowHeaderActive) {\n return null;\n }\n\n const rowDimensions = this.rowDimensionContentCollection.length > 0 ?\n this.rowDimensionContentCollection.toArray() :\n this.rowDimensionMrlComponent.rowDimensionContentCollection.toArray();\n\n const rowDimensionContentActive = rowDimensions.find(rd => rd && rd.headerGroups?.some(hg => hg.active));\n const activeHeader = rowDimensionContentActive?.headerGroups.toArray().find(hg => hg.active);\n\n return activeHeader ? `${this.id}_${activeHeader.title}` : null;\n }\n\n protected resolveToggle(groupColumn: ColumnType, state: boolean) {\n if (!groupColumn) return;\n groupColumn.hidden = state;\n this.columnGroupStates.set(groupColumn.field, state);\n const childrenTotal = this.hasMultipleValues ?\n groupColumn.children.filter(x => x.columnGroup && x.children.filter(y => !y.columnGroup).length === this.values.length) :\n groupColumn.children.filter(x => !x.columnGroup);\n const childrenSubgroups = this.hasMultipleValues ?\n groupColumn.children.filter(x => x.columnGroup && x.children.filter(y => !y.columnGroup).length === 0) :\n groupColumn.children.filter(x => x.columnGroup);\n childrenTotal.forEach(group => {\n const newState = this.columnGroupStates.get(group.field) || state;\n if (newState) {\n group.headerTemplate = this.headerTemplate;\n } else {\n group.headerTemplate = undefined;\n }\n });\n if (!groupColumn.hidden && childrenSubgroups.length > 0) {\n childrenSubgroups.forEach(group => {\n const newState = this.columnGroupStates.get(group.field) || state;\n this.resolveToggle(group, newState);\n });\n }\n }\n\n protected override buildDataView(data: any[]) {\n this._dataView = data;\n }\n\n /**\n * @hidden @internal\n */\n protected override getDataBasedBodyHeight(): number {\n const dvl = this.dataView?.length || 0;\n return dvl < this._defaultTargetRecordNumber ? 0 : this.defaultTargetBodyHeight;\n }\n\n protected override horizontalScrollHandler(event) {\n const scrollLeft = event.target.scrollLeft;\n this.theadRow.headerContainers.forEach(headerForOf => {\n headerForOf.onHScroll(scrollLeft);\n });\n super.horizontalScrollHandler(event);\n }\n\n protected override verticalScrollHandler(event) {\n this.verticalRowDimScrollContainers.forEach(x => {\n x.onScroll(event);\n });\n super.verticalScrollHandler(event);\n }\n\n /**\n * @hidden\n */\n protected override autogenerateColumns() {\n let columns = [];\n const data = this.gridAPI.filterDataByExpressions(this.filteringExpressionsTree);\n this.dimensionDataColumns = this.generateDimensionColumns();\n const flattenedColumnsWithSorting = PivotUtil.flatten(this.columnDimensions).filter(dim => dim.sortDirection);\n const expressions = flattenedColumnsWithSorting.length > 0 ? PivotSortUtil.generateDimensionSortingExpressions(flattenedColumnsWithSorting) : [];\n let sortedData = data;\n if (expressions.length > 0) {\n sortedData = DataUtil.sort(cloneArray(data), expressions, this.sortStrategy, this);\n }\n let fieldsMap;\n if (this.pivotConfiguration.columnStrategy && this.pivotConfiguration.columnStrategy instanceof NoopPivotDimensionsStrategy) {\n const fields = this.generateDataFields(sortedData);\n if (fields.length === 0) return;\n const rowFields = PivotUtil.flatten(this.pivotConfiguration.rows).map(x => x.memberName);\n const keyFields = Object.values(this.pivotKeys);\n const filteredFields = fields.filter(x => rowFields.indexOf(x) === -1 && keyFields.indexOf(x) === -1 &&\n x.indexOf(this.pivotKeys.rowDimensionSeparator + this.pivotKeys.level) === -1 &&\n x.indexOf(this.pivotKeys.rowDimensionSeparator + this.pivotKeys.records) === -1);\n fieldsMap = this.generateFromData(filteredFields);\n } else {\n fieldsMap = PivotUtil.getFieldsHierarchy(\n sortedData,\n this.columnDimensions,\n PivotDimensionType.Column,\n this.pivotKeys,\n this.pivotValueCloneStrategy\n );\n }\n columns = this.generateColumnHierarchy(fieldsMap, sortedData);\n this._autoGeneratedCols = columns;\n // reset expansion states if any are stored.\n this.columnGroupStates.forEach((value, key) => {\n if (value) {\n const primaryColumn = columns.find(x => x.field === key && x.headerTemplate === this.headerTemplate);\n const groupSummaryColumn = columns.find(x => x.field === key && x.headerTemplate !== this.headerTemplate);\n this.toggleRowGroup(primaryColumn, value);\n if (groupSummaryColumn) {\n groupSummaryColumn.headerTemplate = this.headerTemplate;\n }\n }\n });\n\n this.updateColumns(columns);\n this.pipeTrigger++;\n this.reflow();\n }\n\n protected generateDimensionColumns(): IgxColumnComponent[] {\n const columns = [];\n this.allVisibleDimensions.forEach((dim) => {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n ref.instance.field = dim.memberName;\n ref.instance.header = dim.displayName || dim.memberName;\n ref.instance.headerTemplate = this.rowDimensionHeaderTemplate;\n ref.instance.resizable = this.rowDimensionResizing;\n ref.instance.sortable = dim.sortable === undefined ? true : dim.sortable;\n ref.instance.width = this.rowDimensionWidth(dim);\n ref.instance.filteringIgnoreCase = false;\n ref.changeDetectorRef.detectChanges();\n columns.push(ref.instance);\n });\n return columns;\n }\n\n protected override calculateGridSizes(recalcFeatureWidth = true) {\n super.calculateGridSizes(recalcFeatureWidth);\n if (this.hasDimensionsToAutosize) {\n this.cdr.detectChanges();\n this.zone.onStable.pipe(first()).subscribe(() => {\n requestAnimationFrame(() => {\n this.autoSizeDimensionsInView();\n });\n });\n }\n }\n\n protected getContentCollection(dimenstion: IPivotDimension) {\n let contentCollection;\n if (this.hasHorizontalLayout) {\n const allMrlContents = this.rowDimensionMrlRowsCollection.map(mrlRow => mrlRow.contentCells.toArray()).flat();\n contentCollection = allMrlContents.filter(cell => cell.rootDimension === dimenstion);\n } else {\n contentCollection = this.rowDimensionContentCollection.toArray();\n }\n return contentCollection;\n }\n\n protected autoSizeDimensionsInView() {\n if (!this.hasDimensionsToAutosize) return;\n for (const dim of this.visibleRowDimensions) {\n if (dim.width === 'auto') {\n const contentWidths = [];\n const relatedDims = PivotUtil.flatten([dim]).map(x => x.memberName);\n const contentCollection = this.getContentCollection(dim);\n const content = contentCollection.filter(x => relatedDims.indexOf(x.dimension.memberName) !== -1);\n const headers = content.map(x => x.headerGroups.toArray()).flat().map(x => x.header && x.header.refInstance);\n headers.forEach((header) => contentWidths.push(header?.nativeElement?.offsetWidth || 0));\n if (this.pivotUI.showRowHeaders) {\n const dimensionHeader = this.theadRow.rowDimensionHeaders.find(x => x.column.field === dim.memberName);\n contentWidths.push(parseFloat(this.getLargesContentWidth([dimensionHeader])));\n }\n const max = Math.max(...contentWidths);\n if (max === 0) {\n // cells not in DOM yet...\n continue;\n }\n const maxSize = Math.ceil(Math.max(...contentWidths));\n dim.autoWidth = maxSize;\n }\n }\n\n if (this.isColumnWidthSum) {\n this.calcWidth = this.getColumnWidthSum();\n }\n }\n\n /** @hidden @internal */\n public get hasDimensionsToAutosize() {\n return this.rowDimensions.some(x => x.width === 'auto' && !x.autoWidth);\n }\n\n protected generateFromData(fields: string[]) {\n const separator = this.pivotKeys.columnDimensionSeparator;\n const dataArr = fields.map(x => x.split(separator)).sort(x => x.length);\n const hierarchy = new Map<string, any>();\n const columnDimensions = PivotUtil.flatten(this.columnDimensions);\n dataArr.forEach(arr => {\n let currentHierarchy = hierarchy;\n const path = [];\n let index = 0;\n for (const val of arr) {\n path.push(val);\n const newPath = path.join(separator);\n let targetHierarchy = currentHierarchy.get(newPath);\n if (!targetHierarchy) {\n const currentColumnDimension = columnDimensions[index];\n currentHierarchy.set(newPath, { value: newPath, expandable: !!currentColumnDimension.childLevel, children: new Map<string, any>(), dimension: currentColumnDimension });\n targetHierarchy = currentHierarchy.get(newPath);\n }\n currentHierarchy = targetHierarchy.children;\n index++;\n }\n });\n return hierarchy;\n }\n protected generateColumnHierarchy(fields: Map<string, any>, data, parent = null): IgxColumnComponent[] {\n let columns = [];\n if (fields.size === 0) {\n this.values.forEach((value) => {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n let columnDataType = value.dataType || this.resolveDataTypes(data.length ? data[0][value.member] : null);\n\n if (value.aggregate?.key?.toLowerCase() === 'count' && (columnDataType === GridColumnDataType.Currency || columnDataType == GridColumnDataType.Percent)) {\n columnDataType = GridColumnDataType.Number;\n }\n\n ref.instance.header = value.displayName;\n ref.instance.field = value.member;\n ref.instance.parent = parent;\n ref.instance.sortable = true;\n ref.instance.dataType = columnDataType;\n ref.instance.formatter = value.formatter;\n columns.push(ref.instance);\n });\n return columns;\n }\n const currentFields = fields;\n currentFields.forEach((value) => {\n let shouldGenerate = true;\n if (data.length === 0) {\n shouldGenerate = false;\n }\n if (shouldGenerate && (value.children == null || value.children.length === 0 || value.children.size === 0)) {\n const col = this.createColumnForDimension(value, data, parent, this.hasMultipleValues);\n\n if (!this.hasMultipleValues && this.values.length > 0) {\n PivotUtil.updateColumnTypeByAggregator([col], this.values[0], true);\n }\n\n columns.push(col);\n if (this.hasMultipleValues) {\n const measureChildren = this.getMeasureChildren(data, col, false, value.dimension.width);\n\n measureChildren.forEach((child, index) => {\n const pivotValue = this.values[index];\n PivotUtil.updateColumnTypeByAggregator([child], pivotValue, this.values.length === 1);\n });\n\n col.children.reset(measureChildren);\n columns = columns.concat(measureChildren);\n }\n\n } else if (shouldGenerate) {\n const col = this.createColumnForDimension(value, data, parent, true);\n if (value.expandable) {\n col.headerTemplate = this.headerTemplate;\n }\n const children = this.generateColumnHierarchy(value.children, data, col);\n const filteredChildren = children.filter(x => x.level === col.level + 1);\n columns.push(col);\n if (this.hasMultipleValues) {\n let measureChildren = this.getMeasureChildren(data, col, true, value.dimension.width);\n const nestedChildren = filteredChildren;\n //const allChildren = children.concat(measureChildren);\n col.children.reset(nestedChildren);\n columns = columns.concat(children);\n if (value.dimension.childLevel) {\n const sibling = this.createColumnForDimension(value, data, parent, true);\n columns.push(sibling);\n\n measureChildren = this.getMeasureChildren(data, sibling, false, value.dimension?.width);\n sibling.children.reset(measureChildren);\n columns = columns.concat(measureChildren);\n }\n\n } else {\n col.children.reset(filteredChildren);\n columns = columns.concat(children);\n if (value.dimension.childLevel) {\n const sibling = this.createColumnForDimension(value, data, parent, false);\n columns.push(sibling);\n }\n }\n }\n });\n\n return columns;\n }\n\n\n protected generateConfig() {\n if (!this.data) return;\n\n const data = this.data;\n const fields = this.generateDataFields(data);\n const columnDimensions: IPivotDimension[] = [];\n const rowDimensions: IPivotDimension[] = [];\n const values: IPivotValue[] = [];\n let isFirstDate = true;\n fields.forEach((field) => {\n const dataType = this.resolveDataTypes(data[0][field]);\n switch (dataType) {\n case \"number\":\n {\n const value: IPivotValue = {\n member: field,\n displayName: field,\n dataType: dataType,\n aggregate: {\n key: 'sum',\n label: 'Sum',\n aggregatorName: \"SUM\"\n },\n enabled: true\n };\n values.push(value);\n break;\n }\n case \"date\":\n {\n const dimension: IPivotDimension = new IgxPivotDateDimension(\n {\n memberName: field,\n enabled: isFirstDate,\n dataType: dataType\n }\n )\n rowDimensions.push(dimension);\n isFirstDate = false;\n break;\n }\n default: {\n const dimension: IPivotDimension = {\n memberName: field,\n enabled: false,\n dataType: dataType\n };\n columnDimensions.push(dimension);\n break;\n }\n }\n });\n const config: IPivotConfiguration = {\n columns: columnDimensions,\n rows: rowDimensions,\n values: values\n };\n this.pivotConfiguration = config;\n }\n\n protected createColumnForDimension(value: any, data: any, parent: ColumnType, isGroup: boolean) {\n const key = value.value;\n const ref = isGroup ?\n createComponent(IgxColumnGroupComponent, { environmentInjector: this.envInjector, elementInjector: this.injector }) :\n createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n ref.instance.header = parent != null ? key.split(parent.header + this.pivotKeys.columnDimensionSeparator)[1] : key;\n ref.instance.field = key;\n ref.instance.parent = parent;\n if (value.dimension.width) {\n ref.instance.width = value.dimension.width;\n }\n const valueDefinition = this.values[0];\n ref.instance.dataType = valueDefinition?.dataType || this.resolveDataTypes(data[0][valueDefinition?.member]);\n ref.instance.formatter = valueDefinition?.formatter;\n ref.instance.sortable = true;\n ref.changeDetectorRef.detectChanges();\n return ref.instance;\n }\n\n protected resolveColumnDimensionWidth(dim: IPivotDimension) {\n if (dim.width) {\n return dim.width;\n }\n return this.minColumnWidth + 'px';\n }\n\n protected getMeasureChildren(data, parent, hidden, parentWidth) {\n const cols = [];\n const count = this.values.length;\n const childWidth = parseInt(parentWidth, 10) / count;\n const isPercent = parentWidth && parentWidth.indexOf('%') !== -1;\n const isAuto = parentWidth && parentWidth.indexOf('auto') !== -1;\n this.values.forEach(val => {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n ref.instance.header = val.displayName || val.member;\n ref.instance.field = parent.field + this.pivotKeys.columnDimensionSeparator + val.member;\n ref.instance.parent = parent;\n if (parentWidth) {\n ref.instance.width = isAuto ? 'auto' : isPercent ? childWidth + '%' : childWidth + 'px';\n }\n ref.instance.hidden = hidden;\n ref.instance.sortable = this._sortableColumns;\n ref.instance.dataType = val.dataType || this.resolveDataTypes(data[0][val.member]);\n ref.instance.formatter = val.formatter;\n ref.changeDetectorRef.detectChanges();\n cols.push(ref.instance);\n });\n return cols;\n }\n\n /**\n * @hidden @internal\n */\n @ViewChild('emptyPivotGridTemplate', { read: TemplateRef, static: true })\n public defaultEmptyPivotGridTemplate: TemplateRef<any>;\n\n /**\n * Gets/Sets a custom template when pivot grid is empty.\n *\n * @example\n * ```html\n * <igx-pivot-grid [emptyPivotGridTemplate]=\"myTemplate\"><igx-pivot-grid>\n * ```\n */\n @Input()\n public emptyPivotGridTemplate: TemplateRef<void>;\n\n /**\n * @hidden @internal\n */\n public override get template(): TemplateRef<any> {\n const allEnabledDimensions = this.rowDimensions.concat(this.columnDimensions);\n if (allEnabledDimensions.length === 0 && this.values.length === 0) {\n // no enabled values and dimensions\n return this.emptyPivotGridTemplate || this.defaultEmptyPivotGridTemplate;\n }\n return super.template;\n }\n\n private emitInitEvents(pivotConfig: IPivotConfiguration) {\n const dimensions = PivotUtil.flatten(this.allDimensions);\n dimensions.forEach(dim => {\n this.dimensionInit.emit(dim);\n });\n const values = pivotConfig?.values;\n values?.forEach(val => {\n this.valueInit.emit(val);\n });\n }\n\n protected rowDimensionByName(memberName: string) {\n return this.visibleRowDimensions.find((rowDim) => rowDim.memberName === memberName);\n }\n\n protected calculateResizerTop() {\n return this.pivotUI.showRowHeaders ?\n (this.theadRow.pivotFilterContainer?.nativeElement.offsetHeight || 0) + (this.theadRow.pivotRowContainer?.nativeElement.offsetHeight || 0) :\n this.theadRow.nativeElement.offsetHeight;\n }\n\n protected override updateDefaultRowHeight() {\n super.updateDefaultRowHeight();\n if (this.hasHorizontalLayout) {\n // Trigger pipes to recalc heights for the horizontal layout mrl rows.\n this.regroupTrigger++;\n }\n }\n\n /**\n * @hidden @internal\n */\n public createRow(index: number, data?: any): RowType {\n let row: RowType;\n\n const dataIndex = this._getDataViewIndex(index);\n const rec = data ?? this.dataView[dataIndex];\n\n\n if (!row && rec) {\n row = new IgxPivotGridRow(this, index, rec);\n }\n return row;\n }\n}\n","<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar,igc-grid-toolbar\"></ng-content>\n\n<!-- Grid table head row area -->\n<igx-pivot-header-row class=\"igx-grid-thead igx-grid-thead--pivot\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [width]=\"calcWidth\"\n [pinnedStartColumnCollection]=\"pinnedStartColumns\"\n [pinnedEndColumnCollection]=\"pinnedEndColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n>\n</igx-pivot-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <ng-container *ngTemplateOutlet=\"rowDimensions.length ? (hasHorizontalLayout ? horizontalRowDimensionsTemplate : defaultRowDimensionsTemplate) : emptyRowDimensionsTemplate; context: this\"></ng-container>\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)=\"preventContainerScroll($event)\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]=\"totalHeight\" [style.width.px]=\"pivotContentCalcWidth || null\" [style.width]=\"!platform.isBrowser ? '100%' : undefined\" #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n @if (hasMovableColumns && columnInDrag && pinnedColumns.length <= 0) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n }\n @if (hasMovableColumns && columnInDrag && pinnedColumns.length > 0) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedStartWidth\"></span>\n }\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"renderData\n | pivotGridFilter:pivotConfiguration:filterStrategy:advancedFilteringExpressionsTree:filteringPipeTrigger:pipeTrigger\n | pivotGridSort:pivotConfiguration:sortStrategy:pipeTrigger\n | pivotGridRow:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n | pivotGridColumn:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n | pivotGridAutoTransform:pivotConfiguration:pipeTrigger\n | pivotGridColumnSort:sortingExpressions:sortStrategy:pipeTrigger\n | pivotGridRowExpansion:pivotConfiguration:expansionStates:defaultExpandState:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxGridForOfVariableSizes]=\"false\"\n #verticalScrollContainer (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]=\"recordTemplate\"\n [igxTemplateOutletContext]=\"getContext(rowData, rowIndex)\"\n (cachedViewLoaded)=\"cachedViewLoaded($event)\">\n </ng-template>\n </ng-template>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData>\n <igx-pivot-row [gridID]=\"id\" [index]=\"rowIndex\" [data]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:isRecordMerged(rowData):false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-pivot-row>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: this }\"></ng-container>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n @if (shouldOverlayLoading) {\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n }\n </div>\n @if (hasMovableColumns && columnInDrag) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n }\n <div [hidden]=\"!hasVerticalScroll()\" class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=\" isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]=\"calcHeight\">\n <ng-template igxGridFor [igxGridForOf]=\"[]\" #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]=\"!isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]=\"snackbarDisplayTime\">{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]=\"pivotPinnedStartWidth\" [style.min-width.px]=\"pivotPinnedStartWidth\"></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]=\"pivotUnpinnedWidth\">\n <ng-template igxGridFor [igxGridForOf]=\"EMPTY_DATA\" #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.width.px]=\"pivotPinnedEndWidth\" [style.min-width.px]=\"pivotPinnedEndWidth\" [hidden]=\"pivotPinnedEndWidth === 0\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" #tfoot>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer,igc-grid-footer\"></ng-content>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n </span>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n@if (colResizingService.showResizer) {\n <igx-pivot-grid-column-resizer [restrictResizerTop]=\"calculateResizerTop()\"></igx-pivot-grid-column-resizer>\n}\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n\n<ng-template #headerTemplate let-column>\n <div class=\"igx-grid__tr--header\">\n <igx-icon\n family=\"default\"\n [name]=\"getColumnGroupExpandState(column) ? 'tree_expand' : 'tree_collapse'\"\n [attr.draggable]=\"false\"\n (click)=\"toggleColumn(column)\">\n </igx-icon>\n {{column.header}}\n </div>\n</ng-template>\n\n<ng-template #defaultRowDimensionsTemplate>\n @for (dim of rowDimensions; track dim.memberName; let dimIndex = $index) {\n <div tabindex=\"0\" [style.height.px]=\"totalHeight\" #rowDimensionContainer class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n <ng-template igxGridFor let-rowData\n [igxGridForOf]=\"dataView | pivotGridCellMerging:pivotConfiguration:dim:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"renderedRowHeight\"\n [igxForSizePropName]=\"'height'\"\n #verticalRowDimScrollContainer\n >\n <igx-pivot-row-dimension-content\n class=\"igx-grid-thead\" [grid]=\"this\"\n [dimension]=\"rowData.dimensions[dimIndex]\"\n [rootDimension]=\"dim\"\n [style.height.px]=\"renderedRowHeight * (rowData.rowSpan || 1)\"\n [rowIndex]=\"rowIndex\" [rowData]=\"rowData\"\n [width]=\"rowDimensionWidthToPixels(dim)\">\n </igx-pivot-row-dimension-content>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(dim) }\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #horizontalRowDimensionsTemplate>\n <div tabindex=\"0\" class=\"igx-grid__tbody-pivot-mrl-dimension\" #rowDimensionContainer [style.height.px]=\"totalHeight\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n @if (dataView | pivotGridHorizontalRowGrouping:pivotConfiguration:pipeTrigger:regroupTrigger; as groupedData) {\n <ng-template #verticalRowDimScrollContainer role=\"rowgroup\" igxGridFor let-rowGroup let-rowIndex=\"index\"\n [igxGridForOf]=\"groupedData\"\n [igxForScrollOrientation]=\"'vertical'\"\n [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\"\n [igxForItemSize]=\"renderedRowHeight\"\n [igxForSizePropName]=\"'height'\"\n >\n <igx-pivot-row-dimension-mrl-row [rowIndex]=\"rowIndex\" [rowGroup]=\"rowGroup\" [groupedData]=\"groupedData\" [style.height.px]=\"renderedRowHeight * rowGroup.length\"></igx-pivot-row-dimension-mrl-row>\n </ng-template>\n }\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: pivotRowWidths }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyRowDimensionsTemplate>\n <div tabindex=\"0\" #rowDimensionContainer role=\"rowgroup\" class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n @if ((columnDimensions.length > 0 || values.length > 0) && data.length > 0) {\n <igx-pivot-row-dimension-content class=\"igx-grid-thead\" [grid]=\"this\"\n [dimension]=\"emptyRowDimension\"\n [rootDimension]=\"emptyRowDimension\"\n [rowIndex]=\"0\" [rowData]=\"dataView[0]\"\n [width]=\"rowDimensionWidthToPixels(emptyRowDimension)\">\n </igx-pivot-row-dimension-content>\n }\n <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(emptyRowDimension) }\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #emptyPivotGridTemplate>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{resourceStrings.igx_grid_pivot_empty_message}}</span>\n </span>\n</ng-template>\n\n<ng-template #emptyRowDimensionFill let-width=\"widthPx\">\n @if (emptyBottomSize > 0) {\n <div class=\"igx-pivot-grid-row-filler__wrapper\" [style.height.px]=\"emptyBottomSize\" [style.width.px]=\"width\">\n <!-- Reuse header styles to keep visuals consistent -->\n <div class=\"igx-grid-thead__wrapper\">\n <div class=\"igx-grid-th\"></div>\n </div>\n </div>\n }\n</ng-template>\n\n<div [hidden]=\"true\">\n <igx-grid-excel-style-filtering [maxHeight]=\"excelStyleFilterMaxHeight\" [minHeight]=\"excelStyleFilterMinHeight\">\n <div igxExcelStyleColumnOperations [hidden]=\"true\"></div>\n <igx-excel-style-filter-operations>\n <igx-excel-style-search></igx-excel-style-search>\n </igx-excel-style-filter-operations>\n </igx-grid-excel-style-filtering>\n</div>\n\n@if (platform.isElements) {\n <div #sink style=\"display: none;\"></div>\n <ng-content select=\"igx-grid-state,igc-grid-state\"></ng-content>\n}\n","import { useAnimation } from \"@angular/animations\";\nimport { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, Renderer2, booleanAttribute, inject } from \"@angular/core\";\nimport { first } from \"rxjs/operators\";\nimport { IgxFilterPivotItemsPipe } from \"./pivot-grid.pipes\";\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\nimport { IgxInputDirective, IgxInputGroupComponent, IgxPrefixDirective } from 'igniteui-angular/input-group';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxListComponent, IgxListItemComponent } from 'igniteui-angular/list';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\nimport { IgxAccordionComponent } from 'igniteui-angular/accordion';\nimport { IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelTitleDirective } from 'igniteui-angular/expansion-panel';\nimport { IDragBaseEventArgs, IDragGhostBaseEventArgs, IDragMoveEventArgs, IDropBaseEventArgs, IDropDroppedEventArgs, IgxDragDirective, IgxDragHandleDirective, IgxDropDirective } from 'igniteui-angular/directives';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, ISelectionEventArgs } from 'igniteui-angular/drop-down';\nimport { AbsoluteScrollStrategy, AutoPositionStrategy, ColumnType, OverlaySettings, PositionSettings, ɵSize, SortingDirection, VerticalAlignment } from 'igniteui-angular/core';\nimport { IPivotAggregator, IPivotDimension, IPivotValue, PivotDimensionType, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\n\ninterface IDataSelectorPanel {\n name: string;\n i18n: string;\n type?: PivotDimensionType;\n dataKey: string;\n icon: string;\n itemKey: string;\n displayKey?: string;\n sortable: boolean;\n dragChannels: string[];\n}\n\n/* blazorIndirectRender\n blazorComponent */\n/* wcElementTag: igc-pivot-data-selector */\n/**\n * Pivot Data Selector provides means to configure the pivot state of the Pivot Grid via a vertical panel UI\n *\n * @igxModule IgxPivotGridModule\n * @igxGroup Grids & Lists\n * @igxKeywords data selector, pivot, grid\n * @igxTheme pivot-data-selector-theme\n * @remarks\n * The Ignite UI Data Selector has a searchable list with the grid data columns,\n * there are also four expandable areas underneath for filters, rows, columns, and values\n * is used for grouping and aggregating simple flat data into a pivot table.\n * @example\n * ```html\n * <igx-pivot-grid #grid1 [data]=\"data\" [pivotConfiguration]=\"configuration\">\n * </igx-pivot-grid>\n * <igx-pivot-data-selector [grid]=\"grid1\"></igx-pivot-data-selector>\n * ```\n */\n@Component({\n selector: \"igx-pivot-data-selector\",\n templateUrl: \"./pivot-data-selector.component.html\",\n imports: [IgxInputGroupComponent, IgxIconComponent, IgxPrefixDirective, IgxInputDirective, IgxListComponent, IgxListItemComponent, IgxCheckboxComponent, IgxAccordionComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxDropDirective, IgxExpansionPanelTitleDirective, IgxChipComponent, IgxExpansionPanelBodyComponent, IgxDragDirective, IgxDropDownItemNavigationDirective, IgxDragHandleDirective, IgxDropDownComponent, IgxDropDownItemComponent, IgxFilterPivotItemsPipe]\n})\nexport class IgxPivotDataSelectorComponent {\n private renderer = inject(Renderer2);\n private cdr = inject(ChangeDetectorRef);\n\n\n /**\n * Gets/sets whether the columns panel is expanded\n * Get\n * ```typescript\n * const columnsPanelState: boolean = this.dataSelector.columnsExpanded;\n * ```\n * Set\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [columnsExpanded]=\"columnsPanelState\"></igx-pivot-data-selector>\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [(columnsExpanded)]=\"columnsPanelState\"></igx-pivot-data-selector>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public columnsExpanded = true;\n\n /**\n * Emitted when the columns panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n * (columnsExpandedChange)=\"columnsExpandedChange($event)\"></igx-pivot-data-selector>\n * ```\n */\n @Output()\n public columnsExpandedChange = new EventEmitter<boolean>();\n\n /**\n * Gets/sets whether the rows panel is expanded\n * Get\n * ```typescript\n * const rowsPanelState: boolean = this.dataSelector.rowsExpanded;\n * ```\n * Set\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [rowsExpanded]=\"rowsPanelState\"></igx-pivot-data-selector>\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [(rowsExpanded)]=\"rowsPanelState\"></igx-pivot-data-selector>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public rowsExpanded = true;\n\n /**\n * Emitted when the rows panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n * (rowsExpandedChange)=\"rowsExpandedChange($event)\"></igx-pivot-data-selector>\n * ```\n */\n @Output()\n public rowsExpandedChange = new EventEmitter<boolean>();\n\n /**\n * Gets/sets whether the filters panel is expanded\n * Get\n * ```typescript\n * const filtersPanelState: boolean = this.dataSelector.filtersExpanded;\n * ```\n * Set\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [filtersExpanded]=\"filtersPanelState\"></igx-pivot-data-selector>\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [(filtersExpanded)]=\"filtersPanelState\"></igx-pivot-data-selector>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public filtersExpanded = true;\n\n /**\n * Emitted when the filters panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n * (filtersExpandedChange)=\"filtersExpandedChange($event)\"></igx-pivot-data-selector>\n * ```\n */\n @Output()\n public filtersExpandedChange = new EventEmitter<boolean>();\n\n /**\n * Gets/sets whether the values panel is expanded\n * Get\n * ```typescript\n * const valuesPanelState: boolean = this.dataSelector.valuesExpanded;\n * ```\n * Set\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [valuesExpanded]=\"valuesPanelState\"></igx-pivot-data-selector>\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-pivot-data-selector [grid]=\"grid1\" [(valuesExpanded)]=\"valuesPanelState\"></igx-pivot-data-selector>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public valuesExpanded = true;\n\n /**\n * Emitted when the values panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n * (valuesExpandedChange)=\"valuesExpandedChange($event)\"></igx-pivot-data-selector>\n * ```\n */\n @Output()\n public valuesExpandedChange = new EventEmitter<boolean>();\n\n private _grid: PivotGridType;\n private _dropDelta = 0;\n\n /** @hidden @internal **/\n @HostBinding(\"class.igx-pivot-data-selector\")\n public cssClass = \"igx-pivot-data-selector\";\n\n @HostBinding(\"style.--ig-size\")\n protected get size(): ɵSize {\n return this.grid?.gridSize;\n }\n\n /** @hidden @internal **/\n public dimensions: IPivotDimension[];\n\n private _subMenuPositionSettings: PositionSettings = {\n verticalStartPoint: VerticalAlignment.Bottom,\n closeAnimation: undefined,\n };\n\n private _subMenuOverlaySettings: OverlaySettings = {\n closeOnOutsideClick: true,\n modal: false,\n positionStrategy: new AutoPositionStrategy(\n this._subMenuPositionSettings\n ),\n scrollStrategy: new AbsoluteScrollStrategy(),\n };\n\n /* blazorSuppress */\n public animationSettings = {\n closeAnimation: useAnimation(fadeOut, {\n params: {\n duration: \"0ms\",\n },\n }),\n openAnimation: useAnimation(fadeIn, {\n params: {\n duration: \"0ms\",\n },\n }),\n };\n\n /** @hidden @internal */\n public aggregateList: IPivotAggregator[] = [];\n /** @hidden @internal */\n public value: IPivotValue;\n /** @hidden @internal */\n public ghostText: string;\n /** @hidden @internal */\n public ghostWidth: number;\n /** @hidden @internal */\n public dropAllowed: boolean;\n /** @hidden @internal */\n public get dims(): IPivotDimension[] {\n return this._grid?.allDimensions || [];\n }\n /** @hidden @internal */\n public get values(): IPivotValue[] {\n return this._grid?.pivotConfiguration.values || [];\n }\n\n /**\n * @hidden @internal\n */\n public _panels: IDataSelectorPanel[] = [\n {\n name: \"Filters\",\n i18n: 'igx_grid_pivot_selector_filters',\n type: PivotDimensionType.Filter,\n dataKey: \"filterDimensions\",\n icon: \"filter_list\",\n itemKey: \"memberName\",\n displayKey: 'displayName',\n sortable: false,\n dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n },\n {\n name: \"Columns\",\n i18n: 'igx_grid_pivot_selector_columns',\n type: PivotDimensionType.Column,\n dataKey: \"columnDimensions\",\n icon: \"view_column\",\n itemKey: \"memberName\",\n displayKey: 'displayName',\n sortable: true,\n dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n },\n {\n name: \"Rows\",\n i18n: 'igx_grid_pivot_selector_rows',\n type: PivotDimensionType.Row,\n dataKey: \"rowDimensions\",\n icon: \"table_rows\",\n itemKey: \"memberName\",\n displayKey: 'displayName',\n sortable: true,\n dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n },\n {\n name: \"Values\",\n i18n: 'igx_grid_pivot_selector_values',\n type: null,\n dataKey: \"values\",\n icon: \"functions\",\n itemKey: \"member\",\n displayKey: 'displayName',\n sortable: false,\n dragChannels: [\"Values\"]\n },\n ];\n\n\n /* treatAsRef */\n /**\n * Sets the grid.\n */\n @Input()\n public set grid(value: PivotGridType) {\n this._grid = value;\n }\n\n /* treatAsRef */\n /**\n * Returns the grid.\n */\n public get grid(): PivotGridType {\n return this._grid;\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemSort(\n _: Event,\n dimension: IPivotDimension,\n dimensionType: PivotDimensionType\n ) {\n if (\n !this._panels.find(\n (panel: IDataSelectorPanel) => panel.type === dimensionType\n ).sortable\n )\n return;\n\n const startDirection = dimension.sortDirection || SortingDirection.None;\n const direction = startDirection + 1 > SortingDirection.Desc ?\n SortingDirection.None : startDirection + 1;\n this.grid.sortDimension(dimension, direction);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onFilteringIconPointerDown(event: PointerEvent) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n /**\n * @hidden\n * @internal\n */\n public onFilteringIconClick(event: MouseEvent, dimension: IPivotDimension) {\n event.stopPropagation();\n event.preventDefault();\n\n let dim = dimension;\n let col: ColumnType;\n\n while (dim) {\n col = this.grid.dimensionDataColumns.find(\n (x) => x.field === dim.memberName\n );\n if (col) {\n break;\n } else {\n dim = dim.childLevel;\n }\n }\n\n this.grid.filteringService.toggleFilterDropdown(event.target, col);\n }\n\n /**\n * @hidden\n * @internal\n */\n protected getDimensionState(dimensionType: PivotDimensionType) {\n switch (dimensionType) {\n case PivotDimensionType.Row:\n return this.grid.rowDimensions;\n case PivotDimensionType.Column:\n return this.grid.columnDimensions;\n case PivotDimensionType.Filter:\n return this.grid.filterDimensions;\n default:\n return null;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n protected moveValueItem(itemId: string) {\n const aggregation = this.grid.pivotConfiguration.values;\n const valueIndex =\n aggregation.findIndex((x) => x.member === itemId) !== -1\n ? aggregation?.findIndex((x) => x.member === itemId)\n : aggregation.length;\n const newValueIndex =\n valueIndex + this._dropDelta < 0 ? 0 : valueIndex + this._dropDelta;\n\n const aggregationItem = aggregation.find(\n (x) => x.member === itemId || x.displayName === itemId\n );\n\n if (aggregationItem) {\n this.grid.moveValue(aggregationItem, newValueIndex);\n this.grid.valuesChange.emit({\n values: this.grid.pivotConfiguration.values,\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDropped(\n event: IDropDroppedEventArgs,\n dimensionType: PivotDimensionType\n ) {\n if (!this.dropAllowed) {\n return;\n }\n\n const dimension = this.grid.getDimensionsByType(dimensionType);\n const dimensionState = this.getDimensionState(dimensionType);\n const itemId = event.drag.element.nativeElement.id;\n const targetId = event.owner.element.nativeElement.id;\n const dimensionItem = dimension?.find((x) => x.memberName === itemId);\n const itemIndex =\n dimension?.findIndex((x) => x?.memberName === itemId) !== -1\n ? dimension?.findIndex((x) => x.memberName === itemId)\n : dimension?.length;\n const dimensions = this.grid.allDimensions.filter((x) => x && x.memberName === itemId);\n\n const reorder =\n dimensionState?.findIndex((item) => item.memberName === itemId) !==\n -1;\n\n let targetIndex =\n targetId !== \"\"\n ? dimension?.findIndex((x) => x.memberName === targetId)\n : dimension?.length;\n\n if (!dimension) {\n this.moveValueItem(itemId);\n }\n\n if (reorder) {\n targetIndex =\n itemIndex + this._dropDelta < 0\n ? 0\n : itemIndex + this._dropDelta;\n }\n\n if (dimensionItem) {\n this.grid.moveDimension(dimensionItem, dimensionType, targetIndex);\n } else {\n const newDim = dimensions.find((x) => x.memberName === itemId);\n this.grid.moveDimension(newDim, dimensionType, targetIndex);\n }\n\n this.grid.dimensionsChange.emit({\n dimensions: dimension,\n dimensionCollectionType: dimensionType,\n });\n }\n\n /**\n * @hidden\n * @internal\n */\n protected updateDropDown(\n value: IPivotValue,\n dropdown: IgxDropDownComponent\n ) {\n this.value = value;\n dropdown.width = \"200px\";\n this.aggregateList = PivotUtil.getAggregateList(value, this.grid);\n this.cdr.detectChanges();\n dropdown.open(this._subMenuOverlaySettings);\n }\n\n /**\n * @hidden\n * @internal\n */\n public onSummaryClick(\n event: MouseEvent,\n value: IPivotValue,\n dropdown: IgxDropDownComponent\n ) {\n this._subMenuOverlaySettings.target =\n event.currentTarget as HTMLElement;\n\n if (dropdown.collapsed) {\n this.updateDropDown(value, dropdown);\n } else {\n // close for previous chip\n dropdown.close();\n dropdown.closed.pipe(first()).subscribe(() => {\n this.updateDropDown(value, dropdown);\n });\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onAggregationChange(event: ISelectionEventArgs) {\n\n if (!this.isSelected(event.newSelection.value)) {\n this.value.aggregate = event.newSelection.value;\n const isSingleValue = this.grid.values.length === 1;\n\n PivotUtil.updateColumnTypeByAggregator(this.grid.columns, this.value, isSingleValue);\n\n this.grid.pipeTrigger++;\n this.grid.cdr.markForCheck();\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public isSelected(val: IPivotAggregator) {\n return this.value.aggregate.key === val.key;\n }\n\n /**\n * @hidden\n * @internal\n */\n public ghostCreated(event: IDragGhostBaseEventArgs, value: string) {\n const { width: itemWidth } =\n event.owner.element.nativeElement.getBoundingClientRect();\n this.ghostWidth = itemWidth;\n this.ghostText = value;\n this.renderer.setStyle(\n event.owner.element.nativeElement,\n \"position\",\n \"absolute\"\n );\n this.renderer.setStyle(\n event.owner.element.nativeElement,\n \"visibility\",\n \"hidden\"\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n public toggleItem(item: IPivotDimension | IPivotValue) {\n if (item as IPivotValue) {\n this.grid.toggleValue(item as IPivotValue);\n }\n\n if (item as IPivotDimension) {\n this.grid.toggleDimension(item as IPivotDimension);\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onPanelEntry(event: IDropBaseEventArgs, panel: string) {\n this.dropAllowed = event.dragData.gridID === this.grid.id && event.dragData.selectorChannels?.some(\n (channel: string) => channel === panel\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDragMove(event: IDragMoveEventArgs) {\n const clientRect =\n event.owner.element.nativeElement.getBoundingClientRect();\n this._dropDelta = Math.round(\n (event.nextPageY - event.startY) / clientRect.height\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDragEnd(event: IDragBaseEventArgs) {\n this.renderer.setStyle(\n event.owner.element.nativeElement,\n \"position\",\n \"static\"\n );\n this.renderer.setStyle(\n event.owner.element.nativeElement,\n \"visibility\",\n \"visible\"\n );\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDragOver(event: IDropBaseEventArgs) {\n if (this.dropAllowed) {\n this.renderer.addClass(\n event.owner.element.nativeElement,\n \"igx-drag--push\"\n );\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onItemDragLeave(event: IDropBaseEventArgs) {\n if (this.dropAllowed) {\n this.renderer.removeClass(\n event.owner.element.nativeElement,\n \"igx-drag--push\"\n );\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public getPanelCollapsed(panelType: PivotDimensionType): boolean {\n switch (panelType) {\n case PivotDimensionType.Column:\n return !this.columnsExpanded;\n case PivotDimensionType.Filter:\n return !this.filtersExpanded;\n case PivotDimensionType.Row:\n return !this.rowsExpanded;\n default:\n return !this.valuesExpanded;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public onCollapseChange(value: boolean, panelType: PivotDimensionType): void {\n switch (panelType) {\n case PivotDimensionType.Column:\n this.columnsExpanded = !value;\n this.columnsExpandedChange.emit(this.columnsExpanded);\n break;\n case PivotDimensionType.Filter:\n this.filtersExpanded = !value;\n this.filtersExpandedChange.emit(this.filtersExpanded);\n break;\n case PivotDimensionType.Row:\n this.rowsExpanded = !value;\n this.rowsExpandedChange.emit(this.rowsExpanded);\n break;\n default:\n this.valuesExpanded = !value;\n this.valuesExpandedChange.emit(this.valuesExpanded)\n }\n }\n}\n","<div class=\"igx-pivot-data-selector__filter\">\n <igx-input-group type=\"box\">\n <igx-icon family=\"default\" name=\"search\" igxPrefix></igx-icon>\n <input\n #input\n igxInput\n tabindex=\"0\"\n placeholder=\"Search\"\n autocomplete=\"off\"\n />\n </igx-input-group>\n <igx-list>\n @for (\n item of dims | filterPivotItems: input.value:grid?.pipeTrigger;\n track item.memberName\n ) {\n <igx-list-item [id]=\"item.memberName\">\n <igx-checkbox\n [aria-labelledby]=\"item.memberName\"\n [disableRipple]=\"true\"\n [checked]=\"item.enabled\"\n (click)=\"toggleItem(item)\"\n ></igx-checkbox>\n <span>{{ item.displayName || item.memberName }}</span>\n </igx-list-item>\n }\n @for (\n item of values | filterPivotItems: input.value:grid?.pipeTrigger;\n track item\n ) {\n <igx-list-item [id]=\"item.member\">\n <igx-checkbox\n [aria-labelledby]=\"item.member\"\n [disableRipple]=\"true\"\n [checked]=\"item.enabled\"\n (click)=\"toggleItem(item)\"\n ></igx-checkbox>\n <span>{{ item.displayName || item.member }}</span>\n </igx-list-item>\n }\n </igx-list>\n</div>\n\n<igx-accordion>\n @for (panel of _panels; track panel) {\n <igx-expansion-panel\n [animationSettings]=\"animationSettings\"\n [collapsed]=\"getPanelCollapsed(panel.type)\"\n (collapsedChange)=\"onCollapseChange($event, panel.type)\"\n >\n <igx-expansion-panel-header\n iconPosition=\"left\"\n [disabled]=\"false\"\n igxDrop\n (enter)=\"onPanelEntry($event, panel.name)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n >\n <igx-expansion-panel-title class=\"igx-pivot-data-selector__header\">\n <h6 class=\"igx-pivot-data-selector__header-title\">\n {{ grid?.resourceStrings[panel.i18n] }}\n </h6>\n <div class=\"igx-pivot-data-selector__header-extra\">\n <igx-icon family=\"default\" [name]=\"panel.icon\"></igx-icon>\n <igx-chip>{{ this.grid ? this.grid[panel.dataKey].length : 0 }}</igx-chip>\n </div>\n </igx-expansion-panel-title>\n </igx-expansion-panel-header>\n <igx-expansion-panel-body\n igxDrop\n (enter)=\"onPanelEntry($event, panel.name)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n >\n @if (this.grid && this.grid[panel.dataKey].length > 0) {\n <igx-list>\n @for (\n item of this.grid[panel.dataKey];\n track (item.memberName || item.member)\n ) {\n <igx-list-item\n igxDrop\n [igxDrag]=\"{ gridID: grid.id, selectorChannels: panel.dragChannels }\"\n [ghostTemplate]=\"itemGhost\"\n (ghostCreate)=\"ghostCreated($event, item[panel.itemKey])\"\n (over)=\"onItemDragOver($event)\"\n (leave)=\"onItemDragLeave($event)\"\n (dragMove)=\"onItemDragMove($event)\"\n (dragEnd)=\"onItemDragEnd($event)\"\n (dropped)=\"onItemDropped($event, panel.type)\"\n [id]=\"item[panel.itemKey]\"\n >\n <div class=\"igx-pivot-data-selector__item\">\n <div\n class=\"igx-pivot-data-selector__item-start\"\n (click)=\"onItemSort($event, item, panel.type)\"\n [class.igx-pivot-data-selector__action-sort]=\"\n panel.sortable\n \"\n >\n <div class=\"igx-pivot-data-selector__item-text\">\n @if (panel.type === null) {\n <span>{{\n item.aggregate.key\n }}</span>\n }\n @if (panel.type === null) {\n <span>(</span>\n }\n <span>{{ item[panel.displayKey] || item[panel.itemKey] }}</span>\n @if (panel.type === null) {\n <span>)</span>\n }\n </div>\n @if (panel.sortable && item.sortDirection) {\n <igx-icon\n family=\"default\"\n [name]=\"item.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n class=\"igx-pivot-data-selector__action-sort\"\n >\n </igx-icon>\n }\n </div>\n <div class=\"igx-pivot-data-selector__item-end\">\n @if (panel.type !== null) {\n <igx-icon\n family=\"default\"\n name=\"filter_list\"\n class=\"igx-pivot-data-selector__action-filter\"\n (pointerdown)=\"onFilteringIconPointerDown($event)\"\n (click)=\"onFilteringIconClick($event, item)\">\n </igx-icon>\n }\n @if (panel.type === null) {\n <igx-icon\n family=\"default\"\n name=\"functions\"\n class=\"igx-pivot-data-selector__action-summary\"\n (click)=\"onSummaryClick($event, item, dropdown)\"\n [igxDropDownItemNavigation]=\"dropdown\">\n </igx-icon>\n }\n @if (panel.dragChannels.length > 0) {\n <igx-icon\n family=\"default\"\n name=\"drag_indicator\"\n igxDragHandle\n class=\"igx-pivot-data-selector__action-move\"\n >\n </igx-icon>\n }\n </div>\n </div>\n </igx-list-item>\n }\n </igx-list>\n }\n @if (this.grid && this.grid[panel.dataKey].length === 0) {\n <div class=\"igx-pivot-data-selector__empty\">\n {{ grid?.resourceStrings.igx_grid_pivot_selector_panel_empty }}\n </div>\n }\n </igx-expansion-panel-body>\n </igx-expansion-panel>\n }\n</igx-accordion>\n\n<igx-drop-down #dropdown (selectionChanging)=\"onAggregationChange($event)\">\n @for (item of aggregateList; track item) {\n <igx-drop-down-item\n [selected]=\"isSelected(item)\"\n [value]=\"item\"\n >\n {{ item.label }}\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<ng-template #itemGhost>\n <div\n class=\"igx-pivot-data-selector__item-ghost\"\n [style.width.px]=\"ghostWidth\"\n [class.igx-pivot-data-selector__item-ghost--no-drop]=\"!dropAllowed\"\n >\n <div class=\"igx-pivot-data-selector__item-ghost-text\">\n <igx-icon family=\"default\" name=\"import_export\"></igx-icon>\n <span>{{ ghostText }}</span>\n </div>\n <igx-icon family=\"default\" name=\"drag_indicator\"></igx-icon>\n </div>\n</ng-template>\n","import { NgModule } from \"@angular/core\";\nimport { IgxPivotDataSelectorComponent } from './pivot-data-selector.component';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\nimport { IgxPivotValueChipTemplateDirective } from './pivot-grid.directives';\n\n/* Imports that cannot be resolved from IGX_GRID_COMMON_DIRECTIVES spread\n NOTE: Do not remove! Issue: https://github.com/IgniteUI/igniteui-angular/issues/13310\n*/\nimport {\n IgxRowDirective,\n IgxGridFooterComponent,\n IgxAdvancedFilteringDialogComponent,\n IgxHeaderCollapsedIndicatorDirective,\n IgxHeaderExpandedIndicatorDirective,\n IgxRowCollapsedIndicatorDirective,\n IgxRowExpandedIndicatorDirective,\n IgxSortAscendingHeaderIconDirective,\n IgxSortDescendingHeaderIconDirective,\n IgxSortHeaderIconDirective,\n IgxExcelStyleHeaderIconDirective,\n IgxDragIndicatorIconDirective,\n IgxRowDragGhostDirective,\n IgxGridStateDirective,\n IgxGridHeaderComponent,\n IgxGridHeaderGroupComponent,\n IgxGridHeaderRowComponent,\n IgxFilterCellTemplateDirective,\n IgxSummaryTemplateDirective,\n IgxCellTemplateDirective,\n IgxCellValidationErrorDirective,\n IgxCellHeaderTemplateDirective,\n IgxCellFooterTemplateDirective,\n IgxCellEditorTemplateDirective,\n IgxCollapsibleIndicatorTemplateDirective,\n IgxColumnComponent,\n IgxColumnGroupComponent,\n IgxColumnLayoutComponent,\n IgxColumnActionsComponent,\n IgxColumnHidingDirective,\n IgxColumnPinningDirective,\n IgxRowSelectorDirective,\n IgxGroupByRowSelectorDirective,\n IgxHeadSelectorDirective,\n IgxCSVTextDirective,\n IgxExcelTextDirective,\n IgxGridToolbarActionsComponent,\n IgxGridToolbarAdvancedFilteringComponent,\n IgxGridToolbarComponent,\n IgxGridToolbarExporterComponent,\n IgxGridToolbarHidingComponent,\n IgxGridToolbarPinningComponent,\n IgxGridToolbarTitleComponent,\n IgxGridToolbarDirective,\n IgxGridExcelStyleFilteringComponent,\n IgxExcelStyleHeaderComponent,\n IgxExcelStyleSortingComponent,\n IgxExcelStylePinningComponent,\n IgxExcelStyleHidingComponent,\n IgxExcelStyleSelectingComponent,\n IgxExcelStyleClearFiltersComponent,\n IgxExcelStyleConditionalFilterComponent,\n IgxExcelStyleMovingComponent,\n IgxExcelStyleSearchComponent,\n IgxExcelStyleColumnOperationsTemplateDirective,\n IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleLoadingValuesTemplateDirective,\n IgxGridActionButtonComponent,\n IgxGridActionsBaseDirective,\n IgxGridEditingActionsComponent,\n IgxGridPinningActionsComponent\n} from \"igniteui-angular/grids/core\";\n\n/* NOTE: Pivot grid directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_PIVOT_GRID_DIRECTIVES = [\n IgxPivotGridComponent,\n IgxPivotDataSelectorComponent,\n IgxPivotValueChipTemplateDirective,\n // IGX_GRID_COMMON_DIRECTIVES:\n IgxRowDirective,\n IgxGridFooterComponent,\n IgxAdvancedFilteringDialogComponent,\n IgxRowExpandedIndicatorDirective,\n IgxRowCollapsedIndicatorDirective,\n IgxHeaderExpandedIndicatorDirective,\n IgxHeaderCollapsedIndicatorDirective,\n IgxExcelStyleHeaderIconDirective,\n IgxSortAscendingHeaderIconDirective,\n IgxSortDescendingHeaderIconDirective,\n IgxSortHeaderIconDirective,\n IgxDragIndicatorIconDirective,\n IgxRowDragGhostDirective,\n IgxGridStateDirective,\n // IGX_GRID_ACTIONS\n IgxGridPinningActionsComponent,\n IgxGridEditingActionsComponent,\n IgxGridActionsBaseDirective,\n IgxGridActionButtonComponent,\n // IGX_GRID_HEADERS_DIRECTIVES:\n IgxGridHeaderComponent,\n IgxGridHeaderGroupComponent,\n IgxGridHeaderRowComponent,\n // IGX_GRID_COLUMN_DIRECTIVES:\n IgxFilterCellTemplateDirective,\n IgxSummaryTemplateDirective,\n IgxCellTemplateDirective,\n IgxCellValidationErrorDirective,\n IgxCellHeaderTemplateDirective,\n IgxCellFooterTemplateDirective,\n IgxCellEditorTemplateDirective,\n IgxCollapsibleIndicatorTemplateDirective,\n IgxColumnComponent,\n IgxColumnGroupComponent,\n IgxColumnLayoutComponent,\n // IGX_GRID_COLUMN_ACTIONS_DIRECTIVES:\n IgxColumnActionsComponent,\n IgxColumnHidingDirective,\n IgxColumnPinningDirective,\n // IGX_GRID_SELECTION_DIRECTIVES:\n IgxRowSelectorDirective,\n IgxGroupByRowSelectorDirective,\n IgxHeadSelectorDirective,\n // IGX_GRID_TOOLBAR_DIRECTIVES:\n IgxCSVTextDirective,\n IgxExcelTextDirective,\n IgxGridToolbarActionsComponent,\n IgxGridToolbarAdvancedFilteringComponent,\n IgxGridToolbarComponent,\n IgxGridToolbarExporterComponent,\n IgxGridToolbarHidingComponent,\n IgxGridToolbarPinningComponent,\n IgxGridToolbarTitleComponent,\n IgxGridToolbarDirective,\n // IGX_GRID_EXCEL_STYLE_FILTER_DIRECTIVES:\n IgxGridExcelStyleFilteringComponent,\n IgxExcelStyleHeaderComponent,\n IgxExcelStyleSortingComponent,\n IgxExcelStylePinningComponent,\n IgxExcelStyleHidingComponent,\n IgxExcelStyleSelectingComponent,\n IgxExcelStyleClearFiltersComponent,\n IgxExcelStyleConditionalFilterComponent,\n IgxExcelStyleMovingComponent,\n IgxExcelStyleSearchComponent,\n IgxExcelStyleColumnOperationsTemplateDirective,\n IgxExcelStyleFilterOperationsTemplateDirective,\n IgxExcelStyleLoadingValuesTemplateDirective\n] as const;\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_PIVOT_GRID_DIRECTIVES\n ],\n exports: [\n ...IGX_PIVOT_GRID_DIRECTIVES\n ]\n})\nexport class IgxPivotGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵSize"],"mappings":"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"}
|