UNPKG

igniteui-angular-sovn

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

226 lines (212 loc) 12.9 kB
<ng-container *ngTemplateOutlet="addRowUI ? addTemp : defaultTemp"></ng-container> <ng-template #addTemp> <div class="igx-grid__tr--inner" [class.igx-grid__tr--add-animate]="triggerAddAnimationClass" (animationend)="animationEndHandler()"> <ng-container *ngTemplateOutlet='defaultTemp'></ng-container> </div> </ng-template> <ng-template #defaultTemp> <ng-container *ngIf="rowDraggable"> <div [class]="resolveDragIndicatorClasses" [igxRowDrag]="this" (click)="$event.stopPropagation()" [ghostTemplate]="this.grid.getDragGhostCustomTemplate()"> <ng-container *ngTemplateOutlet="this.grid.dragIndicatorIconTemplate ? this.grid.dragIndicatorIconTemplate : this.grid.dragIndicatorIconBase"></ng-container> </div> </ng-container> <ng-container *ngIf="this.showRowSelectors"> <div class="igx-grid__cbx-selection igx-grid__tr-action" (pointerdown)="$event.preventDefault()" (click)="onRowSelectorClick($event)"> <ng-template *ngTemplateOutlet=" this.grid.rowSelectorTemplate ? this.grid.rowSelectorTemplate : rowSelectorBaseTemplate; context: { $implicit: { index: viewIndex, rowID: key, key, selected: selected }}"> </ng-template> </div> </ng-container> <ng-container *ngIf="grid.groupingExpressions.length > 0"> <div class="igx-grid__row-indentation igx-grid__row-indentation--level-{{grid.groupingExpressions.length}}" (pointerdown)="$event.preventDefault()" (click)="$event.stopPropagation()"></div> </ng-container> <ng-container *ngIf="!grid.hasColumnLayouts"> <ng-container *ngIf="pinnedColumns.length > 0 && grid.isPinningToStart"> <ng-template ngFor let-col [ngForOf]="pinnedColumns | igxNotGrouped"> <ng-container *ngTemplateOutlet="col.visibleIndex === 0 && grid.hasDetails ? expandableCellTemplate : cellTemplate; context: getContext(col, this)"></ng-container> </ng-template> </ng-container> <ng-template igxGridFor let-col [igxGridForOf]="unpinnedColumns | igxNotGrouped" [igxForScrollContainer]="grid.parentVirtDir" [igxForScrollOrientation]="'horizontal'" [igxForContainerSize]="grid.unpinnedWidth" [igxForSizePropName]="'calcPixelWidth'" [igxForTrackBy]="grid.trackColumnChanges" #igxDirRef> <ng-container *ngTemplateOutlet="col.visibleIndex === 0 && grid.hasDetails ? expandableCellTemplate : cellTemplate; context: getContext(col, this)"></ng-container> </ng-template> <ng-container *ngIf="pinnedColumns.length > 0 && !grid.isPinningToStart"> <ng-template ngFor let-col [ngForOf]="pinnedColumns | igxNotGrouped"> <ng-container *ngTemplateOutlet="col.visibleIndex === 0 && grid.hasDetails ? expandableCellTemplate : cellTemplate; context: getContext(col, this)"></ng-container> </ng-template> </ng-container> </ng-container> <ng-container *ngIf="grid.hasColumnLayouts"> <ng-container *ngIf="pinnedColumns.length > 0 && grid.isPinningToStart"> <ng-container *ngTemplateOutlet="mrlPinnedTemplate; context: getContextMRL(pinnedColumns, this)"></ng-container> </ng-container> <ng-template igxGridFor let-col [igxGridForOf]="unpinnedColumns | igxTopLevel" [igxForScrollContainer]="grid.parentVirtDir" let-colIndex="index" [igxForScrollOrientation]="'horizontal'" [igxForContainerSize]="grid.unpinnedWidth" [igxForSizePropName]="'calcPixelWidth'" [igxForTrackBy]="grid.trackColumnChanges" #igxDirRef> <div class="igx-grid__mrl-block" [ngStyle]="{ 'grid-template-rows':col.getGridTemplate(true), 'grid-template-columns':col.getGridTemplate(false) }"> <ng-template ngFor let-col [ngForOf]="col.children"> <ng-container *ngTemplateOutlet="col.visibleIndex === 0 && grid.hasDetails ? mrlExpandableCellTemplate : mrlCellTemplate; context: getContext(col, this)"></ng-container> </ng-template> </div> </ng-template> <ng-container *ngIf="pinnedColumns.length > 0 && !grid.isPinningToStart"> <ng-container *ngTemplateOutlet="mrlPinnedTemplate; context: getContextMRL(pinnedColumns, this)"></ng-container> </ng-container> </ng-container> </ng-template> <ng-template #mrlPinnedTemplate let-pinnedColumns> <div *ngFor="let col of pinnedColumns | igxTopLevel" class="igx-grid__mrl-block" [class.igx-grid__td--pinned-last]="col.hasLastPinnedChildColumn" [class.igx-grid__td--pinned-first]="col.hasFirstPinnedChildColumn" [style.left]="mrlRightPinnedOffset" [ngStyle]="{ 'grid-template-rows':col.getGridTemplate(true), 'grid-template-columns':col.getGridTemplate(false), 'z-index': col.pinned ? 1 : null }"> <ng-template ngFor let-col [ngForOf]="col.children"> <ng-container *ngTemplateOutlet="col.visibleIndex === 0 && grid.hasDetails? mrlExpandableCellTemplate : mrlCellTemplate; context: getContext(col, this)"></ng-container> </ng-template> </div> </ng-template> <ng-template #rowSelectorBaseTemplate> <div class="igx-grid__cbx-padding"> <igx-checkbox [tabindex]="-1" [checked]="selected" [readonly]="true" [disabled]="deleted" [disableRipple]="true" [disableTransitions]="grid.disableTransitions" [aria-label]="rowCheckboxAriaLabel"> </igx-checkbox> </div> </ng-template> <ng-template #cellTemplate let-col> <igx-grid-cell class="igx-grid__td igx-grid__td--fw" [class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row" [class.igx-grid__td--pinned]="col.pinned" [class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'" [class.igx-grid__td--bool]="col.dataType === 'boolean'" [class.igx-grid__td--image]="col.dataType === 'image'" [ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger" [ngStyle]="col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger" [editMode]="col.editable && this.grid.crudService.targetInEdit(index, col.index)" [column]="col" [formatter]="col.formatter" [intRow]="this" [lastPinned]="col.columnLayoutChild ? null : col.isLastPinned" [firstPinned]="col.columnLayoutChild ? null : col.isFirstPinned" [style.min-height.px]="cellHeight" [rowData]="data" [style.min-width]="col.width" [style.max-width]="col.width" [style.flex-basis]="col.width" [style.left]="col.rightPinnedOffset" [width]="col.getCellWidth()" [visibleColumnIndex]="col.visibleIndex" [value]="data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath" [cellTemplate]="col.bodyTemplate" [cellValidationErrorTemplate]="col.errorTemplate" [lastSearchInfo]="grid.lastSearchInfo" [active]="isCellActive(col.visibleIndex)" [cellSelectionMode]="grid.cellSelection" [displayPinnedChip]="shouldDisplayPinnedChip(col.visibleIndex)" #cell> </igx-grid-cell> </ng-template> <ng-template #expandableCellTemplate let-col> <igx-expandable-grid-cell [class.igx-grid__td--pinned]="col.pinned" class="igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell" [class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row" [class.igx-grid__td--number]="(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0" [ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger" [ngStyle]="col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger" [expanded]="expanded" [editMode]="col.editable && this.grid.crudService.targetInEdit(index, col.index)" [column]="col" [formatter]="col.formatter" [intRow]="this" [lastPinned]="col.columnLayoutChild ? null : col.isLastPinned" [style.min-height.px]="cellHeight" [rowData]="data" [style.min-width]="col.width" [style.max-width]="col.width" [style.flex-basis]="col.width" [width]="col.getCellWidth()" [visibleColumnIndex]="col.visibleIndex" [value]="data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath" [cellTemplate]="col.bodyTemplate" [cellValidationErrorTemplate]="col.errorTemplate" [lastSearchInfo]="grid.lastSearchInfo" [active]="isCellActive(col.visibleIndex)" [cellSelectionMode]="grid.cellSelection" [displayPinnedChip]="shouldDisplayPinnedChip(col.visibleIndex)" #cell> </igx-expandable-grid-cell> </ng-template> <ng-template #mrlCellTemplate let-col> <igx-grid-cell class="igx-grid__td igx-grid__td--fw" [class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row" [class.igx-grid__td--pinned]="col.pinned" [class.igx-grid__td--number]="col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'" [ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger" [ngStyle]="col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger" [editMode]="col.editable && this.grid.crudService.targetInEdit(index, col.index)" [column]="col" [style.grid-row-end]="col.rowEnd" [style.grid-column-end]="col.colEnd" [style.grid-row-start]="col.rowStart" [style.grid-column-start]="col.colStart" [lastPinned]="col.columnLayoutChild ? null : col.isLastPinned" [firstPinned]="col.columnLayoutChild ? null : col.isFirstPinned" [formatter]="col.formatter" [intRow]="this" [style.min-height.px]="cellHeight" [rowData]="data" [visibleColumnIndex]="col.visibleIndex" [value]="data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath" [cellTemplate]="col.bodyTemplate" [cellValidationErrorTemplate]="col.errorTemplate" [lastSearchInfo]="grid.lastSearchInfo" [active]="isCellActive(col.visibleIndex)" [cellSelectionMode]="grid.cellSelection" [displayPinnedChip]="shouldDisplayPinnedChip(col.visibleIndex)" #cell> </igx-grid-cell> </ng-template> <ng-template #mrlExpandableCellTemplate let-col> <igx-expandable-grid-cell class="igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell" [class.igx-grid__td--edited]="key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row" [class.igx-grid__td--pinned]="col.pinned" [class.igx-grid__td--number]="(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0" [ngClass]="col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger" [ngStyle]="col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger" [expanded]="expanded" [editMode]="col.editable && this.grid.crudService.targetInEdit(index, col.index)" [column]="col" [style.grid-row-end]="col.rowEnd" [style.grid-column-end]="col.colEnd" [style.grid-row-start]="col.rowStart" [style.grid-column-start]="col.colStart" [lastPinned]="col.columnLayoutChild ? null : col.isLastPinned" [formatter]="col.formatter" [intRow]="this" [style.min-height.px]="cellHeight" [rowData]="data" [visibleColumnIndex]="col.visibleIndex" [value]="data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath" [cellTemplate]="col.bodyTemplate" [cellValidationErrorTemplate]="col.errorTemplate" [lastSearchInfo]="grid.lastSearchInfo" [active]="isCellActive(col.visibleIndex)" [cellSelectionMode]="grid.cellSelection" [displayPinnedChip]="shouldDisplayPinnedChip(col.visibleIndex)" #cell> </igx-expandable-grid-cell> </ng-template>