ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
76 lines • 8.61 kB
JavaScript
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==