UNPKG

@catull/igniteui-angular

Version:

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

122 lines 17.5 kB
import { __decorate, __extends, __metadata, __param, __read, __spread } from "tslib"; import { Component, ChangeDetectorRef, ElementRef, ViewChild, Inject, ChangeDetectionStrategy, NgZone, OnInit, Input, TemplateRef } from '@angular/core'; import { IgxGridCellComponent } from '../cell.component'; import { GridBaseAPIService } from '../api.service'; import { getNodeSizeViaRange, PlatformUtil } from '../../core/utils'; import { DOCUMENT } from '@angular/common'; import { IgxGridSelectionService, IgxGridCRUDService } from '../selection/selection.service'; import { HammerGesturesManager } from '../../core/touch'; var IgxGridExpandableCellComponent = /** @class */ (function (_super) { __extends(IgxGridExpandableCellComponent, _super); function IgxGridExpandableCellComponent(selectionService, crudService, gridAPI, cdr, element, zone, touchManager, document, platformUtil) { var _this = _super.call(this, selectionService, crudService, gridAPI, cdr, element, zone, touchManager, platformUtil) || this; _this.zone = zone; _this.document = document; _this.platformUtil = platformUtil; /** * @hidden */ _this.expanded = false; return _this; } /** * @hidden */ IgxGridExpandableCellComponent.prototype.toggle = function (event) { event.stopPropagation(); var expandedStates = this.grid.expansionStates; expandedStates.set(this.row.rowID, !this.row.expanded); this.grid.expansionStates = expandedStates; if (this.grid.rowEditable) { this.grid.endEdit(true); } }; /** * @hidden */ IgxGridExpandableCellComponent.prototype.onIndicatorFocus = function () { this.gridAPI.submit_value(); this.nativeElement.focus(); }; /** * @hidden */ IgxGridExpandableCellComponent.prototype.calculateSizeToFit = function (range) { var indicatorWidth = this.indicator.nativeElement.getBoundingClientRect().width; var indicatorStyle = this.document.defaultView.getComputedStyle(this.indicator.nativeElement); var indicatorMargin = parseFloat(indicatorStyle.marginRight); var leftPadding = 0; if (this.indentationDiv) { var indentationStyle = this.document.defaultView.getComputedStyle(this.indentationDiv.nativeElement); leftPadding = parseFloat(indentationStyle.paddingLeft); } var largestWidth = Math.max.apply(Math, __spread(Array.from(this.nativeElement.children) .map(function (child) { return getNodeSizeViaRange(range, child); }))); return largestWidth + indicatorWidth + indicatorMargin + leftPadding; }; Object.defineProperty(IgxGridExpandableCellComponent.prototype, "iconTemplate", { /** * @hidden */ get: function () { if (this.expanded) { return this.grid.rowExpandedIndicatorTemplate || this.defaultExpandedTemplate; } else { return this.grid.rowCollapsedIndicatorTemplate || this.defaultCollapsedTemplate; } }, enumerable: true, configurable: true }); IgxGridExpandableCellComponent.ctorParameters = function () { return [ { type: IgxGridSelectionService }, { type: IgxGridCRUDService }, { type: GridBaseAPIService }, { type: ChangeDetectorRef }, { type: ElementRef }, { type: NgZone }, { type: HammerGesturesManager }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }, { type: PlatformUtil } ]; }; __decorate([ Input(), __metadata("design:type", Object) ], IgxGridExpandableCellComponent.prototype, "expanded", void 0); __decorate([ ViewChild('indicator', { read: ElementRef }), __metadata("design:type", ElementRef) ], IgxGridExpandableCellComponent.prototype, "indicator", void 0); __decorate([ ViewChild('indentationDiv', { read: ElementRef }), __metadata("design:type", ElementRef) ], IgxGridExpandableCellComponent.prototype, "indentationDiv", void 0); __decorate([ ViewChild('defaultExpandedTemplate', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxGridExpandableCellComponent.prototype, "defaultExpandedTemplate", void 0); __decorate([ ViewChild('defaultCollapsedTemplate', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxGridExpandableCellComponent.prototype, "defaultCollapsedTemplate", void 0); IgxGridExpandableCellComponent = __decorate([ Component({ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-expandable-grid-cell', template: "<ng-template #defaultCell>\n <div igxTextHighlight style=\"pointer-events: none\" [cssClass]=\"highlightClass\" [activeCssClass]=\"activeHighlightClass\" [groupName]=\"gridID\"\n [value]=\"formatter ? formatter(value) : column.dataType === 'number' ? (value | igxdecimal: grid.locale) : column.dataType === 'date' ? (value | igxdate: grid.locale) : value\"\n [row]=\"rowData\" [column]=\"this.column.field\" [containerClass]=\"'igx-grid__td-text'\"\n class=\"igx-grid__td-text\">{{ formatter ? formatter(value) : column.dataType === 'number' ? (value | igxdecimal:\n grid.locale) : column.dataType === 'date' ? (value | igxdate: grid.locale) : value }}</div>\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n <ng-container *ngIf=\"column.dataType === 'string'\">\n <igx-input-group displayDensity=\"compact\">\n <input igxInput [(ngModel)]=\"editValue\" [igxFocus]=\"focused\">\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'number'\">\n <igx-input-group displayDensity=\"compact\">\n <input igxInput [(ngModel)]=\"editValue\" [igxFocus]=\"focused\" type=\"number\">\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'boolean'\">\n <igx-checkbox (change)=\"editValue = $event.checked\" [value]=\"editValue\" [checked]=\"editValue\" [disableRipple]=\"true\"></igx-checkbox>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'date'\">\n <igx-date-picker [style.width.%]=\"100\" [outlet]=\"grid.outletDirective\" mode=\"dropdown\"\n [locale]=\"grid.locale\" [(value)]=\"editValue\" [igxFocus]=\"focused\" [labelVisibility]=\"false\">\n </igx-date-picker>\n </ng-container>\n</ng-template>\n<ng-container *ngIf=\"!editMode\">\n <div #indicator\n class=\"igx-grid__tree-grouping-indicator\"\n (click)=\"toggle($event)\" (focus)=\"onIndicatorFocus()\" tabindex=\"-1\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: this }\">\n </ng-container>\n </div>\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\">\n</ng-container>\n<ng-template #defaultExpandedTemplate>\n <igx-icon fontSet=\"material\">expand_more</igx-icon>\n</ng-template>\n<ng-template #defaultCollapsedTemplate>\n <igx-icon fontSet=\"material\">chevron_right</igx-icon>\n</ng-template>\n", providers: [HammerGesturesManager] }), __param(7, Inject(DOCUMENT)), __metadata("design:paramtypes", [IgxGridSelectionService, IgxGridCRUDService, GridBaseAPIService, ChangeDetectorRef, ElementRef, NgZone, HammerGesturesManager, Object, PlatformUtil]) ], IgxGridExpandableCellComponent); return IgxGridExpandableCellComponent; }(IgxGridCellComponent)); export { IgxGridExpandableCellComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZ3JpZHMvZ3JpZC9leHBhbmRhYmxlLWNlbGwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUMvRCx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVN6RDtJQUFvRCxrREFBb0I7SUFFcEUsd0NBQ1ksZ0JBQXlDLEVBQ3pDLFdBQStCLEVBQy9CLE9BQTRELEVBQzVELEdBQXNCLEVBQ3RCLE9BQW1CLEVBQ1QsSUFBWSxFQUN0QixZQUFtQyxFQUNWLFFBQVEsRUFDdkIsWUFBMEI7UUFUaEQsWUFVSSxrQkFBTSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsU0FDaEc7UUFMcUIsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUVHLGNBQVEsR0FBUixRQUFRLENBQUE7UUFDdkIsa0JBQVksR0FBWixZ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SUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO2tDQUMzQixVQUFVOzBFQUFDO0lBTW5DO1FBREMsU0FBUyxDQUFDLHlCQUF5QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7a0NBQ3ZDLFdBQVc7bUZBQU07SUFNcEQ7UUFEQyxTQUFTLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztrQ0FDdkMsV0FBVztvRkFBTTtJQXJDM0MsOEJBQThCO1FBTjFDLFNBQVMsQ0FBQztZQUNQLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1lBQy9DLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsMjdFQUE2QztZQUM3QyxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztTQUNyQyxDQUFDO1FBV2UsV0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7eUNBUEMsdUJBQXVCO1lBQzVCLGtCQUFrQjtZQUN0QixrQkFBa0I7WUFDdEIsaUJBQWlCO1lBQ2IsVUFBVTtZQUNILE1BQU07WUFDUixxQkFBcUIsVUFFWCxZQUFZO09BWHZDLDhCQUE4QixDQXdGMUM7SUFBRCxxQ0FBQztDQUFBLEFBeEZELENBQW9ELG9CQUFvQixHQXdGdkU7U0F4RlksOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBJbmplY3QsXG4gICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBOZ1pvbmUsIE9uSW5pdCwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uL2NlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IEdyaWRCYXNlQVBJU2VydmljZSB9IGZyb20gJy4uL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IGdldE5vZGVTaXplVmlhUmFuZ2UsIFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWd4R3JpZEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuJztcbmltcG9ydCB7IElneEdyaWRTZWxlY3Rpb25TZXJ2aWNlLCBJZ3hHcmlkQ1JVRFNlcnZpY2UgfSBmcm9tICcuLi9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFtbWVyR2VzdHVyZXNNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vY29yZS90b3VjaCc7XG5pbXBvcnQgeyBHcmlkVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LWV4cGFuZGFibGUtZ3JpZC1jZWxsJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2V4cGFuZGFibGUtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbSGFtbWVyR2VzdHVyZXNNYW5hZ2VyXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRXhwYW5kYWJsZUNlbGxDb21wb25lbnQgZXh0ZW5kcyBJZ3hHcmlkQ2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hHcmlkU2VsZWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBjcnVkU2VydmljZTogSWd4R3JpZENSVURTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZURpcmVjdGl2ZSAmIEdyaWRUeXBlPixcbiAgICAgICAgICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgICB0b3VjaE1hbmFnZXI6IEhhbW1lckdlc3R1cmVzTWFuYWdlcixcbiAgICAgICAgICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwdWJsaWMgZG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIHBsYXRmb3JtVXRpbDogUGxhdGZvcm1VdGlsKSB7XG4gICAgICAgIHN1cGVyKHNlbGVjdGlvblNlcnZpY2UsIGNydWRTZXJ2aWNlLCBncmlkQVBJLCBjZHIsIGVsZW1lbnQsIHpvbmUsIHRvdWNoTWFuYWdlciwgcGxhdGZvcm1VdGlsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdpbmRpY2F0b3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwdWJsaWMgaW5kaWNhdG9yOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5kZW50YXRpb25EaXYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwdWJsaWMgaW5kZW50YXRpb25EaXY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAqIEBoaWRkZW5cbiAgICAqL1xuICAgQFZpZXdDaGlsZCgnZGVmYXVsdEV4cGFuZGVkVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgIHByb3RlY3RlZCBkZWZhdWx0RXhwYW5kZWRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICogQGhpZGRlblxuICAgICovXG4gICBAVmlld0NoaWxkKCdkZWZhdWx0Q29sbGFwc2VkVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgIHByb3RlY3RlZCBkZWZhdWx0Q29sbGFwc2VkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IGV4cGFuZGVkU3RhdGVzID0gdGhpcy5ncmlkLmV4cGFuc2lvblN0YXRlcztcbiAgICAgICAgZXhwYW5kZWRTdGF0ZXMuc2V0KHRoaXMucm93LnJvd0lELCAhdGhpcy5yb3cuZXhwYW5kZWQpO1xuICAgICAgICB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzID0gZXhwYW5kZWRTdGF0ZXM7XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5yb3dFZGl0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLmVuZEVkaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG9uSW5kaWNhdG9yRm9jdXMoKSB7XG4gICAgICAgIHRoaXMuZ3JpZEFQSS5zdWJtaXRfdmFsdWUoKTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBjYWxjdWxhdGVTaXplVG9GaXQocmFuZ2U6IGFueSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGluZGljYXRvcldpZHRoID0gdGhpcy5pbmRpY2F0b3IubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgY29uc3QgaW5kaWNhdG9yU3R5bGUgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGhpcy5pbmRpY2F0b3IubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGluZGljYXRvck1hcmdpbiA9IHBhcnNlRmxvYXQoaW5kaWNhdG9yU3R5bGUubWFyZ2luUmlnaHQpO1xuICAgICAgICBsZXQgbGVmdFBhZGRpbmcgPSAwO1xuICAgICAgICBpZiAodGhpcy5pbmRlbnRhdGlvbkRpdikge1xuICAgICAgICAgICAgY29uc3QgaW5kZW50YXRpb25TdHlsZSA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmluZGVudGF0aW9uRGl2Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgbGVmdFBhZGRpbmcgPSBwYXJzZUZsb2F0KGluZGVudGF0aW9uU3R5bGUucGFkZGluZ0xlZnQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhcmdlc3RXaWR0aCA9IE1hdGgubWF4KC4uLkFycmF5LmZyb20odGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKVxuICAgICAgICAgICAgLm1hcCgoY2hpbGQpID0+IGdldE5vZGVTaXplVmlhUmFuZ2UocmFuZ2UsIGNoaWxkKSkpO1xuICAgICAgICByZXR1cm4gbGFyZ2VzdFdpZHRoICsgaW5kaWNhdG9yV2lkdGggKyBpbmRpY2F0b3JNYXJnaW4gKyBsZWZ0UGFkZGluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgKi9cbiAgICBwdWJsaWMgZ2V0IGljb25UZW1wbGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQucm93RXhwYW5kZWRJbmRpY2F0b3JUZW1wbGF0ZSB8fCB0aGlzLmRlZmF1bHRFeHBhbmRlZFRlbXBsYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5yb3dDb2xsYXBzZWRJbmRpY2F0b3JUZW1wbGF0ZSB8fCB0aGlzLmRlZmF1bHRDb2xsYXBzZWRUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==