UNPKG

tuain-ng-forms-lib

Version:

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

64 lines 9 kB
import { Component, signal, computed } from '@angular/core'; import * as i0 from "@angular/core"; const CUSTOM_ATTRIBUTES = 'customAttributes'; export class PieceComponent { form; formConfig; visible = signal(false); disabled = signal(false); enabled = computed(() => !this.disabled()); customAttributes = signal({}); setForm(form) { this.form = form; } propagatedAttributeChange(attribute, value) { } updatePieceAttribute(signaledAttributes, signaledAttribute, value) { if (!signaledAttributes.includes(signaledAttribute)) { return; } this[signaledAttribute]?.set(value); this.propagatedAttributeChange(signaledAttribute, value); } updatePieceAttributes(piece, signaledAttributes) { if (!piece) { return; } // Se recore el conjunto de los atributos propagados desde el piece y se asigna el valor respectivo for (let index = 0; index < signaledAttributes.length; index++) { const signaledAttribute = signaledAttributes[index]; try { this[signaledAttribute]?.set(piece?.[signaledAttribute]); this.propagatedAttributeChange(signaledAttribute, piece?.[signaledAttribute]); } catch (e) { console.log(`Señal ${signaledAttribute} invalida en el componente. ${e}`); } } } // Función que las subclases pueden sobrecargar para manejar un comportamiento específico customAttributeChange(subAttribute, value) { } updateCustomAttribute(attrName, attrValue) { this.customAttributes.update(oldCustomAttr => { oldCustomAttr[attrName] = attrValue; return oldCustomAttr; }); // Ejecución de función personalizada ante un cambio de atributo personalizado this.customAttributeChange(attrName, attrValue); } replaceCustomAttributes(customAttributes) { this.customAttributes.set(customAttributes ?? {}); Object.keys(customAttributes).forEach(attrName => { const attrValue = customAttributes[attrName]; // Ejecución de función personalizada ante un cambio de atributo personalizado this.customAttributeChange(attrName, attrValue); }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PieceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PieceComponent, selector: "lib-piece", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PieceComponent, decorators: [{ type: Component, args: [{ selector: 'lib-piece', template: `<ng-content></ng-content>` }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9lbGVtZW50cy9sYXlvdXQvcGllY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFNUQsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztBQUs3QyxNQUFNLE9BQU8sY0FBYztJQUN6QixJQUFJLENBQU07SUFDVixVQUFVLENBQU07SUFDaEIsT0FBTyxHQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixRQUFRLEdBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLE9BQU8sR0FBUSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNoRCxnQkFBZ0IsR0FBUSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFbkMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFbkMseUJBQXlCLENBQUMsU0FBaUIsRUFBRSxLQUFXLElBQUksQ0FBQztJQUU3RCxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxLQUFLO1FBQy9ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBSyxFQUFFLGtCQUFrQjtRQUM3QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUN2QixtR0FBbUc7UUFDbkcsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQy9ELE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDaEYsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLGlCQUFpQiwrQkFBK0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx5RkFBeUY7SUFDekYscUJBQXFCLENBQUMsWUFBb0IsRUFBRSxLQUFXLElBQUksQ0FBQztJQUU1RCxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsU0FBUztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzNDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDcEMsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSCw4RUFBOEU7UUFDOUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsZ0JBQWdCO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMvQyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3Qyw4RUFBOEU7WUFDOUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBbkRVLGNBQWM7NEZBQWQsY0FBYyxpREFGZiwyQkFBMkI7OzRGQUUxQixjQUFjO2tCQUoxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsMkJBQTJCO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBDVVNUT01fQVRUUklCVVRFUyA9ICdjdXN0b21BdHRyaWJ1dGVzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1waWVjZScsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmBcbn0pXG5leHBvcnQgY2xhc3MgUGllY2VDb21wb25lbnQge1xuICBmb3JtOiBhbnk7XG4gIGZvcm1Db25maWc6IGFueTtcbiAgdmlzaWJsZTogYW55ID0gc2lnbmFsKGZhbHNlKTtcbiAgZGlzYWJsZWQ6IGFueSA9IHNpZ25hbChmYWxzZSk7XG4gIGVuYWJsZWQ6IGFueSA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLmRpc2FibGVkKCkpO1xuICBjdXN0b21BdHRyaWJ1dGVzOiBhbnkgPSBzaWduYWwoe30pO1xuXG4gIHNldEZvcm0oZm9ybSkgeyB0aGlzLmZvcm0gPSBmb3JtOyB9XG5cbiAgcHJvcGFnYXRlZEF0dHJpYnV0ZUNoYW5nZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWU/OiBhbnkpIHsgfVxuXG4gIHVwZGF0ZVBpZWNlQXR0cmlidXRlKHNpZ25hbGVkQXR0cmlidXRlcywgc2lnbmFsZWRBdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgaWYgKCFzaWduYWxlZEF0dHJpYnV0ZXMuaW5jbHVkZXMoc2lnbmFsZWRBdHRyaWJ1dGUpKSB7IHJldHVybjsgfVxuICAgIHRoaXNbc2lnbmFsZWRBdHRyaWJ1dGVdPy5zZXQodmFsdWUpO1xuICAgIHRoaXMucHJvcGFnYXRlZEF0dHJpYnV0ZUNoYW5nZShzaWduYWxlZEF0dHJpYnV0ZSwgdmFsdWUpO1xuICB9XG5cbiAgdXBkYXRlUGllY2VBdHRyaWJ1dGVzKHBpZWNlLCBzaWduYWxlZEF0dHJpYnV0ZXMpIHtcbiAgICBpZiAoIXBpZWNlKSB7IHJldHVybjsgfVxuICAgIC8vIFNlIHJlY29yZSBlbCBjb25qdW50byBkZSBsb3MgYXRyaWJ1dG9zIHByb3BhZ2Fkb3MgZGVzZGUgZWwgcGllY2UgeSBzZSBhc2lnbmEgZWwgdmFsb3IgcmVzcGVjdGl2b1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBzaWduYWxlZEF0dHJpYnV0ZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBzaWduYWxlZEF0dHJpYnV0ZSA9IHNpZ25hbGVkQXR0cmlidXRlc1tpbmRleF07XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzW3NpZ25hbGVkQXR0cmlidXRlXT8uc2V0KHBpZWNlPy5bc2lnbmFsZWRBdHRyaWJ1dGVdKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVkQXR0cmlidXRlQ2hhbmdlKHNpZ25hbGVkQXR0cmlidXRlLCBwaWVjZT8uW3NpZ25hbGVkQXR0cmlidXRlXSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBTZcOxYWwgJHtzaWduYWxlZEF0dHJpYnV0ZX0gaW52YWxpZGEgZW4gZWwgY29tcG9uZW50ZS4gJHtlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bmNpw7NuIHF1ZSBsYXMgc3ViY2xhc2VzIHB1ZWRlbiBzb2JyZWNhcmdhciBwYXJhIG1hbmVqYXIgdW4gY29tcG9ydGFtaWVudG8gZXNwZWPDrWZpY29cbiAgY3VzdG9tQXR0cmlidXRlQ2hhbmdlKHN1YkF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZT86IGFueSkgeyB9XG5cbiAgdXBkYXRlQ3VzdG9tQXR0cmlidXRlKGF0dHJOYW1lLCBhdHRyVmFsdWUpIHtcbiAgICB0aGlzLmN1c3RvbUF0dHJpYnV0ZXMudXBkYXRlKG9sZEN1c3RvbUF0dHIgPT4ge1xuICAgICAgb2xkQ3VzdG9tQXR0clthdHRyTmFtZV0gPSBhdHRyVmFsdWU7XG4gICAgICByZXR1cm4gb2xkQ3VzdG9tQXR0cjtcbiAgICB9KTtcbiAgICAvLyBFamVjdWNpw7NuIGRlIGZ1bmNpw7NuIHBlcnNvbmFsaXphZGEgYW50ZSB1biBjYW1iaW8gZGUgYXRyaWJ1dG8gcGVyc29uYWxpemFkb1xuICAgIHRoaXMuY3VzdG9tQXR0cmlidXRlQ2hhbmdlKGF0dHJOYW1lLCBhdHRyVmFsdWUpO1xuICB9XG5cbiAgcmVwbGFjZUN1c3RvbUF0dHJpYnV0ZXMoY3VzdG9tQXR0cmlidXRlcykge1xuICAgIHRoaXMuY3VzdG9tQXR0cmlidXRlcy5zZXQoY3VzdG9tQXR0cmlidXRlcyA/PyB7fSk7XG4gICAgT2JqZWN0LmtleXMoY3VzdG9tQXR0cmlidXRlcykuZm9yRWFjaChhdHRyTmFtZSA9PiB7XG4gICAgICBjb25zdCBhdHRyVmFsdWUgPSBjdXN0b21BdHRyaWJ1dGVzW2F0dHJOYW1lXTtcbiAgICAgIC8vIEVqZWN1Y2nDs24gZGUgZnVuY2nDs24gcGVyc29uYWxpemFkYSBhbnRlIHVuIGNhbWJpbyBkZSBhdHJpYnV0byBwZXJzb25hbGl6YWRvXG4gICAgICB0aGlzLmN1c3RvbUF0dHJpYnV0ZUNoYW5nZShhdHRyTmFtZSwgYXR0clZhbHVlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19