UNPKG

ontimize-web-ngx

Version:
76 lines 8.61 kB
import { Directive, ElementRef, forwardRef, Inject, Renderer2 } from '@angular/core'; import { OTableBase } from '../../o-table-base.class'; import * as i0 from "@angular/core"; import * as i1 from "../../o-table-base.class"; export class OTableRowDirective { constructor(table, elementRef, renderer) { this.table = table; this.elementRef = elementRef; this.renderer = renderer; } ngAfterViewInit() { this.registerResize(); } ngOnDestroy() { if (this.resizeSubscription) { this.resizeSubscription.unsubscribe(); } } registerResize() { if (this.table.horizontalScroll) { const self = this; this.table.onUpdateScrolledState.subscribe(scrolled => { setTimeout(() => { if (scrolled) { self.calculateRowWidth(); } else { self.setRowWidth(undefined); } }, 0); }); } } calculateRowWidth() { if (!this.table.horizontalScroll) { return; } if (this.alreadyScrolled) { this.setRowWidth(this.table.rowWidth); } let totalWidth = 0; try { this.elementRef.nativeElement.childNodes.forEach(element => { if (element && element.tagName && element.tagName.toLowerCase() === 'mat-cell') { totalWidth += element.clientWidth; } }); } catch (error) { } if (!isNaN(totalWidth) && totalWidth > 0) { totalWidth += 48; this.setRowWidth(totalWidth); } } setRowWidth(value) { const widthValue = value !== undefined ? value + 'px' : 'auto'; this.renderer.setStyle(this.elementRef.nativeElement, 'width', widthValue); this.table.rowWidth = value; } get alreadyScrolled() { return this.table.rowWidth !== undefined; } } OTableRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableRowDirective, deps: [{ token: forwardRef(() => OTableBase) }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); OTableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OTableRowDirective, selector: "[oTableRow]", ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableRowDirective, decorators: [{ type: Directive, args: [{ selector: '[oTableRow]' }] }], ctorParameters: function () { return [{ type: i1.OTableBase, decorators: [{ type: Inject, args: [forwardRef(() => OTableBase)] }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1yb3cuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9yb3cvby10YWJsZS1yb3cuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQU10RCxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQytDLEtBQWlCLEVBQ3BELFVBQXNCLEVBQ3RCLFFBQW1CO1FBRmdCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDcEQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO0lBRS9CLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNwRCxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksUUFBUSxFQUFFO3dCQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO3FCQUMxQjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUM3QjtnQkFDSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDUixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQ2hDLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLFVBQVUsR0FBVyxDQUFDLENBQUM7UUFDM0IsSUFBSTtZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3pELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxVQUFVLEVBQUU7b0JBQzlFLFVBQVUsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDO2lCQUNuQztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFBQyxPQUFPLEtBQUssRUFBRTtTQUVmO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDO0lBQzNDLENBQUM7O2dIQWxFVSxrQkFBa0Isa0JBSW5CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7b0dBSjNCLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjs7MEJBS0ksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbmplY3QsIE9uRGVzdHJveSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9UYWJsZUJhc2UgfSBmcm9tICcuLi8uLi9vLXRhYmxlLWJhc2UuY2xhc3MnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tvVGFibGVSb3ddJ1xufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVSb3dEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgcmVzaXplU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9UYWJsZUJhc2UpKSBwdWJsaWMgdGFibGU6IE9UYWJsZUJhc2UsXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWdpc3RlclJlc2l6ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzaXplU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyUmVzaXplKCkge1xuICAgIGlmICh0aGlzLnRhYmxlLmhvcml6b250YWxTY3JvbGwpIHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy50YWJsZS5vblVwZGF0ZVNjcm9sbGVkU3RhdGUuc3Vic2NyaWJlKHNjcm9sbGVkID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHNjcm9sbGVkKSB7XG4gICAgICAgICAgICBzZWxmLmNhbGN1bGF0ZVJvd1dpZHRoKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGYuc2V0Um93V2lkdGgodW5kZWZpbmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2FsY3VsYXRlUm93V2lkdGgoKSB7XG4gICAgaWYgKCF0aGlzLnRhYmxlLmhvcml6b250YWxTY3JvbGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuYWxyZWFkeVNjcm9sbGVkKSB7XG4gICAgICB0aGlzLnNldFJvd1dpZHRoKHRoaXMudGFibGUucm93V2lkdGgpO1xuICAgIH1cbiAgICBsZXQgdG90YWxXaWR0aDogbnVtYmVyID0gMDtcbiAgICB0cnkge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2Rlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LnRhZ05hbWUgJiYgZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdtYXQtY2VsbCcpIHtcbiAgICAgICAgICB0b3RhbFdpZHRoICs9IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvL1xuICAgIH1cbiAgICBpZiAoIWlzTmFOKHRvdGFsV2lkdGgpICYmIHRvdGFsV2lkdGggPiAwKSB7XG4gICAgICB0b3RhbFdpZHRoICs9IDQ4O1xuICAgICAgdGhpcy5zZXRSb3dXaWR0aCh0b3RhbFdpZHRoKTtcbiAgICB9XG4gIH1cblxuICBzZXRSb3dXaWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3Qgd2lkdGhWYWx1ZSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSArICdweCcgOiAnYXV0byc7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgd2lkdGhWYWx1ZSk7XG4gICAgdGhpcy50YWJsZS5yb3dXaWR0aCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGFscmVhZHlTY3JvbGxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5yb3dXaWR0aCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbn1cbiJdfQ==