tuain-ng-forms-lib
Version:
Componentes y Clases Angular para la gestión de formularios TUAIN
64 lines • 9 kB
JavaScript
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