UNPKG

tuain-ng-forms-lib

Version:

Componentes y Clases Angular para la gestión de formularios TUAIN

57 lines 8.02 kB
import { Component, Input, ChangeDetectionStrategy, inject, DestroyRef } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { PieceComponent } from './piece.component'; import { CUSTOM_ATTRIBUTES } from '../../shared/constants'; import * as i0 from "@angular/core"; const signaledAttributes = [ 'visible', 'disabled', ]; export class SectionComponent extends PieceComponent { destroyRef = inject(DestroyRef); section = null; updatePropagatedAttributes() { this.updatePieceAttributes(this.section, signaledAttributes); } ngOnInit() { if (!this.section) { return; } this.formConfig = this.section?.formConfig; this.updatePropagatedAttributes(); this.replaceCustomAttributes(this.section?.customAttributes); this.section?.attributeChange .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe({ next: (event) => { const { name: attribute, value = null } = event ?? {}; const attributeParts = attribute?.split('.') ?? []; if (signaledAttributes.includes(attribute)) { this.updatePieceAttribute(signaledAttributes, attribute, value); } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) { const subAttribute = attributeParts?.[1] ?? null; this.updateCustomAttribute(subAttribute, value); } }, error: (err) => console.error(`Error en propagación de atributos de sección: ${err}`) }); this.start(); } start() { this.setForm(this.section?.form); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SectionComponent, isStandalone: true, selector: "lib-section", inputs: { section: "section" }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SectionComponent, decorators: [{ type: Component, args: [{ standalone: true, selector: 'lib-section', template: `<ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush }] }], propDecorators: { section: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VsZW1lbnRzL2xheW91dC9zZWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFM0QsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixTQUFTLEVBQUUsVUFBVTtDQUN0QixDQUFDO0FBUUYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGNBQWM7SUFDMUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUvQixPQUFPLEdBQTZCLElBQUksQ0FBQztJQUVsRCwwQkFBMEI7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlO2FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3RELE1BQU0sY0FBYyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuRCxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUMzQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRSxDQUFDO3FCQUFNLElBQUksY0FBYyxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztvQkFDbkYsTUFBTSxZQUFZLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO29CQUNqRCxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsR0FBRyxFQUFFLENBQUM7U0FDdEYsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzt3R0FsQ1UsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsOEhBSGpCLDJCQUEyQjs7NEZBRzFCLGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs4QkFJVSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbmplY3QsIERlc3Ryb3lSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFBpZWNlQ29tcG9uZW50IH0gZnJvbSAnLi9waWVjZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVjb3JkRm9ybVNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Zvcm1zL3NlY3Rpb24nO1xuaW1wb3J0IHsgQ1VTVE9NX0FUVFJJQlVURVMgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcblxuY29uc3Qgc2lnbmFsZWRBdHRyaWJ1dGVzID0gW1xuICAndmlzaWJsZScsICdkaXNhYmxlZCcsXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdsaWItc2VjdGlvbicsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNlY3Rpb25Db21wb25lbnQgZXh0ZW5kcyBQaWVjZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBASW5wdXQoKSBzZWN0aW9uOiBSZWNvcmRGb3JtU2VjdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIHVwZGF0ZVByb3BhZ2F0ZWRBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlUGllY2VBdHRyaWJ1dGVzKHRoaXMuc2VjdGlvbiwgc2lnbmFsZWRBdHRyaWJ1dGVzKVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlY3Rpb24pIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gdGhpcy5zZWN0aW9uPy5mb3JtQ29uZmlnO1xuICAgIHRoaXMudXBkYXRlUHJvcGFnYXRlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLnJlcGxhY2VDdXN0b21BdHRyaWJ1dGVzKHRoaXMuc2VjdGlvbj8uY3VzdG9tQXR0cmlidXRlcyk7XG4gICAgdGhpcy5zZWN0aW9uPy5hdHRyaWJ1dGVDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgbmFtZTogYXR0cmlidXRlLCB2YWx1ZSA9IG51bGwgfSA9IGV2ZW50ID8/IHt9O1xuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVBhcnRzID0gYXR0cmlidXRlPy5zcGxpdCgnLicpID8/IFtdO1xuICAgICAgICAgIGlmIChzaWduYWxlZEF0dHJpYnV0ZXMuaW5jbHVkZXMoYXR0cmlidXRlKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQaWVjZUF0dHJpYnV0ZShzaWduYWxlZEF0dHJpYnV0ZXMsIGF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlUGFydHM/Lmxlbmd0aCA+IDEgJiYgYXR0cmlidXRlUGFydHM/LlswXSA9PT0gQ1VTVE9NX0FUVFJJQlVURVMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1YkF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVBhcnRzPy5bMV0gPz8gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ3VzdG9tQXR0cmlidXRlKHN1YkF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IGNvbnNvbGUuZXJyb3IoYEVycm9yIGVuIHByb3BhZ2FjacOzbiBkZSBhdHJpYnV0b3MgZGUgc2VjY2nDs246ICR7ZXJyfWApXG4gICAgICB9KTtcbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBzdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZvcm0odGhpcy5zZWN0aW9uPy5mb3JtKTtcbiAgfVxufVxuIl19