igniteui-angular 21.0.4 → 21.0.6

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.
Files changed (92) hide show
  1. package/fesm2022/igniteui-angular-accordion.mjs +7 -7
  2. package/fesm2022/igniteui-angular-action-strip.mjs +11 -10
  3. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  4. package/fesm2022/igniteui-angular-avatar.mjs +7 -7
  5. package/fesm2022/igniteui-angular-badge.mjs +7 -7
  6. package/fesm2022/igniteui-angular-banner.mjs +10 -10
  7. package/fesm2022/igniteui-angular-bottom-nav.mjs +22 -22
  8. package/fesm2022/igniteui-angular-button-group.mjs +7 -7
  9. package/fesm2022/igniteui-angular-calendar.mjs +61 -61
  10. package/fesm2022/igniteui-angular-card.mjs +31 -31
  11. package/fesm2022/igniteui-angular-carousel.mjs +25 -25
  12. package/fesm2022/igniteui-angular-chat-extras.mjs +6 -6
  13. package/fesm2022/igniteui-angular-chat.mjs +18 -18
  14. package/fesm2022/igniteui-angular-chat.mjs.map +1 -1
  15. package/fesm2022/igniteui-angular-checkbox.mjs +7 -7
  16. package/fesm2022/igniteui-angular-chips.mjs +10 -10
  17. package/fesm2022/igniteui-angular-combo.mjs +52 -52
  18. package/fesm2022/igniteui-angular-core.mjs +56 -52
  19. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  20. package/fesm2022/igniteui-angular-date-picker.mjs +38 -38
  21. package/fesm2022/igniteui-angular-dialog.mjs +13 -13
  22. package/fesm2022/igniteui-angular-directives.mjs +198 -194
  23. package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
  24. package/fesm2022/igniteui-angular-drop-down.mjs +29 -29
  25. package/fesm2022/igniteui-angular-expansion-panel.mjs +28 -28
  26. package/fesm2022/igniteui-angular-grids-core.mjs +554 -474
  27. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  28. package/fesm2022/igniteui-angular-grids-grid.mjs +53 -48
  29. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  30. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +53 -39
  31. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  32. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +82 -79
  33. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  34. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +57 -57
  35. package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
  36. package/fesm2022/igniteui-angular-icon.mjs +10 -10
  37. package/fesm2022/igniteui-angular-input-group.mjs +26 -26
  38. package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
  39. package/fesm2022/igniteui-angular-list.mjs +40 -40
  40. package/fesm2022/igniteui-angular-navbar.mjs +13 -13
  41. package/fesm2022/igniteui-angular-navigation-drawer.mjs +16 -16
  42. package/fesm2022/igniteui-angular-paginator.mjs +19 -19
  43. package/fesm2022/igniteui-angular-progressbar.mjs +19 -19
  44. package/fesm2022/igniteui-angular-query-builder.mjs +22 -22
  45. package/fesm2022/igniteui-angular-radio.mjs +12 -12
  46. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  47. package/fesm2022/igniteui-angular-select.mjs +25 -25
  48. package/fesm2022/igniteui-angular-simple-combo.mjs +7 -7
  49. package/fesm2022/igniteui-angular-slider.mjs +28 -28
  50. package/fesm2022/igniteui-angular-snackbar.mjs +7 -7
  51. package/fesm2022/igniteui-angular-splitter.mjs +14 -14
  52. package/fesm2022/igniteui-angular-splitter.mjs.map +1 -1
  53. package/fesm2022/igniteui-angular-stepper.mjs +34 -34
  54. package/fesm2022/igniteui-angular-switch.mjs +7 -7
  55. package/fesm2022/igniteui-angular-tabs.mjs +34 -34
  56. package/fesm2022/igniteui-angular-time-picker.mjs +19 -19
  57. package/fesm2022/igniteui-angular-toast.mjs +7 -7
  58. package/fesm2022/igniteui-angular-tree.mjs +28 -28
  59. package/lib/core/styles/components/chip/_chip-theme.scss +28 -29
  60. package/lib/core/styles/components/grid/_excel-filtering-theme.scss +14 -11
  61. package/lib/core/styles/components/navbar/_navbar-theme.scss +7 -1
  62. package/package.json +3 -3
  63. package/schematics/tsconfig.tsbuildinfo +1 -1
  64. package/styles/igniteui-angular-dark.css +1 -1
  65. package/styles/igniteui-angular.css +1 -1
  66. package/styles/igniteui-bootstrap-dark.css +1 -1
  67. package/styles/igniteui-bootstrap-light.css +1 -1
  68. package/styles/igniteui-dark-green.css +1 -1
  69. package/styles/igniteui-fluent-dark-excel.css +1 -1
  70. package/styles/igniteui-fluent-dark-word.css +1 -1
  71. package/styles/igniteui-fluent-dark.css +1 -1
  72. package/styles/igniteui-fluent-light-excel.css +1 -1
  73. package/styles/igniteui-fluent-light-word.css +1 -1
  74. package/styles/igniteui-fluent-light.css +1 -1
  75. package/styles/igniteui-indigo-dark.css +1 -1
  76. package/styles/igniteui-indigo-light.css +1 -1
  77. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  78. package/styles/maps/igniteui-angular.css.map +1 -1
  79. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  80. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  81. package/styles/maps/igniteui-dark-green.css.map +1 -1
  82. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  83. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  84. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  85. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  86. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  87. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  88. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  89. package/styles/maps/igniteui-indigo-light.css.map +1 -1
  90. package/types/igniteui-angular-directives.d.ts +0 -3
  91. package/types/igniteui-angular-grids-core.d.ts +4 -5
  92. package/types/igniteui-angular-grids-hierarchical-grid.d.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"igniteui-angular-grids-hierarchical-grid.mjs","sources":["../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-api.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-navigation.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-base.directive.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/row-island-api.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/row-island.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.pipes.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-cell.component.ts","../../../projects/igniteui-angular/grids/core/src/cell.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-row.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-row.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/child-grid-row.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.module.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/igniteui-angular-grids-hierarchical-grid.ts"],"sourcesContent":["import { IgxRowIslandComponent } from './row-island.component';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { GridBaseAPIService, GridType } from 'igniteui-angular/grids/core';\nimport { IPathSegment } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxHierarchicalGridAPIService extends GridBaseAPIService<GridType> {\n protected childRowIslands: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n protected childGrids: Map<string, Map<any, GridType>> =\n new Map<string, Map<any, GridType>>();\n\n public registerChildRowIsland(rowIsland: IgxRowIslandComponent) {\n this.childRowIslands.set(rowIsland.key, rowIsland);\n this.destroyMap.set(rowIsland.key, new Subject<boolean>());\n }\n\n public unsetChildRowIsland(rowIsland: IgxRowIslandComponent) {\n this.childGrids.delete(rowIsland.key);\n this.childRowIslands.delete(rowIsland.key);\n this.destroyMap.delete(rowIsland.key);\n }\n\n public getChildRowIsland(key: string) {\n return this.childRowIslands.get(key);\n }\n\n public getChildGrid(path: Array<IPathSegment>): GridType | undefined {\n const currPath = path;\n let grid;\n const pathElem = currPath.shift();\n const childrenForLayout = this.childGrids.get(pathElem.rowIslandKey);\n if (childrenForLayout) {\n const childGrid = childrenForLayout.get(pathElem.rowKey);\n if (currPath.length === 0) {\n grid = childGrid;\n } else {\n grid = childGrid.gridAPI.getChildGrid(currPath);\n }\n }\n return grid;\n }\n\n public getChildGrids(inDepth?: boolean) {\n let allChildren: GridType [] = [];\n this.childGrids.forEach((layoutMap) => {\n layoutMap.forEach((grid) => {\n allChildren.push(grid);\n if (inDepth) {\n const children = grid.gridAPI.getChildGrids(inDepth);\n allChildren = allChildren.concat(children);\n }\n });\n });\n\n return allChildren;\n }\n\n public getParentRowId(childGrid: GridType) {\n let rowID;\n this.childGrids.forEach((layoutMap) => {\n layoutMap.forEach((grid, key) => {\n if (grid === childGrid) {\n rowID = key;\n return;\n }\n });\n });\n return rowID;\n }\n\n public registerChildGrid(parentRowID: any, rowIslandKey: string, grid: GridType) {\n let childrenForLayout = this.childGrids.get(rowIslandKey);\n if (!childrenForLayout) {\n this.childGrids.set(rowIslandKey, new Map<any, GridType>());\n childrenForLayout = this.childGrids.get(rowIslandKey);\n }\n childrenForLayout.set(parentRowID, grid);\n }\n\n public getChildGridsForRowIsland(rowIslandKey: string): GridType[] {\n const childrenForLayout = this.childGrids.get(rowIslandKey);\n const children = [];\n if (childrenForLayout) {\n childrenForLayout.forEach((child) => {\n children.push(child);\n });\n }\n return children;\n }\n\n public getChildGridByID(rowIslandKey, rowID) {\n const childrenForLayout = this.childGrids.get(rowIslandKey);\n return childrenForLayout.get(rowID);\n }\n\n public override get_row_expansion_state(record: any): boolean {\n let inState;\n if (record.childGridsData !== undefined) {\n const ri = record.key;\n const states = this.grid.expansionStates;\n const expanded = states.get(ri);\n if (expanded !== undefined) {\n return expanded;\n } else {\n return this.grid.getDefaultExpandState(record);\n }\n } else {\n inState = !!super.get_row_expansion_state(record);\n }\n return inState && (this.grid as any).childLayoutList.length !== 0;\n }\n\n public override allow_expansion_state_change(rowID, expanded): boolean {\n const rec = this.get_rec_by_id(rowID);\n const grid = (this.grid as any);\n if (grid.hasChildrenKey && !rec[grid.hasChildrenKey]) {\n return false;\n }\n return !!rec && this.grid.expansionStates.get(rowID) !== expanded;\n }\n\n public override get_rec_by_id(rowID): any {\n const data = this.get_all_data(false);\n const index = this.get_row_index_in_data(rowID, data);\n return data[index];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { first } from 'rxjs/operators';\nimport { GridType, RowType } from 'igniteui-angular/grids/core';\nimport { IActiveNode, IgxGridNavigationService } from 'igniteui-angular/grids/core';\nimport { IPathSegment, NAVIGATION_KEYS, SUPPORTED_KEYS } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxHierarchicalGridNavigationService extends IgxGridNavigationService {\n protected _pendingNavigation = false;\n\n\n public override dispatchEvent(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n const cellOrRowInEdit = this.grid.crudService.cell || this.grid.crudService.row;\n if (!this.activeNode || !(SUPPORTED_KEYS.has(key) || (key === 'tab' && cellOrRowInEdit))) {\n return;\n }\n\n const targetGrid = this.getClosestElemByTag(event.target, 'igx-hierarchical-grid')\n || this.getClosestElemByTag(event.target, 'igc-hierarchical-grid');\n if (targetGrid !== this.grid.nativeElement) {\n return;\n }\n\n if (this._pendingNavigation && NAVIGATION_KEYS.has(key)) {\n // In case focus needs to be moved from one grid to another, however there is a pending scroll operation\n // which is an async operation, any additional navigation keys should be ignored\n // untill operation complete.\n event.preventDefault();\n return;\n }\n super.dispatchEvent(event);\n }\n\n public override navigateInBody(rowIndex, visibleColIndex, cb: (arg: any) => void = null): void {\n const rec = this.grid.dataView[rowIndex];\n if (rec && this.grid.isChildGridRecord(rec)) {\n // target is child grid\n const virtState = this.grid.verticalScrollContainer.state;\n const inView = rowIndex >= virtState.startIndex && rowIndex <= virtState.startIndex + virtState.chunkSize;\n const isNext = this.activeNode.row < rowIndex;\n const targetLayoutIndex = isNext ? null : this.grid.childLayoutKeys.length - 1;\n if (inView) {\n this._moveToChild(rowIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n } else {\n let scrollAmount = this.grid.verticalScrollContainer.getScrollForIndex(rowIndex, !isNext);\n scrollAmount += isNext ? 1 : -1;\n this.grid.verticalScrollContainer.getScroll().scrollTop = scrollAmount;\n this._pendingNavigation = true;\n this.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n this._moveToChild(rowIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n this._pendingNavigation = false;\n });\n }\n return;\n }\n\n const isLast = rowIndex === this.grid.dataView.length;\n if ((rowIndex === -1 || isLast) &&\n this.grid.parent !== null) {\n // reached end of child grid\n const nextSiblingIndex = this.nextSiblingIndex(isLast);\n if (nextSiblingIndex !== null) {\n this.grid.parent.navigation._moveToChild(this.grid.childRow.index, visibleColIndex, isLast, nextSiblingIndex, cb);\n } else {\n this._moveToParent(isLast, visibleColIndex, cb);\n }\n return;\n }\n\n if (this.grid.parent) {\n const isNext = this.activeNode && typeof this.activeNode.row === 'number' ? rowIndex > this.activeNode.row : false;\n const cbHandler = (args) => {\n this._handleScrollInChild(rowIndex, isNext);\n cb(args);\n };\n if (!this.activeNode) {\n this.activeNode = { row: null, column: null };\n }\n super.navigateInBody(rowIndex, visibleColIndex, cbHandler);\n return;\n }\n\n if (!this.activeNode) {\n this.activeNode = { row: null, column: null };\n }\n super.navigateInBody(rowIndex, visibleColIndex, cb);\n }\n\n public override shouldPerformVerticalScroll(index, visibleColumnIndex = -1, isNext?) {\n const targetRec = this.grid.dataView[index];\n if (this.grid.isChildGridRecord(targetRec)) {\n const scrollAmount = this.grid.verticalScrollContainer.getScrollForIndex(index, !isNext);\n const currScroll = this.grid.verticalScrollContainer.getScroll().scrollTop;\n const shouldScroll = !isNext ? scrollAmount > currScroll : currScroll < scrollAmount;\n return shouldScroll;\n } else {\n return super.shouldPerformVerticalScroll(index, visibleColumnIndex);\n }\n }\n\n public override focusTbody(event) {\n if (!this.activeNode || this.activeNode.row === null) {\n this.activeNode = {\n row: 0,\n column: 0\n };\n\n this.grid.navigateTo(0, 0, (obj) => {\n this.grid.clearCellSelection();\n obj.target.activate(event);\n });\n\n } else {\n super.focusTbody(event);\n }\n }\n\n protected nextSiblingIndex(isNext) {\n const layoutKey = this.grid.childRow.layout.key;\n const layoutIndex = this.grid.parent.childLayoutKeys.indexOf(layoutKey);\n const nextIndex = isNext ? layoutIndex + 1 : layoutIndex - 1;\n if (nextIndex <= this.grid.parent.childLayoutKeys.length - 1 && nextIndex > -1) {\n return nextIndex;\n } else {\n return null;\n }\n }\n\n /**\n * Handles scrolling in child grid and ensures target child row is in main grid view port.\n *\n * @param rowIndex The row index which should be in view.\n * @param isNext Optional. Whether we are navigating to next. Used to determine scroll direction.\n * @param cb Optional.Callback function called when operation is complete.\n */\n protected _handleScrollInChild(rowIndex: number, isNext?: boolean, cb?: () => void) {\n const shouldScroll = this.shouldPerformVerticalScroll(rowIndex, -1, isNext);\n if (shouldScroll) {\n this.grid.navigation.performVerticalScrollToCell(rowIndex, -1, () => {\n this.positionInParent(rowIndex, isNext, cb);\n });\n } else {\n this.positionInParent(rowIndex, isNext, cb);\n }\n }\n\n /**\n *\n * @param rowIndex Row index that should come in view.\n * @param isNext Whether we are navigating to next. Used to determine scroll direction.\n * @param cb Optional.Callback function called when operation is complete.\n */\n protected positionInParent(rowIndex, isNext, cb?: () => void) {\n const row = this.grid.gridAPI.get_row_by_index(rowIndex);\n if (!row) {\n if (cb) {\n cb();\n }\n return;\n }\n const positionInfo = this.getPositionInfo(row, isNext);\n if (!positionInfo.inView) {\n // stop event from triggering multiple times before scrolling is complete.\n this._pendingNavigation = true;\n const scrollableGrid = isNext ? this.getNextScrollableDown(this.grid) : this.getNextScrollableUp(this.grid);\n scrollableGrid.grid.verticalScrollContainer.recalcUpdateSizes();\n scrollableGrid.grid.verticalScrollContainer.addScrollTop(positionInfo.offset);\n scrollableGrid.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n this._pendingNavigation = false;\n if (cb) {\n cb();\n }\n });\n } else {\n if (cb) {\n cb();\n }\n }\n }\n\n /**\n * Navigates to the specific child grid based on the array of paths leading to it\n *\n * @param pathToChildGrid Array of IPathSegments that describe the path to the child grid\n * each segment is described by the rowKey of the parent row and the rowIslandKey.\n */\n public navigateToChildGrid(pathToChildGrid: IPathSegment[], cb?: () => void) {\n if (pathToChildGrid.length == 0) {\n if (cb) {\n cb();\n }\n return;\n }\n const pathElem = pathToChildGrid.shift();\n const rowKey = pathElem.rowKey;\n const rowIndex = this.grid.gridAPI.get_row_index_in_data(rowKey);\n if (rowIndex === -1) {\n if (cb) {\n cb();\n }\n return;\n }\n // scroll to row, since it can be out of view\n this.performVerticalScrollToCell(rowIndex, -1, () => {\n this.grid.cdr.detectChanges();\n // next, expand row, if it is collapsed\n const row = this.grid.getRowByIndex(rowIndex);\n if (!row.expanded) {\n row.expanded = true;\n // update sizes after expand\n this.grid.verticalScrollContainer.recalcUpdateSizes();\n this.grid.cdr.detectChanges();\n }\n\n const childGrid = this.grid.gridAPI.getChildGrid([pathElem]);\n if (!childGrid) {\n if (cb) {\n cb();\n }\n return;\n }\n const positionInfo = this.getElementPosition(childGrid.nativeElement, false);\n this.grid.verticalScrollContainer.addScrollTop(positionInfo.offset);\n this.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n childGrid.navigation.navigateToChildGrid(pathToChildGrid, cb);\n });\n });\n }\n\n /**\n * Moves navigation to child grid.\n *\n * @param parentRowIndex The parent row index, at which the child grid is rendered.\n * @param childLayoutIndex Optional. The index of the child row island to which the child grid belongs to. Uses first if not set.\n */\n protected _moveToChild(parentRowIndex: number, visibleColIndex: number, isNext: boolean, childLayoutIndex?: number,\n cb?: (arg: any) => void) {\n const ri = typeof childLayoutIndex !== 'number' ?\n this.grid.childLayoutList.first : this.grid.childLayoutList.toArray()[childLayoutIndex];\n const rowId = this.grid.dataView[parentRowIndex].rowID;\n const pathSegment: IPathSegment = {\n rowID: rowId,\n rowKey: rowId,\n rowIslandKey: ri.key\n };\n const childGrid = this.grid.gridAPI.getChildGrid([pathSegment]);\n const targetIndex = isNext ? 0 : childGrid.dataView.length - 1;\n const targetRec = childGrid.dataView[targetIndex];\n if (!targetRec) {\n // if no target rec, then move on in next sibling or parent\n childGrid.navigation.navigateInBody(targetIndex, visibleColIndex, cb);\n return;\n }\n if (childGrid.isChildGridRecord(targetRec)) {\n // if target is a child grid record should move into it.\n this.grid.navigation.activeNode.row = null;\n childGrid.navigation.activeNode = { row: targetIndex, column: this.activeNode.column};\n childGrid.navigation._handleScrollInChild(targetIndex, isNext, () => {\n const targetLayoutIndex = isNext ? 0 : childGrid.childLayoutList.toArray().length - 1;\n childGrid.navigation._moveToChild(targetIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n });\n return;\n }\n\n const childGridNav = childGrid.navigation;\n this.clearActivation();\n const lastVisibleIndex = childGridNav.lastColumnIndex;\n const columnIndex = visibleColIndex <= lastVisibleIndex ? visibleColIndex : lastVisibleIndex;\n childGridNav.activeNode = { row: targetIndex, column: columnIndex};\n childGrid.tbody.nativeElement.focus({preventScroll: true});\n this._pendingNavigation = false;\n childGrid.navigation._handleScrollInChild(targetIndex, isNext, () => {\n childGrid.navigateTo(targetIndex, columnIndex, cb);\n });\n }\n\n /**\n * Moves navigation back to parent grid.\n *\n * @param rowIndex\n */\n protected _moveToParent(isNext: boolean, columnIndex, cb?) {\n const indexInParent = this.grid.childRow.index;\n const hasNextTarget = this.hasNextTarget(this.grid.parent, indexInParent, isNext);\n if (!hasNextTarget) {\n return;\n }\n this.clearActivation();\n const targetRowIndex = isNext ? indexInParent + 1 : indexInParent - 1;\n const lastVisibleIndex = this.grid.parent.navigation.lastColumnIndex;\n const nextColumnIndex = columnIndex <= lastVisibleIndex ? columnIndex : lastVisibleIndex;\n this._pendingNavigation = true;\n const cbFunc = (args) => {\n this._pendingNavigation = false;\n cb(args);\n args.target.grid.tbody.nativeElement.focus();\n };\n this.grid.parent.navigation.navigateInBody(targetRowIndex, nextColumnIndex, cbFunc);\n }\n\n /**\n * Gets information on the row position relative to the root grid view port.\n * Returns whether the row is in view and its offset.\n *\n * @param rowObj\n * @param isNext\n */\n protected getPositionInfo(row: RowType, isNext: boolean) {\n // XXX: Fix type\n let rowElem = row.nativeElement;\n if ((row as any).layout) {\n const childLayoutKeys = this.grid.childLayoutKeys;\n const riKey = isNext ? childLayoutKeys[0] : childLayoutKeys[childLayoutKeys.length - 1];\n const pathSegment: IPathSegment = {\n rowID: row.data.rowID, rowKey: row.data.rowID,\n rowIslandKey: riKey\n };\n const childGrid = this.grid.gridAPI.getChildGrid([pathSegment]);\n rowElem = childGrid.tfoot.nativeElement;\n }\n\n return this.getElementPosition(rowElem, isNext);\n }\n\n protected getElementPosition(element: HTMLElement, isNext: boolean) {\n // Special handling for scenarios where there is css transformations applied that affects scale.\n // getBoundingClientRect().height returns size after transformations\n // element.offsetHeight returns size without any transformations\n // get the ratio to figure out if anything has applied transformations\n const scaling = element.getBoundingClientRect().height / element.offsetHeight;\n\n const gridBottom = this._getMinBottom(this.grid);\n const diffBottom =\n element.getBoundingClientRect().bottom - gridBottom;\n const gridTop = this._getMaxTop(this.grid);\n const diffTop = element.getBoundingClientRect().bottom -\n element.getBoundingClientRect().height - gridTop;\n // Adding Math.Round because Chrome has some inconsistencies when the page is zoomed\n const isInView = isNext ? Math.round(diffBottom) <= 0 : Math.round(diffTop) >= 0;\n const calcOffset = isNext ? diffBottom : diffTop;\n\n return { inView: isInView, offset: calcOffset / scaling};\n }\n\n /**\n * Gets closest element by its tag name.\n *\n * @param sourceElem The element from which to start the search.\n * @param targetTag The target element tag name, for which to search.\n */\n protected getClosestElemByTag(sourceElem, targetTag) {\n let result = sourceElem;\n while (result !== null && result.nodeType === 1) {\n if (result.tagName.toLowerCase() === targetTag.toLowerCase()) {\n return result;\n }\n result = result.parentNode;\n }\n return null;\n }\n\n private clearActivation() {\n // clear if previous activation exists.\n if (this.activeNode && Object.keys(this.activeNode).length) {\n this.activeNode = Object.assign({} as IActiveNode);\n }\n }\n\n private hasNextTarget(grid: GridType, index: number, isNext: boolean) {\n const targetRowIndex = isNext ? index + 1 : index - 1;\n const hasTargetRecord = !!grid.dataView[targetRowIndex];\n if (hasTargetRecord) {\n return true;\n } else {\n let hasTargetRecordInParent = false;\n if (grid.parent) {\n const indexInParent = grid.childRow.index;\n hasTargetRecordInParent = this.hasNextTarget(grid.parent, indexInParent, isNext);\n }\n return hasTargetRecordInParent;\n }\n }\n\n /**\n * Gets the max top view in the current grid hierarchy.\n *\n * @param grid\n */\n private _getMaxTop(grid) {\n let currGrid = grid;\n let top = currGrid.tbody.nativeElement.getBoundingClientRect().top;\n while (currGrid.parent) {\n currGrid = currGrid.parent;\n const pinnedRowsHeight = currGrid.hasPinnedRecords && currGrid.isRowPinningToTop ? currGrid.pinnedRowHeight : 0;\n top = Math.max(top, currGrid.tbody.nativeElement.getBoundingClientRect().top + pinnedRowsHeight);\n }\n return top;\n }\n\n /**\n * Gets the min bottom view in the current grid hierarchy.\n *\n * @param grid\n */\n private _getMinBottom(grid) {\n let currGrid = grid;\n let bottom = currGrid.tbody.nativeElement.getBoundingClientRect().bottom;\n while (currGrid.parent) {\n currGrid = currGrid.parent;\n const pinnedRowsHeight = currGrid.hasPinnedRecords && !currGrid.isRowPinningToTop ? currGrid.pinnedRowHeight : 0;\n bottom = Math.min(bottom, currGrid.tbody.nativeElement.getBoundingClientRect().bottom - pinnedRowsHeight);\n }\n return bottom;\n }\n\n /**\n * Finds the next grid that allows scrolling down.\n *\n * @param grid The grid from which to begin the search.\n */\n private getNextScrollableDown(grid) {\n let currGrid = grid.parent;\n if (!currGrid) {\n return { grid, prev: null };\n }\n let scrollTop = currGrid.verticalScrollContainer.scrollPosition;\n let scrollHeight = currGrid.verticalScrollContainer.getScroll().scrollHeight;\n let nonScrollable = scrollHeight === 0 ||\n Math.round(scrollTop + currGrid.verticalScrollContainer.igxForContainerSize) === scrollHeight;\n let prev = grid;\n while (nonScrollable && currGrid.parent !== null) {\n prev = currGrid;\n currGrid = currGrid.parent;\n scrollTop = currGrid.verticalScrollContainer.scrollPosition;\n scrollHeight = currGrid.verticalScrollContainer.getScroll().scrollHeight;\n nonScrollable = scrollHeight === 0 ||\n Math.round(scrollTop + currGrid.verticalScrollContainer.igxForContainerSize) === scrollHeight;\n }\n return { grid: currGrid, prev };\n }\n\n /**\n * Finds the next grid that allows scrolling up.\n *\n * @param grid The grid from which to begin the search.\n */\n private getNextScrollableUp(grid) {\n let currGrid = grid.parent;\n if (!currGrid) {\n return { grid, prev: null };\n }\n let nonScrollable = currGrid.verticalScrollContainer.scrollPosition === 0;\n let prev = grid;\n while (nonScrollable && currGrid.parent !== null) {\n prev = currGrid;\n currGrid = currGrid.parent;\n nonScrollable = currGrid.verticalScrollContainer.scrollPosition === 0;\n }\n return { grid: currGrid, prev };\n }\n}\n","import {\n booleanAttribute,\n createComponent,\n Directive,\n EventEmitter,\n Input,\n Output,\n reflectComponentType,\n inject\n} from '@angular/core';\nimport { IgxHierarchicalGridAPIService } from './hierarchical-grid-api.service';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { IgxSummaryOperand } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridNavigationService } from './hierarchical-grid-navigation.service';\nimport { GridType, IGX_GRID_SERVICE_BASE } from 'igniteui-angular/grids/core';\nimport { IgxColumnGroupComponent } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent } from 'igniteui-angular/grids/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { IgxGridTransaction } from 'igniteui-angular/grids/core';\nimport { IgxTransactionService, IPathSegment } from 'igniteui-angular/core';\nimport { IForOfState } from 'igniteui-angular/directives';\nimport { IgxGridBaseDirective } from 'igniteui-angular/grids/grid';\n\nexport const hierarchicalTransactionServiceFactory = () => new IgxTransactionService();\n\nexport const IgxHierarchicalTransactionServiceFactory = {\n provide: IgxGridTransaction,\n useFactory: hierarchicalTransactionServiceFactory\n};\n\n/* blazorIndirectRender\n blazorComponent\n omitModule\n wcSkipComponentSuffix */\n@Directive()\nexport abstract class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective implements GridType {\n public override gridAPI = inject<IgxHierarchicalGridAPIService>(IGX_GRID_SERVICE_BASE);\n public override navigation = inject(IgxHierarchicalGridNavigationService);\n /**\n * Gets/Sets the key indicating whether a row has children. If row has no children it does not render an expand indicator.\n *\n * @example\n * ```html\n * <igx-hierarchical-grid #grid [data]=\"localData\" [hasChildrenKey]=\"'hasEmployees'\">\n * </igx-hierarchical-grid>\n * ```\n */\n @Input()\n public hasChildrenKey: string;\n\n /**\n * Gets/Sets whether the expand/collapse all button in the header should be rendered.\n *\n * @remarks\n * The default value is false.\n * @example\n * ```html\n * <igx-hierarchical-grid #grid [data]=\"localData\" [showExpandAll]=\"true\">\n * </igx-hierarchical-grid>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public showExpandAll = false;\n\n /**\n * Emitted when a new chunk of data is loaded from virtualization.\n *\n * @example\n * ```typescript\n * <igx-hierarchical-grid [id]=\"'igx-grid-1'\" [data]=\"Data\" [autoGenerate]=\"true\" (dataPreLoad)=\"handleEvent()\">\n * </igx-hierarchical-grid>\n * ```\n */\n @Output()\n public dataPreLoad = new EventEmitter<IForOfState>();\n\n /** @hidden @internal */\n public override get type(): GridType[\"type\"] {\n return 'hierarchical';\n }\n\n /* blazorSuppress */\n /**\n * Gets the outlet used to attach the grid's overlays to.\n *\n * @remarks\n * If set, returns the outlet defined outside the grid. Otherwise returns the grid's internal outlet directive.\n */\n public override get outlet() {\n return this.rootGrid ? this.rootGrid.resolveOutlet() : this.resolveOutlet();\n }\n\n /* blazorSuppress */\n /**\n * Sets the outlet used to attach the grid's overlays to.\n */\n public override set outlet(val: any) {\n this._userOutletDirective = val;\n }\n\n /** @hidden @internal */\n public batchEditingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public override get batchEditing(): boolean {\n return this._batchEditing;\n }\n\n public override set batchEditing(val: boolean) {\n if (val !== this._batchEditing) {\n delete this._transactions;\n this.switchTransactionService(val);\n this.subscribeToTransactions();\n this.batchEditingChange.emit(val);\n this._batchEditing = val;\n }\n }\n\n /**\n * @hidden\n */\n public parentIsland: IgxRowIslandComponent;\n public abstract rootGrid: GridType;\n\n /* blazorSuppress */\n public abstract expandChildren: boolean;\n\n /**\n * @hidden\n */\n public createColumnsList(cols: Array<any>) {\n const columns = [];\n const topLevelCols = cols.filter(c => c.level === 0);\n topLevelCols.forEach((col) => {\n col.grid = this;\n const ref = this._createColumn(col);\n ref.changeDetectorRef.detectChanges();\n columns.push(ref.instance);\n });\n const result = flatten(columns);\n this.updateColumns(result);\n this.initPinning();\n\n result.forEach(col => {\n this.columnInit.emit(col);\n });\n\n const mirror = reflectComponentType(IgxColumnComponent);\n const outputs = mirror.outputs.filter(o => o.propName !== 'columnChange');\n outputs.forEach(output => {\n this.columns.forEach(column => {\n if (column[output.propName]) {\n column[output.propName].pipe(takeUntil(column.destroy$)).subscribe((args) => {\n const rowIslandColumn = this.parentIsland.columnList.find((col) => col.field\n ? col.field === column.field\n : col.header === column.header);\n rowIslandColumn[output.propName].emit({ args, owner: this });\n });\n }\n });\n });\n }\n\n protected _createColumn(col) {\n let ref;\n if (col instanceof IgxColumnGroupComponent) {\n ref = this._createColGroupComponent(col);\n } else {\n ref = this._createColComponent(col);\n }\n return ref;\n }\n\n protected _createColGroupComponent(col: IgxColumnGroupComponent) {\n const ref = createComponent(IgxColumnGroupComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n ref.changeDetectorRef.detectChanges();\n const mirror = reflectComponentType(IgxColumnGroupComponent);\n mirror.inputs.forEach((input) => {\n const propName = input.propName;\n ref.instance[propName] = col[propName];\n });\n if (col.children.length > 0) {\n const newChildren = [];\n col.children.forEach(child => {\n const newCol = this._createColumn(child).instance;\n newCol.parent = ref.instance;\n newChildren.push(newCol);\n });\n ref.instance.children.reset(newChildren);\n ref.instance.children.notifyOnChanges();\n }\n return ref;\n }\n\n protected _createColComponent(col) {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n const mirror = reflectComponentType(IgxColumnComponent);\n mirror.inputs.forEach((input) => {\n const propName = input.propName;\n if (!(col[propName] instanceof IgxSummaryOperand)) {\n ref.instance[propName] = col[propName];\n } else {\n ref.instance[propName] = col[propName].constructor;\n }\n });\n ref.instance.validators = col.validators;\n return ref;\n }\n\n protected getGridsForIsland(rowIslandID: string) {\n return this.gridAPI.getChildGridsForRowIsland(rowIslandID);\n }\n\n protected getChildGrid(path: Array<IPathSegment>) {\n if (!path) {\n return;\n }\n return this.gridAPI.getChildGrid(path);\n }\n}\n\nconst flatten = (arr: any[]) => {\n let result = [];\n\n arr.forEach(el => {\n result.push(el);\n if (el.children) {\n result = result.concat(flatten(el.children.toArray()));\n }\n });\n return result;\n};\n","import { IgxHierarchicalGridComponent } from './hierarchical-grid.component';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class IgxRowIslandAPIService {\n public rowIsland: IgxRowIslandComponent;\n public change: Subject<any> = new Subject<any>();\n protected state: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n protected destroyMap: Map<string, Subject<boolean>> = new Map<string, Subject<boolean>>();\n\n protected childRowIslands: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n protected childGrids: Map<any, IgxHierarchicalGridComponent> = new Map<any, IgxHierarchicalGridComponent>();\n\n public register(rowIsland: IgxRowIslandComponent) {\n this.state.set(rowIsland.id, rowIsland);\n this.destroyMap.set(rowIsland.id, new Subject<boolean>());\n }\n\n public unsubscribe(rowIsland: IgxRowIslandComponent) {\n this.state.delete(rowIsland.id);\n }\n\n public get(id: string): IgxRowIslandComponent {\n return this.state.get(id);\n }\n\n public unset(id: string) {\n this.state.delete(id);\n this.destroyMap.delete(id);\n }\n\n public reset(oldId: string, newId: string) {\n const destroy = this.destroyMap.get(oldId);\n const rowIsland = this.get(oldId);\n\n this.unset(oldId);\n\n if (rowIsland) {\n this.state.set(newId, rowIsland);\n }\n\n if (destroy) {\n this.destroyMap.set(newId, destroy);\n }\n }\n\n public registerChildRowIsland(rowIsland: IgxRowIslandComponent) {\n this.childRowIslands.set(rowIsland.key, rowIsland);\n this.destroyMap.set(rowIsland.key, new Subject<boolean>());\n }\n\n public unsetChildRowIsland(rowIsland: IgxRowIslandComponent) {\n this.childRowIslands.delete(rowIsland.key);\n this.destroyMap.delete(rowIsland.key);\n }\n\n public getChildRowIsland(rowIslandKey: string) {\n return this.childRowIslands.get(rowIslandKey);\n }\n\n public registerChildGrid(parentRowID: any, grid: IgxHierarchicalGridComponent) {\n this.childGrids.set(parentRowID, grid);\n }\n\n public getChildGrids(inDepth?: boolean) {\n let allChildren = [];\n this.childGrids.forEach((grid) => {\n allChildren.push(grid);\n });\n if (inDepth) {\n this.childRowIslands.forEach((layout) => {\n allChildren = allChildren.concat(layout.rowIslandAPI.getChildGrids(inDepth));\n });\n }\n\n return allChildren;\n }\n\n public getChildGridByID(rowID) {\n return this.childGrids.get(rowID);\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n forwardRef,\n Input,\n IterableChangeRecord,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n inject\n} from '@angular/core';\nimport {\n GridType,\n IgxColumnComponent,\n IgxFilteringService,\n IgxGridPaginatorTemplateContext,\n IgxGridSelectionService,\n IgxGridToolbarDirective,\n IgxGridToolbarTemplateContext,\n ISearchInfo\n} from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridBaseDirective } from './hierarchical-grid-base.directive';\nimport { IgxActionStripToken } from 'igniteui-angular/core';\nimport { first, filter, takeUntil, pluck } from 'rxjs/operators';\nimport { IgxRowIslandAPIService } from './row-island-api.service';\nimport { IGridCreatedEventArgs } from './events';\nimport { IgxPaginatorComponent, IgxPaginatorDirective } from 'igniteui-angular/paginator';\nimport { IForOfState } from 'igniteui-angular/directives';\n\n/* blazorCopyInheritedMembers */\n/* blazorElement */\n/* wcElementTag: igc-row-island */\n/* blazorIndirectRender */\n/* jsonAPIManageCollectionInMarkup */\n/* jsonAPIManageItemInMarkup */\n/* mustUseNGParentAnchor */\n/* additionalIdentifier: ChildDataKey */\n/* contentParent: RowIsland */\n/* contentParent: HierarchicalGrid */\n/**\n * Row island\n *\n * @igxModule IgxHierarchicalGridModule\n * @igxParent IgxHierarchicalGridComponent, IgxRowIslandComponent\n *\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-row-island',\n template: `@if (platform.isElements) {\n <ng-content select=\"igx-column,igc-column,igx-column-group,igc-column-group,igx-action-strip,igc-action-strip\"></ng-content>\n <ng-content select=\"igx-row-island,igc-row-island\"></ng-content>\n }`,\n providers: [\n IgxRowIslandAPIService,\n IgxFilteringService,\n IgxGridSelectionService\n ],\n standalone: true\n})\nexport class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective\n implements AfterContentInit, AfterViewInit, OnChanges, OnInit, OnDestroy {\n public rowIslandAPI = inject(IgxRowIslandAPIService);\n\n\n /* blazorSuppress */\n /**\n * Sets the key of the row island by which child data would be taken from the row data if such is provided.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n * <igx-row-island [key]=\"'childData'\">\n * <!-- ... -->\n * </igx-row-island>\n * </igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n @Input()\n public key: string;\n\n /* blazorInclude,wcInclude TODO: Move to Elements-only component */\n /**\n * Sets the key of the row island by which child data would be taken from the row data if such is provided.\n * @hidden @internal\n */\n @Input()\n public get childDataKey() {\n return this.key;\n }\n /* blazorInclude,wcInclude */\n public set childDataKey(value: string) {\n this.key = value;\n }\n\n /**\n * @hidden\n */\n @ContentChildren(forwardRef(() => IgxRowIslandComponent), { read: IgxRowIslandComponent, descendants: false })\n public children = new QueryList<IgxRowIslandComponent>();\n\n /* contentChildren */\n /* blazorInclude */\n /* blazorTreatAsCollection */\n /* blazorCollectionName: RowIslandCollection */\n /**\n * @hidden @internal\n */\n @ContentChildren(forwardRef(() => IgxRowIslandComponent), { read: IgxRowIslandComponent, descendants: false })\n public childLayoutList = new QueryList<IgxRowIslandComponent>();\n\n /**\n * @hidden\n */\n @ContentChildren(IgxColumnComponent, { read: IgxColumnComponent, descendants: false })\n public childColumns = new QueryList<IgxColumnComponent>();\n\n @ContentChild(IgxGridToolbarDirective, { read: TemplateRef, descendants: false })\n protected toolbarDirectiveTemplate: TemplateRef<IgxGridToolbarTemplateContext>;\n\n @ContentChild(IgxPaginatorDirective, { read: TemplateRef, descendants: false })\n protected paginatorDirectiveTemplate: TemplateRef<any>;\n\n /* csSuppress */\n /**\n * Sets/Gets the toolbar template for each child grid created from this row island.\n */\n @Input()\n public get toolbarTemplate(): TemplateRef<IgxGridToolbarTemplateContext> {\n return this._toolbarTemplate || this.toolbarDirectiveTemplate;\n }\n\n public set toolbarTemplate(template: TemplateRef<IgxGridToolbarTemplateContext>) {\n this._toolbarTemplate = template;\n }\n\n\n /* csSuppress */\n /**\n * Sets/Gets the paginator template for each child grid created from this row island.\n */\n @Input()\n public get paginatorTemplate(): TemplateRef<IgxGridPaginatorTemplateContext> {\n return this._paginatorTemplate || this.paginatorDirectiveTemplate;\n }\n\n public set paginatorTemplate(template: TemplateRef<IgxGridPaginatorTemplateContext>) {\n this._paginatorTemplate = template;\n }\n\n // TODO(api-analyzer): Shouldn't need all tags to copy from base or hidden/internal due to include tag\n /* contentChildren */\n /* blazorInclude */\n /* blazorTreatAsCollection */\n /* blazorCollectionName: ActionStripCollection */\n /* blazorCollectionItemName: ActionStrip */\n /* ngQueryListName: actionStripComponents */\n /** @hidden @internal */\n @ContentChildren(IgxActionStripToken, { read: IgxActionStripToken, descendants: false })\n protected override actionStripComponents: QueryList<IgxActionStripToken>;\n\n /**\n * @hidden\n */\n @Output()\n public layoutChange = new EventEmitter<any>();\n\n /**\n * Event emitted when a grid is being created based on this row island.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n * <igx-row-island [key]=\"'childData'\" (gridCreated)=\"gridCreated($event)\" #rowIsland>\n * <!-- ... -->\n * </igx-row-island>\n * </igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n @Output()\n public gridCreated = new EventEmitter<IGridCreatedEventArgs>();\n\n /**\n * Emitted after a grid is being initialized for this row island.\n * The emitting is done in `ngAfterViewInit`.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n * <igx-row-island [key]=\"'childData'\" (gridInitialized)=\"gridInitialized($event)\" #rowIsland>\n * <!-- ... -->\n * </igx-row-island>\n * </igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n @Output()\n public gridInitialized = new EventEmitter<IGridCreatedEventArgs>();\n\n /**\n * @hidden\n */\n public initialChanges = [];\n\n /**\n * @hidden\n */\n public rootGrid: GridType = null;\n\n /** @hidden */\n public readonly data: any[] | null;\n\n /** @hidden */\n public override get hiddenColumnsCount(): number {\n return 0;\n }\n\n /** @hidden */\n public override get pinnedColumnsCount(): number {\n return 0;\n }\n\n /** @hidden */\n public override get lastSearchInfo(): ISearchInfo {\n return null;\n }\n\n /** @hidden */\n public override get filteredData(): any {\n return [];\n }\n\n /** @hidden */\n public override get filteredSortedData(): any[] {\n return [];\n }\n\n /** @hidden */\n public override get virtualizationState(): IForOfState {\n return null;\n }\n\n /** @hidden */\n public override get pinnedColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /** @hidden */\n public override get unpinnedColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /** @hidden */\n public override get visibleColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /** @hidden */\n public override get dataView(): any[] {\n return [];\n }\n\n //#region inert, not-a-grid component\n /** @hidden @internal */\n public override tabindex = -1;\n\n /** @hidden @internal */\n public override hostRole = null;\n\n protected override baseClass = null;\n\n /** @hidden @internal */\n public override get hostWidth(): any {\n return null;\n }\n\n protected override displayStyle = 'none';\n protected override templateRows = null;\n //#endregion\n\n private ri_columnListDiffer;\n private layout_id = `igx-row-island-`;\n private isInit = false;\n private _toolbarTemplate: TemplateRef<IgxGridToolbarTemplateContext>;\n private _paginatorTemplate: TemplateRef<IgxGridPaginatorTemplateContext>;\n\n /**\n * Sets if all immediate children of the grids for this `IgxRowIslandComponent` should be expanded/collapsed.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n * <igx-row-island [key]=\"'childData'\" [expandChildren]=\"true\" #rowIsland>\n * <!-- ... -->\n * </igx-row-island>\n * </igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n @Input({ transform: booleanAttribute })\n public set expandChildren(value: boolean) {\n this._defaultExpandState = value;\n this.rowIslandAPI.getChildGrids().forEach((grid) => {\n if (this.document.body.contains(grid.nativeElement)) {\n // Detect changes right away if the grid is visible\n grid.expandChildren = value;\n grid.cdr.detectChanges();\n } else {\n // Else defer the detection on changes when the grid gets into view for performance.\n grid.updateOnRender = true;\n }\n });\n }\n\n /**\n * Gets if all immediate children of the grids for this `IgxRowIslandComponent` have been set to be expanded/collapsed.\n * ```typescript\n * const expanded = this.rowIsland.expandChildren;\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n public get expandChildren(): boolean {\n return this._defaultExpandState;\n }\n\n /**\n * @hidden\n */\n public get id() {\n const pId = this.parentId ? this.parentId.substring(this.parentId.indexOf(this.layout_id) + this.layout_id.length) + '-' : '';\n return this.layout_id + pId + this.key;\n }\n\n /**\n * @hidden\n */\n public get parentId() {\n return this.parentIsland ? this.parentIsland.id : null;\n }\n\n /**\n * @hidden\n */\n public get level() {\n let ptr = this.parentIsland;\n let lvl = 0;\n while (ptr) {\n lvl++;\n ptr = ptr.parentIsland;\n }\n return lvl + 1;\n }\n\n /**\n * @hidden\n */\n public override ngOnInit() {\n this.filteringService.grid = this as GridType;\n this.rootGrid = this.gridAPI.grid;\n this.rowIslandAPI.rowIsland = this;\n this.ri_columnListDiffer = this.differs.find([]).create(null);\n }\n\n /**\n * @hidden\n */\n public override ngAfterContentInit() {\n this.updateChildren();\n this.children.notifyOnChanges();\n this.children.changes.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateChildren();\n // update existing grids since their child ri have been changed.\n this.rowIslandAPI.getChildGrids(false).forEach(grid => {\n (grid as any).onRowIslandChange(this.children);\n });\n });\n const nestedColumns = this.children.map((layout) => layout.columnList.toArray());\n const colsArray = [].concat.apply([], nestedColumns);\n const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n this._childColumns = topCols;\n this.updateColumns(this._childColumns);\n this.columnList.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n Promise.resolve().then(() => {\n this.updateColumnList();\n });\n });\n\n // handle column changes so that they are passed to child grid instances when columnChange is emitted.\n this.ri_columnListDiffer.diff(this.childColumns);\n this._childColumns.forEach(x => x.columnChange.pipe(takeUntil(x.destroy$)).subscribe(() => this.updateColumnList()));\n this.childColumns.changes.pipe(takeUntil(this.destroy$)).subscribe((change: QueryList<IgxColumnComponent>) => {\n const diff = this.ri_columnListDiffer.diff(change);\n if (diff) {\n diff.forEachAddedItem((record: IterableChangeRecord<IgxColumnComponent>) => {\n record.item.columnChange.pipe(takeUntil(record.item.destroy$)).subscribe(() => this.updateColumnList());\n });\n }\n });\n\n if (this.actionStrip) {\n this.actionStrip.menuOverlaySettings.outlet = this.outlet;\n }\n }\n\n /**\n * @hidden\n */\n public override ngAfterViewInit() {\n this.rowIslandAPI.register(this);\n if (this.parentIsland) {\n this.parentIsland.rowIslandAPI.registerChildRowIsland(this);\n } else {\n this.rootGrid.gridAPI.registerChildRowIsland(this);\n }\n this._init = false;\n\n // Create the child toolbar if the parent island has a toolbar definition\n this.gridCreated.pipe(pluck('grid'), takeUntil(this.destroy$)).subscribe(grid => {\n grid.rendered$.pipe(first(), filter(() => !!this.toolbarTemplate))\n .subscribe(() => grid.toolbarOutlet.createEmbeddedView(this.toolbarTemplate, { $implicit: grid }, { injector: grid.toolbarOutlet.injector }));\n grid.rendered$.pipe(first(), filter(() => !!this.paginatorTemplate))\n .subscribe(() => {\n this.rootGrid.paginatorList.changes.pipe(takeUntil(this.destroy$)).subscribe((changes: QueryList<IgxPaginatorComponent>) => {\n changes.forEach(p => {\n if (p.nativeElement.offsetParent?.id === grid.id) {\n // Optimize update only for those grids that have related changed paginator.\n grid.setUpPaginator()\n }\n });\n });\n grid.paginatorOutlet.createEmbeddedView(this.paginatorTemplate, { $implicit: grid });\n });\n });\n }\n\n /**\n * @hidden\n */\n public ngOnChanges(changes) {\n this.layoutChange.emit(changes);\n if (!this.isInit) {\n this.initialChanges.push(changes);\n }\n }\n\n /**\n * @hidden\n */\n public override ngOnDestroy() {\n // Override the base destroy because we have not rendered anything to use removeEventListener on\n this.destroy$.next(true);\n this.destroy$.complete();\n this._destroyed = true;\n this.rowIslandAPI.unset(this.id);\n if (this.parentIsland) {\n this.getGridsForIsland(this.key).forEach(grid => {\n this.cleanGridState(grid);\n grid.gridAPI.unsetChildRowIsland(this);\n });\n this.parentIsland.rowIslandAPI.unsetChildRowIsland(this);\n } else {\n this.rootGrid.gridAPI.unsetChildRowIsland(this);\n this.cleanGridState(this.rootGrid);\n }\n }\n\n /**\n * @hidden\n */\n public override reflow() { }\n\n /**\n * @hidden\n */\n public override calculateGridHeight() { }\n\n /**\n * @hidden\n */\n public override calculateGridWidth() { }\n\n protected _childColumns = [];\n\n protected updateColumnList() {\n const nestedColumns = this.children.map((layout) => layout.columnList.toArray());\n const colsArray = [].concat.apply([], nestedColumns);\n const topCols = this.columnList.filter((item) => {\n if (colsArray.indexOf(item) === -1) {\n /* Reset the default width of the columns that come into this row island,\n because the root catches them first during the detectChanges() and sets their defaultWidth. */\n item.defaultWidth = undefined;\n return true;\n }\n return false;\n });\n this._childColumns = topCols;\n this.updateColumns(this._childColumns);\n this.rowIslandAPI.getChildGrids().forEach((grid: GridType) => {\n grid.createColumnsList(this._childColumns);\n if (!this.document.body.contains(grid.nativeElement)) {\n grid.updateOnRender = true;\n }\n });\n }\n\n protected updateChildren() {\n if (this.children.first === this) {\n this.children.reset(this.children.toArray().slice(1));\n }\n this.children.forEach(child => {\n child.parentIsland = this;\n });\n }\n\n private cleanGridState(grid) {\n grid.childGridTemplates.forEach((tmpl) => {\n tmpl.owner.cleanView(tmpl.context.templateID);\n });\n grid.childGridTemplates.clear();\n grid.onRowIslandChange();\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { GridType, IGX_GRID_BASE } from 'igniteui-angular/grids/core';\nimport { cloneArray, columnFieldPath, DataUtil, resolveNestedPath } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'gridHierarchical',\n standalone: true\n})\nexport class IgxGridHierarchicalPipe implements PipeTransform {\n private grid = inject<GridType>(IGX_GRID_BASE);\n\n public transform(\n collection: any,\n state = new Map<any, boolean>(),\n id: string,\n primaryKey: any,\n childKeys: string[],\n _pipeTrigger: number\n ): any[] {\n if (childKeys.length === 0) {\n return collection;\n }\n if (this.grid.verticalScrollContainer.isRemote) {\n return collection;\n }\n const result = this.addHierarchy(this.grid, cloneArray(collection), state, primaryKey, childKeys);\n\n return result;\n }\n\n public addHierarchy<T>(grid, data: T[], state, primaryKey, childKeys: string[]): T[] {\n const result = [];\n\n data.forEach((v) => {\n result.push(v);\n const childGridsData = {};\n childKeys.forEach((childKey) => {\n if (!v[childKey]) {\n v[childKey] = [];\n }\n const hasNestedPath = childKey?.includes('.');\n const childData = !hasNestedPath ? v[childKey] : resolveNestedPath(v, columnFieldPath(childKey));\n childGridsData[childKey] = childData;\n });\n if (grid.gridAPI.get_row_expansion_state(v)) {\n result.push({ rowID: primaryKey ? v[primaryKey] : v, childGridsData, parentRowData: v });\n }\n });\n return result;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'gridHierarchicalPaging',\n standalone: true\n})\nexport class IgxGridHierarchicalPagingPipe implements PipeTransform {\n private grid = inject<GridType>(IGX_GRID_BASE);\n\n\n public transform(collection: any[], enabled: boolean, page = 0, perPage = 15, _id: string, _pipeTrigger: number): any[] {\n if (!enabled || this.grid.pagingMode !== 'local') {\n return collection;\n }\n\n const state = {\n index: page,\n recordsPerPage: perPage\n };\n\n const total = this.grid._totalRecords >= 0 ? this.grid._totalRecords : collection.length;\n const result: any[] = DataUtil.page(cloneArray(collection), state, total);\n this.grid.pagingState = state;\n return result;\n\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { HammerGesturesManager } from 'igniteui-angular/core';\nimport {\n IgxColumnFormatterPipe,\n IgxGridCellComponent,\n IgxGridCellImageAltPipe,\n IgxStringReplacePipe\n} from 'igniteui-angular/grids/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass, NgTemplateOutlet, DecimalPipe, PercentPipe, CurrencyPipe, DatePipe } from '@angular/common';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { IgxDateTimeEditorDirective, IgxFocusDirective, IgxTextHighlightDirective, IgxTextSelectionDirective, IgxTooltipDirective, IgxTooltipTargetDirective } from 'igniteui-angular/directives';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxInputDirective, IgxInputGroupComponent, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\nimport { IgxDatePickerComponent } from 'igniteui-angular/date-picker';\nimport { IgxTimePickerComponent } from 'igniteui-angular/time-picker';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-hierarchical-grid-cell',\n templateUrl: '../../core/src/cell.component.html',\n providers: [HammerGesturesManager],\n imports: [IgxChipComponent, IgxTextHighlightDirective, IgxIconComponent, NgClass, FormsModule, ReactiveFormsModule, IgxInputGroupComponent, IgxInputDirective, IgxFocusDirective, IgxTextSelectionDirective, IgxCheckboxComponent, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateTimeEditorDirective, IgxPrefixDirective, IgxSuffixDirective, NgTemplateOutlet, IgxTooltipTargetDirective, IgxTooltipDirective, IgxGridCellImageAltPipe, IgxStringReplacePipe, IgxColumnFormatterPipe, DecimalPipe, PercentPipe, CurrencyPipe, DatePipe]\n})\nexport class IgxHierarchicalGridCellComponent extends IgxGridCellComponent implements OnInit {\n // protected hSelection;\n protected _rootGrid;\n\n public override ngOnInit() {\n super.ngOnInit();\n this._rootGrid = this._getRootGrid();\n }\n\n /**\n * @hidden\n * @internal\n */\n public override activate(event: FocusEvent) {\n this._clearAllHighlights();\n const currentElement = this.grid.nativeElement;\n let parentGrid = this.grid;\n let childGrid;\n // add highligh to the current grid\n if (this._rootGrid.id !== currentElement.id) {\n currentElement.classList.add('igx-grid__tr--highlighted');\n }\n\n // add highligh to the current grid\n while (this._rootGrid.id !== parentGrid.id) {\n childGrid = parentGrid;\n parentGrid = parentGrid.parent;\n\n const parentRowID = parentGrid.gridAPI.getParentRowId(childGrid);\n parentGrid.highlightedRowID = parentRowID;\n }\n this.grid.navigation.activeNode.gridID = this.gridID;\n super.activate(event);\n }\n\n private _getRootGrid() {\n let currGrid = this.grid;\n while (currGrid.parent) {\n currGrid = currGrid.parent;\n }\n return currGrid;\n }\n\n // TODO: Extend the new selection service to avoid complete traversal\n private _clearAllHighlights() {\n [this._rootGrid, ...this._rootGrid.getChildGrids(true)].forEach(grid => {\n if (grid !== this.grid && grid.navigation.activeNode) {\n grid.selectionService.activeElement = null;\n grid.navigation.clearActivation();\n grid.selectionService.initKeyboardState();\n grid.selectionService.clear();\n }\n\n grid.nativeElement.classList.remove('igx-grid__tr--highlighted');\n grid.highlightedRowID = null;\n grid.cdr.markForCheck();\n });\n }\n}\n","<ng-template #defaultPinnedIndicator>\n @if (displayPinnedChip) {\n <igx-chip\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [style.--ig-size]=\"1\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip>\n }\n</ng-template>\n<ng-template #defaultCell>\n @if (column.dataType !== 'boolean' && column.dataType !== 'image' || (column.dataType === 'boolean' && this.formatter)) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter:formatter:rowData:columnData)\n : column.dataType === 'number'\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >{{\n formatter\n ? (value | columnFormatter:formatter:rowData:columnData)\n : column.dataType === \"number\"\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n }}</div>\n }\n @if (column.dataType === 'boolean' && !this.formatter) {\n <igx-icon\n family=\"default\"\n [name]=\"value ? 'confirm' : 'close'\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\">\n </igx-icon>\n }\n @if (column.dataType === 'image') {\n <img [src]=\"value\" [alt]=\"value | igxCellImageAlt\" />\n }\n</ng-template>\n\n<ng-template #emptyCell></ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n @if (column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)) {\n <div\n igxTextHighlight class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"formatter ? (value | columnFormatter:formatter:rowData) : column.dataType === 'number' ?\n (value | number:column.pipeArgs.digitsInfo:grid.locale) : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime') ?\n (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale) : column.dataType === 'currency' ?\n (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale) : column.dataType === 'percent' ?\n (value | percent:column.pipeArgs.digitsInfo:grid.locale) : value\"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >{{\n !isEmptyAddRowCell ? value : (column.header || column.field)\n }}</div>\n }\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n @if (column.dataType === 'string' || column.dataType === 'image') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-input-group>\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [formControl]=\"formControl\"\n (compositionstart)=\"grid.crudService.isInCompositionMode = true\"\n (compositionend)=\"grid.crudService.isInCompositionMode = false\"\n />\n </igx-input-group>\n </ng-container>\n }\n @if (column.dataType === 'number') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'boolean') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-checkbox\n [checked]=\"editValue\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n [formControl]=\"formControl\"\n ></igx-checkbox>\n </ng-container>\n }\n @if (column.dataType === 'date') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-date-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [weekStart]=\"column.pipeArgs.weekStart\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat\"\n [displayFormat]=\"column.pipeArgs.format\"\n >\n </igx-date-picker>\n </ng-container>\n }\n @if (column.dataType === 'time') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-time-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat\"\n [displayFormat]=\"column.pipeArgs.format\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n ></igx-time-picker>\n </ng-container>\n }\n @if (column.dataType === 'dateTime') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n type=\"text\"\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [formControl]=\"formControl\"\n igxInput\n [locale]=\"grid.locale\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat\"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'currency') {\n <igx-input-group [formGroup]=\"formGroup\">\n @if (grid.currencyPositionLeft) {\n <igx-prefix>{{ currencyCodeSymbol }}</igx-prefix>\n }\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n @if (!grid.currencyPositionLeft) {\n <igx-suffix>{{ currencyCodeSymbol }}</igx-suffix>\n }\n </igx-input-group>\n }\n @if (column.dataType === 'percent') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n <igx-suffix> {{ editValue | percent:column.pipeArgs.digitsInfo:grid.locale }} </igx-suffix>\n </igx-input-group>\n }\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n\n@if (isInvalid) {\n <igx-icon\n family=\"default\"\n name=\"error\"\n #errorIcon\n [igxTooltipTarget]=\"tooltipRef\"\n [igxToggleOutlet]=\"grid.outlet\"\n (mouseover)='errorShowing = true'\n (mouseout)='errorShowing = false'>\n </igx-icon>\n <div [id]=\"ariaErrorMessage\"\n igxTooltip #error #tooltipRef=\"tooltip\">\n <div [style.width]=\"'max-content'\">\n <ng-container *ngTemplateOutlet=\"cellValidationErrorTemplate || defaultError; context: context\"></ng-container>\n </div>\n </div>\n}\n\n<ng-template #defaultError>\n @let errors = formControl.errors;\n @if (errors?.['required']) {\n <div>\n {{grid.resourceStrings.igx_grid_required_validation_error}}\n </div>\n }\n @if (errors?.['minlength']) {\n <div>\n {{grid.resourceStrings.igx_grid_min_length_validation_error | igxStringReplace:'{0}':errors.minlength.requiredLength }}\n </div>\n }\n @if (errors?.['maxlength']) {\n <div>\n {{grid.resourceStrings.igx_grid_max_length_validation_error | igxStringReplace:'{0}':errors.maxlength.requiredLength }}\n </div>\n }\n @if (errors?.['min']) {\n <div>\n {{grid.resourceStrings.igx_grid_min_validation_error | igxStringReplace:'{0}':errors.min.min }}\n </div>\n }\n @if (errors?.['max']) {\n <div>\n {{grid.resourceStrings.igx_grid_max_validation_error | igxStringReplace:'{0}':errors.max.max }}\n </div>\n }\n @if (errors?.['email']) {\n <div>\n {{grid.resourceStrings.igx_grid_email_validation_error }}\n </div>\n }\n @if (errors?.['pattern']) {\n <div>\n {{grid.resourceStrings.igx_grid_pattern_validation_error}}\n </div>\n }\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n forwardRef,\n ElementRef,\n ViewChildren,\n QueryList,\n ViewChild,\n TemplateRef\n} from '@angular/core';\nimport { IgxRowDirective } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridCellComponent } from './hierarchical-cell.component';\nimport { GridType } from 'igniteui-angular/grids/core';\nimport { IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridCellStyleClassesPipe, IgxGridDataMapperPipe, IgxGridTransactionStatePipe } from 'igniteui-angular/grids/core';\nimport { IgxRowDragDirective } from 'igniteui-angular/grids/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-hierarchical-grid-row',\n templateUrl: './hierarchical-row.component.html',\n providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxHierarchicalRowComponent) }],\n imports: [NgTemplateOutlet, IgxIconComponent, IgxRowDragDirective, NgClass, IgxGridForOfDirective, IgxHierarchicalGridCellComponent, NgStyle, IgxCheckboxComponent, IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridCellStyleClassesPipe, IgxGridDataMapperPipe, IgxGridTransactionStatePipe]\n})\nexport class IgxHierarchicalRowComponent extends IgxRowDirective {\n @ViewChild('expander', { read: ElementRef })\n public expander: ElementRef<HTMLElement>;\n\n @ViewChildren(forwardRef(() => IgxHierarchicalGridCellComponent), { read: IgxHierarchicalGridCellComponent })\n protected override _cells: QueryList<IgxHierarchicalGridCellComponent>;\n\n /**\n * @hidden\n */\n @ViewChild('defaultExpandedTemplate', { read: TemplateRef, static: true })\n protected defaultExpandedTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n */\n @ViewChild('defaultEmptyTemplate', { read: TemplateRef, static: true })\n protected defaultEmptyTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n */\n @ViewChild('defaultCollapsedTemplate', { read: TemplateRef, static: true })\n protected defaultCollapsedTemplate: TemplateRef<any>;\n\n protected expanderClass = 'igx-grid__hierarchical-expander';\n protected rolActionClass = 'igx-grid__tr-action';\n\n /**\n * @hidden\n */\n public get expanderClassResolved() {\n return {\n [`${this.expanderClass} ${this.rolActionClass}`]: !this.pinned || this.disabled,\n [`${this.expanderClass}--empty`]: this.pinned && !this.disabled\n };\n }\n\n public override get viewIndex(): number {\n return this.index + this.grid.page * this.grid.perPage;\n }\n\n /**\n * Returns whether the row is expanded.\n * ```typescript\n * const RowExpanded = this.grid1.rowList.first.expanded;\n * ```\n */\n public override get expanded() {\n return this.grid.gridAPI.get_row_expansion_state(this.data);\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-grid__tr--expanded')\n public get expandedClass() {\n return this.expanded && !this.pinned;\n }\n\n public override get hasChildren() {\n return !!this.grid.childLayoutKeys.length;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-grid__tr--highlighted')\n public get highlighted() {\n return this.grid && this.grid.highlightedRowID === this.key;\n }\n\n /**\n * @hidden\n */\n public expanderClick(event) {\n event.stopPropagation();\n this.toggle();\n }\n\n /**\n * Toggles the hierarchical row.\n * ```typescript\n * this.grid1.rowList.first.toggle()\n * ```\n */\n public toggle() {\n if (this.added) {\n return;\n }\n // K.D. 28 Feb, 2022 #10634 Don't trigger endEdit/commit upon row expansion state change\n // this.endEdit(this.grid.rootGrid);\n this.grid.gridAPI.set_row_expansion_state(this.key, !this.expanded);\n this.grid.cdr.detectChanges();\n }\n\n /**\n * @hidden\n * @internal\n */\n public select = () => {\n this.grid.selectRows([this.key]);\n };\n\n /**\n * @hidden\n * @internal\n */\n public deselect = () => {\n this.grid.deselectRows([this.key]);\n };\n\n /**\n * @hidden\n */\n public get iconTemplate() {\n let expandable = true;\n if (this.grid.hasChildrenKey) {\n expandable = this.data[this.grid.hasChildrenKey];\n }\n if (!expandable || (this.pinned && !this.disabled)) {\n return this.defaultEmptyTemplate;\n }\n if (this.expanded) {\n return this.grid.rowExpandedIndicatorTemplate || this.defaultExpandedTemplate;\n } else {\n return this.grid.rowCollapsedIndicatorTemplate || this.defaultCollapsedTemplate;\n }\n }\n\n // TODO: consider moving into CRUD\n protected endEdit(grid: GridType) {\n if (grid.gridAPI.crudService.cellInEditMode) {\n grid.gridAPI.crudService.endEdit();\n }\n grid.gridAPI.getChildGrids(true).forEach(g => {\n if (g.gridAPI.crudService.cellInEditMode) {\n g.gridAPI.crudService.endEdit();\n }\n });\n }\n}\n","<ng-container *ngTemplateOutlet='addRowUI ? addTemp : defaultTemp'></ng-container>\n<ng-template #defaultExpandedTemplate>\n <igx-icon family=\"default\" name=\"tree_collapse\" [active]='!added'></igx-icon>\n</ng-template>\n\n<ng-template #defaultCollapsedTemplate>\n <igx-icon family=\"default\" name=\"tree_expand\" [active]='!added'></igx-icon>\n</ng-template>\n\n<ng-template #defaultEmptyTemplate>\n <!-- Empty icon used as spacer for size matching-->\n <igx-icon></igx-icon>\n</ng-template>\n\n<ng-template #addTemp>\n <div class='igx-grid__tr--inner' [class.igx-grid__tr--add-animate]='triggerAddAnimationClass' (animationend)='animationEndHandler()'>\n <ng-container *ngTemplateOutlet='defaultTemp'></ng-container>\n </div>\n</ng-template>\n<ng-template #defaultTemp>\n <!-- Drag indicator -->\n @if (rowDraggable) {\n <div [class]=\"resolveDragIndicatorClasses\" [igxRowDrag]=\"this\" (click)=\"$event.stopPropagation()\" [ghostTemplate]=\"this.grid.getDragGhostCustomTemplate()\" (pointerdown)=\"$event.preventDefault()\">\n <ng-container *ngTemplateOutlet=\"this.grid.dragIndicatorIconTemplate ? this.grid.dragIndicatorIconTemplate : this.grid.dragIndicatorIconBase\"></ng-container>\n </div>\n }\n\n <!-- Select Row -->\n @if (showRowSelectors) {\n <div class=\"igx-grid__cbx-selection igx-grid__tr-action\" (click)=\"onRowSelectorClick($event)\" (pointerdown)=\"$event.preventDefault()\">\n <ng-template *ngTemplateOutlet=\"\n this.grid.rowSelectorTemplate ? this.grid.rowSelectorTemplate : rowSelectorBaseTemplate;\n context: { $implicit: {\n index: viewIndex,\n rowID: key,\n key,\n selected: selected,\n select: select,\n deselect: deselect }}\">\n </ng-template>\n </div>\n }\n\n <!-- Row Expander -->\n @if (hasChildren) {\n <div (click)=\"expanderClick($event)\" (mousedown)='$event.preventDefault()' [ngClass]=\"expanderClassResolved\" #expander>\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: this }\">\n </ng-container>\n </div>\n }\n\n @if (pinnedStartColumns.length > 0) {\n <ng-template *ngTemplateOutlet=\"pinnedCellsTemplate; context: { $implicit: this, columns: pinnedStartColumns}\"></ng-template>\n }\n\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"' [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth' [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n @if (this.hasMergedCells) {\n <div [style.height.px]=\" this.metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1 ? getRowHeight() : null\"\n class=\"igx-grid__mrl-block\"\n [style.visibility]=\"this.metaData?.cellMergeMeta.get(col.field)?.root ? 'hidden' : 'visible'\"\n [ngStyle]=\"{\n 'grid-template-rows': this.metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1 ? this.getMergeCellSpan(col) : null\n }\">\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: this, column: col }\"></ng-container>\n </div>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: this, column: col }\"></ng-container>\n }\n </ng-template>\n\n @if (pinnedEndColumns.length > 0) {\n <ng-template *ngTemplateOutlet=\"pinnedCellsTemplate; context: { $implicit: this, columns: pinnedEndColumns}\"></ng-template>\n }\n\n <ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"selected\"\n [disableRipple]=\"true\"\n [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\"\n [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n </ng-template>\n\n <ng-template #pinnedCellsTemplate let-col let-columns=\"columns\">\n @for (col of columns | igxNotGrouped; track trackPinnedColumn(col)) {\n <igx-hierarchical-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--pinned\"\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 [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [firstPinned]=\"col.isFirstPinned\"\n [lastPinned]=\"col.isLastPinned\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\">\n </igx-hierarchical-grid-cell>\n }\n </ng-template>\n</ng-template>\n\n<ng-template #cellTemplate let-col=\"column\">\n <igx-hierarchical-grid-cell\n [class.igx-grid__td--merged]=\"metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1\"\n [isMerged]=\"metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1\"\n [isPlaceholder]=\"!!this.metaData?.cellMergeMeta.get(col.field)?.root\"\n [class.igx-grid__td--merged-selected]=\"isSelectionRoot(col)\"\n [class.igx-grid__td--merged-hovered]=\"isHoveredRoot(col)\"\n 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]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\">\n</igx-hierarchical-grid-cell>\n</ng-template>\n","import { AfterContentInit, AfterViewInit, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, CUSTOM_ELEMENTS_SCHEMA, DoCheck, ElementRef, HostBinding, Input, OnDestroy, OnInit, QueryList, reflectComponentType, SimpleChanges, TemplateRef, ViewChild, ViewChildren, ViewContainerRef, inject } from '@angular/core';\nimport { NgClass, NgTemplateOutlet, NgStyle } from '@angular/common';\n\nimport { IgxHierarchicalGridAPIService } from './hierarchical-grid-api.service';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { IgxFilteringService, IgxGridNavigationService, IgxGridValidationService } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent, } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridNavigationService } from './hierarchical-grid-navigation.service';\nimport { IgxGridSummaryService } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridBaseDirective } from './hierarchical-grid-base.directive';\nimport { takeUntil } from 'rxjs/operators';\nimport { CellType, GridType, IGX_GRID_BASE, IGX_GRID_SERVICE_BASE, RowType } from 'igniteui-angular/grids/core';\nimport { IgxRowIslandAPIService } from './row-island-api.service';\nimport { IgxGridCRUDService } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridRow } from 'igniteui-angular/grids/core';\nimport { IgxGridCell } from 'igniteui-angular/grids/core';\nimport type { IgxPaginatorComponent } from 'igniteui-angular/paginator';\nimport { IgxColumnResizingService } from 'igniteui-angular/grids/core';\nimport { IgxGridExcelStyleFilteringComponent } from 'igniteui-angular/grids/core';\nimport { IgxGridHierarchicalPipe, IgxGridHierarchicalPagingPipe } from './hierarchical-grid.pipes';\nimport { IgxSummaryDataPipe } from 'igniteui-angular/grids/core';\nimport { IgxGridTransactionPipe, IgxHasVisibleColumnsPipe, IgxGridRowPinningPipe, IgxGridAddRowPipe, IgxGridRowClassesPipe, IgxGridRowStylesPipe, IgxStringReplacePipe } from 'igniteui-angular/grids/core';\nimport { IgxGridColumnResizerComponent } from 'igniteui-angular/grids/core';\nimport { IgxRowEditTabStopDirective } from 'igniteui-angular/grids/core';\nimport { IgxSummaryRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalRowComponent } from './hierarchical-row.component';\nimport { IgxColumnMovingDropDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridDragSelectDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridBodyDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridHeaderRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxGridSelectionService } from 'igniteui-angular/grids/core';\nimport { IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxRippleDirective, IgxScrollInertiaDirective, 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 { EntityType, FieldType, IFilteringExpressionsTree, IgxActionStripToken, IgxOverlayOutletDirective, flatten } from 'igniteui-angular/core';\nimport { IgxPaginatorToken } from 'igniteui-angular/paginator';\nimport { IgxGridCellMergePipe, IgxGridComponent, IgxGridFilteringPipe, IgxGridSortingPipe, IgxGridUnmergeActivePipe } from 'igniteui-angular/grids/grid';\n\nlet NEXT_ID = 0;\n\n/**\n * @hidden @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-child-grid-row',\n templateUrl: './child-grid-row.component.html',\n imports: [NgClass]\n})\nexport class IgxChildGridRowComponent implements AfterViewInit, OnInit {\n public readonly gridAPI = inject<IgxHierarchicalGridAPIService>(IGX_GRID_SERVICE_BASE);\n public element = inject<ElementRef<HTMLElement>>(ElementRef);\n public cdr = inject(ChangeDetectorRef);\n\n @Input()\n public layout: IgxRowIslandComponent;\n\n /**\n * @hidden\n */\n public get parentHasScroll() {\n return !this.parentGrid.verticalScrollContainer.dc.instance.notVirtual;\n }\n\n\n /**\n * @hidden\n */\n @Input()\n public parentGridID: string;\n\n /**\n * The data passed to the row component.\n *\n * ```typescript\n * // get the row data for the first selected row\n * let selectedRowData = this.grid.selectedRows[0].data;\n * ```\n */\n @Input()\n public get data(): any {\n return this._data || [];\n }\n\n public set data(value: any) {\n this._data = value;\n if (this.hGrid && !this.hGrid.dataSetByUser) {\n this.hGrid.setDataInternal(this._data.childGridsData[this.layout.key]);\n }\n }\n\n /**\n * The index of the row.\n *\n * ```typescript\n * // get the index of the second selected row\n * let selectedRowIndex = this.grid.selectedRows[1].index;\n * ```\n */\n @Input()\n public index: number;\n\n /* blazorSuppress */\n @ViewChild('container', { read: ViewContainerRef, static: true })\n public container: ViewContainerRef;\n\n /**\n * @hidden\n */\n public hGrid: IgxHierarchicalGridComponent;\n\n /* blazorSuppress */\n /**\n * Get a reference to the grid that contains the selected row.\n *\n * ```typescript\n * handleRowSelection(event) {\n * // the grid on which the rowSelected event was triggered\n * const grid = event.row.grid;\n * }\n * ```\n *\n * ```html\n * <igx-grid\n * [data]=\"data\"\n * (rowSelected)=\"handleRowSelection($event)\">\n * </igx-grid>\n * ```\n */\n // TODO: Refactor\n public get parentGrid(): IgxHierarchicalGridComponent {\n return this.gridAPI.grid as IgxHierarchicalGridComponent;\n }\n\n @HostBinding('attr.aria-level')\n public get level() {\n return this.layout.level;\n }\n\n /**\n * The native DOM element representing the row. Could be null in certain environments.\n *\n * ```typescript\n * // get the nativeElement of the second selected row\n * let selectedRowNativeElement = this.grid.selectedRows[1].nativeElement;\n * ```\n */\n public get nativeElement() {\n return this.element.nativeElement;\n }\n\n /**\n * Returns whether the row is expanded.\n * ```typescript\n * const RowExpanded = this.grid1.rowList.first.expanded;\n * ```\n */\n public expanded = false;\n\n private _data: any;\n\n /**\n * @hidden\n */\n public ngOnInit() {\n const ref = this.container.createComponent(IgxHierarchicalGridComponent, { injector: this.container.injector });\n this.hGrid = ref.instance;\n this.hGrid.setDataInternal(this.data.childGridsData[this.layout.key]);\n this.hGrid.nativeElement[\"__componentRef\"] = ref;\n this.layout.layoutChange.subscribe((ch) => {\n this._handleLayoutChanges(ch);\n });\n const changes = this.layout.initialChanges;\n changes.forEach(change => {\n this._handleLayoutChanges(change);\n });\n this.hGrid.parent = this.parentGrid;\n this.hGrid.parentIsland = this.layout;\n this.hGrid.childRow = this;\n // handler logic that re-emits hgrid events on the row island\n this.setupEventEmitters();\n this.layout.gridCreated.emit({\n owner: this.layout,\n parentID: this.data.rowID,\n grid: this.hGrid,\n parentRowData: this.data.parentRowData,\n });\n }\n\n /**\n * @hidden\n */\n public ngAfterViewInit() {\n this.hGrid.childLayoutList = this.layout.children;\n const layouts = this.hGrid.childLayoutList.toArray();\n layouts.forEach((l) => this.hGrid.gridAPI.registerChildRowIsland(l));\n this.parentGrid.gridAPI.registerChildGrid(this.data.rowID, this.layout.key, this.hGrid);\n this.layout.rowIslandAPI.registerChildGrid(this.data.rowID, this.hGrid);\n\n this.layout.gridInitialized.emit({\n owner: this.layout,\n parentID: this.data.rowID,\n grid: this.hGrid,\n parentRowData: this.data.parentRowData,\n });\n\n this.hGrid.cdr.detectChanges();\n }\n\n private setupEventEmitters() {\n const destructor = takeUntil(this.hGrid.destroy$);\n\n const mirror = reflectComponentType(IgxGridComponent);\n // exclude outputs related to two-way binding functionality\n const inputNames = mirror.inputs.map(input => input.propName);\n const outputs = mirror.outputs.filter(o => {\n const matchingInputPropName = o.propName.slice(0, o.propName.indexOf('Change'));\n return inputNames.indexOf(matchingInputPropName) === -1;\n });\n\n // TODO: Skip the `rendered` output. Rendered should be called once per grid.\n outputs.filter(o => o.propName !== 'rendered').forEach(output => {\n if (this.hGrid[output.propName]) {\n this.hGrid[output.propName].pipe(destructor).subscribe((args) => {\n if (!args) {\n args = {};\n }\n args.owner = this.hGrid;\n this.layout[output.propName].emit(args);\n });\n }\n });\n }\n\n\n private _handleLayoutChanges(changes: SimpleChanges) {\n for (const change in changes) {\n if (changes.hasOwnProperty(change)) {\n this.hGrid[change] = changes[change].currentValue;\n }\n }\n }\n}\n\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: RowIsland */\n/* blazorIndirectRender */\n/**\n * Hierarchical grid\n *\n * @igxModule IgxHierarchicalGridModule\n *\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-hierarchical-grid',\n templateUrl: 'hierarchical-grid.component.html',\n providers: [\n IgxGridCRUDService,\n IgxGridValidationService,\n IgxGridSelectionService,\n { provide: IGX_GRID_SERVICE_BASE, useClass: IgxHierarchicalGridAPIService },\n { provide: IGX_GRID_BASE, useExisting: IgxHierarchicalGridComponent },\n IgxGridSummaryService,\n IgxFilteringService,\n IgxGridNavigationService,\n IgxHierarchicalGridNavigationService,\n IgxColumnResizingService,\n IgxForOfSyncService,\n IgxForOfScrollSyncService,\n IgxRowIslandAPIService\n ],\n imports: [\n NgClass,\n NgTemplateOutlet,\n NgStyle,\n IgxGridHeaderRowComponent,\n IgxGridBodyDirective,\n IgxGridDragSelectDirective,\n IgxColumnMovingDropDirective,\n IgxGridForOfDirective,\n IgxTemplateOutletDirective,\n IgxHierarchicalRowComponent,\n IgxOverlayOutletDirective,\n IgxToggleDirective,\n IgxCircularProgressBarComponent,\n IgxSnackbarComponent,\n IgxSummaryRowComponent,\n IgxButtonDirective,\n IgxRippleDirective,\n IgxIconComponent,\n IgxRowEditTabStopDirective,\n IgxGridColumnResizerComponent,\n IgxChildGridRowComponent,\n IgxGridSortingPipe,\n IgxGridFilteringPipe,\n IgxGridTransactionPipe,\n IgxHasVisibleColumnsPipe,\n IgxGridRowPinningPipe,\n IgxGridAddRowPipe,\n IgxGridRowClassesPipe,\n IgxGridRowStylesPipe,\n IgxSummaryDataPipe,\n IgxGridHierarchicalPipe,\n IgxGridHierarchicalPagingPipe,\n IgxStringReplacePipe,\n IgxGridCellMergePipe,\n IgxScrollInertiaDirective,\n IgxGridUnmergeActivePipe\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective\n implements GridType, AfterViewInit, AfterContentInit, OnInit, OnDestroy, DoCheck {\n\n /**\n * @hidden @internal\n */\n @HostBinding('attr.role')\n public role = 'grid';\n\n /* contentChildren */\n /* blazorInclude */\n /* blazorTreatAsCollection */\n /* blazorCollectionName: RowIslandCollection */\n /* ngQueryListName: childLayoutList */\n /**\n * @hidden\n */\n @ContentChildren(IgxRowIslandComponent, { read: IgxRowIslandComponent, descendants: false })\n public childLayoutList: QueryList<IgxRowIslandComponent>;\n\n /**\n * @hidden\n */\n @ContentChildren(IgxRowIslandComponent, { read: IgxRowIslandComponent, descendants: true })\n public allLayoutList: QueryList<IgxRowIslandComponent>;\n\n /** @hidden @internal */\n @ContentChildren(IgxPaginatorToken, { descendants: true })\n public paginatorList: QueryList<IgxPaginatorComponent>;\n\n /** @hidden @internal */\n @ViewChild('toolbarOutlet', { read: ViewContainerRef })\n public toolbarOutlet: ViewContainerRef;\n\n /** @hidden @internal */\n @ViewChild('paginatorOutlet', { read: ViewContainerRef })\n public paginatorOutlet: ViewContainerRef;\n /**\n * @hidden\n */\n @ViewChildren(IgxTemplateOutletDirective, { read: IgxTemplateOutletDirective })\n public templateOutlets: QueryList<any>;\n\n /**\n * @hidden\n */\n @ViewChildren(IgxChildGridRowComponent)\n public hierarchicalRows: QueryList<IgxChildGridRowComponent>;\n\n @ViewChild('hierarchical_record_template', { read: TemplateRef, static: true })\n protected hierarchicalRecordTemplate: TemplateRef<any>;\n\n @ViewChild('child_record_template', { read: TemplateRef, static: true })\n protected childTemplate: TemplateRef<any>;\n\n // @ViewChild('headerHierarchyExpander', { read: ElementRef, static: true })\n protected get headerHierarchyExpander() {\n return this.theadRow?.headerHierarchyExpander;\n }\n\n /**\n * @hidden\n */\n public childLayoutKeys = [];\n\n /** @hidden @internal */\n public dataSetByUser = false;\n\n /**\n * @hidden\n */\n public highlightedRowID = null;\n\n /**\n * @hidden\n */\n public updateOnRender = false;\n\n /**\n * @hidden\n */\n public parent: IgxHierarchicalGridComponent = null;\n\n /**\n * @hidden @internal\n */\n public childRow: IgxChildGridRowComponent;\n\n @ContentChildren(IgxActionStripToken, { read: IgxActionStripToken, descendants: false })\n protected override actionStripComponents: QueryList<IgxActionStripToken>;\n\n /** @hidden @internal */\n public override get actionStrip() {\n return this.parentIsland ? this.parentIsland.actionStrip : super.actionStrip;\n }\n\n public override get advancedFilteringExpressionsTree(): IFilteringExpressionsTree {\n return super.advancedFilteringExpressionsTree;\n }\n\n public override set advancedFilteringExpressionsTree(value: IFilteringExpressionsTree) {\n if (!this._hGridSchema) {\n this._hGridSchema = this.generateSchema();\n }\n super.advancedFilteringExpressionsTree = value;\n }\n\n private _data;\n private h_id = `igx-hierarchical-grid-${NEXT_ID++}`;\n private childGridTemplates: Map<any, any> = new Map();\n\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-hierarchical-grid [id]=\"'igx-hgrid-1'\" [data]=\"Data\" [autoGenerate]=\"true\"></igx-hierarchical-grid>\n * ```\n */\n @HostBinding('attr.id')\n @Input()\n public get id(): string {\n return this.h_id;\n }\n public set id(value: string) {\n this.h_id = value;\n }\n\n /* treatAsRef */\n /**\n * Gets/Sets the array of data that populates the component.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\"></igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n @Input()\n public set data(value: any[] | null) {\n this.setDataInternal(value);\n this.dataSetByUser = true;\n this.checkPrimaryKeyField();\n }\n\n /**\n * Returns an array of data set to the `IgxHierarchicalGridComponent`.\n * ```typescript\n * let filteredData = this.grid.filteredData;\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n public get data(): any[] | null {\n return this._data;\n }\n\n /** @hidden @internal */\n public override get paginator() {\n const id = this.id;\n return (!this.parentIsland && this.paginationComponents?.first) || this.rootGrid.paginatorList?.find((pg) =>\n pg.nativeElement.offsetParent?.id === id);\n }\n\n /** @hidden @internal */\n public override get excelStyleFilteringComponent(): IgxGridExcelStyleFilteringComponent {\n return this.parentIsland ?\n this.parentIsland.excelStyleFilteringComponents.first :\n super.excelStyleFilteringComponent;\n }\n\n /**\n * Gets/Sets the total number of records in the data source.\n *\n * @remarks\n * This property is required for remote grid virtualization to function when it is bound to remote data.\n * @example\n * ```typescript\n * const itemCount = this.grid1.totalItemCount;\n * this.grid1.totalItemCount = 55;\n * ```\n */\n @Input()\n public set totalItemCount(count) {\n this.verticalScrollContainer.totalItemCount = count;\n }\n\n public get totalItemCount() {\n return this.verticalScrollContainer.totalItemCount;\n }\n\n /**\n * Sets if all immediate children of the `IgxHierarchicalGridComponent` should be expanded/collapsed.\n * Default value is false.\n * ```html\n * <igx-hierarchical-grid [id]=\"'igx-grid-1'\" [data]=\"Data\" [autoGenerate]=\"true\" [expandChildren]=\"true\"></igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n @Input({ transform: booleanAttribute })\n public set expandChildren(value: boolean) {\n this._defaultExpandState = value;\n this.expansionStates = new Map<any, boolean>();\n }\n\n /**\n * Gets if all immediate children of the `IgxHierarchicalGridComponent` previously have been set to be expanded/collapsed.\n * If previously set and some rows have been manually expanded/collapsed it will still return the last set value.\n * ```typescript\n * const expanded = this.grid.expandChildren;\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n public get expandChildren(): boolean {\n return this._defaultExpandState;\n }\n\n /* blazorSuppress */\n /**\n * Gets/Sets the schema for the hierarchical grid.\n * This schema defines the structure and properties of the data displayed in the grid.\n * @Input()\n * @param {EntityType[]} entities - An array of EntityType objects representing the grid's schema.\n * @remarks\n * This property is required in remote data filtering scenarios.\n * @example\n * ```typescript\n * const schema = this.grid.schema;\n * this.grid.schema = [{ name: 'Products', fields: [...], childEntities: [...] }];\n * ```\n */\n @Input()\n public set schema(entities: EntityType[]) {\n this._hGridSchema = entities;\n }\n\n /* blazorSuppress */\n public get schema() {\n if (!this._hGridSchema) {\n this._hGridSchema = this.generateSchema();\n }\n\n return this._hGridSchema;\n }\n\n /**\n * Gets the unique identifier of the parent row. It may be a `string` or `number` if `primaryKey` of the\n * parent grid is set or an object reference of the parent record otherwise.\n * ```typescript\n * const foreignKey = this.grid.foreignKey;\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n public get foreignKey() {\n if (!this.parent) {\n return null;\n }\n return this.parent.gridAPI.getParentRowId(this);\n }\n\n /**\n * @hidden\n */\n public get hasExpandableChildren() {\n return !!this.childLayoutKeys.length;\n }\n\n /**\n * @hidden\n */\n public get resolveRowEditContainer() {\n if (this.parentIsland && this.parentIsland.rowEditCustom) {\n return this.parentIsland.rowEditContainer;\n }\n return this.rowEditContainer;\n }\n\n /**\n * @hidden\n */\n public get resolveRowEditActions() {\n return this.parentIsland ? this.parentIsland.rowEditActionsTemplate : this.rowEditActionsTemplate;\n }\n\n /**\n * @hidden\n */\n public get resolveRowEditText() {\n return this.parentIsland ? this.parentIsland.rowEditTextTemplate : this.rowEditTextTemplate;\n }\n\n /** @hidden */\n public override hideActionStrip() {\n if (!this.parent) {\n // hide child layout actions strips when\n // moving outside root grid.\n super.hideActionStrip();\n this.allLayoutList.forEach(ri => {\n ri.actionStrip?.hide();\n });\n }\n }\n\n /**\n * @hidden\n */\n public override get parentRowOutletDirective() {\n // Targeting parent outlet in order to prevent hiding when outlet\n // is present at a child grid and is attached to a row.\n return this.parent ? this.parent.rowOutletDirective : this.outlet;\n }\n\n /**\n * @hidden\n */\n public override ngOnInit() {\n // this.expansionStatesChange.pipe(takeUntil(this.destroy$)).subscribe((value: Map<any, boolean>) => {\n // const res = Array.from(value.entries()).filter(({1: v}) => v === true).map(([k]) => k);\n // });\n this.batchEditing = !!this.rootGrid.batchEditing;\n if (this.rootGrid !== this) {\n this.rootGrid.batchEditingChange.pipe(takeUntil(this.destroy$)).subscribe((val: boolean) => {\n this.batchEditing = val;\n });\n }\n super.ngOnInit();\n }\n\n /**\n * @hidden\n */\n public override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.verticalScrollContainer.beforeViewDestroyed.pipe(takeUntil(this.destroy$)).subscribe((view) => {\n const rowData = view.context.$implicit;\n if (this.isChildGridRecord(rowData)) {\n const cachedData = this.childGridTemplates.get(rowData.rowID);\n if (cachedData) {\n const tmlpOutlet = cachedData.owner;\n tmlpOutlet._viewContainerRef.detach(0);\n }\n }\n });\n\n if (this.parent) {\n this.childLayoutKeys = this.parentIsland.children.map((item) => item.key);\n }\n\n this.headSelectorsTemplates = this.parentIsland ?\n this.parentIsland.headSelectorsTemplates :\n this.headSelectorsTemplates;\n\n this.rowSelectorsTemplates = this.parentIsland ?\n this.parentIsland.rowSelectorsTemplates :\n this.rowSelectorsTemplates;\n this.dragIndicatorIconTemplate = this.parentIsland ?\n this.parentIsland.dragIndicatorIconTemplate :\n this.dragIndicatorIconTemplate;\n this.rowExpandedIndicatorTemplate = this.rootGrid.rowExpandedIndicatorTemplate;\n this.rowCollapsedIndicatorTemplate = this.rootGrid.rowCollapsedIndicatorTemplate;\n this.headerCollapsedIndicatorTemplate = this.rootGrid.headerCollapsedIndicatorTemplate;\n this.headerExpandedIndicatorTemplate = this.rootGrid.headerExpandedIndicatorTemplate;\n this.excelStyleHeaderIconTemplate = this.rootGrid.excelStyleHeaderIconTemplate;\n this.sortAscendingHeaderIconTemplate = this.rootGrid.sortAscendingHeaderIconTemplate;\n this.sortDescendingHeaderIconTemplate = this.rootGrid.sortDescendingHeaderIconTemplate;\n this.sortHeaderIconTemplate = this.rootGrid.sortHeaderIconTemplate;\n this.hasChildrenKey = this.parentIsland ?\n this.parentIsland.hasChildrenKey || this.rootGrid.hasChildrenKey :\n this.rootGrid.hasChildrenKey;\n this.showExpandAll = this.parentIsland ?\n this.parentIsland.showExpandAll : this.rootGrid.showExpandAll;\n }\n\n /**\n * @hidden\n */\n public override ngAfterContentInit() {\n this.updateColumnList(false);\n this.childLayoutKeys = this.parent ?\n this.parentIsland.children.map((item) => item.key) :\n this.childLayoutKeys = this.childLayoutList.map((item) => item.key);\n this.childLayoutList.notifyOnChanges();\n this.childLayoutList.changes.pipe(takeUntil(this.destroy$)).subscribe(() =>\n this.onRowIslandChange()\n );\n super.ngAfterContentInit();\n }\n\n /**\n * Returns the `RowType` by index.\n *\n * @example\n * ```typescript\n * const myRow = this.grid1.getRowByIndex(1);\n * ```\n * @param index\n */\n public getRowByIndex(index: number): RowType {\n if (index < 0 || index >= this.dataView.length) {\n return undefined;\n }\n return this.createRow(index);\n }\n\n /**\n * Returns the `RowType` by key.\n *\n * @example\n * ```typescript\n * const myRow = this.grid1.getRowByKey(1);\n * ```\n * @param key\n */\n public getRowByKey(key: any): RowType {\n const data = this.dataView;\n const rec = this.primaryKey ?\n data.find(record => record[this.primaryKey] === key) :\n data.find(record => record === key);\n const index = data.indexOf(rec);\n if (index < 0 || index > data.length) {\n return undefined;\n }\n\n return new IgxHierarchicalGridRow(this as any, index, rec);\n }\n\n /**\n * @hidden @internal\n */\n public allRows(): RowType[] {\n return this.dataView.map((rec, index) => this.createRow(index));\n }\n\n /**\n * Returns the collection of `IgxHierarchicalGridRow`s for current page.\n *\n * @hidden @internal\n */\n public dataRows(): RowType[] {\n return this.allRows().filter(row => row instanceof IgxHierarchicalGridRow);\n }\n\n /**\n * Returns an array of the selected `IgxGridCell`s.\n *\n * @example\n * ```typescript\n * const selectedCells = this.grid.selectedCells;\n * ```\n */\n public get selectedCells(): CellType[] {\n return this.dataRows().map((row) => row.cells.filter((cell) => cell.selected))\n .reduce((a, b) => a.concat(b), []);\n }\n\n /**\n * Returns a `CellType` object that matches the conditions.\n *\n * @example\n * ```typescript\n * const myCell = this.grid1.getCellByColumn(2, \"UnitPrice\");\n * ```\n * @param rowIndex\n * @param columnField\n */\n public getCellByColumn(rowIndex: number, columnField: string): CellType {\n const row = this.getRowByIndex(rowIndex);\n const column = this.columns.find((col) => col.field === columnField);\n if (row && row instanceof IgxHierarchicalGridRow && column) {\n return new IgxGridCell(this, rowIndex, column);\n }\n }\n\n /**\n * Returns a `CellType` object that matches the conditions.\n *\n * @remarks\n * Requires that the primaryKey property is set.\n * @example\n * ```typescript\n * grid.getCellByKey(1, 'index');\n * ```\n * @param rowSelector match any rowID\n * @param columnField\n */\n public getCellByKey(rowSelector: any, columnField: string): CellType {\n const row = this.getRowByKey(rowSelector);\n const column = this.columns.find((col) => col.field === columnField);\n if (row && column) {\n return new IgxGridCell(this, row.index, column);\n }\n }\n\n public override pinRow(rowID: any, index?: number): boolean {\n const row = this.getRowByKey(rowID);\n return super.pinRow(rowID, index, row);\n }\n\n /** @hidden @internal */\n public setDataInternal(value: any) {\n const oldData = this._data;\n this._data = value || [];\n this.summaryService.clearSummaryCache();\n if (!this._init) {\n this.validation.updateAll(this._data);\n }\n if (this.autoGenerate && this._data.length > 0 && this.shouldRecreateColumns(oldData, this._data) && this.gridAPI.grid) {\n this.setupColumns();\n this.reflow();\n }\n this.cdr.markForCheck();\n if (this.parent && (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 public override unpinRow(rowID: any): boolean {\n const row = this.getRowByKey(rowID);\n return super.unpinRow(rowID, row);\n }\n\n /**\n * @hidden @internal\n */\n public dataLoading(event) {\n this.dataPreLoad.emit(event);\n }\n\n /** @hidden */\n public override featureColumnsWidth() {\n return super.featureColumnsWidth(this.headerHierarchyExpander);\n }\n\n /**\n * @hidden\n */\n public onRowIslandChange() {\n if (this.parent) {\n this.childLayoutKeys = this.parentIsland.children.filter(item => !(item as any)._destroyed).map((item) => item.key);\n } else {\n this.childLayoutKeys = this.childLayoutList.filter(item => !(item as any)._destroyed).map((item) => item.key);\n }\n if (!(this.cdr as any).destroyed) {\n this.cdr.detectChanges();\n }\n }\n\n /** @hidden @internal **/\n public override ngOnDestroy() {\n if (!this.parent) {\n this.gridAPI.getChildGrids(true).forEach((grid) => {\n if (!grid.childRow.cdr.destroyed) {\n grid.childRow.cdr.destroy();\n }\n });\n }\n if (this.parent && this.selectionService.activeElement) {\n // in case selection is in destroyed child grid, selection should be cleared.\n this._clearSeletionHighlights();\n }\n super.ngOnDestroy();\n }\n\n /**\n * @hidden\n */\n public isRowHighlighted(rowData) {\n return this.highlightedRowID === rowData.rowID;\n }\n\n /**\n * @hidden\n */\n public isHierarchicalRecord(record: any): boolean {\n if (this.isGhostRecord(record)) {\n record = record.recordRef;\n }\n return this.childLayoutList.length !== 0 && record[this.childLayoutList.first.key];\n }\n\n /**\n * @hidden\n */\n public override isChildGridRecord(record: any): boolean {\n // Can be null when there is defined layout but no child data was found\n return record?.childGridsData !== undefined;\n }\n\n /**\n * @hidden\n */\n public trackChanges(index, rec) {\n if (rec.childGridsData !== undefined) {\n // if is child rec\n return rec.rowID;\n }\n return rec;\n }\n\n /**\n * @hidden\n */\n public getContext(rowData, rowIndex, pinned): any {\n if (this.isChildGridRecord(rowData)) {\n const cachedData = this.childGridTemplates.get(rowData.rowID);\n if (cachedData) {\n const view = cachedData.view;\n const tmlpOutlet = cachedData.owner;\n return {\n $implicit: rowData,\n moveView: view,\n owner: tmlpOutlet,\n index: this.dataView.indexOf(rowData)\n };\n } else {\n // child rows contain unique grids, hence should have unique templates\n return {\n $implicit: rowData,\n templateID: {\n type: 'childRow',\n id: rowData.rowID\n },\n index: this.dataView.indexOf(rowData)\n };\n }\n } else {\n return {\n $implicit: this.isGhostRecord(rowData) || this.isRecordMerged(rowData) ? rowData.recordRef : rowData,\n templateID: {\n type: 'dataRow',\n id: null\n },\n index: this.getDataViewIndex(rowIndex, pinned),\n disabled: this.isGhostRecord(rowData),\n metaData: this.isRecordMerged(rowData) ? rowData : null\n };\n }\n }\n\n /**\n * @hidden\n */\n public get rootGrid(): GridType {\n let currGrid = this as IgxHierarchicalGridComponent;\n while (currGrid.parent) {\n currGrid = currGrid.parent;\n }\n return currGrid;\n }\n\n /**\n * @hidden\n */\n public get iconTemplate() {\n const expanded = this.hasExpandedRecords() && this.hasExpandableChildren;\n if (!expanded && this.showExpandAll) {\n return this.headerCollapsedIndicatorTemplate || this.defaultCollapsedTemplate;\n } else {\n return this.headerExpandedIndicatorTemplate || this.defaultExpandedTemplate;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public override getDragGhostCustomTemplate(): TemplateRef<any> {\n if (this.parentIsland) {\n return this.parentIsland.getDragGhostCustomTemplate();\n }\n return super.getDragGhostCustomTemplate();\n }\n\n /**\n * @hidden\n * Gets the visible content height that includes header + tbody + footer.\n * For hierarchical child grid it may be scrolled and not fully visible.\n */\n public override getVisibleContentHeight() {\n let height = super.getVisibleContentHeight();\n if (this.parent) {\n const rootHeight = this.rootGrid.getVisibleContentHeight();\n const topDiff = this.nativeElement.getBoundingClientRect().top - this.rootGrid.nativeElement.getBoundingClientRect().top;\n height = rootHeight - topDiff > height ? height : rootHeight - topDiff;\n }\n return height;\n }\n\n /**\n * @hidden\n */\n public toggleAll() {\n const expanded = this.hasExpandedRecords() && this.hasExpandableChildren;\n if (!expanded && this.showExpandAll) {\n this.expandAll();\n } else {\n this.collapseAll();\n }\n }\n\n\n /**\n * @hidden\n * @internal\n */\n public hasExpandedRecords() {\n if (this.expandChildren) {\n return true;\n }\n let hasExpandedEntry = false;\n this.expansionStates.forEach(value => {\n if (value) {\n hasExpandedEntry = value;\n }\n });\n return hasExpandedEntry;\n }\n\n public override getDefaultExpandState(record: any) {\n if (this.hasChildrenKey && !record[this.hasChildrenKey]) {\n return false;\n }\n return this.expandChildren;\n\n }\n\n /**\n * @hidden\n */\n public isExpanded(record: any): boolean {\n return this.gridAPI.get_row_expansion_state(record);\n }\n\n /**\n * @hidden\n */\n public viewCreatedHandler(args) {\n if (this.isChildGridRecord(args.context.$implicit)) {\n const key = args.context.$implicit.rowID;\n this.childGridTemplates.set(key, args);\n }\n }\n\n /**\n * @hidden\n */\n public viewMovedHandler(args) {\n if (this.isChildGridRecord(args.context.$implicit)) {\n // view was moved, update owner in cache\n const key = args.context.$implicit.rowID;\n const cachedData = this.childGridTemplates.get(key);\n cachedData.owner = args.owner;\n\n this.childLayoutList.forEach((layout) => {\n const relatedGrid = this.gridAPI.getChildGridByID(layout.key, args.context.$implicit.rowID);\n if (relatedGrid && relatedGrid.updateOnRender) {\n // Detect changes if `expandChildren` has changed when the grid wasn't visible. This is for performance reasons.\n relatedGrid.notifyChanges(true);\n relatedGrid.updateOnRender = false;\n }\n });\n }\n }\n\n /** @hidden @internal **/\n public onContainerScroll() {\n this.hideOverlays();\n }\n\n /**\n * @hidden\n */\n public createRow(index: number, data?: any): RowType {\n let row: RowType;\n const dataIndex = this._getDataViewIndex(index);\n const rec: any = data ?? this.dataView[dataIndex];\n\n if (!row && rec && !rec.childGridsData) {\n row = new IgxHierarchicalGridRow(this as any, index, rec);\n }\n\n return row;\n }\n\n /** @hidden @internal */\n public getChildGrids(inDeph?: boolean) {\n return this.gridAPI.getChildGrids(inDeph);\n }\n\n protected override generateDataFields(data: any[]): string[] {\n return super.generateDataFields(data).filter((field) => {\n const layoutsList = this.parentIsland ? this.parentIsland.children : this.childLayoutList;\n const keys = layoutsList.map((item) => item.key);\n return keys.indexOf(field) === -1;\n });\n }\n\n protected resizeNotifyHandler() {\n // do not trigger reflow if element is detached or if it is child grid.\n if (this.nativeElement?.isConnected && !this.parent) {\n this.notifyChanges(true);\n }\n }\n\n /**\n * @hidden\n */\n protected override initColumns(collection: IgxColumnComponent[], cb: (args: any) => void = null) {\n if (this.hasColumnLayouts) {\n // invalid configuration - hierarchical grid should not allow column layouts\n // remove column layouts\n const nonColumnLayoutColumns = this.columns.filter((col) => !col.columnLayout && !col.columnLayoutChild);\n this.updateColumns(nonColumnLayoutColumns);\n }\n super.initColumns(collection, cb);\n }\n\n\n protected override setupColumns() {\n if (this.parentIsland && this.parentIsland.childColumns.length > 0 && !this.autoGenerate) {\n this.createColumnsList(this.parentIsland.childColumns.toArray());\n } else {\n super.setupColumns();\n }\n }\n\n protected override getColumnList() {\n const childLayouts = this.parent ? this.childLayoutList : this.allLayoutList;\n const nestedColumns = childLayouts.map((layout) => layout.columnList.toArray());\n const colsArray = [].concat.apply([], nestedColumns);\n if (colsArray.length > 0) {\n const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n return topCols;\n } else {\n return this.columnList.toArray()\n }\n }\n\n protected override onColumnsChanged() {\n Promise.resolve().then(() => {\n this.updateColumnList();\n });\n }\n\n protected override _shouldAutoSize(renderedHeight) {\n if (this.isPercentHeight && this.parent) {\n return true;\n }\n return super._shouldAutoSize(renderedHeight);\n }\n\n private updateColumnList(recalcColSizes = true) {\n const childLayouts = this.parent ? this.childLayoutList : this.allLayoutList;\n const nestedColumns = childLayouts.map((layout) => layout.columnList.toArray());\n const colsArray = [].concat.apply([], nestedColumns);\n const colLength = this.columns.length;\n const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n if (topCols.length > 0) {\n this.initColumns(topCols, (col: IgxColumnComponent) => this.columnInit.emit(col));\n if (recalcColSizes && this.columns.length !== colLength) {\n this.calculateGridSizes(false);\n }\n }\n }\n\n private _clearSeletionHighlights() {\n [this.rootGrid, ...this.rootGrid.getChildGrids(true)].forEach(grid => {\n grid.selectionService.clear();\n grid.selectionService.activeElement = null;\n grid.nativeElement.classList.remove('igx-grid__tr--highlighted');\n grid.highlightedRowID = null;\n grid.cdr.markForCheck();\n });\n }\n\n private generateSchema() {\n const filterableFields = this.columns.filter((column) => !column.columnGroup && column.filterable);\n let entities: EntityType[];\n\n if(filterableFields.length !== 0) {\n entities = [\n {\n name: null,\n fields: filterableFields.map(f => ({\n field: f.field,\n dataType: f.dataType,\n header: f.header,\n editorOptions: f.editorOptions,\n filters: f.filters,\n pipeArgs: f.pipeArgs,\n defaultTimeFormat: f.defaultTimeFormat,\n defaultDateTimeFormat: f.defaultDateTimeFormat\n })) as FieldType[]\n }\n ];\n\n entities[0].childEntities = this.childLayoutList.reduce((acc, rowIsland) => {\n const childFirstRowData = this.data?.length > 0 && this.data[0][rowIsland.key]?.length > 0 ?\n this.data[0][rowIsland.key][0] : null;\n return acc.concat(this.generateChildEntity(rowIsland, childFirstRowData));\n }\n , []);\n }\n\n return entities;\n }\n\n private generateChildEntity(rowIsland: IgxRowIslandComponent, firstRowData: any[]): EntityType {\n const entityName = rowIsland.key;\n let fields = [];\n let childEntities;\n if (!rowIsland.autoGenerate) {\n fields = flatten(rowIsland.childColumns.toArray()).filter(col => col.field)\n .map(f => ({ field: f.field, dataType: f.dataType })) as FieldType[];\n } else if (firstRowData) {\n const rowIslandFields = Object.keys(firstRowData).map(key => {\n if (firstRowData[key] instanceof Array) {\n return null;\n }\n\n return {\n field: key,\n dataType: this.resolveDataTypes(firstRowData[key])\n }\n });\n fields = rowIslandFields.filter(f => f !== null) as FieldType[];\n }\n\n const rowIslandChildEntities = rowIsland.childLayoutList.reduce((acc, childRowIsland) => {\n if (!firstRowData) {\n return null;\n }\n const childFirstRowData = firstRowData.length > 0 && firstRowData[childRowIsland.key]?.length > 0 ?\n firstRowData[childRowIsland.key][0] : null;\n return acc.concat(this.generateChildEntity(childRowIsland, childFirstRowData));\n }, []);\n\n if (rowIslandChildEntities?.length > 0) {\n childEntities = rowIslandChildEntities;\n }\n\n return {\n name: entityName,\n fields: fields,\n childEntities: childEntities\n }\n }\n}\n","<div class=\"igx-grid__hierarchical-indent\" [ngClass]=\"{'igx-grid__hierarchical-indent--scroll': parentHasScroll}\">\n <ng-container #container></ng-container>\n</div>\n","<ng-content select=\"igx-grid-toolbar,igc-grid-toolbar\"></ng-content>\n<ng-container #toolbarOutlet></ng-container>\n\n<igx-grid-header-row class=\"igx-grid-thead\" 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 (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" (focus)=\"navigation.focusTbody($event)\"\n (keydown)=\"navigation.handleNavigation($event)\" (dragStop)=\"selectionService.dragMode = $event\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\"\n [style.height.px]=\"totalHeight\" [style.width.px]=\"totalCalcWidth\" [style.width]=\"!platform.isBrowser ? '100%' : undefined\" #tbody (scroll)=\"preventContainerScroll($event)\">\n @if (moving && columnInDrag && pinnedColumns.length <= 0) {\n <span\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n }\n @if (moving && columnInDrag && pinnedColumns.length > 0) {\n <span\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedStartWidth\"></span>\n }\n @if (mergedDataInView && mergedDataInView.length > 0) {\n <div igxScrollInertia\n [IgxScrollInertiaScrollContainer]=\"this.verticalScrollContainer.dc.instance.scrollContainer\"\n [IgxScrollInertiaDirection]=\"this.verticalScrollContainer.dc.instance.scrollDirection\">\n @for (rowData of mergedDataInView; track rowData.record;) {\n <igx-hierarchical-grid-row class=\"igx-grid__tr--merged-top\" [gridID]=\"id\" [index]=\"rowData.index\" [data]=\"rowData.record.recordRef\" [metaData]=\"rowData.record\" [style.top.px]=\"getMergeCellOffset(rowData)\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowData.index:hasColumnLayouts:isRecordMerged(rowData.record):false:rowData.record:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData.record:rowData.index:pipeTrigger\" #row>\n </igx-hierarchical-grid-row>\n }\n </div>\n }\n <ng-template #pinnedRecordsTemplate>\n @if (data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:[]:sortStrategy:id:pipeTrigger:true\n | gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:pipeTrigger\n | gridUnmergeActive:columnsToMerge:activeRowIndexes:true:pipeTrigger; as pinnedData\n ) {\n @if (pinnedData.length > 0) {\n <div #pinContainer class=\"igx-grid__tr--pinned\"\n [ngClass]=\"{ 'igx-grid__tr--pinned-bottom': !isRowPinningToTop, 'igx-grid__tr--pinned-top': isRowPinningToTop }\"\n [style.width.px]=\"calcWidth\">\n @for (rowData of pinnedData; track (rowData.recordRef || rowData); let rowIndex = $index) {\n <ng-container *ngTemplateOutlet=\"pinned_hierarchical_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n }\n </div>\n }\n }\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template igxGridFor let-rowData let-rowIndex=\"index\" [igxGridForOf]=\"renderData\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:[]:sortStrategy:id:pipeTrigger\n | gridHierarchicalPaging:!!paginator:page:perPage:id:pipeTrigger\n | gridHierarchical:expansionStates:id:primaryKey:childLayoutKeys:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\n | gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:pipeTrigger\n | gridUnmergeActive:columnsToMerge:activeRowIndexes:false:pipeTrigger\"\n [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\" [igxForItemSize]=\"renderedRowHeight\" [igxForTrackBy]=\"trackChanges\"\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\" (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]=\"(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) ? child_record_template : hierarchical_record_template))\"\n [igxTemplateOutletContext]=\"getContext(rowData, rowIndex, false)\" (viewCreated)=\"viewCreatedHandler($event)\"\n (viewMoved)=\"viewMovedHandler($event)\" (cachedViewLoaded)=\"cachedViewLoaded($event)\" (beforeViewDetach)=\"viewDetachHandler($event)\">\n </ng-template>\n <!-- <ng-container *igxTemplateOutlet=\"(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) && isExpanded(rowData) ? child_record_template : hierarchical_record_template)); context: getContext(rowData)\"></ng-container> -->\n </ng-template>\n <ng-template #hierarchical_record_template let-rowIndex=\"index\" let-disabledRow=\"disabled\" let-rowData let-metaData=\"metaData\">\n <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [disabled]=\"disabledRow\" [data]=\"rowData\" [metaData]=\"metaData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:isRecordMerged(metaData):false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-hierarchical-grid-row>\n </ng-template>\n\n <ng-template #pinned_hierarchical_record_template let-rowIndex=\"index\" let-rowData let-metaData=\"metaData\">\n <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [data]=\"rowData\" [metaData]=\"metaData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:isRecordMerged(metaData):false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row #pinnedRow>\n </igx-hierarchical-grid-row>\n </ng-template>\n <ng-template #child_record_template let-rowIndex=\"index\" let-rowData>\n <div [attr.data-rowindex]=\"rowIndex\" (scroll)=\"onContainerScroll()\"\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr--highlighted':isRowHighlighted(rowData)\n }\">\n @for (layout of childLayoutList; track layout) {\n <igx-child-grid-row [parentGridID]=\"id\" [index]=\"rowIndex\"\n [data]=\"rowData\" [layout]=\"layout\" #row>\n </igx-child-grid-row>\n }\n </div>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: this }\"></ng-container>\n @if (moving && columnInDrag) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n }\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n @if (!this.parent) {\n <igc-trial-watermark></igc-trial-watermark>\n }\n </div>\n <div igxToggle #loadingOverlay>\n @if (shouldOverlayLoading) {\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n }\n </div>\n @if (moving && 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 <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 igxOverlayOutlet #igxBodyOverlayOutlet=\"overlay-outlet\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]=\"summaryRowHeight\" #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" [attr.aria-activedescendant]=\"activeDescendant\"\n (keydown)=\"navigation.summaryNav($event)\">\n @if (hasSummarizedColumns && rootSummariesEnabled) {\n <igx-grid-summary-row [style.width.px]=\"calcWidth\" [style.height.px]=\"summaryRowHeight\"\n [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n }\n <div class=\"igx-grid__tfoot-thumb\" [hidden]=\"!hasVerticalScroll()\" [style.height.px]=\"summaryRowHeight\"\n [style.width.px]=\"scrollSize\"></div>\n </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]=\"pinnedStartWidth\" [style.min-width.px]=\"pinnedStartWidth\"></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]=\"unpinnedWidth\">\n <ng-template igxGridFor [igxGridForOf]=\"[]\" #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.width.px]=\"pinnedEndWidth\" [style.min-width.px]=\"pinnedEndWidth\" [hidden]=\"pinnedEndWidth === 0\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer,igc-grid-footer\"></ng-content>\n <ng-content select=\"igx-paginator,igc-paginator\"></ng-content>\n <ng-container #paginatorOutlet></ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n @if (showAddButton) {\n <span>\n <ng-container *ngTemplateOutlet=\"addRowEmptyTemplate || defaultAddRowEmptyTemplate\"></ng-container>\n </span>\n }\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n @if (showAddButton) {\n <span>\n <ng-container *ngTemplateOutlet=\"addRowEmptyTemplate || defaultAddRowEmptyTemplate\"></ng-container>\n </span>\n }\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button type=\"button\" igxButton=\"contained\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\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\n<ng-template #defaultCollapsedTemplate>\n <igx-icon family=\"default\" name=\"unfold_more\" role=\"button\"></igx-icon>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon\n family=\"default\"\n name=\"unfold_less\"\n role=\"button\"\n [active]=\"hasExpandedRecords() && hasExpandableChildren\">\n </igx-icon>\n</ng-template>\n\n@if (rowEditable) {\n <div igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"resolveRowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.crudService.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n}\n<ng-template #defaultRowEditText>\n {{ this.resourceStrings.igx_grid_row_edit_text | igxStringReplace:'{0}':rowChangesCount.toString() | igxStringReplace:'{1}':hiddenColumnsCount.toString() }}\n</ng-template>\n<ng-template #defaultRowEditActions>\n <button type=\"button\" igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button type=\"button\" igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.isAddRow ? rowAddTextTemplate : resolveRowEditText || defaultRowEditText;\n context: { $implicit: !this.crudService.row?.isAddRow ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"resolveRowEditActions || defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon family=\"default\" name=\"drag_indicator\"></igx-icon>\n</ng-template>\n\n@if (colResizingService.showResizer) {\n <igx-grid-column-resizer></igx-grid-column-resizer>\n}\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n@if (platform.isElements) {\n <div #sink style=\"display: none;\"></div>\n <ng-content select=\"igx-grid-state,igc-grid-state\"></ng-content>\n <ng-content select=\"igx-column,igc-column,igx-column-group,igc-column-group,igx-action-strip,igc-action-strip\"></ng-content>\n <ng-content select=\"igx-row-island,igc-row-island\"></ng-content>\n}\n","import { NgModule } from '@angular/core';\nimport { IgxHierarchicalGridComponent } from './hierarchical-grid.component';\nimport { IgxRowIslandComponent } from './row-island.component';\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 IgxRowEditTextDirective,\n IgxRowAddTextDirective,\n IgxRowEditActionsDirective,\n IgxRowEditTabStopDirective,\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 IgxColumnRequiredValidatorDirective,\n IgxColumnMinValidatorDirective,\n IgxColumnMaxValidatorDirective,\n IgxColumnEmailValidatorDirective,\n IgxColumnMinLengthValidatorDirective,\n IgxColumnMaxLengthValidatorDirective,\n IgxColumnPatternValidatorDirective,\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\";\nimport {\n IgxPaginatorComponent,\n IgxPageNavigationComponent,\n IgxPageSizeSelectorComponent,\n IgxPaginatorContentDirective,\n IgxPaginatorDirective\n} from 'igniteui-angular/paginator';\n\n/* NOTE: Hierarchical grid directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_HIERARCHICAL_GRID_DIRECTIVES = [\n IgxHierarchicalGridComponent,\n IgxRowIslandComponent,\n IgxRowAddTextDirective,\n IgxRowEditActionsDirective,\n IgxRowEditTextDirective,\n IgxRowEditTabStopDirective,\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 // IGX_GRID_VALIDATION_DIRECTIVES:\n IgxColumnRequiredValidatorDirective,\n IgxColumnMinValidatorDirective,\n IgxColumnMaxValidatorDirective,\n IgxColumnEmailValidatorDirective,\n IgxColumnMinLengthValidatorDirective,\n IgxColumnMaxLengthValidatorDirective,\n IgxColumnPatternValidatorDirective,\n // IGX_PAGINATOR_DIRECTIVES:\n IgxPaginatorComponent,\n IgxPageNavigationComponent,\n IgxPageSizeSelectorComponent,\n IgxPaginatorContentDirective,\n IgxPaginatorDirective\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_HIERARCHICAL_GRID_DIRECTIVES\n ],\n exports: [\n ...IGX_HIERARCHICAL_GRID_DIRECTIVES\n ]\n})\nexport class IgxHierarchicalGridModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["flatten"],"mappings":"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"}
1
+ {"version":3,"file":"igniteui-angular-grids-hierarchical-grid.mjs","sources":["../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-api.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-navigation.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-base.directive.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/row-island-api.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/row-island.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.pipes.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-cell.component.ts","../../../projects/igniteui-angular/grids/core/src/cell.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-row.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-row.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/child-grid-row.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.module.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/igniteui-angular-grids-hierarchical-grid.ts"],"sourcesContent":["import { IgxRowIslandComponent } from './row-island.component';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { GridBaseAPIService, GridType } from 'igniteui-angular/grids/core';\nimport { IPathSegment } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxHierarchicalGridAPIService extends GridBaseAPIService<GridType> {\n protected childRowIslands: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n protected childGrids: Map<string, Map<any, GridType>> =\n new Map<string, Map<any, GridType>>();\n\n public registerChildRowIsland(rowIsland: IgxRowIslandComponent) {\n this.childRowIslands.set(rowIsland.key, rowIsland);\n this.destroyMap.set(rowIsland.key, new Subject<boolean>());\n }\n\n public unsetChildRowIsland(rowIsland: IgxRowIslandComponent) {\n this.childGrids.delete(rowIsland.key);\n this.childRowIslands.delete(rowIsland.key);\n this.destroyMap.delete(rowIsland.key);\n }\n\n public getChildRowIsland(key: string) {\n return this.childRowIslands.get(key);\n }\n\n public getChildGrid(path: Array<IPathSegment>): GridType | undefined {\n const currPath = path;\n let grid;\n const pathElem = currPath.shift();\n const childrenForLayout = this.childGrids.get(pathElem.rowIslandKey);\n if (childrenForLayout) {\n const childGrid = childrenForLayout.get(pathElem.rowKey);\n if (currPath.length === 0) {\n grid = childGrid;\n } else {\n grid = childGrid.gridAPI.getChildGrid(currPath);\n }\n }\n return grid;\n }\n\n public getChildGrids(inDepth?: boolean) {\n let allChildren: GridType [] = [];\n this.childGrids.forEach((layoutMap) => {\n layoutMap.forEach((grid) => {\n allChildren.push(grid);\n if (inDepth) {\n const children = grid.gridAPI.getChildGrids(inDepth);\n allChildren = allChildren.concat(children);\n }\n });\n });\n\n return allChildren;\n }\n\n public getParentRowId(childGrid: GridType) {\n let rowID;\n this.childGrids.forEach((layoutMap) => {\n layoutMap.forEach((grid, key) => {\n if (grid === childGrid) {\n rowID = key;\n return;\n }\n });\n });\n return rowID;\n }\n\n public registerChildGrid(parentRowID: any, rowIslandKey: string, grid: GridType) {\n let childrenForLayout = this.childGrids.get(rowIslandKey);\n if (!childrenForLayout) {\n this.childGrids.set(rowIslandKey, new Map<any, GridType>());\n childrenForLayout = this.childGrids.get(rowIslandKey);\n }\n childrenForLayout.set(parentRowID, grid);\n }\n\n public getChildGridsForRowIsland(rowIslandKey: string): GridType[] {\n const childrenForLayout = this.childGrids.get(rowIslandKey);\n const children = [];\n if (childrenForLayout) {\n childrenForLayout.forEach((child) => {\n children.push(child);\n });\n }\n return children;\n }\n\n public getChildGridByID(rowIslandKey, rowID) {\n const childrenForLayout = this.childGrids.get(rowIslandKey);\n return childrenForLayout.get(rowID);\n }\n\n public override get_row_expansion_state(record: any): boolean {\n let inState;\n if (record.childGridsData !== undefined) {\n const ri = record.key;\n const states = this.grid.expansionStates;\n const expanded = states.get(ri);\n if (expanded !== undefined) {\n return expanded;\n } else {\n return this.grid.getDefaultExpandState(record);\n }\n } else {\n inState = !!super.get_row_expansion_state(record);\n }\n return inState && (this.grid as any).childLayoutList.length !== 0;\n }\n\n public override allow_expansion_state_change(rowID, expanded): boolean {\n const rec = this.get_rec_by_id(rowID);\n const grid = (this.grid as any);\n if (grid.hasChildrenKey && !rec[grid.hasChildrenKey]) {\n return false;\n }\n return !!rec && this.grid.expansionStates.get(rowID) !== expanded;\n }\n\n public override get_rec_by_id(rowID): any {\n const data = this.get_all_data(false);\n const index = this.get_row_index_in_data(rowID, data);\n return data[index];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { first } from 'rxjs/operators';\nimport { GridType, RowType } from 'igniteui-angular/grids/core';\nimport { IActiveNode, IgxGridNavigationService } from 'igniteui-angular/grids/core';\nimport { IPathSegment, NAVIGATION_KEYS, SUPPORTED_KEYS } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxHierarchicalGridNavigationService extends IgxGridNavigationService {\n protected _pendingNavigation = false;\n\n\n public override dispatchEvent(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n const cellOrRowInEdit = this.grid.crudService.cell || this.grid.crudService.row;\n if (!this.activeNode || !(SUPPORTED_KEYS.has(key) || (key === 'tab' && cellOrRowInEdit))) {\n return;\n }\n\n const targetGrid = this.getClosestElemByTag(event.target, 'igx-hierarchical-grid')\n || this.getClosestElemByTag(event.target, 'igc-hierarchical-grid');\n if (targetGrid !== this.grid.nativeElement) {\n return;\n }\n\n if (this._pendingNavigation && NAVIGATION_KEYS.has(key)) {\n // In case focus needs to be moved from one grid to another, however there is a pending scroll operation\n // which is an async operation, any additional navigation keys should be ignored\n // untill operation complete.\n event.preventDefault();\n return;\n }\n super.dispatchEvent(event);\n }\n\n public override navigateInBody(rowIndex, visibleColIndex, cb: (arg: any) => void = null): void {\n const rec = this.grid.dataView[rowIndex];\n if (rec && this.grid.isChildGridRecord(rec)) {\n // target is child grid\n const virtState = this.grid.verticalScrollContainer.state;\n const inView = rowIndex >= virtState.startIndex && rowIndex <= virtState.startIndex + virtState.chunkSize;\n const isNext = this.activeNode.row < rowIndex;\n const targetLayoutIndex = isNext ? null : this.grid.childLayoutKeys.length - 1;\n if (inView) {\n this._moveToChild(rowIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n } else {\n let scrollAmount = this.grid.verticalScrollContainer.getScrollForIndex(rowIndex, !isNext);\n scrollAmount += isNext ? 1 : -1;\n this.grid.verticalScrollContainer.getScroll().scrollTop = scrollAmount;\n this._pendingNavigation = true;\n this.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n this._moveToChild(rowIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n this._pendingNavigation = false;\n });\n }\n return;\n }\n\n const isLast = rowIndex === this.grid.dataView.length;\n if ((rowIndex === -1 || isLast) &&\n this.grid.parent !== null) {\n // reached end of child grid\n const nextSiblingIndex = this.nextSiblingIndex(isLast);\n if (nextSiblingIndex !== null) {\n this.grid.parent.navigation._moveToChild(this.grid.childRow.index, visibleColIndex, isLast, nextSiblingIndex, cb);\n } else {\n this._moveToParent(isLast, visibleColIndex, cb);\n }\n return;\n }\n\n if (this.grid.parent) {\n const isNext = this.activeNode && typeof this.activeNode.row === 'number' ? rowIndex > this.activeNode.row : false;\n const cbHandler = (args) => {\n this._handleScrollInChild(rowIndex, isNext);\n cb(args);\n };\n if (!this.activeNode) {\n this.activeNode = { row: null, column: null };\n }\n super.navigateInBody(rowIndex, visibleColIndex, cbHandler);\n return;\n }\n\n if (!this.activeNode) {\n this.activeNode = { row: null, column: null };\n }\n super.navigateInBody(rowIndex, visibleColIndex, cb);\n }\n\n public override shouldPerformVerticalScroll(index, visibleColumnIndex = -1, isNext?) {\n const targetRec = this.grid.dataView[index];\n if (this.grid.isChildGridRecord(targetRec)) {\n const scrollAmount = this.grid.verticalScrollContainer.getScrollForIndex(index, !isNext);\n const currScroll = this.grid.verticalScrollContainer.getScroll().scrollTop;\n const shouldScroll = !isNext ? scrollAmount > currScroll : currScroll < scrollAmount;\n return shouldScroll;\n } else {\n return super.shouldPerformVerticalScroll(index, visibleColumnIndex);\n }\n }\n\n public override focusTbody(event) {\n if (!this.activeNode || this.activeNode.row === null) {\n this.activeNode = {\n row: 0,\n column: 0\n };\n\n this.grid.navigateTo(0, 0, (obj) => {\n this.grid.clearCellSelection();\n obj.target.activate(event);\n });\n\n } else {\n super.focusTbody(event);\n }\n }\n\n protected nextSiblingIndex(isNext) {\n const layoutKey = this.grid.childRow.layout.key;\n const layoutIndex = this.grid.parent.childLayoutKeys.indexOf(layoutKey);\n const nextIndex = isNext ? layoutIndex + 1 : layoutIndex - 1;\n if (nextIndex <= this.grid.parent.childLayoutKeys.length - 1 && nextIndex > -1) {\n return nextIndex;\n } else {\n return null;\n }\n }\n\n /**\n * Handles scrolling in child grid and ensures target child row is in main grid view port.\n *\n * @param rowIndex The row index which should be in view.\n * @param isNext Optional. Whether we are navigating to next. Used to determine scroll direction.\n * @param cb Optional.Callback function called when operation is complete.\n */\n protected _handleScrollInChild(rowIndex: number, isNext?: boolean, cb?: () => void) {\n const shouldScroll = this.shouldPerformVerticalScroll(rowIndex, -1, isNext);\n if (shouldScroll) {\n this.grid.navigation.performVerticalScrollToCell(rowIndex, -1, () => {\n this.positionInParent(rowIndex, isNext, cb);\n });\n } else {\n this.positionInParent(rowIndex, isNext, cb);\n }\n }\n\n /**\n *\n * @param rowIndex Row index that should come in view.\n * @param isNext Whether we are navigating to next. Used to determine scroll direction.\n * @param cb Optional.Callback function called when operation is complete.\n */\n protected positionInParent(rowIndex, isNext, cb?: () => void) {\n const row = this.grid.gridAPI.get_row_by_index(rowIndex);\n if (!row) {\n if (cb) {\n cb();\n }\n return;\n }\n const positionInfo = this.getPositionInfo(row, isNext);\n if (!positionInfo.inView) {\n // stop event from triggering multiple times before scrolling is complete.\n this._pendingNavigation = true;\n const scrollableGrid = isNext ? this.getNextScrollableDown(this.grid) : this.getNextScrollableUp(this.grid);\n scrollableGrid.grid.verticalScrollContainer.recalcUpdateSizes();\n scrollableGrid.grid.verticalScrollContainer.addScrollTop(positionInfo.offset);\n scrollableGrid.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n this._pendingNavigation = false;\n if (cb) {\n cb();\n }\n });\n } else {\n if (cb) {\n cb();\n }\n }\n }\n\n /**\n * Navigates to the specific child grid based on the array of paths leading to it\n *\n * @param pathToChildGrid Array of IPathSegments that describe the path to the child grid\n * each segment is described by the rowKey of the parent row and the rowIslandKey.\n */\n public navigateToChildGrid(pathToChildGrid: IPathSegment[], cb?: () => void) {\n if (pathToChildGrid.length == 0) {\n if (cb) {\n cb();\n }\n return;\n }\n const pathElem = pathToChildGrid.shift();\n const rowKey = pathElem.rowKey;\n const rowIndex = this.grid.gridAPI.get_row_index_in_data(rowKey);\n if (rowIndex === -1) {\n if (cb) {\n cb();\n }\n return;\n }\n // scroll to row, since it can be out of view\n this.performVerticalScrollToCell(rowIndex, -1, () => {\n this.grid.cdr.detectChanges();\n // next, expand row, if it is collapsed\n const row = this.grid.getRowByIndex(rowIndex);\n if (!row.expanded) {\n row.expanded = true;\n // update sizes after expand\n this.grid.verticalScrollContainer.recalcUpdateSizes();\n this.grid.cdr.detectChanges();\n }\n\n const childGrid = this.grid.gridAPI.getChildGrid([pathElem]);\n if (!childGrid) {\n if (cb) {\n cb();\n }\n return;\n }\n const positionInfo = this.getElementPosition(childGrid.nativeElement, false);\n this.grid.verticalScrollContainer.addScrollTop(positionInfo.offset);\n this.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n childGrid.navigation.navigateToChildGrid(pathToChildGrid, cb);\n });\n });\n }\n\n /**\n * Moves navigation to child grid.\n *\n * @param parentRowIndex The parent row index, at which the child grid is rendered.\n * @param childLayoutIndex Optional. The index of the child row island to which the child grid belongs to. Uses first if not set.\n */\n protected _moveToChild(parentRowIndex: number, visibleColIndex: number, isNext: boolean, childLayoutIndex?: number,\n cb?: (arg: any) => void) {\n const ri = typeof childLayoutIndex !== 'number' ?\n this.grid.childLayoutList.first : this.grid.childLayoutList.toArray()[childLayoutIndex];\n const rowId = this.grid.dataView[parentRowIndex].rowID;\n const pathSegment: IPathSegment = {\n rowID: rowId,\n rowKey: rowId,\n rowIslandKey: ri.key\n };\n const childGrid = this.grid.gridAPI.getChildGrid([pathSegment]);\n const targetIndex = isNext ? 0 : childGrid.dataView.length - 1;\n const targetRec = childGrid.dataView[targetIndex];\n if (!targetRec) {\n // if no target rec, then move on in next sibling or parent\n childGrid.navigation.navigateInBody(targetIndex, visibleColIndex, cb);\n return;\n }\n if (childGrid.isChildGridRecord(targetRec)) {\n // if target is a child grid record should move into it.\n this.grid.navigation.activeNode.row = null;\n childGrid.navigation.activeNode = { row: targetIndex, column: this.activeNode.column};\n childGrid.navigation._handleScrollInChild(targetIndex, isNext, () => {\n const targetLayoutIndex = isNext ? 0 : childGrid.childLayoutList.toArray().length - 1;\n childGrid.navigation._moveToChild(targetIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n });\n return;\n }\n\n const childGridNav = childGrid.navigation;\n this.clearActivation();\n const lastVisibleIndex = childGridNav.lastColumnIndex;\n const columnIndex = visibleColIndex <= lastVisibleIndex ? visibleColIndex : lastVisibleIndex;\n childGridNav.activeNode = { row: targetIndex, column: columnIndex};\n childGrid.tbody.nativeElement.focus({preventScroll: true});\n this._pendingNavigation = false;\n childGrid.navigation._handleScrollInChild(targetIndex, isNext, () => {\n childGrid.navigateTo(targetIndex, columnIndex, cb);\n });\n }\n\n /**\n * Moves navigation back to parent grid.\n *\n * @param rowIndex\n */\n protected _moveToParent(isNext: boolean, columnIndex, cb?) {\n const indexInParent = this.grid.childRow.index;\n const hasNextTarget = this.hasNextTarget(this.grid.parent, indexInParent, isNext);\n if (!hasNextTarget) {\n return;\n }\n this.clearActivation();\n const targetRowIndex = isNext ? indexInParent + 1 : indexInParent - 1;\n const lastVisibleIndex = this.grid.parent.navigation.lastColumnIndex;\n const nextColumnIndex = columnIndex <= lastVisibleIndex ? columnIndex : lastVisibleIndex;\n this._pendingNavigation = true;\n const cbFunc = (args) => {\n this._pendingNavigation = false;\n cb(args);\n args.target.grid.tbody.nativeElement.focus();\n };\n this.grid.parent.navigation.navigateInBody(targetRowIndex, nextColumnIndex, cbFunc);\n }\n\n /**\n * Gets information on the row position relative to the root grid view port.\n * Returns whether the row is in view and its offset.\n *\n * @param rowObj\n * @param isNext\n */\n protected getPositionInfo(row: RowType, isNext: boolean) {\n // XXX: Fix type\n let rowElem = row.nativeElement;\n if ((row as any).layout) {\n const childLayoutKeys = this.grid.childLayoutKeys;\n const riKey = isNext ? childLayoutKeys[0] : childLayoutKeys[childLayoutKeys.length - 1];\n const pathSegment: IPathSegment = {\n rowID: row.data.rowID, rowKey: row.data.rowID,\n rowIslandKey: riKey\n };\n const childGrid = this.grid.gridAPI.getChildGrid([pathSegment]);\n rowElem = childGrid.tfoot.nativeElement;\n }\n\n return this.getElementPosition(rowElem, isNext);\n }\n\n protected getElementPosition(element: HTMLElement, isNext: boolean) {\n // Special handling for scenarios where there is css transformations applied that affects scale.\n // getBoundingClientRect().height returns size after transformations\n // element.offsetHeight returns size without any transformations\n // get the ratio to figure out if anything has applied transformations\n const scaling = element.getBoundingClientRect().height / element.offsetHeight;\n\n const gridBottom = this._getMinBottom(this.grid);\n const diffBottom =\n element.getBoundingClientRect().bottom - gridBottom;\n const gridTop = this._getMaxTop(this.grid);\n const diffTop = element.getBoundingClientRect().bottom -\n element.getBoundingClientRect().height - gridTop;\n // Adding Math.Round because Chrome has some inconsistencies when the page is zoomed\n const isInView = isNext ? Math.round(diffBottom) <= 0 : Math.round(diffTop) >= 0;\n const calcOffset = isNext ? diffBottom : diffTop;\n\n return { inView: isInView, offset: calcOffset / scaling};\n }\n\n /**\n * Gets closest element by its tag name.\n *\n * @param sourceElem The element from which to start the search.\n * @param targetTag The target element tag name, for which to search.\n */\n protected getClosestElemByTag(sourceElem, targetTag) {\n let result = sourceElem;\n while (result !== null && result.nodeType === 1) {\n if (result.tagName.toLowerCase() === targetTag.toLowerCase()) {\n return result;\n }\n result = result.parentNode;\n }\n return null;\n }\n\n private clearActivation() {\n // clear if previous activation exists.\n if (this.activeNode && Object.keys(this.activeNode).length) {\n this.activeNode = Object.assign({} as IActiveNode);\n }\n }\n\n private hasNextTarget(grid: GridType, index: number, isNext: boolean) {\n const targetRowIndex = isNext ? index + 1 : index - 1;\n const hasTargetRecord = !!grid.dataView[targetRowIndex];\n if (hasTargetRecord) {\n return true;\n } else {\n let hasTargetRecordInParent = false;\n if (grid.parent) {\n const indexInParent = grid.childRow.index;\n hasTargetRecordInParent = this.hasNextTarget(grid.parent, indexInParent, isNext);\n }\n return hasTargetRecordInParent;\n }\n }\n\n /**\n * Gets the max top view in the current grid hierarchy.\n *\n * @param grid\n */\n private _getMaxTop(grid) {\n let currGrid = grid;\n let top = currGrid.tbody.nativeElement.getBoundingClientRect().top;\n while (currGrid.parent) {\n currGrid = currGrid.parent;\n const pinnedRowsHeight = currGrid.hasPinnedRecords && currGrid.isRowPinningToTop ? currGrid.pinnedRowHeight : 0;\n top = Math.max(top, currGrid.tbody.nativeElement.getBoundingClientRect().top + pinnedRowsHeight);\n }\n return top;\n }\n\n /**\n * Gets the min bottom view in the current grid hierarchy.\n *\n * @param grid\n */\n private _getMinBottom(grid) {\n let currGrid = grid;\n let bottom = currGrid.tbody.nativeElement.getBoundingClientRect().bottom;\n while (currGrid.parent) {\n currGrid = currGrid.parent;\n const pinnedRowsHeight = currGrid.hasPinnedRecords && !currGrid.isRowPinningToTop ? currGrid.pinnedRowHeight : 0;\n bottom = Math.min(bottom, currGrid.tbody.nativeElement.getBoundingClientRect().bottom - pinnedRowsHeight);\n }\n return bottom;\n }\n\n /**\n * Finds the next grid that allows scrolling down.\n *\n * @param grid The grid from which to begin the search.\n */\n private getNextScrollableDown(grid) {\n let currGrid = grid.parent;\n if (!currGrid) {\n return { grid, prev: null };\n }\n let scrollTop = currGrid.verticalScrollContainer.scrollPosition;\n let scrollHeight = currGrid.verticalScrollContainer.getScroll().scrollHeight;\n let nonScrollable = scrollHeight === 0 ||\n Math.round(scrollTop + currGrid.verticalScrollContainer.igxForContainerSize) === scrollHeight;\n let prev = grid;\n while (nonScrollable && currGrid.parent !== null) {\n prev = currGrid;\n currGrid = currGrid.parent;\n scrollTop = currGrid.verticalScrollContainer.scrollPosition;\n scrollHeight = currGrid.verticalScrollContainer.getScroll().scrollHeight;\n nonScrollable = scrollHeight === 0 ||\n Math.round(scrollTop + currGrid.verticalScrollContainer.igxForContainerSize) === scrollHeight;\n }\n return { grid: currGrid, prev };\n }\n\n /**\n * Finds the next grid that allows scrolling up.\n *\n * @param grid The grid from which to begin the search.\n */\n private getNextScrollableUp(grid) {\n let currGrid = grid.parent;\n if (!currGrid) {\n return { grid, prev: null };\n }\n let nonScrollable = currGrid.verticalScrollContainer.scrollPosition === 0;\n let prev = grid;\n while (nonScrollable && currGrid.parent !== null) {\n prev = currGrid;\n currGrid = currGrid.parent;\n nonScrollable = currGrid.verticalScrollContainer.scrollPosition === 0;\n }\n return { grid: currGrid, prev };\n }\n}\n","import {\n booleanAttribute,\n createComponent,\n Directive,\n EventEmitter,\n Input,\n Output,\n reflectComponentType,\n inject\n} from '@angular/core';\nimport { IgxHierarchicalGridAPIService } from './hierarchical-grid-api.service';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { IgxSummaryOperand } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridNavigationService } from './hierarchical-grid-navigation.service';\nimport { GridType, IGX_GRID_SERVICE_BASE } from 'igniteui-angular/grids/core';\nimport { IgxColumnGroupComponent } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent } from 'igniteui-angular/grids/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { IgxGridTransaction } from 'igniteui-angular/grids/core';\nimport { IgxTransactionService, IPathSegment } from 'igniteui-angular/core';\nimport { IForOfState } from 'igniteui-angular/directives';\nimport { IgxGridBaseDirective } from 'igniteui-angular/grids/grid';\n\nexport const hierarchicalTransactionServiceFactory = () => new IgxTransactionService();\n\nexport const IgxHierarchicalTransactionServiceFactory = {\n provide: IgxGridTransaction,\n useFactory: hierarchicalTransactionServiceFactory\n};\n\n/* blazorIndirectRender\n blazorComponent\n omitModule\n wcSkipComponentSuffix */\n@Directive()\nexport abstract class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective implements GridType {\n /* blazorSuppress */\n public override gridAPI = inject<IgxHierarchicalGridAPIService>(IGX_GRID_SERVICE_BASE);\n /* blazorSuppress */\n public override navigation = inject(IgxHierarchicalGridNavigationService);\n /**\n * Gets/Sets the key indicating whether a row has children. If row has no children it does not render an expand indicator.\n *\n * @example\n * ```html\n * <igx-hierarchical-grid #grid [data]=\"localData\" [hasChildrenKey]=\"'hasEmployees'\">\n * </igx-hierarchical-grid>\n * ```\n */\n @Input()\n public hasChildrenKey: string;\n\n /**\n * Gets/Sets whether the expand/collapse all button in the header should be rendered.\n *\n * @remarks\n * The default value is false.\n * @example\n * ```html\n * <igx-hierarchical-grid #grid [data]=\"localData\" [showExpandAll]=\"true\">\n * </igx-hierarchical-grid>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public showExpandAll = false;\n\n /**\n * Emitted when a new chunk of data is loaded from virtualization.\n *\n * @example\n * ```typescript\n * <igx-hierarchical-grid [id]=\"'igx-grid-1'\" [data]=\"Data\" [autoGenerate]=\"true\" (dataPreLoad)=\"handleEvent()\">\n * </igx-hierarchical-grid>\n * ```\n */\n @Output()\n public dataPreLoad = new EventEmitter<IForOfState>();\n\n /** @hidden @internal */\n public override get type(): GridType[\"type\"] {\n return 'hierarchical';\n }\n\n /* blazorSuppress */\n /**\n * Gets the outlet used to attach the grid's overlays to.\n *\n * @remarks\n * If set, returns the outlet defined outside the grid. Otherwise returns the grid's internal outlet directive.\n */\n public override get outlet() {\n return this.rootGrid ? this.rootGrid.resolveOutlet() : this.resolveOutlet();\n }\n\n /* blazorSuppress */\n /**\n * Sets the outlet used to attach the grid's overlays to.\n */\n public override set outlet(val: any) {\n this._userOutletDirective = val;\n }\n\n /** @hidden @internal */\n public batchEditingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n public override get batchEditing(): boolean {\n return this._batchEditing;\n }\n\n public override set batchEditing(val: boolean) {\n if (val !== this._batchEditing) {\n delete this._transactions;\n this.switchTransactionService(val);\n this.subscribeToTransactions();\n this.batchEditingChange.emit(val);\n this._batchEditing = val;\n }\n }\n\n /**\n * @hidden\n */\n public parentIsland: IgxRowIslandComponent;\n public abstract rootGrid: GridType;\n\n /* blazorSuppress */\n public abstract expandChildren: boolean;\n\n /**\n * @hidden\n */\n public createColumnsList(cols: Array<any>) {\n const columns = [];\n const topLevelCols = cols.filter(c => c.level === 0);\n topLevelCols.forEach((col) => {\n col.grid = this;\n const ref = this._createColumn(col);\n ref.changeDetectorRef.detectChanges();\n columns.push(ref.instance);\n });\n const result = flatten(columns);\n this.updateColumns(result);\n this.initPinning();\n\n result.forEach(col => {\n this.columnInit.emit(col);\n });\n\n const mirror = reflectComponentType(IgxColumnComponent);\n const outputs = mirror.outputs.filter(o => o.propName !== 'columnChange');\n outputs.forEach(output => {\n this.columns.forEach(column => {\n if (column[output.propName]) {\n column[output.propName].pipe(takeUntil(column.destroy$)).subscribe((args) => {\n const rowIslandColumn = this.parentIsland.columnList.find((col) => col.field\n ? col.field === column.field\n : col.header === column.header);\n rowIslandColumn[output.propName].emit({ args, owner: this });\n });\n }\n });\n });\n }\n\n protected _createColumn(col) {\n let ref;\n if (col instanceof IgxColumnGroupComponent) {\n ref = this._createColGroupComponent(col);\n } else {\n ref = this._createColComponent(col);\n }\n return ref;\n }\n\n protected _createColGroupComponent(col: IgxColumnGroupComponent) {\n const ref = createComponent(IgxColumnGroupComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n ref.changeDetectorRef.detectChanges();\n const mirror = reflectComponentType(IgxColumnGroupComponent);\n mirror.inputs.forEach((input) => {\n const propName = input.propName;\n ref.instance[propName] = col[propName];\n });\n if (col.children.length > 0) {\n const newChildren = [];\n col.children.forEach(child => {\n const newCol = this._createColumn(child).instance;\n newCol.parent = ref.instance;\n newChildren.push(newCol);\n });\n ref.instance.children.reset(newChildren);\n ref.instance.children.notifyOnChanges();\n }\n return ref;\n }\n\n protected _createColComponent(col) {\n const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n const mirror = reflectComponentType(IgxColumnComponent);\n mirror.inputs.forEach((input) => {\n const propName = input.propName;\n if (!(col[propName] instanceof IgxSummaryOperand)) {\n ref.instance[propName] = col[propName];\n } else {\n ref.instance[propName] = col[propName].constructor;\n }\n });\n ref.instance.validators = col.validators;\n return ref;\n }\n\n protected getGridsForIsland(rowIslandID: string) {\n return this.gridAPI.getChildGridsForRowIsland(rowIslandID);\n }\n\n protected getChildGrid(path: Array<IPathSegment>) {\n if (!path) {\n return;\n }\n return this.gridAPI.getChildGrid(path);\n }\n}\n\nconst flatten = (arr: any[]) => {\n let result = [];\n\n arr.forEach(el => {\n result.push(el);\n if (el.children) {\n result = result.concat(flatten(el.children.toArray()));\n }\n });\n return result;\n};\n","import { IgxHierarchicalGridComponent } from './hierarchical-grid.component';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class IgxRowIslandAPIService {\n public rowIsland: IgxRowIslandComponent;\n public change: Subject<any> = new Subject<any>();\n protected state: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n protected destroyMap: Map<string, Subject<boolean>> = new Map<string, Subject<boolean>>();\n\n protected childRowIslands: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n protected childGrids: Map<any, IgxHierarchicalGridComponent> = new Map<any, IgxHierarchicalGridComponent>();\n\n public register(rowIsland: IgxRowIslandComponent) {\n this.state.set(rowIsland.id, rowIsland);\n this.destroyMap.set(rowIsland.id, new Subject<boolean>());\n }\n\n public unsubscribe(rowIsland: IgxRowIslandComponent) {\n this.state.delete(rowIsland.id);\n }\n\n public get(id: string): IgxRowIslandComponent {\n return this.state.get(id);\n }\n\n public unset(id: string) {\n this.state.delete(id);\n this.destroyMap.delete(id);\n }\n\n public reset(oldId: string, newId: string) {\n const destroy = this.destroyMap.get(oldId);\n const rowIsland = this.get(oldId);\n\n this.unset(oldId);\n\n if (rowIsland) {\n this.state.set(newId, rowIsland);\n }\n\n if (destroy) {\n this.destroyMap.set(newId, destroy);\n }\n }\n\n public registerChildRowIsland(rowIsland: IgxRowIslandComponent) {\n this.childRowIslands.set(rowIsland.key, rowIsland);\n this.destroyMap.set(rowIsland.key, new Subject<boolean>());\n }\n\n public unsetChildRowIsland(rowIsland: IgxRowIslandComponent) {\n this.childRowIslands.delete(rowIsland.key);\n this.destroyMap.delete(rowIsland.key);\n }\n\n public getChildRowIsland(rowIslandKey: string) {\n return this.childRowIslands.get(rowIslandKey);\n }\n\n public registerChildGrid(parentRowID: any, grid: IgxHierarchicalGridComponent) {\n this.childGrids.set(parentRowID, grid);\n }\n\n public getChildGrids(inDepth?: boolean) {\n let allChildren = [];\n this.childGrids.forEach((grid) => {\n allChildren.push(grid);\n });\n if (inDepth) {\n this.childRowIslands.forEach((layout) => {\n allChildren = allChildren.concat(layout.rowIslandAPI.getChildGrids(inDepth));\n });\n }\n\n return allChildren;\n }\n\n public getChildGridByID(rowID) {\n return this.childGrids.get(rowID);\n }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n forwardRef,\n Input,\n IterableChangeRecord,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n inject\n} from '@angular/core';\nimport {\n GridType,\n IgxColumnComponent,\n IgxFilteringService,\n IgxGridPaginatorTemplateContext,\n IgxGridSelectionService,\n IgxGridToolbarDirective,\n IgxGridToolbarTemplateContext,\n ISearchInfo\n} from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridBaseDirective } from './hierarchical-grid-base.directive';\nimport { IgxActionStripToken } from 'igniteui-angular/core';\nimport { first, filter, takeUntil, pluck } from 'rxjs/operators';\nimport { IgxRowIslandAPIService } from './row-island-api.service';\nimport { IGridCreatedEventArgs } from './events';\nimport { IgxPaginatorComponent, IgxPaginatorDirective } from 'igniteui-angular/paginator';\nimport { IForOfState } from 'igniteui-angular/directives';\n\n/* blazorCopyInheritedMembers */\n/* blazorElement */\n/* wcElementTag: igc-row-island */\n/* blazorIndirectRender */\n/* jsonAPIManageCollectionInMarkup */\n/* jsonAPIManageItemInMarkup */\n/* mustUseNGParentAnchor */\n/* additionalIdentifier: ChildDataKey */\n/* contentParent: RowIsland */\n/* contentParent: HierarchicalGrid */\n/**\n * Row island\n *\n * @igxModule IgxHierarchicalGridModule\n * @igxParent IgxHierarchicalGridComponent, IgxRowIslandComponent\n *\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-row-island',\n template: `@if (platform.isElements) {\n <ng-content select=\"igx-column,igc-column,igx-column-group,igc-column-group,igx-action-strip,igc-action-strip\"></ng-content>\n <ng-content select=\"igx-row-island,igc-row-island\"></ng-content>\n }`,\n providers: [\n IgxRowIslandAPIService,\n IgxFilteringService,\n IgxGridSelectionService\n ],\n standalone: true\n})\nexport class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective\n implements AfterContentInit, AfterViewInit, OnChanges, OnInit, OnDestroy {\n /* blazorSuppress */\n public rowIslandAPI = inject(IgxRowIslandAPIService);\n\n\n /* blazorSuppress */\n /**\n * Sets the key of the row island by which child data would be taken from the row data if such is provided.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n * <igx-row-island [key]=\"'childData'\">\n * <!-- ... -->\n * </igx-row-island>\n * </igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n @Input()\n public key: string;\n\n /* blazorInclude,wcInclude TODO: Move to Elements-only component */\n /**\n * Sets the key of the row island by which child data would be taken from the row data if such is provided.\n * @hidden @internal\n */\n @Input()\n public get childDataKey() {\n return this.key;\n }\n /* blazorInclude,wcInclude */\n public set childDataKey(value: string) {\n this.key = value;\n }\n\n /**\n * @hidden\n */\n @ContentChildren(forwardRef(() => IgxRowIslandComponent), { read: IgxRowIslandComponent, descendants: false })\n public children = new QueryList<IgxRowIslandComponent>();\n\n /* contentChildren */\n /* blazorInclude */\n /* blazorTreatAsCollection */\n /* blazorCollectionName: RowIslandCollection */\n /**\n * @hidden @internal\n */\n @ContentChildren(forwardRef(() => IgxRowIslandComponent), { read: IgxRowIslandComponent, descendants: false })\n public childLayoutList = new QueryList<IgxRowIslandComponent>();\n\n /**\n * @hidden\n */\n @ContentChildren(IgxColumnComponent, { read: IgxColumnComponent, descendants: false })\n public childColumns = new QueryList<IgxColumnComponent>();\n\n @ContentChild(IgxGridToolbarDirective, { read: TemplateRef, descendants: false })\n protected toolbarDirectiveTemplate: TemplateRef<IgxGridToolbarTemplateContext>;\n\n @ContentChild(IgxPaginatorDirective, { read: TemplateRef, descendants: false })\n protected paginatorDirectiveTemplate: TemplateRef<any>;\n\n /* csSuppress */\n /**\n * Sets/Gets the toolbar template for each child grid created from this row island.\n */\n @Input()\n public get toolbarTemplate(): TemplateRef<IgxGridToolbarTemplateContext> {\n return this._toolbarTemplate || this.toolbarDirectiveTemplate;\n }\n\n public set toolbarTemplate(template: TemplateRef<IgxGridToolbarTemplateContext>) {\n this._toolbarTemplate = template;\n }\n\n\n /* csSuppress */\n /**\n * Sets/Gets the paginator template for each child grid created from this row island.\n */\n @Input()\n public get paginatorTemplate(): TemplateRef<IgxGridPaginatorTemplateContext> {\n return this._paginatorTemplate || this.paginatorDirectiveTemplate;\n }\n\n public set paginatorTemplate(template: TemplateRef<IgxGridPaginatorTemplateContext>) {\n this._paginatorTemplate = template;\n }\n\n // TODO(api-analyzer): Shouldn't need all tags to copy from base or hidden/internal due to include tag\n /* contentChildren */\n /* blazorInclude */\n /* blazorTreatAsCollection */\n /* blazorCollectionName: ActionStripCollection */\n /* blazorCollectionItemName: ActionStrip */\n /* ngQueryListName: actionStripComponents */\n /** @hidden @internal */\n @ContentChildren(IgxActionStripToken, { read: IgxActionStripToken, descendants: false })\n protected override actionStripComponents: QueryList<IgxActionStripToken>;\n\n /**\n * @hidden\n */\n @Output()\n public layoutChange = new EventEmitter<any>();\n\n /**\n * Event emitted when a grid is being created based on this row island.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n * <igx-row-island [key]=\"'childData'\" (gridCreated)=\"gridCreated($event)\" #rowIsland>\n * <!-- ... -->\n * </igx-row-island>\n * </igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n @Output()\n public gridCreated = new EventEmitter<IGridCreatedEventArgs>();\n\n /**\n * Emitted after a grid is being initialized for this row island.\n * The emitting is done in `ngAfterViewInit`.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n * <igx-row-island [key]=\"'childData'\" (gridInitialized)=\"gridInitialized($event)\" #rowIsland>\n * <!-- ... -->\n * </igx-row-island>\n * </igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n @Output()\n public gridInitialized = new EventEmitter<IGridCreatedEventArgs>();\n\n /**\n * @hidden\n */\n public initialChanges = [];\n\n /**\n * @hidden\n */\n public rootGrid: GridType = null;\n\n /** @hidden */\n public readonly data: any[] | null;\n\n /** @hidden */\n public override get hiddenColumnsCount(): number {\n return 0;\n }\n\n /** @hidden */\n public override get pinnedColumnsCount(): number {\n return 0;\n }\n\n /** @hidden */\n public override get lastSearchInfo(): ISearchInfo {\n return null;\n }\n\n /** @hidden */\n public override get filteredData(): any {\n return [];\n }\n\n /** @hidden */\n public override get filteredSortedData(): any[] {\n return [];\n }\n\n /** @hidden */\n public override get virtualizationState(): IForOfState {\n return null;\n }\n\n /** @hidden */\n public override get pinnedColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /** @hidden */\n public override get pinnedStartColumns(): IgxColumnComponent[] {\n return [];\n }\n /** @hidden */\n public override get pinnedEndColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /** @hidden */\n public override get unpinnedColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /** @hidden */\n public override get visibleColumns(): IgxColumnComponent[] {\n return [];\n }\n\n /** @hidden */\n public override get dataView(): any[] {\n return [];\n }\n\n //#region inert, not-a-grid component\n /** @hidden @internal */\n public override tabindex = -1;\n\n /** @hidden @internal */\n public override hostRole = null;\n\n protected override baseClass = null;\n\n /** @hidden @internal */\n public override get hostWidth(): any {\n return null;\n }\n\n protected override displayStyle = 'none';\n protected override templateRows = null;\n //#endregion\n\n private ri_columnListDiffer;\n private layout_id = `igx-row-island-`;\n private isInit = false;\n private _toolbarTemplate: TemplateRef<IgxGridToolbarTemplateContext>;\n private _paginatorTemplate: TemplateRef<IgxGridPaginatorTemplateContext>;\n\n /**\n * Sets if all immediate children of the grids for this `IgxRowIslandComponent` should be expanded/collapsed.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n * <igx-row-island [key]=\"'childData'\" [expandChildren]=\"true\" #rowIsland>\n * <!-- ... -->\n * </igx-row-island>\n * </igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n @Input({ transform: booleanAttribute })\n public set expandChildren(value: boolean) {\n this._defaultExpandState = value;\n this.rowIslandAPI.getChildGrids().forEach((grid) => {\n if (this.document.body.contains(grid.nativeElement)) {\n // Detect changes right away if the grid is visible\n grid.expandChildren = value;\n grid.cdr.detectChanges();\n } else {\n // Else defer the detection on changes when the grid gets into view for performance.\n grid.updateOnRender = true;\n }\n });\n }\n\n /**\n * Gets if all immediate children of the grids for this `IgxRowIslandComponent` have been set to be expanded/collapsed.\n * ```typescript\n * const expanded = this.rowIsland.expandChildren;\n * ```\n *\n * @memberof IgxRowIslandComponent\n */\n public get expandChildren(): boolean {\n return this._defaultExpandState;\n }\n\n /**\n * @hidden\n */\n public get id() {\n const pId = this.parentId ? this.parentId.substring(this.parentId.indexOf(this.layout_id) + this.layout_id.length) + '-' : '';\n return this.layout_id + pId + this.key;\n }\n\n /**\n * @hidden\n */\n public get parentId() {\n return this.parentIsland ? this.parentIsland.id : null;\n }\n\n /**\n * @hidden\n */\n public get level() {\n let ptr = this.parentIsland;\n let lvl = 0;\n while (ptr) {\n lvl++;\n ptr = ptr.parentIsland;\n }\n return lvl + 1;\n }\n\n /**\n * @hidden\n */\n public override ngOnInit() {\n this.filteringService.grid = this as GridType;\n this.rootGrid = this.gridAPI.grid;\n this.rowIslandAPI.rowIsland = this;\n this.ri_columnListDiffer = this.differs.find([]).create(null);\n }\n\n /**\n * @hidden\n */\n public override ngAfterContentInit() {\n this.updateChildren();\n this.children.notifyOnChanges();\n this.children.changes.pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateChildren();\n // update existing grids since their child ri have been changed.\n this.rowIslandAPI.getChildGrids(false).forEach(grid => {\n (grid as any).onRowIslandChange(this.children);\n });\n });\n const nestedColumns = this.children.map((layout) => layout.columnList.toArray());\n const colsArray = [].concat.apply([], nestedColumns);\n const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n this._childColumns = topCols;\n this.updateColumns(this._childColumns);\n this.columnList.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n Promise.resolve().then(() => {\n this.updateColumnList();\n });\n });\n\n // handle column changes so that they are passed to child grid instances when columnChange is emitted.\n this.ri_columnListDiffer.diff(this.childColumns);\n this._childColumns.forEach(x => x.columnChange.pipe(takeUntil(x.destroy$)).subscribe(() => this.updateColumnList()));\n this.childColumns.changes.pipe(takeUntil(this.destroy$)).subscribe((change: QueryList<IgxColumnComponent>) => {\n const diff = this.ri_columnListDiffer.diff(change);\n if (diff) {\n diff.forEachAddedItem((record: IterableChangeRecord<IgxColumnComponent>) => {\n record.item.columnChange.pipe(takeUntil(record.item.destroy$)).subscribe(() => this.updateColumnList());\n });\n }\n });\n\n if (this.actionStrip) {\n this.actionStrip.menuOverlaySettings.outlet = this.outlet;\n }\n }\n\n /**\n * @hidden\n */\n public override ngAfterViewInit() {\n this.rowIslandAPI.register(this);\n if (this.parentIsland) {\n this.parentIsland.rowIslandAPI.registerChildRowIsland(this);\n } else {\n this.rootGrid.gridAPI.registerChildRowIsland(this);\n }\n this._init = false;\n\n // Create the child toolbar if the parent island has a toolbar definition\n this.gridCreated.pipe(pluck('grid'), takeUntil(this.destroy$)).subscribe(grid => {\n grid.rendered$.pipe(first(), filter(() => !!this.toolbarTemplate))\n .subscribe(() => grid.toolbarOutlet.createEmbeddedView(this.toolbarTemplate, { $implicit: grid }, { injector: grid.toolbarOutlet.injector }));\n grid.rendered$.pipe(first(), filter(() => !!this.paginatorTemplate))\n .subscribe(() => {\n this.rootGrid.paginatorList.changes.pipe(takeUntil(this.destroy$)).subscribe((changes: QueryList<IgxPaginatorComponent>) => {\n changes.forEach(p => {\n if (p.nativeElement.offsetParent?.id === grid.id) {\n // Optimize update only for those grids that have related changed paginator.\n grid.setUpPaginator()\n }\n });\n });\n grid.paginatorOutlet.createEmbeddedView(this.paginatorTemplate, { $implicit: grid });\n });\n });\n }\n\n /**\n * @hidden\n */\n public ngOnChanges(changes) {\n this.layoutChange.emit(changes);\n if (!this.isInit) {\n this.initialChanges.push(changes);\n }\n }\n\n /**\n * @hidden\n */\n public override ngOnDestroy() {\n // Override the base destroy because we have not rendered anything to use removeEventListener on\n this.destroy$.next(true);\n this.destroy$.complete();\n this._destroyed = true;\n this.rowIslandAPI.unset(this.id);\n if (this.parentIsland) {\n this.getGridsForIsland(this.key).forEach(grid => {\n this.cleanGridState(grid);\n grid.gridAPI.unsetChildRowIsland(this);\n });\n this.parentIsland.rowIslandAPI.unsetChildRowIsland(this);\n } else {\n this.rootGrid.gridAPI.unsetChildRowIsland(this);\n this.cleanGridState(this.rootGrid);\n }\n }\n\n /**\n * @hidden\n */\n public override reflow() { }\n\n /**\n * @hidden\n */\n public override calculateGridHeight() { }\n\n /**\n * @hidden\n */\n public override calculateGridWidth() { }\n\n protected _childColumns = [];\n\n protected updateColumnList() {\n const nestedColumns = this.children.map((layout) => layout.columnList.toArray());\n const colsArray = [].concat.apply([], nestedColumns);\n const topCols = this.columnList.filter((item) => {\n if (colsArray.indexOf(item) === -1) {\n /* Reset the default width of the columns that come into this row island,\n because the root catches them first during the detectChanges() and sets their defaultWidth. */\n item.defaultWidth = undefined;\n return true;\n }\n return false;\n });\n this._childColumns = topCols;\n this.updateColumns(this._childColumns);\n this.rowIslandAPI.getChildGrids().forEach((grid: GridType) => {\n grid.createColumnsList(this._childColumns);\n if (!this.document.body.contains(grid.nativeElement)) {\n grid.updateOnRender = true;\n }\n });\n }\n\n protected updateChildren() {\n if (this.children.first === this) {\n this.children.reset(this.children.toArray().slice(1));\n }\n this.children.forEach(child => {\n child.parentIsland = this;\n });\n }\n\n private cleanGridState(grid) {\n grid.childGridTemplates.forEach((tmpl) => {\n tmpl.owner.cleanView(tmpl.context.templateID);\n });\n grid.childGridTemplates.clear();\n grid.onRowIslandChange();\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { GridType, IGX_GRID_BASE } from 'igniteui-angular/grids/core';\nimport { cloneArray, columnFieldPath, DataUtil, resolveNestedPath } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'gridHierarchical',\n standalone: true\n})\nexport class IgxGridHierarchicalPipe implements PipeTransform {\n private grid = inject<GridType>(IGX_GRID_BASE);\n\n public transform(\n collection: any,\n state = new Map<any, boolean>(),\n id: string,\n primaryKey: any,\n childKeys: string[],\n _pipeTrigger: number\n ): any[] {\n if (childKeys.length === 0) {\n return collection;\n }\n if (this.grid.verticalScrollContainer.isRemote) {\n return collection;\n }\n const result = this.addHierarchy(this.grid, cloneArray(collection), state, primaryKey, childKeys);\n\n return result;\n }\n\n public addHierarchy<T>(grid, data: T[], state, primaryKey, childKeys: string[]): T[] {\n const result = [];\n\n data.forEach((v) => {\n result.push(v);\n const childGridsData = {};\n childKeys.forEach((childKey) => {\n if (!v[childKey]) {\n v[childKey] = [];\n }\n const hasNestedPath = childKey?.includes('.');\n const childData = !hasNestedPath ? v[childKey] : resolveNestedPath(v, columnFieldPath(childKey));\n childGridsData[childKey] = childData;\n });\n if (grid.gridAPI.get_row_expansion_state(v)) {\n result.push({ rowID: primaryKey ? v[primaryKey] : v, childGridsData, parentRowData: v });\n }\n });\n return result;\n }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n name: 'gridHierarchicalPaging',\n standalone: true\n})\nexport class IgxGridHierarchicalPagingPipe implements PipeTransform {\n private grid = inject<GridType>(IGX_GRID_BASE);\n\n\n public transform(collection: any[], enabled: boolean, page = 0, perPage = 15, _id: string, _pipeTrigger: number): any[] {\n if (!enabled || this.grid.pagingMode !== 'local') {\n return collection;\n }\n\n const state = {\n index: page,\n recordsPerPage: perPage\n };\n\n const total = this.grid._totalRecords >= 0 ? this.grid._totalRecords : collection.length;\n const result: any[] = DataUtil.page(cloneArray(collection), state, total);\n this.grid.pagingState = state;\n return result;\n\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { HammerGesturesManager } from 'igniteui-angular/core';\nimport {\n IgxColumnFormatterPipe,\n IgxGridCellComponent,\n IgxGridCellImageAltPipe,\n IgxStringReplacePipe\n} from 'igniteui-angular/grids/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass, NgTemplateOutlet, DecimalPipe, PercentPipe, CurrencyPipe, DatePipe } from '@angular/common';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { IgxDateTimeEditorDirective, IgxFocusDirective, IgxTextHighlightDirective, IgxTextSelectionDirective, IgxTooltipDirective, IgxTooltipTargetDirective } from 'igniteui-angular/directives';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxInputDirective, IgxInputGroupComponent, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\nimport { IgxDatePickerComponent } from 'igniteui-angular/date-picker';\nimport { IgxTimePickerComponent } from 'igniteui-angular/time-picker';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-hierarchical-grid-cell',\n templateUrl: '../../core/src/cell.component.html',\n providers: [HammerGesturesManager],\n imports: [IgxChipComponent, IgxTextHighlightDirective, IgxIconComponent, NgClass, FormsModule, ReactiveFormsModule, IgxInputGroupComponent, IgxInputDirective, IgxFocusDirective, IgxTextSelectionDirective, IgxCheckboxComponent, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateTimeEditorDirective, IgxPrefixDirective, IgxSuffixDirective, NgTemplateOutlet, IgxTooltipTargetDirective, IgxTooltipDirective, IgxGridCellImageAltPipe, IgxStringReplacePipe, IgxColumnFormatterPipe, DecimalPipe, PercentPipe, CurrencyPipe, DatePipe]\n})\nexport class IgxHierarchicalGridCellComponent extends IgxGridCellComponent implements OnInit {\n // protected hSelection;\n protected _rootGrid;\n\n public override ngOnInit() {\n super.ngOnInit();\n this._rootGrid = this._getRootGrid();\n }\n\n /**\n * @hidden\n * @internal\n */\n public override activate(event: FocusEvent) {\n this._clearAllHighlights();\n const currentElement = this.grid.nativeElement;\n let parentGrid = this.grid;\n let childGrid;\n // add highligh to the current grid\n if (this._rootGrid.id !== currentElement.id) {\n currentElement.classList.add('igx-grid__tr--highlighted');\n }\n\n // add highligh to the current grid\n while (this._rootGrid.id !== parentGrid.id) {\n childGrid = parentGrid;\n parentGrid = parentGrid.parent;\n\n const parentRowID = parentGrid.gridAPI.getParentRowId(childGrid);\n parentGrid.highlightedRowID = parentRowID;\n }\n this.grid.navigation.activeNode.gridID = this.gridID;\n super.activate(event);\n }\n\n private _getRootGrid() {\n let currGrid = this.grid;\n while (currGrid.parent) {\n currGrid = currGrid.parent;\n }\n return currGrid;\n }\n\n // TODO: Extend the new selection service to avoid complete traversal\n private _clearAllHighlights() {\n [this._rootGrid, ...this._rootGrid.getChildGrids(true)].forEach(grid => {\n if (grid !== this.grid && grid.navigation.activeNode) {\n grid.selectionService.activeElement = null;\n grid.navigation.clearActivation();\n grid.selectionService.initKeyboardState();\n grid.selectionService.clear();\n }\n\n grid.nativeElement.classList.remove('igx-grid__tr--highlighted');\n grid.highlightedRowID = null;\n grid.cdr.markForCheck();\n });\n }\n}\n","<ng-template #defaultPinnedIndicator>\n @if (displayPinnedChip) {\n <igx-chip\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [style.--ig-size]=\"1\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip>\n }\n</ng-template>\n<ng-template #defaultCell>\n @if (column.dataType !== 'boolean' && column.dataType !== 'image' || (column.dataType === 'boolean' && this.formatter)) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter:formatter:rowData:columnData)\n : column.dataType === 'number'\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >{{\n formatter\n ? (value | columnFormatter:formatter:rowData:columnData)\n : column.dataType === \"number\"\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n }}</div>\n }\n @if (column.dataType === 'boolean' && !this.formatter) {\n <igx-icon\n family=\"default\"\n [name]=\"value ? 'confirm' : 'close'\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\">\n </igx-icon>\n }\n @if (column.dataType === 'image') {\n <img [src]=\"value\" [alt]=\"value | igxCellImageAlt\" />\n }\n</ng-template>\n\n<ng-template #emptyCell></ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n @if (column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)) {\n <div\n igxTextHighlight class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"formatter ? (value | columnFormatter:formatter:rowData) : column.dataType === 'number' ?\n (value | number:column.pipeArgs.digitsInfo:grid.locale) : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime') ?\n (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale) : column.dataType === 'currency' ?\n (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale) : column.dataType === 'percent' ?\n (value | percent:column.pipeArgs.digitsInfo:grid.locale) : value\"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >{{\n !isEmptyAddRowCell ? value : (column.header || column.field)\n }}</div>\n }\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n @if (column.dataType === 'string' || column.dataType === 'image') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-input-group>\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [formControl]=\"formControl\"\n (compositionstart)=\"grid.crudService.isInCompositionMode = true\"\n (compositionend)=\"grid.crudService.isInCompositionMode = false\"\n />\n </igx-input-group>\n </ng-container>\n }\n @if (column.dataType === 'number') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'boolean') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-checkbox\n [checked]=\"editValue\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n [formControl]=\"formControl\"\n ></igx-checkbox>\n </ng-container>\n }\n @if (column.dataType === 'date') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-date-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [weekStart]=\"column.pipeArgs.weekStart\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat\"\n [displayFormat]=\"column.pipeArgs.format\"\n >\n </igx-date-picker>\n </ng-container>\n }\n @if (column.dataType === 'time') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-time-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat\"\n [displayFormat]=\"column.pipeArgs.format\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n ></igx-time-picker>\n </ng-container>\n }\n @if (column.dataType === 'dateTime') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n type=\"text\"\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [formControl]=\"formControl\"\n igxInput\n [locale]=\"grid.locale\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat\"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'currency') {\n <igx-input-group [formGroup]=\"formGroup\">\n @if (grid.currencyPositionLeft) {\n <igx-prefix>{{ currencyCodeSymbol }}</igx-prefix>\n }\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n @if (!grid.currencyPositionLeft) {\n <igx-suffix>{{ currencyCodeSymbol }}</igx-suffix>\n }\n </igx-input-group>\n }\n @if (column.dataType === 'percent') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n <igx-suffix> {{ editValue | percent:column.pipeArgs.digitsInfo:grid.locale }} </igx-suffix>\n </igx-input-group>\n }\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n\n@if (isInvalid) {\n <igx-icon\n family=\"default\"\n name=\"error\"\n #errorIcon\n [igxTooltipTarget]=\"tooltipRef\"\n [igxToggleOutlet]=\"grid.outlet\"\n (mouseover)='errorShowing = true'\n (mouseout)='errorShowing = false'>\n </igx-icon>\n <div [id]=\"ariaErrorMessage\"\n igxTooltip #error #tooltipRef=\"tooltip\">\n <div [style.width]=\"'max-content'\">\n <ng-container *ngTemplateOutlet=\"cellValidationErrorTemplate || defaultError; context: context\"></ng-container>\n </div>\n </div>\n}\n\n<ng-template #defaultError>\n @let errors = formControl.errors;\n @if (errors?.['required']) {\n <div>\n {{grid.resourceStrings.igx_grid_required_validation_error}}\n </div>\n }\n @if (errors?.['minlength']) {\n <div>\n {{grid.resourceStrings.igx_grid_min_length_validation_error | igxStringReplace:'{0}':errors.minlength.requiredLength }}\n </div>\n }\n @if (errors?.['maxlength']) {\n <div>\n {{grid.resourceStrings.igx_grid_max_length_validation_error | igxStringReplace:'{0}':errors.maxlength.requiredLength }}\n </div>\n }\n @if (errors?.['min']) {\n <div>\n {{grid.resourceStrings.igx_grid_min_validation_error | igxStringReplace:'{0}':errors.min.min }}\n </div>\n }\n @if (errors?.['max']) {\n <div>\n {{grid.resourceStrings.igx_grid_max_validation_error | igxStringReplace:'{0}':errors.max.max }}\n </div>\n }\n @if (errors?.['email']) {\n <div>\n {{grid.resourceStrings.igx_grid_email_validation_error }}\n </div>\n }\n @if (errors?.['pattern']) {\n <div>\n {{grid.resourceStrings.igx_grid_pattern_validation_error}}\n </div>\n }\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n forwardRef,\n ElementRef,\n ViewChildren,\n QueryList,\n ViewChild,\n TemplateRef\n} from '@angular/core';\nimport { IgxRowDirective } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridCellComponent } from './hierarchical-cell.component';\nimport { GridType } from 'igniteui-angular/grids/core';\nimport { IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridCellStyleClassesPipe, IgxGridDataMapperPipe, IgxGridTransactionStatePipe } from 'igniteui-angular/grids/core';\nimport { IgxRowDragDirective } from 'igniteui-angular/grids/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-hierarchical-grid-row',\n templateUrl: './hierarchical-row.component.html',\n providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxHierarchicalRowComponent) }],\n imports: [NgTemplateOutlet, IgxIconComponent, IgxRowDragDirective, NgClass, IgxGridForOfDirective, IgxHierarchicalGridCellComponent, NgStyle, IgxCheckboxComponent, IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridCellStyleClassesPipe, IgxGridDataMapperPipe, IgxGridTransactionStatePipe]\n})\nexport class IgxHierarchicalRowComponent extends IgxRowDirective {\n @ViewChild('expander', { read: ElementRef })\n public expander: ElementRef<HTMLElement>;\n\n @ViewChildren(forwardRef(() => IgxHierarchicalGridCellComponent), { read: IgxHierarchicalGridCellComponent })\n protected override _cells: QueryList<IgxHierarchicalGridCellComponent>;\n\n /**\n * @hidden\n */\n @ViewChild('defaultExpandedTemplate', { read: TemplateRef, static: true })\n protected defaultExpandedTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n */\n @ViewChild('defaultEmptyTemplate', { read: TemplateRef, static: true })\n protected defaultEmptyTemplate: TemplateRef<any>;\n\n /**\n * @hidden\n */\n @ViewChild('defaultCollapsedTemplate', { read: TemplateRef, static: true })\n protected defaultCollapsedTemplate: TemplateRef<any>;\n\n protected expanderClass = 'igx-grid__hierarchical-expander';\n protected rolActionClass = 'igx-grid__tr-action';\n\n /**\n * @hidden\n */\n public get expanderClassResolved() {\n return {\n [`${this.expanderClass} ${this.rolActionClass}`]: !this.pinned || this.disabled,\n [`${this.expanderClass}--empty`]: this.pinned && !this.disabled\n };\n }\n\n public override get viewIndex(): number {\n return this.index + this.grid.page * this.grid.perPage;\n }\n\n /**\n * Returns whether the row is expanded.\n * ```typescript\n * const RowExpanded = this.grid1.rowList.first.expanded;\n * ```\n */\n public override get expanded() {\n return this.grid.gridAPI.get_row_expansion_state(this.data);\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-grid__tr--expanded')\n public get expandedClass() {\n return this.expanded && !this.pinned;\n }\n\n public override get hasChildren() {\n return !!this.grid.childLayoutKeys.length;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-grid__tr--highlighted')\n public get highlighted() {\n return this.grid && this.grid.highlightedRowID === this.key;\n }\n\n /**\n * @hidden\n */\n public expanderClick(event) {\n event.stopPropagation();\n this.toggle();\n }\n\n /**\n * Toggles the hierarchical row.\n * ```typescript\n * this.grid1.rowList.first.toggle()\n * ```\n */\n public toggle() {\n if (this.added) {\n return;\n }\n // K.D. 28 Feb, 2022 #10634 Don't trigger endEdit/commit upon row expansion state change\n // this.endEdit(this.grid.rootGrid);\n this.grid.gridAPI.set_row_expansion_state(this.key, !this.expanded);\n this.grid.cdr.detectChanges();\n }\n\n /**\n * @hidden\n * @internal\n */\n public select = () => {\n this.grid.selectRows([this.key]);\n };\n\n /**\n * @hidden\n * @internal\n */\n public deselect = () => {\n this.grid.deselectRows([this.key]);\n };\n\n /**\n * @hidden\n */\n public get iconTemplate() {\n let expandable = true;\n if (this.grid.hasChildrenKey) {\n expandable = this.data[this.grid.hasChildrenKey];\n }\n if (!expandable || (this.pinned && !this.disabled)) {\n return this.defaultEmptyTemplate;\n }\n if (this.expanded) {\n return this.grid.rowExpandedIndicatorTemplate || this.defaultExpandedTemplate;\n } else {\n return this.grid.rowCollapsedIndicatorTemplate || this.defaultCollapsedTemplate;\n }\n }\n\n // TODO: consider moving into CRUD\n protected endEdit(grid: GridType) {\n if (grid.gridAPI.crudService.cellInEditMode) {\n grid.gridAPI.crudService.endEdit();\n }\n grid.gridAPI.getChildGrids(true).forEach(g => {\n if (g.gridAPI.crudService.cellInEditMode) {\n g.gridAPI.crudService.endEdit();\n }\n });\n }\n}\n","<ng-container *ngTemplateOutlet='addRowUI ? addTemp : defaultTemp'></ng-container>\n<ng-template #defaultExpandedTemplate>\n <igx-icon family=\"default\" name=\"tree_collapse\" [active]='!added'></igx-icon>\n</ng-template>\n\n<ng-template #defaultCollapsedTemplate>\n <igx-icon family=\"default\" name=\"tree_expand\" [active]='!added'></igx-icon>\n</ng-template>\n\n<ng-template #defaultEmptyTemplate>\n <!-- Empty icon used as spacer for size matching-->\n <igx-icon></igx-icon>\n</ng-template>\n\n<ng-template #addTemp>\n <div class='igx-grid__tr--inner' [class.igx-grid__tr--add-animate]='triggerAddAnimationClass' (animationend)='animationEndHandler()'>\n <ng-container *ngTemplateOutlet='defaultTemp'></ng-container>\n </div>\n</ng-template>\n<ng-template #defaultTemp>\n <!-- Drag indicator -->\n @if (rowDraggable) {\n <div [class]=\"resolveDragIndicatorClasses\" [igxRowDrag]=\"this\" (click)=\"$event.stopPropagation()\" [ghostTemplate]=\"this.grid.getDragGhostCustomTemplate()\" (pointerdown)=\"$event.preventDefault()\">\n <ng-container *ngTemplateOutlet=\"this.grid.dragIndicatorIconTemplate ? this.grid.dragIndicatorIconTemplate : this.grid.dragIndicatorIconBase\"></ng-container>\n </div>\n }\n\n <!-- Select Row -->\n @if (showRowSelectors) {\n <div class=\"igx-grid__cbx-selection igx-grid__tr-action\" (click)=\"onRowSelectorClick($event)\" (pointerdown)=\"$event.preventDefault()\">\n <ng-template *ngTemplateOutlet=\"\n this.grid.rowSelectorTemplate ? this.grid.rowSelectorTemplate : rowSelectorBaseTemplate;\n context: { $implicit: {\n index: viewIndex,\n rowID: key,\n key,\n selected: selected,\n select: select,\n deselect: deselect }}\">\n </ng-template>\n </div>\n }\n\n <!-- Row Expander -->\n @if (hasChildren) {\n <div (click)=\"expanderClick($event)\" (mousedown)='$event.preventDefault()' [ngClass]=\"expanderClassResolved\" #expander>\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: this }\">\n </ng-container>\n </div>\n }\n\n @if (pinnedStartColumns.length > 0) {\n <ng-template *ngTemplateOutlet=\"pinnedCellsTemplate; context: { $implicit: this, columns: pinnedStartColumns}\"></ng-template>\n }\n\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"' [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth' [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n @if (this.hasMergedCells) {\n <div [style.height.px]=\" this.metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1 ? getRowHeight() : null\"\n class=\"igx-grid__mrl-block\"\n [style.visibility]=\"this.metaData?.cellMergeMeta.get(col.field)?.root ? 'hidden' : 'visible'\"\n [ngStyle]=\"{\n 'grid-template-rows': this.metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1 ? this.getMergeCellSpan(col) : null\n }\">\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: this, column: col }\"></ng-container>\n </div>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: this, column: col }\"></ng-container>\n }\n </ng-template>\n\n @if (pinnedEndColumns.length > 0) {\n <ng-template *ngTemplateOutlet=\"pinnedCellsTemplate; context: { $implicit: this, columns: pinnedEndColumns}\"></ng-template>\n }\n\n <ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"selected\"\n [disableRipple]=\"true\"\n [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\"\n [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n </ng-template>\n\n <ng-template #pinnedCellsTemplate let-col let-columns=\"columns\">\n @for (col of columns | igxNotGrouped; track trackPinnedColumn(col)) {\n <igx-hierarchical-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--pinned\"\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 [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [firstPinned]=\"col.isFirstPinned\"\n [lastPinned]=\"col.isLastPinned\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\">\n </igx-hierarchical-grid-cell>\n }\n </ng-template>\n</ng-template>\n\n<ng-template #cellTemplate let-col=\"column\">\n <igx-hierarchical-grid-cell\n [class.igx-grid__td--merged]=\"metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1\"\n [isMerged]=\"metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1\"\n [isPlaceholder]=\"!!this.metaData?.cellMergeMeta.get(col.field)?.root\"\n [class.igx-grid__td--merged-selected]=\"isSelectionRoot(col)\"\n [class.igx-grid__td--merged-hovered]=\"isHoveredRoot(col)\"\n 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]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\">\n</igx-hierarchical-grid-cell>\n</ng-template>\n","import { AfterContentInit, AfterViewInit, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, CUSTOM_ELEMENTS_SCHEMA, DoCheck, ElementRef, HostBinding, Input, OnDestroy, OnInit, QueryList, reflectComponentType, SimpleChanges, TemplateRef, ViewChild, ViewChildren, ViewContainerRef, inject } from '@angular/core';\nimport { NgClass, NgTemplateOutlet, NgStyle } from '@angular/common';\n\nimport { IgxHierarchicalGridAPIService } from './hierarchical-grid-api.service';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { IgxFilteringService, IgxGridNavigationService, IgxGridValidationService } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent, } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridNavigationService } from './hierarchical-grid-navigation.service';\nimport { IgxGridSummaryService } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridBaseDirective } from './hierarchical-grid-base.directive';\nimport { takeUntil } from 'rxjs/operators';\nimport { CellType, GridType, IGX_GRID_BASE, IGX_GRID_SERVICE_BASE, RowType } from 'igniteui-angular/grids/core';\nimport { IgxRowIslandAPIService } from './row-island-api.service';\nimport { IgxGridCRUDService } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridRow } from 'igniteui-angular/grids/core';\nimport { IgxGridCell } from 'igniteui-angular/grids/core';\nimport type { IgxPaginatorComponent } from 'igniteui-angular/paginator';\nimport { IgxColumnResizingService } from 'igniteui-angular/grids/core';\nimport { IgxGridExcelStyleFilteringComponent } from 'igniteui-angular/grids/core';\nimport { IgxGridHierarchicalPipe, IgxGridHierarchicalPagingPipe } from './hierarchical-grid.pipes';\nimport { IgxSummaryDataPipe } from 'igniteui-angular/grids/core';\nimport { IgxGridTransactionPipe, IgxHasVisibleColumnsPipe, IgxGridRowPinningPipe, IgxGridAddRowPipe, IgxGridRowClassesPipe, IgxGridRowStylesPipe, IgxStringReplacePipe } from 'igniteui-angular/grids/core';\nimport { IgxGridColumnResizerComponent } from 'igniteui-angular/grids/core';\nimport { IgxRowEditTabStopDirective } from 'igniteui-angular/grids/core';\nimport { IgxSummaryRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalRowComponent } from './hierarchical-row.component';\nimport { IgxColumnMovingDropDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridDragSelectDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridBodyDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridHeaderRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxGridSelectionService } from 'igniteui-angular/grids/core';\nimport { IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxRippleDirective, IgxScrollInertiaDirective, 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 { EntityType, FieldType, IFilteringExpressionsTree, IgxActionStripToken, IgxOverlayOutletDirective, flatten } from 'igniteui-angular/core';\nimport { IgxPaginatorToken } from 'igniteui-angular/paginator';\nimport { IgxGridCellMergePipe, IgxGridComponent, IgxGridFilteringPipe, IgxGridSortingPipe, IgxGridUnmergeActivePipe } from 'igniteui-angular/grids/grid';\n\nlet NEXT_ID = 0;\n\n/**\n * @hidden @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-child-grid-row',\n templateUrl: './child-grid-row.component.html',\n imports: [NgClass]\n})\nexport class IgxChildGridRowComponent implements AfterViewInit, OnInit {\n /* blazorSuppress */\n public readonly gridAPI = inject<IgxHierarchicalGridAPIService>(IGX_GRID_SERVICE_BASE);\n /* blazorSuppress */\n public element = inject<ElementRef<HTMLElement>>(ElementRef);\n /* blazorSuppress */\n public cdr = inject(ChangeDetectorRef);\n\n @Input()\n public layout: IgxRowIslandComponent;\n\n /**\n * @hidden\n */\n public get parentHasScroll() {\n return !this.parentGrid.verticalScrollContainer.dc.instance.notVirtual;\n }\n\n\n /**\n * @hidden\n */\n @Input()\n public parentGridID: string;\n\n /**\n * The data passed to the row component.\n *\n * ```typescript\n * // get the row data for the first selected row\n * let selectedRowData = this.grid.selectedRows[0].data;\n * ```\n */\n @Input()\n public get data(): any {\n return this._data || [];\n }\n\n public set data(value: any) {\n this._data = value;\n if (this.hGrid && !this.hGrid.dataSetByUser) {\n this.hGrid.setDataInternal(this._data.childGridsData[this.layout.key]);\n }\n }\n\n /**\n * The index of the row.\n *\n * ```typescript\n * // get the index of the second selected row\n * let selectedRowIndex = this.grid.selectedRows[1].index;\n * ```\n */\n @Input()\n public index: number;\n\n /* blazorSuppress */\n @ViewChild('container', { read: ViewContainerRef, static: true })\n public container: ViewContainerRef;\n\n /**\n * @hidden\n */\n public hGrid: IgxHierarchicalGridComponent;\n\n /* blazorSuppress */\n /**\n * Get a reference to the grid that contains the selected row.\n *\n * ```typescript\n * handleRowSelection(event) {\n * // the grid on which the rowSelected event was triggered\n * const grid = event.row.grid;\n * }\n * ```\n *\n * ```html\n * <igx-grid\n * [data]=\"data\"\n * (rowSelected)=\"handleRowSelection($event)\">\n * </igx-grid>\n * ```\n */\n // TODO: Refactor\n public get parentGrid(): IgxHierarchicalGridComponent {\n return this.gridAPI.grid as IgxHierarchicalGridComponent;\n }\n\n @HostBinding('attr.aria-level')\n public get level() {\n return this.layout.level;\n }\n\n /**\n * The native DOM element representing the row. Could be null in certain environments.\n *\n * ```typescript\n * // get the nativeElement of the second selected row\n * let selectedRowNativeElement = this.grid.selectedRows[1].nativeElement;\n * ```\n */\n public get nativeElement() {\n return this.element.nativeElement;\n }\n\n /**\n * Returns whether the row is expanded.\n * ```typescript\n * const RowExpanded = this.grid1.rowList.first.expanded;\n * ```\n */\n public expanded = false;\n\n private _data: any;\n\n /**\n * @hidden\n */\n public ngOnInit() {\n const ref = this.container.createComponent(IgxHierarchicalGridComponent, { injector: this.container.injector });\n this.hGrid = ref.instance;\n this.hGrid.setDataInternal(this.data.childGridsData[this.layout.key]);\n this.hGrid.nativeElement[\"__componentRef\"] = ref;\n this.layout.layoutChange.subscribe((ch) => {\n this._handleLayoutChanges(ch);\n });\n const changes = this.layout.initialChanges;\n changes.forEach(change => {\n this._handleLayoutChanges(change);\n });\n this.hGrid.parent = this.parentGrid;\n this.hGrid.parentIsland = this.layout;\n this.hGrid.childRow = this;\n // handler logic that re-emits hgrid events on the row island\n this.setupEventEmitters();\n this.layout.gridCreated.emit({\n owner: this.layout,\n parentID: this.data.rowID,\n grid: this.hGrid,\n parentRowData: this.data.parentRowData,\n });\n }\n\n /**\n * @hidden\n */\n public ngAfterViewInit() {\n this.hGrid.childLayoutList = this.layout.children;\n const layouts = this.hGrid.childLayoutList.toArray();\n layouts.forEach((l) => this.hGrid.gridAPI.registerChildRowIsland(l));\n this.parentGrid.gridAPI.registerChildGrid(this.data.rowID, this.layout.key, this.hGrid);\n this.layout.rowIslandAPI.registerChildGrid(this.data.rowID, this.hGrid);\n\n this.layout.gridInitialized.emit({\n owner: this.layout,\n parentID: this.data.rowID,\n grid: this.hGrid,\n parentRowData: this.data.parentRowData,\n });\n\n this.hGrid.cdr.detectChanges();\n }\n\n private setupEventEmitters() {\n const destructor = takeUntil(this.hGrid.destroy$);\n\n const mirror = reflectComponentType(IgxGridComponent);\n // exclude outputs related to two-way binding functionality\n const inputNames = mirror.inputs.map(input => input.propName);\n const outputs = mirror.outputs.filter(o => {\n const matchingInputPropName = o.propName.slice(0, o.propName.indexOf('Change'));\n return inputNames.indexOf(matchingInputPropName) === -1;\n });\n\n // TODO: Skip the `rendered` output. Rendered should be called once per grid.\n outputs.filter(o => o.propName !== 'rendered').forEach(output => {\n if (this.hGrid[output.propName]) {\n this.hGrid[output.propName].pipe(destructor).subscribe((args) => {\n if (!args) {\n args = {};\n }\n args.owner = this.hGrid;\n this.layout[output.propName].emit(args);\n });\n }\n });\n }\n\n\n private _handleLayoutChanges(changes: SimpleChanges) {\n for (const change in changes) {\n if (changes.hasOwnProperty(change)) {\n this.hGrid[change] = changes[change].currentValue;\n }\n }\n }\n}\n\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: RowIsland */\n/* blazorIndirectRender */\n/**\n * Hierarchical grid\n *\n * @igxModule IgxHierarchicalGridModule\n *\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'igx-hierarchical-grid',\n templateUrl: 'hierarchical-grid.component.html',\n providers: [\n IgxGridCRUDService,\n IgxGridValidationService,\n IgxGridSelectionService,\n { provide: IGX_GRID_SERVICE_BASE, useClass: IgxHierarchicalGridAPIService },\n { provide: IGX_GRID_BASE, useExisting: IgxHierarchicalGridComponent },\n IgxGridSummaryService,\n IgxFilteringService,\n IgxGridNavigationService,\n IgxHierarchicalGridNavigationService,\n IgxColumnResizingService,\n IgxForOfSyncService,\n IgxForOfScrollSyncService,\n IgxRowIslandAPIService\n ],\n imports: [\n NgClass,\n NgTemplateOutlet,\n NgStyle,\n IgxGridHeaderRowComponent,\n IgxGridBodyDirective,\n IgxGridDragSelectDirective,\n IgxColumnMovingDropDirective,\n IgxGridForOfDirective,\n IgxTemplateOutletDirective,\n IgxHierarchicalRowComponent,\n IgxOverlayOutletDirective,\n IgxToggleDirective,\n IgxCircularProgressBarComponent,\n IgxSnackbarComponent,\n IgxSummaryRowComponent,\n IgxButtonDirective,\n IgxRippleDirective,\n IgxIconComponent,\n IgxRowEditTabStopDirective,\n IgxGridColumnResizerComponent,\n IgxChildGridRowComponent,\n IgxGridSortingPipe,\n IgxGridFilteringPipe,\n IgxGridTransactionPipe,\n IgxHasVisibleColumnsPipe,\n IgxGridRowPinningPipe,\n IgxGridAddRowPipe,\n IgxGridRowClassesPipe,\n IgxGridRowStylesPipe,\n IgxSummaryDataPipe,\n IgxGridHierarchicalPipe,\n IgxGridHierarchicalPagingPipe,\n IgxStringReplacePipe,\n IgxGridCellMergePipe,\n IgxScrollInertiaDirective,\n IgxGridUnmergeActivePipe\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective\n implements GridType, AfterViewInit, AfterContentInit, OnInit, OnDestroy, DoCheck {\n\n /**\n * @hidden @internal\n */\n @HostBinding('attr.role')\n public role = 'grid';\n\n /* contentChildren */\n /* blazorInclude */\n /* blazorTreatAsCollection */\n /* blazorCollectionName: RowIslandCollection */\n /* ngQueryListName: childLayoutList */\n /**\n * @hidden\n */\n @ContentChildren(IgxRowIslandComponent, { read: IgxRowIslandComponent, descendants: false })\n public childLayoutList: QueryList<IgxRowIslandComponent>;\n\n /**\n * @hidden\n */\n @ContentChildren(IgxRowIslandComponent, { read: IgxRowIslandComponent, descendants: true })\n public allLayoutList: QueryList<IgxRowIslandComponent>;\n\n /** @hidden @internal */\n @ContentChildren(IgxPaginatorToken, { descendants: true })\n public paginatorList: QueryList<IgxPaginatorComponent>;\n\n /** @hidden @internal */\n @ViewChild('toolbarOutlet', { read: ViewContainerRef })\n public toolbarOutlet: ViewContainerRef;\n\n /** @hidden @internal */\n @ViewChild('paginatorOutlet', { read: ViewContainerRef })\n public paginatorOutlet: ViewContainerRef;\n /**\n * @hidden\n */\n @ViewChildren(IgxTemplateOutletDirective, { read: IgxTemplateOutletDirective })\n public templateOutlets: QueryList<any>;\n\n /**\n * @hidden\n */\n @ViewChildren(IgxChildGridRowComponent)\n public hierarchicalRows: QueryList<IgxChildGridRowComponent>;\n\n @ViewChild('hierarchical_record_template', { read: TemplateRef, static: true })\n protected hierarchicalRecordTemplate: TemplateRef<any>;\n\n @ViewChild('child_record_template', { read: TemplateRef, static: true })\n protected childTemplate: TemplateRef<any>;\n\n // @ViewChild('headerHierarchyExpander', { read: ElementRef, static: true })\n protected get headerHierarchyExpander() {\n return this.theadRow?.headerHierarchyExpander;\n }\n\n /**\n * @hidden\n */\n public childLayoutKeys = [];\n\n /** @hidden @internal */\n public dataSetByUser = false;\n\n /**\n * @hidden\n */\n public highlightedRowID = null;\n\n /**\n * @hidden\n */\n public updateOnRender = false;\n\n /**\n * @hidden\n */\n public parent: IgxHierarchicalGridComponent = null;\n\n /**\n * @hidden @internal\n */\n public childRow: IgxChildGridRowComponent;\n\n @ContentChildren(IgxActionStripToken, { read: IgxActionStripToken, descendants: false })\n protected override actionStripComponents: QueryList<IgxActionStripToken>;\n\n /** @hidden @internal */\n public override get actionStrip() {\n return this.parentIsland ? this.parentIsland.actionStrip : super.actionStrip;\n }\n\n public override get advancedFilteringExpressionsTree(): IFilteringExpressionsTree {\n return super.advancedFilteringExpressionsTree;\n }\n\n public override set advancedFilteringExpressionsTree(value: IFilteringExpressionsTree) {\n if (!this._hGridSchema) {\n this._hGridSchema = this.generateSchema();\n }\n super.advancedFilteringExpressionsTree = value;\n }\n\n private _data;\n private h_id = `igx-hierarchical-grid-${NEXT_ID++}`;\n private childGridTemplates: Map<any, any> = new Map();\n\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-hierarchical-grid [id]=\"'igx-hgrid-1'\" [data]=\"Data\" [autoGenerate]=\"true\"></igx-hierarchical-grid>\n * ```\n */\n @HostBinding('attr.id')\n @Input()\n public get id(): string {\n return this.h_id;\n }\n public set id(value: string) {\n this.h_id = value;\n }\n\n /* treatAsRef */\n /**\n * Gets/Sets the array of data that populates the component.\n * ```html\n * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\"></igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n @Input()\n public set data(value: any[] | null) {\n this.setDataInternal(value);\n this.dataSetByUser = true;\n this.checkPrimaryKeyField();\n }\n\n /**\n * Returns an array of data set to the `IgxHierarchicalGridComponent`.\n * ```typescript\n * let filteredData = this.grid.filteredData;\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n public get data(): any[] | null {\n return this._data;\n }\n\n /** @hidden @internal */\n public override get paginator() {\n const id = this.id;\n return (!this.parentIsland && this.paginationComponents?.first) || this.rootGrid.paginatorList?.find((pg) =>\n pg.nativeElement.offsetParent?.id === id);\n }\n\n /** @hidden @internal */\n public override get excelStyleFilteringComponent(): IgxGridExcelStyleFilteringComponent {\n return this.parentIsland ?\n this.parentIsland.excelStyleFilteringComponents.first :\n super.excelStyleFilteringComponent;\n }\n\n /**\n * Gets/Sets the total number of records in the data source.\n *\n * @remarks\n * This property is required for remote grid virtualization to function when it is bound to remote data.\n * @example\n * ```typescript\n * const itemCount = this.grid1.totalItemCount;\n * this.grid1.totalItemCount = 55;\n * ```\n */\n @Input()\n public set totalItemCount(count) {\n this.verticalScrollContainer.totalItemCount = count;\n }\n\n public get totalItemCount() {\n return this.verticalScrollContainer.totalItemCount;\n }\n\n /**\n * Sets if all immediate children of the `IgxHierarchicalGridComponent` should be expanded/collapsed.\n * Default value is false.\n * ```html\n * <igx-hierarchical-grid [id]=\"'igx-grid-1'\" [data]=\"Data\" [autoGenerate]=\"true\" [expandChildren]=\"true\"></igx-hierarchical-grid>\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n @Input({ transform: booleanAttribute })\n public set expandChildren(value: boolean) {\n this._defaultExpandState = value;\n this.expansionStates = new Map<any, boolean>();\n }\n\n /**\n * Gets if all immediate children of the `IgxHierarchicalGridComponent` previously have been set to be expanded/collapsed.\n * If previously set and some rows have been manually expanded/collapsed it will still return the last set value.\n * ```typescript\n * const expanded = this.grid.expandChildren;\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n public get expandChildren(): boolean {\n return this._defaultExpandState;\n }\n\n /* blazorSuppress */\n /**\n * Gets/Sets the schema for the hierarchical grid.\n * This schema defines the structure and properties of the data displayed in the grid.\n * @Input()\n * @param {EntityType[]} entities - An array of EntityType objects representing the grid's schema.\n * @remarks\n * This property is required in remote data filtering scenarios.\n * @example\n * ```typescript\n * const schema = this.grid.schema;\n * this.grid.schema = [{ name: 'Products', fields: [...], childEntities: [...] }];\n * ```\n */\n @Input()\n public set schema(entities: EntityType[]) {\n this._hGridSchema = entities;\n }\n\n /* blazorSuppress */\n public get schema() {\n if (!this._hGridSchema) {\n this._hGridSchema = this.generateSchema();\n }\n\n return this._hGridSchema;\n }\n\n /**\n * Gets the unique identifier of the parent row. It may be a `string` or `number` if `primaryKey` of the\n * parent grid is set or an object reference of the parent record otherwise.\n * ```typescript\n * const foreignKey = this.grid.foreignKey;\n * ```\n *\n * @memberof IgxHierarchicalGridComponent\n */\n public get foreignKey() {\n if (!this.parent) {\n return null;\n }\n return this.parent.gridAPI.getParentRowId(this);\n }\n\n /**\n * @hidden\n */\n public get hasExpandableChildren() {\n return !!this.childLayoutKeys.length;\n }\n\n /**\n * @hidden\n */\n public get resolveRowEditContainer() {\n if (this.parentIsland && this.parentIsland.rowEditCustom) {\n return this.parentIsland.rowEditContainer;\n }\n return this.rowEditContainer;\n }\n\n /**\n * @hidden\n */\n public get resolveRowEditActions() {\n return this.parentIsland ? this.parentIsland.rowEditActionsTemplate : this.rowEditActionsTemplate;\n }\n\n /**\n * @hidden\n */\n public get resolveRowEditText() {\n return this.parentIsland ? this.parentIsland.rowEditTextTemplate : this.rowEditTextTemplate;\n }\n\n /** @hidden */\n public override hideActionStrip() {\n if (!this.parent) {\n // hide child layout actions strips when\n // moving outside root grid.\n super.hideActionStrip();\n this.allLayoutList.forEach(ri => {\n ri.actionStrip?.hide();\n });\n }\n }\n\n /**\n * @hidden\n */\n public override get parentRowOutletDirective() {\n // Targeting parent outlet in order to prevent hiding when outlet\n // is present at a child grid and is attached to a row.\n return this.parent ? this.parent.rowOutletDirective : this.outlet;\n }\n\n /**\n * @hidden\n */\n public override ngOnInit() {\n // this.expansionStatesChange.pipe(takeUntil(this.destroy$)).subscribe((value: Map<any, boolean>) => {\n // const res = Array.from(value.entries()).filter(({1: v}) => v === true).map(([k]) => k);\n // });\n this.batchEditing = !!this.rootGrid.batchEditing;\n if (this.rootGrid !== this) {\n this.rootGrid.batchEditingChange.pipe(takeUntil(this.destroy$)).subscribe((val: boolean) => {\n this.batchEditing = val;\n });\n }\n super.ngOnInit();\n }\n\n /**\n * @hidden\n */\n public override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.verticalScrollContainer.beforeViewDestroyed.pipe(takeUntil(this.destroy$)).subscribe((view) => {\n const rowData = view.context.$implicit;\n if (this.isChildGridRecord(rowData)) {\n const cachedData = this.childGridTemplates.get(rowData.rowID);\n if (cachedData) {\n const tmlpOutlet = cachedData.owner;\n tmlpOutlet._viewContainerRef.detach(0);\n }\n }\n });\n\n if (this.parent) {\n this.childLayoutKeys = this.parentIsland.children.map((item) => item.key);\n }\n\n this.headSelectorsTemplates = this.parentIsland ?\n this.parentIsland.headSelectorsTemplates :\n this.headSelectorsTemplates;\n\n this.rowSelectorsTemplates = this.parentIsland ?\n this.parentIsland.rowSelectorsTemplates :\n this.rowSelectorsTemplates;\n this.dragIndicatorIconTemplate = this.parentIsland ?\n this.parentIsland.dragIndicatorIconTemplate :\n this.dragIndicatorIconTemplate;\n this.rowExpandedIndicatorTemplate = this.rootGrid.rowExpandedIndicatorTemplate;\n this.rowCollapsedIndicatorTemplate = this.rootGrid.rowCollapsedIndicatorTemplate;\n this.headerCollapsedIndicatorTemplate = this.rootGrid.headerCollapsedIndicatorTemplate;\n this.headerExpandedIndicatorTemplate = this.rootGrid.headerExpandedIndicatorTemplate;\n this.excelStyleHeaderIconTemplate = this.rootGrid.excelStyleHeaderIconTemplate;\n this.sortAscendingHeaderIconTemplate = this.rootGrid.sortAscendingHeaderIconTemplate;\n this.sortDescendingHeaderIconTemplate = this.rootGrid.sortDescendingHeaderIconTemplate;\n this.sortHeaderIconTemplate = this.rootGrid.sortHeaderIconTemplate;\n this.hasChildrenKey = this.parentIsland ?\n this.parentIsland.hasChildrenKey || this.rootGrid.hasChildrenKey :\n this.rootGrid.hasChildrenKey;\n this.showExpandAll = this.parentIsland ?\n this.parentIsland.showExpandAll : this.rootGrid.showExpandAll;\n }\n\n /**\n * @hidden\n */\n public override ngAfterContentInit() {\n this.updateColumnList(false);\n this.childLayoutKeys = this.parent ?\n this.parentIsland.children.map((item) => item.key) :\n this.childLayoutKeys = this.childLayoutList.map((item) => item.key);\n this.childLayoutList.notifyOnChanges();\n this.childLayoutList.changes.pipe(takeUntil(this.destroy$)).subscribe(() =>\n this.onRowIslandChange()\n );\n super.ngAfterContentInit();\n }\n\n /**\n * Returns the `RowType` by index.\n *\n * @example\n * ```typescript\n * const myRow = this.grid1.getRowByIndex(1);\n * ```\n * @param index\n */\n public getRowByIndex(index: number): RowType {\n if (index < 0 || index >= this.dataView.length) {\n return undefined;\n }\n return this.createRow(index);\n }\n\n /**\n * Returns the `RowType` by key.\n *\n * @example\n * ```typescript\n * const myRow = this.grid1.getRowByKey(1);\n * ```\n * @param key\n */\n public getRowByKey(key: any): RowType {\n const data = this.dataView;\n const rec = this.primaryKey ?\n data.find(record => record[this.primaryKey] === key) :\n data.find(record => record === key);\n const index = data.indexOf(rec);\n if (index < 0 || index > data.length) {\n return undefined;\n }\n\n return new IgxHierarchicalGridRow(this as any, index, rec);\n }\n\n /**\n * @hidden @internal\n */\n public allRows(): RowType[] {\n return this.dataView.map((rec, index) => this.createRow(index));\n }\n\n /**\n * Returns the collection of `IgxHierarchicalGridRow`s for current page.\n *\n * @hidden @internal\n */\n public dataRows(): RowType[] {\n return this.allRows().filter(row => row instanceof IgxHierarchicalGridRow);\n }\n\n /**\n * Returns an array of the selected `IgxGridCell`s.\n *\n * @example\n * ```typescript\n * const selectedCells = this.grid.selectedCells;\n * ```\n */\n public get selectedCells(): CellType[] {\n return this.dataRows().map((row) => row.cells.filter((cell) => cell.selected))\n .reduce((a, b) => a.concat(b), []);\n }\n\n /**\n * Returns a `CellType` object that matches the conditions.\n *\n * @example\n * ```typescript\n * const myCell = this.grid1.getCellByColumn(2, \"UnitPrice\");\n * ```\n * @param rowIndex\n * @param columnField\n */\n public getCellByColumn(rowIndex: number, columnField: string): CellType {\n const row = this.getRowByIndex(rowIndex);\n const column = this.columns.find((col) => col.field === columnField);\n if (row && row instanceof IgxHierarchicalGridRow && column) {\n return new IgxGridCell(this, rowIndex, column);\n }\n }\n\n /**\n * Returns a `CellType` object that matches the conditions.\n *\n * @remarks\n * Requires that the primaryKey property is set.\n * @example\n * ```typescript\n * grid.getCellByKey(1, 'index');\n * ```\n * @param rowSelector match any rowID\n * @param columnField\n */\n public getCellByKey(rowSelector: any, columnField: string): CellType {\n const row = this.getRowByKey(rowSelector);\n const column = this.columns.find((col) => col.field === columnField);\n if (row && column) {\n return new IgxGridCell(this, row.index, column);\n }\n }\n\n public override pinRow(rowID: any, index?: number): boolean {\n const row = this.getRowByKey(rowID);\n return super.pinRow(rowID, index, row);\n }\n\n /** @hidden @internal */\n public setDataInternal(value: any) {\n const oldData = this._data;\n this._data = value || [];\n this.summaryService.clearSummaryCache();\n if (!this._init) {\n this.validation.updateAll(this._data);\n }\n if (this.autoGenerate && this._data.length > 0 && this.shouldRecreateColumns(oldData, this._data) && this.gridAPI.grid) {\n this.setupColumns();\n this.reflow();\n }\n this.cdr.markForCheck();\n if (this.parent && (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 public override unpinRow(rowID: any): boolean {\n const row = this.getRowByKey(rowID);\n return super.unpinRow(rowID, row);\n }\n\n /**\n * @hidden @internal\n */\n public dataLoading(event) {\n this.dataPreLoad.emit(event);\n }\n\n /** @hidden */\n public override featureColumnsWidth() {\n return super.featureColumnsWidth(this.headerHierarchyExpander);\n }\n\n /**\n * @hidden\n */\n public onRowIslandChange() {\n if (this.parent) {\n this.childLayoutKeys = this.parentIsland.children.filter(item => !(item as any)._destroyed).map((item) => item.key);\n } else {\n this.childLayoutKeys = this.childLayoutList.filter(item => !(item as any)._destroyed).map((item) => item.key);\n }\n if (!(this.cdr as any).destroyed) {\n this.cdr.detectChanges();\n }\n }\n\n /** @hidden @internal **/\n public override ngOnDestroy() {\n if (!this.parent) {\n this.gridAPI.getChildGrids(true).forEach((grid) => {\n if (!grid.childRow.cdr.destroyed) {\n grid.childRow.cdr.destroy();\n }\n });\n }\n if (this.parent && this.selectionService.activeElement) {\n // in case selection is in destroyed child grid, selection should be cleared.\n this._clearSeletionHighlights();\n }\n super.ngOnDestroy();\n }\n\n /**\n * @hidden\n */\n public isRowHighlighted(rowData) {\n return this.highlightedRowID === rowData.rowID;\n }\n\n /**\n * @hidden\n */\n public isHierarchicalRecord(record: any): boolean {\n if (this.isGhostRecord(record)) {\n record = record.recordRef;\n }\n return this.childLayoutList.length !== 0 && record[this.childLayoutList.first.key];\n }\n\n /**\n * @hidden\n */\n public override isChildGridRecord(record: any): boolean {\n // Can be null when there is defined layout but no child data was found\n return record?.childGridsData !== undefined;\n }\n\n /**\n * @hidden\n */\n public trackChanges(index, rec) {\n if (rec.childGridsData !== undefined) {\n // if is child rec\n return rec.rowID;\n }\n return rec;\n }\n\n /**\n * @hidden\n */\n public getContext(rowData, rowIndex, pinned): any {\n if (this.isChildGridRecord(rowData)) {\n const cachedData = this.childGridTemplates.get(rowData.rowID);\n if (cachedData) {\n const view = cachedData.view;\n const tmlpOutlet = cachedData.owner;\n return {\n $implicit: rowData,\n moveView: view,\n owner: tmlpOutlet,\n index: this.dataView.indexOf(rowData)\n };\n } else {\n // child rows contain unique grids, hence should have unique templates\n return {\n $implicit: rowData,\n templateID: {\n type: 'childRow',\n id: rowData.rowID\n },\n index: this.dataView.indexOf(rowData)\n };\n }\n } else {\n return {\n $implicit: this.isGhostRecord(rowData) || this.isRecordMerged(rowData) ? rowData.recordRef : rowData,\n templateID: {\n type: 'dataRow',\n id: null\n },\n index: this.getDataViewIndex(rowIndex, pinned),\n disabled: this.isGhostRecord(rowData),\n metaData: this.isRecordMerged(rowData) ? rowData : null\n };\n }\n }\n\n /**\n * @hidden\n */\n public get rootGrid(): GridType {\n let currGrid = this as IgxHierarchicalGridComponent;\n while (currGrid.parent) {\n currGrid = currGrid.parent;\n }\n return currGrid;\n }\n\n /**\n * @hidden\n */\n public get iconTemplate() {\n const expanded = this.hasExpandedRecords() && this.hasExpandableChildren;\n if (!expanded && this.showExpandAll) {\n return this.headerCollapsedIndicatorTemplate || this.defaultCollapsedTemplate;\n } else {\n return this.headerExpandedIndicatorTemplate || this.defaultExpandedTemplate;\n }\n }\n\n /**\n * @hidden\n * @internal\n */\n public override getDragGhostCustomTemplate(): TemplateRef<any> {\n if (this.parentIsland) {\n return this.parentIsland.getDragGhostCustomTemplate();\n }\n return super.getDragGhostCustomTemplate();\n }\n\n /**\n * @hidden\n * Gets the visible content height that includes header + tbody + footer.\n * For hierarchical child grid it may be scrolled and not fully visible.\n */\n public override getVisibleContentHeight() {\n let height = super.getVisibleContentHeight();\n if (this.parent) {\n const rootHeight = this.rootGrid.getVisibleContentHeight();\n const topDiff = this.nativeElement.getBoundingClientRect().top - this.rootGrid.nativeElement.getBoundingClientRect().top;\n height = rootHeight - topDiff > height ? height : rootHeight - topDiff;\n }\n return height;\n }\n\n /**\n * @hidden\n */\n public toggleAll() {\n const expanded = this.hasExpandedRecords() && this.hasExpandableChildren;\n if (!expanded && this.showExpandAll) {\n this.expandAll();\n } else {\n this.collapseAll();\n }\n }\n\n\n /**\n * @hidden\n * @internal\n */\n public hasExpandedRecords() {\n if (this.expandChildren) {\n return true;\n }\n let hasExpandedEntry = false;\n this.expansionStates.forEach(value => {\n if (value) {\n hasExpandedEntry = value;\n }\n });\n return hasExpandedEntry;\n }\n\n public override getDefaultExpandState(record: any) {\n if (this.hasChildrenKey && !record[this.hasChildrenKey]) {\n return false;\n }\n return this.expandChildren;\n\n }\n\n /**\n * @hidden\n */\n public isExpanded(record: any): boolean {\n return this.gridAPI.get_row_expansion_state(record);\n }\n\n /**\n * @hidden\n */\n public viewCreatedHandler(args) {\n if (this.isChildGridRecord(args.context.$implicit)) {\n const key = args.context.$implicit.rowID;\n this.childGridTemplates.set(key, args);\n }\n }\n\n /**\n * @hidden\n */\n public viewMovedHandler(args) {\n if (this.isChildGridRecord(args.context.$implicit)) {\n // view was moved, update owner in cache\n const key = args.context.$implicit.rowID;\n const cachedData = this.childGridTemplates.get(key);\n cachedData.owner = args.owner;\n\n this.childLayoutList.forEach((layout) => {\n const relatedGrid = this.gridAPI.getChildGridByID(layout.key, args.context.$implicit.rowID);\n if (relatedGrid && relatedGrid.updateOnRender) {\n // Detect changes if `expandChildren` has changed when the grid wasn't visible. This is for performance reasons.\n relatedGrid.notifyChanges(true);\n relatedGrid.updateOnRender = false;\n }\n });\n }\n }\n\n /** @hidden @internal **/\n public onContainerScroll() {\n this.hideOverlays();\n }\n\n /**\n * @hidden\n */\n public createRow(index: number, data?: any): RowType {\n let row: RowType;\n const dataIndex = this._getDataViewIndex(index);\n const rec: any = data ?? this.dataView[dataIndex];\n\n if (!row && rec && !rec.childGridsData) {\n row = new IgxHierarchicalGridRow(this as any, index, rec);\n }\n\n return row;\n }\n\n /** @hidden @internal */\n public getChildGrids(inDeph?: boolean) {\n return this.gridAPI.getChildGrids(inDeph);\n }\n\n protected override generateDataFields(data: any[]): string[] {\n return super.generateDataFields(data).filter((field) => {\n const layoutsList = this.parentIsland ? this.parentIsland.children : this.childLayoutList;\n const keys = layoutsList.map((item) => item.key);\n return keys.indexOf(field) === -1;\n });\n }\n\n protected resizeNotifyHandler() {\n // do not trigger reflow if element is detached or if it is child grid.\n if (this.nativeElement?.isConnected && !this.parent) {\n this.notifyChanges(true);\n }\n }\n\n /**\n * @hidden\n */\n protected override initColumns(collection: IgxColumnComponent[], cb: (args: any) => void = null) {\n if (this.hasColumnLayouts) {\n // invalid configuration - hierarchical grid should not allow column layouts\n // remove column layouts\n const nonColumnLayoutColumns = this.columns.filter((col) => !col.columnLayout && !col.columnLayoutChild);\n this.updateColumns(nonColumnLayoutColumns);\n }\n super.initColumns(collection, cb);\n }\n\n\n protected override setupColumns() {\n if (this.parentIsland && this.parentIsland.childColumns.length > 0 && !this.autoGenerate) {\n this.createColumnsList(this.parentIsland.childColumns.toArray());\n } else {\n super.setupColumns();\n }\n }\n\n protected override getColumnList() {\n const childLayouts = this.parent ? this.childLayoutList : this.allLayoutList;\n const nestedColumns = childLayouts.map((layout) => layout.columnList.toArray());\n const colsArray = [].concat.apply([], nestedColumns);\n if (colsArray.length > 0) {\n const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n return topCols;\n } else {\n return this.columnList.toArray()\n }\n }\n\n protected override onColumnsChanged() {\n Promise.resolve().then(() => {\n this.updateColumnList();\n });\n }\n\n protected override _shouldAutoSize(renderedHeight) {\n if (this.isPercentHeight && this.parent) {\n return true;\n }\n return super._shouldAutoSize(renderedHeight);\n }\n\n private updateColumnList(recalcColSizes = true) {\n const childLayouts = this.parent ? this.childLayoutList : this.allLayoutList;\n const nestedColumns = childLayouts.map((layout) => layout.columnList.toArray());\n const colsArray = [].concat.apply([], nestedColumns);\n const colLength = this.columns.length;\n const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n if (topCols.length > 0) {\n this.initColumns(topCols, (col: IgxColumnComponent) => this.columnInit.emit(col));\n if (recalcColSizes && this.columns.length !== colLength) {\n this.calculateGridSizes(false);\n }\n }\n }\n\n private _clearSeletionHighlights() {\n [this.rootGrid, ...this.rootGrid.getChildGrids(true)].forEach(grid => {\n grid.selectionService.clear();\n grid.selectionService.activeElement = null;\n grid.nativeElement.classList.remove('igx-grid__tr--highlighted');\n grid.highlightedRowID = null;\n grid.cdr.markForCheck();\n });\n }\n\n private generateSchema() {\n const filterableFields = this.columns.filter((column) => !column.columnGroup && column.filterable);\n let entities: EntityType[];\n\n if(filterableFields.length !== 0) {\n entities = [\n {\n name: null,\n fields: filterableFields.map(f => ({\n field: f.field,\n dataType: f.dataType,\n header: f.header,\n editorOptions: f.editorOptions,\n filters: f.filters,\n pipeArgs: f.pipeArgs,\n defaultTimeFormat: f.defaultTimeFormat,\n defaultDateTimeFormat: f.defaultDateTimeFormat\n })) as FieldType[]\n }\n ];\n\n entities[0].childEntities = this.childLayoutList.reduce((acc, rowIsland) => {\n const childFirstRowData = this.data?.length > 0 && this.data[0][rowIsland.key]?.length > 0 ?\n this.data[0][rowIsland.key][0] : null;\n return acc.concat(this.generateChildEntity(rowIsland, childFirstRowData));\n }\n , []);\n }\n\n return entities;\n }\n\n private generateChildEntity(rowIsland: IgxRowIslandComponent, firstRowData: any[]): EntityType {\n const entityName = rowIsland.key;\n let fields = [];\n let childEntities;\n if (!rowIsland.autoGenerate) {\n fields = flatten(rowIsland.childColumns.toArray()).filter(col => col.field)\n .map(f => ({ field: f.field, dataType: f.dataType })) as FieldType[];\n } else if (firstRowData) {\n const rowIslandFields = Object.keys(firstRowData).map(key => {\n if (firstRowData[key] instanceof Array) {\n return null;\n }\n\n return {\n field: key,\n dataType: this.resolveDataTypes(firstRowData[key])\n }\n });\n fields = rowIslandFields.filter(f => f !== null) as FieldType[];\n }\n\n const rowIslandChildEntities = rowIsland.childLayoutList.reduce((acc, childRowIsland) => {\n if (!firstRowData) {\n return null;\n }\n const childFirstRowData = firstRowData.length > 0 && firstRowData[childRowIsland.key]?.length > 0 ?\n firstRowData[childRowIsland.key][0] : null;\n return acc.concat(this.generateChildEntity(childRowIsland, childFirstRowData));\n }, []);\n\n if (rowIslandChildEntities?.length > 0) {\n childEntities = rowIslandChildEntities;\n }\n\n return {\n name: entityName,\n fields: fields,\n childEntities: childEntities\n }\n }\n}\n","<div class=\"igx-grid__hierarchical-indent\" [ngClass]=\"{'igx-grid__hierarchical-indent--scroll': parentHasScroll}\">\n <ng-container #container></ng-container>\n</div>\n","<ng-content select=\"igx-grid-toolbar,igc-grid-toolbar\"></ng-content>\n<ng-container #toolbarOutlet></ng-container>\n\n<igx-grid-header-row class=\"igx-grid-thead\" 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 (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" (focus)=\"navigation.focusTbody($event)\"\n (keydown)=\"navigation.handleNavigation($event)\" (dragStop)=\"selectionService.dragMode = $event\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\"\n [style.height.px]=\"totalHeight\" [style.width.px]=\"totalCalcWidth\" [style.width]=\"!platform.isBrowser ? '100%' : undefined\" #tbody (scroll)=\"preventContainerScroll($event)\">\n @if (moving && columnInDrag && pinnedColumns.length <= 0) {\n <span\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n }\n @if (moving && columnInDrag && pinnedColumns.length > 0) {\n <span\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedStartWidth\"></span>\n }\n @if (mergedDataInView && mergedDataInView.length > 0) {\n <div igxScrollInertia\n [IgxScrollInertiaScrollContainer]=\"this.verticalScrollContainer.dc.instance.scrollContainer\"\n [IgxScrollInertiaDirection]=\"this.verticalScrollContainer.dc.instance.scrollDirection\">\n @for (rowData of mergedDataInView; track rowData.record;) {\n <igx-hierarchical-grid-row class=\"igx-grid__tr--merged-top\" [gridID]=\"id\" [index]=\"rowData.index\" [data]=\"rowData.record.recordRef\" [metaData]=\"rowData.record\" [style.top.px]=\"getMergeCellOffset(rowData)\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowData.index:hasColumnLayouts:hasCellsToMerge:false:rowData.record:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData.record:rowData.index:pipeTrigger\" #row>\n </igx-hierarchical-grid-row>\n }\n </div>\n }\n <ng-template #pinnedRecordsTemplate>\n @if (data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:[]:sortStrategy:id:pipeTrigger:true\n | gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:pipeTrigger\n | gridUnmergeActive:columnsToMerge:activeRowIndexes:true:pipeTrigger; as pinnedData\n ) {\n @if (pinnedData.length > 0) {\n <div #pinContainer class=\"igx-grid__tr--pinned\"\n [ngClass]=\"{ 'igx-grid__tr--pinned-bottom': !isRowPinningToTop, 'igx-grid__tr--pinned-top': isRowPinningToTop }\"\n [style.width.px]=\"calcWidth\">\n @for (rowData of pinnedData; track (rowData.recordRef || rowData); let rowIndex = $index) {\n <ng-container *ngTemplateOutlet=\"pinned_hierarchical_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n }\n </div>\n }\n }\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template igxGridFor let-rowData let-rowIndex=\"index\" [igxGridForOf]=\"renderData\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:[]:sortStrategy:id:pipeTrigger\n | gridHierarchicalPaging:!!paginator:page:perPage:id:pipeTrigger\n | gridHierarchical:expansionStates:id:primaryKey:childLayoutKeys:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\n | gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:pipeTrigger\n | gridUnmergeActive:columnsToMerge:activeRowIndexes:false:pipeTrigger\"\n [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n [igxForContainerSize]=\"calcHeight\" [igxForItemSize]=\"renderedRowHeight\" [igxForTrackBy]=\"trackChanges\"\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\" (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]=\"(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) ? child_record_template : hierarchical_record_template))\"\n [igxTemplateOutletContext]=\"getContext(rowData, rowIndex, false)\" (viewCreated)=\"viewCreatedHandler($event)\"\n (viewMoved)=\"viewMovedHandler($event)\" (cachedViewLoaded)=\"cachedViewLoaded($event)\" (beforeViewDetach)=\"viewDetachHandler($event)\">\n </ng-template>\n <!-- <ng-container *igxTemplateOutlet=\"(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) && isExpanded(rowData) ? child_record_template : hierarchical_record_template)); context: getContext(rowData)\"></ng-container> -->\n </ng-template>\n <ng-template #hierarchical_record_template let-rowIndex=\"index\" let-disabledRow=\"disabled\" let-rowData let-metaData=\"metaData\">\n <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [disabled]=\"disabledRow\" [data]=\"rowData\" [metaData]=\"metaData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:hasCellsToMerge:false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-hierarchical-grid-row>\n </ng-template>\n\n <ng-template #pinned_hierarchical_record_template let-rowIndex=\"index\" let-rowData let-metaData=\"metaData\">\n <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [data]=\"rowData\" [metaData]=\"metaData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:hasCellsToMerge:false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row #pinnedRow>\n </igx-hierarchical-grid-row>\n </ng-template>\n <ng-template #child_record_template let-rowIndex=\"index\" let-rowData>\n <div [attr.data-rowindex]=\"rowIndex\" (scroll)=\"onContainerScroll()\"\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr--highlighted':isRowHighlighted(rowData)\n }\">\n @for (layout of childLayoutList; track layout) {\n <igx-child-grid-row [parentGridID]=\"id\" [index]=\"rowIndex\"\n [data]=\"rowData\" [layout]=\"layout\" #row>\n </igx-child-grid-row>\n }\n </div>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: this }\"></ng-container>\n @if (moving && columnInDrag) {\n <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n }\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n @if (!this.parent) {\n <igc-trial-watermark></igc-trial-watermark>\n }\n </div>\n <div igxToggle #loadingOverlay>\n @if (shouldOverlayLoading) {\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n }\n </div>\n @if (moving && 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 <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 igxOverlayOutlet #igxBodyOverlayOutlet=\"overlay-outlet\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]=\"summaryRowHeight\" #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" [attr.aria-activedescendant]=\"activeDescendant\"\n (keydown)=\"navigation.summaryNav($event)\">\n @if (hasSummarizedColumns && rootSummariesEnabled) {\n <igx-grid-summary-row [style.width.px]=\"calcWidth\" [style.height.px]=\"summaryRowHeight\"\n [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n }\n <div class=\"igx-grid__tfoot-thumb\" [hidden]=\"!hasVerticalScroll()\" [style.height.px]=\"summaryRowHeight\"\n [style.width.px]=\"scrollSize\"></div>\n </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]=\"pinnedStartWidth\" [style.min-width.px]=\"pinnedStartWidth\"></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]=\"unpinnedWidth\">\n <ng-template igxGridFor [igxGridForOf]=\"[]\" #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.width.px]=\"pinnedEndWidth\" [style.min-width.px]=\"pinnedEndWidth\" [hidden]=\"pinnedEndWidth === 0\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer,igc-grid-footer\"></ng-content>\n <ng-content select=\"igx-paginator,igc-paginator\"></ng-content>\n <ng-container #paginatorOutlet></ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n @if (showAddButton) {\n <span>\n <ng-container *ngTemplateOutlet=\"addRowEmptyTemplate || defaultAddRowEmptyTemplate\"></ng-container>\n </span>\n }\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n @if (showAddButton) {\n <span>\n <ng-container *ngTemplateOutlet=\"addRowEmptyTemplate || defaultAddRowEmptyTemplate\"></ng-container>\n </span>\n }\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button type=\"button\" igxButton=\"contained\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\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\n<ng-template #defaultCollapsedTemplate>\n <igx-icon family=\"default\" name=\"unfold_more\" role=\"button\"></igx-icon>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon\n family=\"default\"\n name=\"unfold_less\"\n role=\"button\"\n [active]=\"hasExpandedRecords() && hasExpandableChildren\">\n </igx-icon>\n</ng-template>\n\n@if (rowEditable) {\n <div igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"resolveRowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.crudService.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n}\n<ng-template #defaultRowEditText>\n {{ this.resourceStrings.igx_grid_row_edit_text | igxStringReplace:'{0}':rowChangesCount.toString() | igxStringReplace:'{1}':hiddenColumnsCount.toString() }}\n</ng-template>\n<ng-template #defaultRowEditActions>\n <button type=\"button\" igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button type=\"button\" igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.isAddRow ? rowAddTextTemplate : resolveRowEditText || defaultRowEditText;\n context: { $implicit: !this.crudService.row?.isAddRow ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"resolveRowEditActions || defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon family=\"default\" name=\"drag_indicator\"></igx-icon>\n</ng-template>\n\n@if (colResizingService.showResizer) {\n <igx-grid-column-resizer></igx-grid-column-resizer>\n}\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n@if (platform.isElements) {\n <div #sink style=\"display: none;\"></div>\n <ng-content select=\"igx-grid-state,igc-grid-state\"></ng-content>\n <ng-content select=\"igx-column,igc-column,igx-column-group,igc-column-group,igx-action-strip,igc-action-strip\"></ng-content>\n <ng-content select=\"igx-row-island,igc-row-island\"></ng-content>\n}\n","import { NgModule } from '@angular/core';\nimport { IgxHierarchicalGridComponent } from './hierarchical-grid.component';\nimport { IgxRowIslandComponent } from './row-island.component';\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 IgxRowEditTextDirective,\n IgxRowAddTextDirective,\n IgxRowEditActionsDirective,\n IgxRowEditTabStopDirective,\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 IgxColumnRequiredValidatorDirective,\n IgxColumnMinValidatorDirective,\n IgxColumnMaxValidatorDirective,\n IgxColumnEmailValidatorDirective,\n IgxColumnMinLengthValidatorDirective,\n IgxColumnMaxLengthValidatorDirective,\n IgxColumnPatternValidatorDirective,\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\";\nimport {\n IgxPaginatorComponent,\n IgxPageNavigationComponent,\n IgxPageSizeSelectorComponent,\n IgxPaginatorContentDirective,\n IgxPaginatorDirective\n} from 'igniteui-angular/paginator';\n\n/* NOTE: Hierarchical grid directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_HIERARCHICAL_GRID_DIRECTIVES = [\n IgxHierarchicalGridComponent,\n IgxRowIslandComponent,\n IgxRowAddTextDirective,\n IgxRowEditActionsDirective,\n IgxRowEditTextDirective,\n IgxRowEditTabStopDirective,\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 // IGX_GRID_VALIDATION_DIRECTIVES:\n IgxColumnRequiredValidatorDirective,\n IgxColumnMinValidatorDirective,\n IgxColumnMaxValidatorDirective,\n IgxColumnEmailValidatorDirective,\n IgxColumnMinLengthValidatorDirective,\n IgxColumnMaxLengthValidatorDirective,\n IgxColumnPatternValidatorDirective,\n // IGX_PAGINATOR_DIRECTIVES:\n IgxPaginatorComponent,\n IgxPageNavigationComponent,\n IgxPageSizeSelectorComponent,\n IgxPaginatorContentDirective,\n IgxPaginatorDirective\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_HIERARCHICAL_GRID_DIRECTIVES\n ],\n exports: [\n ...IGX_HIERARCHICAL_GRID_DIRECTIVES\n ]\n})\nexport class IgxHierarchicalGridModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["flatten"],"mappings":"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"}