UNPKG

tuain-ng-forms-lib

Version:

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

71 lines 10.1 kB
import { Component, signal, Input, ChangeDetectionStrategy, inject, DestroyRef } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { ElementComponent } from './layout/element.component'; import { CUSTOM_ATTRIBUTES } from '../shared/constants'; import * as i0 from "@angular/core"; const signaledAttributes = [ 'actionCode', 'actionName', 'iconName', 'inProgress', 'restrictedOnField', 'restrictedOnOperator', 'restrictedOnValue', 'visible', 'disabled', ]; export class ActionComponent extends ElementComponent { destroyRef = inject(DestroyRef); actionCode = signal(null); actionName = signal(null); iconName = signal(''); inProgress = signal(false); restrictedOnField = signal(null); restrictedOnOperator = signal(null); restrictedOnValue = signal(null); action = null; updatePropagatedAttributes() { this.updatePieceAttributes(this.action, signaledAttributes); } ngOnInit() { if (!this.action) { return; } this.action.widget = this; this.formConfig = this.action?.formConfig; this.updatePropagatedAttributes(); this.replaceCustomAttributes(this.action?.customAttributes); this.action?.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 acción: ${err}`) }); this.start(); } start() { this.setForm(this.action?.form); } activate() { if (this.action?.notifyActivation) { this.action.notifyActivation(); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActionComponent, isStandalone: true, selector: "lib-action", inputs: { action: "action" }, 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: ActionComponent, decorators: [{ type: Component, args: [{ standalone: true, selector: 'lib-action', template: `<ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush }] }], propDecorators: { action: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZWxlbWVudHMvYWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFeEQsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCO0lBQ2pHLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxVQUFVO0NBQzNDLENBQUM7QUFTRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUFDM0MsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxVQUFVLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUN6QyxVQUFVLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUN6QyxRQUFRLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDcEMsaUJBQWlCLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUNoRCxvQkFBb0IsR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBQ25ELGlCQUFpQixHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFdkMsTUFBTSxHQUFzQixJQUFJLENBQUM7SUFFMUMsMEJBQTBCO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUM7UUFDMUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsTUFBTSxFQUFFLGVBQWU7YUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZCxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDdEQsTUFBTSxjQUFjLEdBQUcsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25ELElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQzNDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7cUJBQU0sSUFBSSxjQUFjLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO29CQUNuRixNQUFNLFlBQVksR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7b0JBQ2pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxHQUFHLEVBQUUsQ0FBQztTQUNyRixDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRVEsS0FBSztRQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQzt3R0FqRFUsZUFBZTs0RkFBZixlQUFlLDJIQUpoQiwyQkFBMkI7OzRGQUkxQixlQUFlO2tCQVAzQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzhCQWFVLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgc2lnbmFsLCBJbnB1dCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgaW5qZWN0LCBEZXN0cm95UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQWN0aW9uIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9mb3Jtcy9hY3Rpb24nO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0L2VsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IENVU1RPTV9BVFRSSUJVVEVTIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnN0YW50cyc7XG5cbmNvbnN0IHNpZ25hbGVkQXR0cmlidXRlcyA9IFtcbiAgJ2FjdGlvbkNvZGUnLCAnYWN0aW9uTmFtZScsICdpY29uTmFtZScsICdpblByb2dyZXNzJywgJ3Jlc3RyaWN0ZWRPbkZpZWxkJywgJ3Jlc3RyaWN0ZWRPbk9wZXJhdG9yJyxcbiAgJ3Jlc3RyaWN0ZWRPblZhbHVlJywgJ3Zpc2libGUnLCAnZGlzYWJsZWQnLFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnbGliLWFjdGlvbicsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uQ29tcG9uZW50IGV4dGVuZHMgRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBhY3Rpb25Db2RlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBhY3Rpb25OYW1lID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBpY29uTmFtZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgaW5Qcm9ncmVzcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlc3RyaWN0ZWRPbkZpZWxkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZXN0cmljdGVkT25PcGVyYXRvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcmVzdHJpY3RlZE9uVmFsdWUgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgQElucHV0KCkgYWN0aW9uOiBGb3JtQWN0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgdXBkYXRlUHJvcGFnYXRlZEF0dHJpYnV0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVQaWVjZUF0dHJpYnV0ZXModGhpcy5hY3Rpb24sIHNpZ25hbGVkQXR0cmlidXRlcylcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hY3Rpb24pIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5hY3Rpb24ud2lkZ2V0ID0gdGhpcztcbiAgICB0aGlzLmZvcm1Db25maWcgPSB0aGlzLmFjdGlvbj8uZm9ybUNvbmZpZztcbiAgICB0aGlzLnVwZGF0ZVByb3BhZ2F0ZWRBdHRyaWJ1dGVzKCk7XG4gICAgdGhpcy5yZXBsYWNlQ3VzdG9tQXR0cmlidXRlcyh0aGlzLmFjdGlvbj8uY3VzdG9tQXR0cmlidXRlcyk7XG4gICAgdGhpcy5hY3Rpb24/LmF0dHJpYnV0ZUNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBuYW1lOiBhdHRyaWJ1dGUsIHZhbHVlID0gbnVsbCB9ID0gZXZlbnQgPz8ge307XG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlUGFydHMgPSBhdHRyaWJ1dGU/LnNwbGl0KCcuJykgPz8gW107XG4gICAgICAgICAgaWYgKHNpZ25hbGVkQXR0cmlidXRlcy5pbmNsdWRlcyhhdHRyaWJ1dGUpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBpZWNlQXR0cmlidXRlKHNpZ25hbGVkQXR0cmlidXRlcywgYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVQYXJ0cz8ubGVuZ3RoID4gMSAmJiBhdHRyaWJ1dGVQYXJ0cz8uWzBdID09PSBDVVNUT01fQVRUUklCVVRFUykge1xuICAgICAgICAgICAgY29uc3Qgc3ViQXR0cmlidXRlID0gYXR0cmlidXRlUGFydHM/LlsxXSA/PyBudWxsO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDdXN0b21BdHRyaWJ1dGUoc3ViQXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4gY29uc29sZS5lcnJvcihgRXJyb3IgZW4gcHJvcGFnYWNpw7NuIGRlIGF0cmlidXRvcyBkZSBhY2Npw7NuOiAke2Vycn1gKVxuICAgICAgfSk7XG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgc3RhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGb3JtKHRoaXMuYWN0aW9uPy5mb3JtKTtcbiAgfVxuXG4gIGFjdGl2YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGlvbj8ubm90aWZ5QWN0aXZhdGlvbikge1xuICAgICAgdGhpcy5hY3Rpb24ubm90aWZ5QWN0aXZhdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIl19