tuain-ng-forms-lib
Version:
Componentes y Clases Angular para la gestión de formularios TUAIN
56 lines • 7.05 kB
JavaScript
import { Component, Input } from '@angular/core';
import { Subject, takeUntil } from 'rxjs';
import { PieceComponent } from './piece.component';
import * as i0 from "@angular/core";
const CUSTOM_ATTRIBUTES = 'customAttributes';
const signaledAttributes = [
'visible', 'disabled',
];
export class SectionComponent extends PieceComponent {
destroy$ = new Subject();
section;
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(takeUntil(this.destroy$))
.subscribe(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);
}
});
this.start();
}
start() {
this.setForm(this.section?._form);
}
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
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, selector: "lib-section", inputs: { section: "section" }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SectionComponent, decorators: [{
type: Component,
args: [{
selector: 'lib-section',
template: `<ng-content></ng-content>`
}]
}], propDecorators: { section: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2VsZW1lbnRzL2xheW91dC9zZWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRW5ELE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUM7QUFFN0MsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixTQUFTLEVBQUUsVUFBVTtDQUN0QixDQUFDO0FBTUYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGNBQWM7SUFDMUMsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFOUIsT0FBTyxDQUFNO0lBRXRCLDBCQUEwQjtRQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7UUFDNUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWU7YUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3RELE1BQU0sY0FBYyxHQUFHLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25ELElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEUsQ0FBQztpQkFBTSxJQUFJLGNBQWMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLGlCQUFpQixFQUFFLENBQUM7Z0JBQ25GLE1BQU0sWUFBWSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztnQkFDakQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXBDVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQiwwR0FGakIsMkJBQTJCOzs0RkFFMUIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixRQUFRLEVBQUUsMkJBQTJCO2lCQUN0Qzs4QkFJVSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGllY2VDb21wb25lbnQgfSBmcm9tICcuL3BpZWNlLmNvbXBvbmVudCc7XG5cbmNvbnN0IENVU1RPTV9BVFRSSUJVVEVTID0gJ2N1c3RvbUF0dHJpYnV0ZXMnO1xuXG5jb25zdCBzaWduYWxlZEF0dHJpYnV0ZXMgPSBbXG4gICd2aXNpYmxlJywgJ2Rpc2FibGVkJyxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zZWN0aW9uJyxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YFxufSlcbmV4cG9ydCBjbGFzcyBTZWN0aW9uQ29tcG9uZW50IGV4dGVuZHMgUGllY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoKSBzZWN0aW9uOiBhbnk7XG5cbiAgdXBkYXRlUHJvcGFnYXRlZEF0dHJpYnV0ZXMoKSB7XG4gICAgdGhpcy51cGRhdGVQaWVjZUF0dHJpYnV0ZXModGhpcy5zZWN0aW9uLCBzaWduYWxlZEF0dHJpYnV0ZXMpXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc2VjdGlvbikgeyByZXR1cm47IH1cbiAgICB0aGlzLmZvcm1Db25maWcgPSB0aGlzLnNlY3Rpb24/Ll9mb3JtQ29uZmlnO1xuICAgIHRoaXMudXBkYXRlUHJvcGFnYXRlZEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLnJlcGxhY2VDdXN0b21BdHRyaWJ1dGVzKHRoaXMuc2VjdGlvbj8uY3VzdG9tQXR0cmlidXRlcyk7XG4gICAgdGhpcy5zZWN0aW9uPy5hdHRyaWJ1dGVDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCB7IG5hbWU6IGF0dHJpYnV0ZSwgdmFsdWUgPSBudWxsIH0gPSBldmVudCA/PyB7fTtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlUGFydHMgPSBhdHRyaWJ1dGU/LnNwbGl0KCcuJykgPz8gW107XG4gICAgICAgIGlmIChzaWduYWxlZEF0dHJpYnV0ZXMuaW5jbHVkZXMoYXR0cmlidXRlKSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlUGllY2VBdHRyaWJ1dGUoc2lnbmFsZWRBdHRyaWJ1dGVzLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVQYXJ0cz8ubGVuZ3RoID4gMSAmJiBhdHRyaWJ1dGVQYXJ0cz8uWzBdID09PSBDVVNUT01fQVRUUklCVVRFUykge1xuICAgICAgICAgIGNvbnN0IHN1YkF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVBhcnRzPy5bMV0gPz8gbnVsbDtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUN1c3RvbUF0dHJpYnV0ZShzdWJBdHRyaWJ1dGUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgc3RhcnQoKSB7XG4gICAgdGhpcy5zZXRGb3JtKHRoaXMuc2VjdGlvbj8uX2Zvcm0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=