UNPKG

igniteui-angular

Version:

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

177 lines • 17.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { ChangeDetectionStrategy, Component, HostBinding, forwardRef, ElementRef, ChangeDetectorRef, ViewChildren, QueryList, ViewChild } from '@angular/core'; import { IgxRowComponent } from '../row.component'; import { IgxHierarchicalSelectionAPIService } from './selection'; import { GridBaseAPIService } from '.././api.service'; import { IgxHierarchicalGridCellComponent } from './hierarchical-cell.component'; import { IgxGridCRUDService, IgxGridSelectionService } from '../../core/grid-selection'; var IgxHierarchicalRowComponent = /** @class */ (function (_super) { tslib_1.__extends(IgxHierarchicalRowComponent, _super); function IgxHierarchicalRowComponent(gridAPI, crudService, selectionService, hselection, element, cdr) { var _this = _super.call(this, gridAPI, crudService, selectionService, hselection, element, cdr) || this; _this.gridAPI = gridAPI; _this.crudService = crudService; _this.selectionService = selectionService; _this.hselection = hselection; _this.element = element; _this.cdr = cdr; /** * @hidden */ _this.tabindex = 0; return _this; } Object.defineProperty(IgxHierarchicalRowComponent.prototype, "expanded", { /** * Returns whether the row is expanded. * ```typescript * const RowExpanded = this.grid1.rowList.first.expanded; * ``` */ get: /** * Returns whether the row is expanded. * ```typescript * const RowExpanded = this.grid1.rowList.first.expanded; * ``` * @return {?} */ function () { return this.grid.isExpanded(this.rowData); }, enumerable: true, configurable: true }); Object.defineProperty(IgxHierarchicalRowComponent.prototype, "hasChildren", { get: /** * @return {?} */ function () { return !!this.grid.childLayoutKeys.length; }, enumerable: true, configurable: true }); Object.defineProperty(IgxHierarchicalRowComponent.prototype, "highlighted", { /** * @hidden */ get: /** * @hidden * @return {?} */ function () { return this.grid && this.grid.highlightedRowID === this.rowID; }, enumerable: true, configurable: true }); /** * Toggles the hierarchical row. * ```typescript * this.grid1.rowList.first.toggle() * ``` */ /** * Toggles the hierarchical row. * ```typescript * this.grid1.rowList.first.toggle() * ``` * @return {?} */ IgxHierarchicalRowComponent.prototype.toggle = /** * Toggles the hierarchical row. * ```typescript * this.grid1.rowList.first.toggle() * ``` * @return {?} */ function () { var _this = this; if (this.added) { return; } /** @type {?} */ var grid = this.gridAPI.grid; /** @type {?} */ var state = this.gridAPI.grid.hierarchicalState; if (!this.expanded) { state.push({ rowID: this.rowID }); grid.hierarchicalState = tslib_1.__spread(state); } else { grid.hierarchicalState = state.filter(function (v) { return v.rowID !== _this.rowID; }); } grid.cdr.detectChanges(); requestAnimationFrame(function () { grid.reflow(); }); }; IgxHierarchicalRowComponent.decorators = [ { type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, selector: 'igx-hierarchical-grid-row', template: "<div (click)=\"toggle()\" class=\"igx-grid__hierarchical-expander\" [tabIndex]=\"tabindex\" *ngIf=\"hasChildren\" #expander>\n <igx-icon *ngIf=\"!expanded\" [isActive]='!added' fontSet=\"material\">expand_more</igx-icon>\n <igx-icon *ngIf=\"expanded\" [isActive]='!added' fontSet=\"material\">expand_less</igx-icon>\n</div>\n\n<ng-container *ngIf=\"rowSelectable\">\n <div class=\"igx-grid__cbx-selection\">\n <igx-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxClick($event)\" disableRipple=\"true\" [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\"></igx-checkbox>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"pinnedColumns.length > 0\">\n <igx-hierarchical-grid-cell *ngFor=\"let col of pinnedColumns | igxNotGrouped\"\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--pinned\"\n [class.igx-grid__td--number]=\"col.dataType === 'number'\"\n [ngClass]=\"col.cellClasses | igxCellStyles:rowData[col.field]:rowData:col.field\"\n [editMode]=\"col.editable && crudService.isInEditMode(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [row]=\"this\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"grid.rowHeight || 32\"\n [rowData]=\"rowData\"\n [style.min-width.px]=\"col.width\"\n [style.flex-basis.px]=\"col.width\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"rowData[col.field]\"\n [cellTemplate]=\"col.bodyTemplate\">\n </igx-hierarchical-grid-cell>\n</ng-container>\n\n<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcWidth\"' [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth' [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-hierarchical-grid-cell\n class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--number]=\"col.dataType === 'number'\"\n [ngClass]=\"col.cellClasses | igxCellStyles:rowData[col.field]:rowData:col.field\"\n [editMode]=\"col.editable && crudService.isInEditMode(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [row]=\"this\"\n [style.min-height.px]=\"grid.rowHeight || 32\"\n [rowData]=\"rowData\"\n [style.min-width.px]=\"col.width\"\n [style.flex-basis.px]=\"col.width\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"rowData[col.field]\"\n [cellTemplate]=\"col.bodyTemplate\">\n </igx-hierarchical-grid-cell>\n</ng-template>\n\n", providers: [{ provide: IgxRowComponent, useExisting: forwardRef(function () { return IgxHierarchicalRowComponent; }) }] }] } ]; /** @nocollapse */ IgxHierarchicalRowComponent.ctorParameters = function () { return [ { type: GridBaseAPIService }, { type: IgxGridCRUDService }, { type: IgxGridSelectionService }, { type: IgxHierarchicalSelectionAPIService }, { type: ElementRef }, { type: ChangeDetectorRef } ]; }; IgxHierarchicalRowComponent.propDecorators = { cells: [{ type: ViewChildren, args: [forwardRef(function () { return IgxHierarchicalGridCellComponent; }), { read: IgxHierarchicalGridCellComponent },] }], expander: [{ type: ViewChild, args: ['expander', { read: ElementRef },] }], tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }], expanded: [{ type: HostBinding, args: ['class.igx-grid__tr--expanded',] }], highlighted: [{ type: HostBinding, args: ['class.igx-grid__tr--highlighted',] }] }; return IgxHierarchicalRowComponent; }(IgxRowComponent)); export { IgxHierarchicalRowComponent }; if (false) { /** * The rendered cells in the row component. * * ```typescript * // get the cells of the third selected row * let selectedRowCells = this.grid.selectedRows[2].cells; * ``` * @type {?} */ IgxHierarchicalRowComponent.prototype.cells; /** @type {?} */ IgxHierarchicalRowComponent.prototype.expander; /** * @hidden * @type {?} */ IgxHierarchicalRowComponent.prototype.tabindex; /** @type {?} */ IgxHierarchicalRowComponent.prototype.gridAPI; /** @type {?} */ IgxHierarchicalRowComponent.prototype.crudService; /** @type {?} */ IgxHierarchicalRowComponent.prototype.selectionService; /** * @type {?} * @private */ IgxHierarchicalRowComponent.prototype.hselection; /** @type {?} */ IgxHierarchicalRowComponent.prototype.element; /** @type {?} */ IgxHierarchicalRowComponent.prototype.cdr; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2hpY2FsLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2dyaWRzL2hpZXJhcmNoaWNhbC1ncmlkL2hpZXJhcmNoaWNhbC1yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFeEY7SUFPaUQsdURBQTZDO0lBc0UxRixxQ0FBbUIsT0FBeUQsRUFDakUsV0FBK0IsRUFDL0IsZ0JBQXlDLEVBQ3hDLFVBQThDLEVBQy9DLE9BQW1CLEVBQ25CLEdBQXNCO1FBTGpDLFlBTVEsa0JBQU0sT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxTQUMxRTtRQVBjLGFBQU8sR0FBUCxPQUFPLENBQWtEO1FBQ2pFLGlCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixzQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQ3hDLGdCQUFVLEdBQVYsVUFBVSxDQUFvQztRQUMvQyxhQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLFNBQUcsR0FBSCxHQUFHLENBQW1C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dGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9oaWVyYXJjaGljYWwtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Um93Q29tcG9uZW50IH0gZnJvbSAnLi4vcm93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxTZWxlY3Rpb25BUElTZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgR3JpZEJhc2VBUElTZXJ2aWNlIH0gZnJvbSAnLi4vLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hIaWVyYXJjaGljYWxHcmlkQ2VsbENvbXBvbmVudCB9IGZyb20gJy4vaGllcmFyY2hpY2FsLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IElneEdyaWRDUlVEU2VydmljZSwgSWd4R3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2dyaWQtc2VsZWN0aW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgc2VsZWN0b3I6ICdpZ3gtaGllcmFyY2hpY2FsLWdyaWQtcm93JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaGllcmFyY2hpY2FsLXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hSb3dDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElneEhpZXJhcmNoaWNhbFJvd0NvbXBvbmVudCkgfV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4SGllcmFyY2hpY2FsUm93Q29tcG9uZW50IGV4dGVuZHMgSWd4Um93Q29tcG9uZW50PElneEhpZXJhcmNoaWNhbEdyaWRDb21wb25lbnQ+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgcmVuZGVyZWQgY2VsbHMgaW4gdGhlIHJvdyBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0IHRoZSBjZWxscyBvZiB0aGUgdGhpcmQgc2VsZWN0ZWQgcm93XG4gICAgICogbGV0IHNlbGVjdGVkUm93Q2VsbHMgPSB0aGlzLmdyaWQuc2VsZWN0ZWRSb3dzWzJdLmNlbGxzO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBJZ3hIaWVyYXJjaGljYWxHcmlkQ2VsbENvbXBvbmVudCksIHsgcmVhZDogSWd4SGllcmFyY2hpY2FsR3JpZENlbGxDb21wb25lbnQgfSlcbiAgICBwdWJsaWMgY2VsbHM6IFF1ZXJ5TGlzdDxJZ3hIaWVyYXJjaGljYWxHcmlkQ2VsbENvbXBvbmVudD47XG5cbiAgICBAVmlld0NoaWxkKCdleHBhbmRlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHB1YmxpYyBleHBhbmRlcjogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHB1YmxpYyB0YWJpbmRleCA9IDA7XG5cbiAgICAgICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSByb3cgaXMgZXhwYW5kZWQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IFJvd0V4cGFuZGVkID0gdGhpcy5ncmlkMS5yb3dMaXN0LmZpcnN0LmV4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWRfX3RyLS1leHBhbmRlZCcpXG4gICAgcHVibGljIGdldCBleHBhbmRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5pc0V4cGFuZGVkKHRoaXMucm93RGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNDaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuICAhIXRoaXMuZ3JpZC5jaGlsZExheW91dEtleXMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkX190ci0taGlnaGxpZ2h0ZWQnKVxuICAgIHB1YmxpYyBnZXQgaGlnaGxpZ2h0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQgJiYgdGhpcy5ncmlkLmhpZ2hsaWdodGVkUm93SUQgPT09IHRoaXMucm93SUQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVG9nZ2xlcyB0aGUgaGllcmFyY2hpY2FsIHJvdy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkMS5yb3dMaXN0LmZpcnN0LnRvZ2dsZSgpXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYWRkZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkQVBJLmdyaWQ7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5ncmlkQVBJLmdyaWQuaGllcmFyY2hpY2FsU3RhdGU7XG4gICAgICAgIGlmICghdGhpcy5leHBhbmRlZCkge1xuICAgICAgICAgICAgc3RhdGUucHVzaCh7IHJvd0lEOiB0aGlzLnJvd0lEIH0pO1xuICAgICAgICAgICAgZ3JpZC5oaWVyYXJjaGljYWxTdGF0ZSA9IFsuLi5zdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBncmlkLmhpZXJhcmNoaWNhbFN0YXRlID0gc3RhdGUuZmlsdGVyKHYgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB2LnJvd0lEICE9PSB0aGlzLnJvd0lEO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ3JpZC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgZ3JpZC5yZWZsb3coKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hIaWVyYXJjaGljYWxHcmlkQ29tcG9uZW50PixcbiAgICAgICAgcHVibGljIGNydWRTZXJ2aWNlOiBJZ3hHcmlkQ1JVRFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hHcmlkU2VsZWN0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBoc2VsZWN0aW9uOiBJZ3hIaWVyYXJjaGljYWxTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgICAgIHN1cGVyKGdyaWRBUEksIGNydWRTZXJ2aWNlLCBzZWxlY3Rpb25TZXJ2aWNlLCBoc2VsZWN0aW9uLCBlbGVtZW50LCBjZHIpO1xuICAgICAgICB9XG59XG4iXX0=