tuain-ng-forms-lib 17.1.21 → 17.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/classes/forms/table/table.mjs +6 -5
- package/esm2022/lib/components/elements/tables/table.component.mjs +4 -6
- package/fesm2022/tuain-ng-forms-lib.mjs +8 -9
- package/fesm2022/tuain-ng-forms-lib.mjs.map +1 -1
- package/lib/components/elements/tables/table.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuain-ng-forms-lib.mjs","sources":["../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/piece.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/element.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/action.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/field.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/form-error.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/form-header.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/section.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/sub-section.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/tables/table-record-action.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/tables/table-record-field.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/tables/table.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/form.constants.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/piece.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/piece-propagate.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/element.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/action.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/field.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/table/column.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/table/action.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/table/row-data.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/table/table.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/subsection.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/section.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/form.ts","../../../projects/tuain-ng-forms-lib/src/lib/services/form-manager.service.ts","../../../projects/tuain-ng-forms-lib/src/lib/services/event-manager.service.ts","../../../projects/tuain-ng-forms-lib/src/lib/services/file-manager.service.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/forms/basic-form.ts","../../../projects/tuain-ng-forms-lib/src/lib/tuain-ng-forms-lib.module.ts","../../../projects/tuain-ng-forms-lib/src/public-api.ts","../../../projects/tuain-ng-forms-lib/src/tuain-ng-forms-lib.ts"],"sourcesContent":["import { Component, signal, computed } from '@angular/core';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n@Component({\n selector: 'lib-piece',\n template: `<ng-content></ng-content>`\n})\nexport class PieceComponent {\n form: any;\n formConfig: any;\n visible: any = signal(false);\n disabled: any = signal(false);\n enabled: any = computed(() => !this.disabled());\n customAttributes: any = signal({});\n\n setForm(form) { this.form = form; }\n\n propagatedAttributeChange(attribute: string, value?: any) { }\n\n updatePieceAttribute(signaledAttributes, signaledAttribute, value) {\n if (!signaledAttributes.includes(signaledAttribute)) { return; }\n this[signaledAttribute]?.set(value);\n this.propagatedAttributeChange(signaledAttribute, value);\n }\n\n updatePieceAttributes(piece, signaledAttributes) {\n if (!piece) { return; }\n // Se recore el conjunto de los atributos propagados desde el piece y se asigna el valor respectivo\n for (let index = 0; index < signaledAttributes.length; index++) {\n const signaledAttribute = signaledAttributes[index];\n try {\n this[signaledAttribute]?.set(piece?.[signaledAttribute]);\n this.propagatedAttributeChange(signaledAttribute, piece?.[signaledAttribute]);\n } catch (e) {\n console.log(`Señal ${signaledAttribute} invalida en el componente. ${e}`);\n }\n }\n }\n\n // Función que las subclases pueden sobrecargar para manejar un comportamiento específico\n customAttributeChange(subAttribute: string, value?: any) { }\n\n updateCustomAttribute(attrName, attrValue) {\n this.customAttributes.update(oldCustomAttr => {\n oldCustomAttr[attrName] = attrValue;\n return oldCustomAttr;\n });\n // Ejecución de función personalizada ante un cambio de atributo personalizado\n this.customAttributeChange(attrName, attrValue);\n }\n\n replaceCustomAttributes(customAttributes) {\n this.customAttributes.set(customAttributes ?? {});\n Object.keys(customAttributes).forEach(attrName => {\n const attrValue = customAttributes[attrName];\n // Ejecución de función personalizada ante un cambio de atributo personalizado\n this.customAttributeChange(attrName, attrValue);\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { PieceComponent } from './piece.component';\n\n@Component({\n selector: 'lib-element',\n template: `<ng-content></ng-content>`\n})\nexport class ElementComponent extends PieceComponent {\n @Input() element: any;\n\n start() {\n this.setForm(this.element?._form);\n }\n}\n","import { Component, signal, Input, OnInit } from '@angular/core';\nimport { FormAction } from '../../classes/forms/action';\nimport { ElementComponent } from './layout/element.component';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'actionCode', 'actionName', 'iconName', 'inProgress', 'restrictedOnField', 'restrictedOnOperator',\n 'restrictedOnValue', 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-action',\n template: `<ng-content></ng-content>`\n})\n\nexport class ActionComponent extends ElementComponent implements OnInit {\n actionCode: any = signal(null);\n actionName: any = signal(null);\n iconName: any = signal(null);\n inProgress: any = signal(false);\n restrictedOnField: any = signal(null);\n restrictedOnOperator: any = signal(null);\n restrictedOnValue: any = signal(null);\n\n @Input() action: FormAction | null = null;\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.action, signaledAttributes)\n }\n\n ngOnInit() {\n if (!this.action) { return; }\n this.action.widget = this;\n this.formConfig = this.action?._formConfig;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.action?.customAttributes);\n this.action?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n override start() {\n this.setForm(this.action?._form);\n }\n\n activate() {\n if (this.action?.notifyActivation) {\n this.action.notifyActivation();\n }\n }\n}","import { Component, signal, OnInit, Input, AfterViewInit } from '@angular/core';\nimport { FieldDescriptor } from '../../classes/forms/field';\nimport { ElementComponent } from './layout/element.component'\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = ['captureType', 'errorCode', 'errorMessage', 'errorType', 'defaultValue',\n 'defaultEditable', 'alignment', 'code', 'info', 'required', 'title', 'type', 'format', 'options',\n 'hasChanged', 'maxLength', 'maxValue', 'minLength', 'minValue', 'onValidation', 'outputOnly',\n 'placeholder', 'tooltip', 'validateOnServer', 'visibleLabel', 'visible', 'disabled', 'value',\n];\n\nconst VALUE = 'value';\nconst FOCUS = 'focus';\n@Component({\n selector: 'lib-field',\n template: `<ng-content></ng-content>`\n})\nexport class FieldComponent extends ElementComponent implements AfterViewInit {\n // Atributos propagados desde el campo\n captureType: any = signal<string>('');\n errorCode: any = signal<string>('');\n errorMessage: any = signal<string>('');\n errorType: any = signal<string>('');\n defaultValue: any = signal<any>(null);\n defaultEditable: any = signal<boolean>(false);\n alignment: any = signal<string>('');\n code: any = signal<string>('');\n info: any = signal<any>(null);\n required: any = signal<boolean>(false);\n title: any = signal<string>('');\n type: any = signal<string>('');\n format: any = signal<any>(null);\n options: any = signal<any[]>([]);\n hasChanged: any = signal<boolean>(false);\n minLength: any = signal<number>(0);\n maxLength: any = signal<number>(0);\n minValue: any = signal<any>(null);\n maxValue: any = signal<any>(null);\n onValidation: any = signal<boolean>(false);\n outputOnly: any = signal<boolean>(false);\n placeholder: any = signal<string>('');\n tooltip: any = signal<string>('');\n validateOnServer: any = signal<boolean>(false);\n visibleLabel: any = signal<boolean>(true);\n\n value: any; // Valor del componente relacionado con el campo (pueden diferir en formato y tipo)\n @Input() field: FieldDescriptor | null = null;\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.field, signaledAttributes)\n }\n\n ngAfterViewInit() {\n if (!this.field) { return; }\n this.field.widget = this;\n this.formConfig = this.field?._formConfig;\n this.updatePropagatedAttributes();\n this.updateValue();\n this.replaceCustomAttributes(this.field?.customAttributes);\n this.field?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (attribute === VALUE) {\n this.updateValue();\n } else if (attribute === FOCUS) {\n this.focus();\n } else if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n updateValue() {\n this.value = this.field?.value;\n }\n\n onInputChange() { setTimeout(() => this.field?.notifyEditionPartial(), 50); }\n onChangeContent() { setTimeout(() => this.field?.notifyEditionFinish(), 50); }\n onShowInfo(detail = null) { setTimeout(() => this.field?.notifyEditionDetailRequest(detail), 50); }\n\n focus() { }\n\n updateObject(widgetUpdate = true) { this.field?.setValue(this.value, widgetUpdate); }\n\n inputChanged() {\n this.field?.setValue(this.value);\n this.onChangeContent();\n }\n\n inputTyped() {\n this.updateObject(false);\n this.onInputChange();\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-form-error',\n template: `<ng-content></ng-content>`\n})\nexport class FormErrorComponent {\n @Input() errorTitle: any;\n @Input() errorMessage: any;\n @Input() errorType: any;\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'lib-form-header',\n template: `<ng-content></ng-content>`\n})\nexport class FormHeaderComponent {\n @Input() form: any;\n @Output() goBackEvent: EventEmitter<void> = new EventEmitter<void>();\n\n goBackForm() {\n this.goBackEvent.emit();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PieceComponent } from './piece.component';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-section',\n template: `<ng-content></ng-content>`\n})\nexport class SectionComponent extends PieceComponent implements OnInit {\n @Input() section: any;\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.section, signaledAttributes)\n }\n\n ngOnInit() {\n if (!this.section) { return; }\n this.formConfig = this.section?._formConfig;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.section?.customAttributes);\n this.section?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n start() {\n this.setForm(this.section?._form);\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PieceComponent } from './piece.component';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-subsection',\n template: `<ng-content></ng-content>`\n})\nexport class SubSectionComponent extends PieceComponent implements OnInit {\n @Input() subSection: any;\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.subSection, signaledAttributes)\n }\n\n ngOnInit() {\n if (!this.subSection) { return; }\n this.formConfig = this.subSection?._formConfig;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.subSection?.customAttributes);\n this.subSection?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n start() {\n this.setForm(this.subSection?._form);\n }\n}\n","import { Component, Input, Output, OnInit, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { PieceComponent } from '../layout/piece.component';\nimport { TableEvent, TableActionEvent } from '../../../classes/forms/table/table';\nimport { TableAction } from '../../../classes/forms/table/action';\n\nconst INLINE_ACTION = 'INLINE';\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-table-record-action',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableRecordActionComponent extends PieceComponent implements OnInit {\n @Input() recordId: any;\n @Input() recordData: any;\n @Input() action: TableAction | undefined;\n\n @Output() actionSelected: EventEmitter<TableActionEvent> = new EventEmitter<TableActionEvent>();\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.action, signaledAttributes)\n }\n\n ngOnInit() {\n if (!this.action) { return; }\n this.formConfig = this.action?._formConfig;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.action?.customAttributes);\n this.start();\n }\n\n start() {\n if (this.action && this.action.restrictedOnField && this.recordData) {\n const relatedField = this.action.restrictedOnField;\n if (relatedField) {\n const relatedFieldValue = this.recordData[relatedField];\n const restrictionOper = this.action.restrictedOnOperator;\n const restrictionValue = this.action.restrictedOnValue\n if ((restrictionOper === '==' && relatedFieldValue !== restrictionValue)\n || (restrictionOper === '!=' && relatedFieldValue === restrictionValue)) {\n this.visible.set(false);\n } else {\n this.visible.set(true);\n }\n }\n }\n }\n\n onActivate() {\n const tableEvent: TableActionEvent = {\n actionCode: this.action?.actionCode ?? '',\n recordId: this.recordId,\n recordData: this.recordData,\n };\n this.actionSelected.emit(tableEvent);\n }\n\n class() { }\n}\n","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'lib-table-record-field',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableRecordFieldComponent implements OnInit {\n @Input() fieldCode: any;\n @Input() fieldType: any;\n @Input() fieldValue: any;\n @Input() column: any = null;\n\n ngOnInit() {\n this.start();\n }\n\n start() { }\n}\n","import { Component, signal, OnInit, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { TableRecordData } from '../../../classes/forms/table/row-data';\nimport { TableActionEvent } from '../../../classes/forms/table/table';\nimport { RecordTable, TableEvent } from '../../../classes/forms/table/table';\nimport { ElementComponent } from '../layout/element.component';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'allSelected', 'code', 'globalSearch', 'recordsPerPage', 'layout',\n 'columns', 'selectedRecords', 'currentPage', 'totalRecordsNumber', 'visibleRecords',\n 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-table',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableComponent extends ElementComponent implements OnInit {\n // Atributos sincronizados del objeto\n allSelected: any = signal<any>(null);\n code: any = signal<string>('');\n globalSearch: any = signal<any>(null);\n recordsPerPage: any = signal<any>(null);\n layout: any = signal<any>(null);\n columns: any = signal<any>(null);\n selectedRecords: any = signal<any>(null);\n currentPage: any = signal<any>(null);\n totalRecordsNumber: any = signal<any>(null);\n visibleRecords: any = signal<any[]>([]);\n\n globalFilterString: string = '';\n\n tableFieldStyles: any;\n loaded = false;\n selectable = false;\n hasActions = false;\n inlineActions: any;\n globalActions: any;\n selectionActions: any;\n\n @Input() table: RecordTable | null = null;\n @Input() waiting: boolean = false;\n\n ngOnInit() {\n if (!this.table) { return; }\n this.table.setWidget(this);\n this.formConfig = this.table?._formConfig;\n\n this.tableFieldStyles = this.formConfig?.tableFieldStyles;\n this.selectable = this.table?.selectable;\n this.hasActions = this.table?.hasActions();\n this.inlineActions = this.table?.getActions(this.formConfig?.tableActions.inline);\n this.globalActions = this.table?.getActions(this.formConfig?.tableActions.global);\n this.selectionActions = this.table?.getActions(this.formConfig?.tableActions.selection);\n this.globalFilterString = this.table?.globalFilterString;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.table?.customAttributes);\n\n this.table?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (attribute === 'visibleRecords') {\n this.visibleRecords.set(value ?? []);\n this.updateTableData();\n } else if (attribute === 'globalFilterString') {\n this.globalFilterString = value;\n } else if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.table, signaledAttributes)\n }\n\n updateTableData() { }\n tableGlobalAction(actionCode: string) { this.table?.notifyGlobalAction(actionCode); }\n tableSelectionAction(actionCode: string) { this.table?.notifySelectionAction(actionCode); }\n tableActionSelected(actionEvent: TableActionEvent) { this.table?.notifyInlineAction(actionEvent); }\n tableSelectionToggle(recordId: any) { this.table?.notifyRecordSelection(recordId); }\n toggleSelectAll() { return (this.table?.allSelected) ? this.table?.unSelectAll() : this.table?.selectAll(); }\n globalFilterCompleted() { this.changePage(1); }\n changePage(requestedPage: number) { this.table?.changePage(requestedPage); }\n tableColumnSort(columnName: string, direction = null) { this.table?.sort(columnName, direction ?? 'ascend'); }\n globalFilterChanged() { this.table?.setGlobalFilterString(this.globalFilterString?.trim() ?? '', false); }\n\n filterHasChanged(column, values) {\n if (!values || values.length === 0) {\n this.table?.removeColumnFilter(column.fieldCode);\n } else {\n this.table?.addColumnFilter(column.fieldCode, values);\n }\n }\n}\n","export const NO_ERROR = '00';\nexport const HEADER = 'HEADER';\n\nexport const elementTypes = {\n action: 'ACTION',\n field: 'FIELD',\n table: 'TABLE',\n};\n\nexport const formActions = {\n tableAction: 'TABLEACTION',\n getData: 'GETDATA',\n getTableData: 'GETTABLEDATA',\n validate: 'VALIDATE',\n};\n\nexport const operators = {\n G: 'G',\n L: 'L',\n GE: 'GE',\n LE: 'LE',\n EQ: 'EQ',\n NEQ: 'NEQ',\n HAS: 'HAS',\n NOTHAS: 'NOTHAS',\n BETWEEN: 'BETWEEN',\n IN: 'IN',\n};\n","export class FormPiece {\n protected _formState: string = '';\n protected _visibleForced: boolean;\n protected _isForced: boolean;\n protected _absoluteVisible: boolean = true;\n protected _absoluteDisabled: boolean = false;\n protected _widget: any = null;\n\n protected visibleStates: string[] = [];\n protected enabledStates: string[] = [];\n\n public _form: any = null;\n public _formConfig: any;\n public _visible: boolean = true;\n public _disabled: boolean = false;\n public customAttributes: any = {};\n\n constructor(pieceDefinition: any, formConfig: any) {\n this._formConfig = formConfig;\n this._isForced = false;\n this._visibleForced = false;\n this.setVisibleStates(pieceDefinition.visibleStates);\n this.setEnabledStates(pieceDefinition.enabledStates);\n\n this.enabled = !pieceDefinition?.disabled ?? false;\n this.setVisibility(pieceDefinition?.visible ?? true);\n this.customAttributes = pieceDefinition?.customAttributes ?? {};\n if (pieceDefinition?.customAttributes) {\n Object.keys(pieceDefinition?.customAttributes)\n ?.forEach(attr => this.customAttributes[attr] = pieceDefinition?.customAttributes[attr])\n }\n }\n\n getCustomAttribute(name: string): any { return this.customAttributes?.[name] ?? null; }\n setCustomAttribute(name: string, value: any): void { if (name) { this.customAttributes[name] = value; } }\n\n setCustomAttributes(attributes: any): FormPiece {\n Object.entries(attributes).forEach(([name, value]) => {\n this.setCustomAttribute(name, value);\n });\n return this;\n }\n\n matchAttribute(name: string, value: string): boolean { return this.customAttributes?.[name] === value; }\n\n setVisibleStates(newStates: any): void {\n const visibleStates = (!Array.isArray(newStates) && typeof newStates === 'string')\n ? newStates.split(',').map(state => state.trim()).filter(state => state.length > 0)\n : newStates;\n this.visibleStates = (Array.isArray(visibleStates)) ? [...(new Set(visibleStates))] : [];\n }\n\n addVisibleState(state: string) {\n if (!this.visibleStates.includes(state)) {\n this.visibleStates.push(state);\n }\n }\n\n removeVisibleState(state: string) {\n const existStateIdx = this.visibleStates.findIndex(st => st === state);\n if (existStateIdx >= 0) {\n this.visibleStates.splice(existStateIdx, 1);\n }\n }\n\n setEnabledStates(newStates: any): void {\n const enabledStates = (!Array.isArray(newStates) && typeof newStates === 'string')\n ? newStates.split(',').map(state => state.trim()).filter(state => state.length > 0)\n : newStates;\n this.enabledStates = (Array.isArray(enabledStates)) ? [...(new Set(enabledStates))] : [];\n }\n\n addEnabledState(state: string) {\n if (!this.enabledStates.includes(state)) {\n this.enabledStates.push(state);\n }\n }\n\n removeEnabledState(state: string) {\n const existStateIdx = this.enabledStates.findIndex(st => st === state);\n if (existStateIdx >= 0) {\n this.enabledStates.splice(existStateIdx, 1);\n }\n }\n\n viewOnState(state: string): boolean { return (this.visibleStates && state) ? this.visibleStates.includes(state) : false; }\n enabledOnState(state: string): boolean { return (this.enabledStates && state) ? this.enabledStates.includes(state) : false; }\n\n get absoluteVisible(): boolean { return this._absoluteVisible; }\n get absoluteDisabled(): boolean { return this._absoluteDisabled; }\n\n get visible(): boolean { return this._visible; }\n set visible(visible: boolean) { this.setVisibility(visible); }\n\n visibleOn(state: string): boolean {\n return this._absoluteVisible && this.viewOnState(state);\n }\n\n enabledOn(state: string): boolean {\n return !this._absoluteDisabled && this.enabledOnState(state);\n }\n\n setVisibility(visible: boolean, forced: boolean | null = null): void {\n this._absoluteVisible = !!visible;\n if (forced !== null) {\n this._isForced = forced;\n this._visibleForced = visible;\n }\n this._visible = this._absoluteVisible && this.viewOnState(this._formState);\n }\n\n show(forced: boolean | null = null): void {\n this.setVisibility(true, forced);\n }\n\n hide(forced: boolean | null = null): void {\n this.setVisibility(false, forced);\n }\n\n get enabled(): boolean { return !this._disabled; }\n set enabled(enabled) {\n this._absoluteDisabled = !enabled;\n this._disabled = this._absoluteDisabled || !this.enabledOnState(this._formState);\n }\n\n get editable(): boolean { return !this._disabled; }\n\n get disabled(): boolean { return this._disabled; }\n\n set disabled(disabled) { this.enabled = !disabled; }\n\n enable(): void { this.enabled = true; }\n disable(): void { this.enabled = false; }\n\n formStateChangeCustomSubscribe(form, formChangeSubject) { }\n\n formStateChange(state) {\n if (state) {\n this._formState = state;\n this._visible = this._absoluteVisible && this.viewOnState(state);\n this._disabled = this._absoluteDisabled || !this.enabledOnState(state);\n }\n }\n\n connectWithParentForm(form, formChangeSubject) {\n this._form = form;\n this.formStateChangeCustomSubscribe(form, formChangeSubject);\n formChangeSubject.subscribe(event => this.formStateChange(event?.state));\n }\n\n set widget(widget) { this._widget = widget; }\n get widget() { return this._widget; }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { FormPiece } from './piece';\n\nconst VISIBLE = 'visible';\nconst DISABLED = 'disabled';\n\nexport class FormPiecePropagate extends FormPiece {\n protected propagationCustomAttributes: string[] = [];\n protected _attributeChange: BehaviorSubject<any>;\n\n constructor(pieceDefinition: any, formConfig: any) {\n super(pieceDefinition, formConfig);\n this._attributeChange = new BehaviorSubject<any>(null);\n }\n\n get attributeChange() { return this._attributeChange; }\n\n propagateAttribute(name, value) {\n this._attributeChange?.next({ name, value });\n }\n\n override setCustomAttribute(name: string, value: any): void {\n super.setCustomAttribute(name, value);\n if (this.propagationCustomAttributes?.includes(name)) {\n const fullName = `customAttributes.${name}`;\n this.propagateAttribute(fullName, value);\n }\n }\n\n override setVisibility(visible: boolean, forced: boolean | null = null): void {\n super.setVisibility(visible, forced);\n this.propagateAttribute(VISIBLE, this._visible);\n }\n\n override set enabled(enabled) {\n super.enabled = enabled;\n this.propagateAttribute(DISABLED, this._disabled);\n }\n\n override formStateChange(state) {\n super.formStateChange(state);\n if (state) {\n this.propagateAttribute(VISIBLE, this._visible);\n this.propagateAttribute(DISABLED, this._disabled);\n }\n }\n}\n","import { FormPiecePropagate } from './piece-propagate';\nimport { elementTypes } from './form.constants';\nexport class FormElement extends FormPiecePropagate {\n elementType: string | null = null;\n\n constructor(elementDefinition: any, formConfig: any) {\n super(elementDefinition, formConfig);\n }\n\n setAttr(attr: any, value: any) {\n const { name: attrName, propagate: name } = attr;\n try {\n const currentValue = this[attrName];\n if (currentValue !== value) {\n this[attrName] = value;\n name && this.propagateAttribute(name, value);\n }\n } catch (e) {\n console.log(`Atributo ${attrName} no presente o valor ${value} inconsistente. ${e}`);\n }\n }\n\n isField(): boolean { return this.elementType === elementTypes.field; }\n isAction(): boolean { return this.elementType === elementTypes.action; }\n isTable(): boolean { return this.elementType === elementTypes.table; }\n}\n","import { Subject } from 'rxjs';\nimport { elementTypes } from './form.constants';\nimport { FormElement } from './element';\n\nconst HEADER = 'HEADER';\n\nconst attrs = {\n actionCode: { name: '_actionCode', propagate: 'actionCode' },\n actionName: { name: '_actionName', propagate: 'actionName' },\n iconName: { name: '_iconName', propagate: 'iconName' },\n inProgress: { name: '_inProgress', propagate: 'inProgress' },\n restrictedOnField: { name: '_restrictedOnField', propagate: 'restrictedOnField' },\n restrictedOnOperator: { name: '_restrictedOnOperator', propagate: 'restrictedOnOperator' },\n restrictedOnValue: { name: '_restrictedOnValue', propagate: 'restrictedOnValue' },\n}\n\nexport class FormAction extends FormElement {\n private readonly _actionActivated = new Subject<string>();\n private _actionCode: string = '';\n private _actionName: string = '';\n private _iconName: string = '';\n private _inProgress = false;\n private _newState: string;\n private _backend: boolean;\n private _restrictedOnField: string | null = null;\n private _restrictedOnOperator: string | null = null;\n private _restrictedOnValue: string | null = null;\n\n constructor(actionDefinition, formConfig) {\n super(actionDefinition, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.actions ?? [];\n this.elementType = elementTypes.action;\n this.setAttr(attrs.actionCode, actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '');\n this.setAttr(attrs.actionName, actionDefinition.actionTitle);\n this.setAttr(attrs.iconName, actionDefinition.iconName || this._actionCode);\n this.setAttr(attrs.restrictedOnField, actionDefinition.fieldRestrictedCode?.toString() ?? null);\n if (this._restrictedOnField) {\n this.setAttr(attrs.restrictedOnOperator, actionDefinition.operatorRestricted || '');\n this.setAttr(attrs.restrictedOnValue, actionDefinition.valueRestricted ?? '');\n }\n this._backend = actionDefinition?.serverAction ?? false;\n this._newState = actionDefinition?.newState;\n this.setCustomAttribute('location', actionDefinition.position || HEADER);\n }\n\n get actionCode() { return this._actionCode; }\n get actionName() { return this._actionName; }\n get iconName() { return this._iconName; }\n get inProgress() { return this._inProgress; }\n get newState() { return this._newState; }\n get backend() { return this._backend; }\n get restrictedOnField() { return this._restrictedOnField; }\n get restrictedOnOperator() { return this._restrictedOnOperator; }\n get restrictedOnValue() { return this._restrictedOnValue; }\n\n set actionCode(actionCode) { this.setAttr(attrs.actionCode, actionCode); }\n set actionName(actionName) { this.setAttr(attrs.actionName, actionName); }\n set iconName(iconName) { this.setAttr(attrs.iconName, iconName); }\n set inProgress(inProgress) { this.setAttr(attrs.inProgress, inProgress); }\n set newState(newState) { this._newState, newState; }\n set backend(backend) { this._backend, backend; }\n set restrictedOnField(restrictedOnField) { this.setAttr(attrs.restrictedOnField, restrictedOnField); }\n set restrictedOnOperator(restrictedOnOperator) { this.setAttr(attrs.restrictedOnOperator, restrictedOnOperator); }\n set restrictedOnValue(restrictedOnValue) { this.setAttr(attrs.restrictedOnValue, restrictedOnValue); }\n\n start() { this.inProgress = true; }\n stop() { this.inProgress = false; }\n\n override connectWithParentForm(form, formChangeSubject) {\n super.connectWithParentForm(form, formChangeSubject);\n if (this._restrictedOnField) {\n const relatedField = this._form.fields?.[this._restrictedOnField];\n if (relatedField) {\n relatedField.editionFinish.subscribe(event => this.updateRestrictedVisibility(event));\n relatedField.editionPartial.subscribe(event => this.updateRestrictedVisibility(event));\n }\n }\n }\n\n updateRestrictedVisibility(event) {\n const newVisible = this._absoluteVisible && this.viewOnState(this._formState);\n (this._visible !== newVisible) && this.setVisibility(newVisible);\n }\n\n override viewOnState(state: string): boolean {\n const actionVisible = (this.visibleStates && state) ? this.visibleStates.includes(state) : false;\n if (actionVisible && this._form && this._restrictedOnField) {\n const relatedField = this._form.fields?.[this._restrictedOnField];\n if (relatedField) {\n const fieldValue = relatedField.value;\n if ((this._restrictedOnOperator === '==' && fieldValue !== this._restrictedOnValue)\n || (this._restrictedOnOperator === '!=' && fieldValue === this._restrictedOnValue)) {\n return false;\n }\n }\n }\n return actionVisible;\n }\n\n get actionActivated() { return this._actionActivated; }\n\n notifyActivation() { this._actionActivated.next(this._actionCode); }\n\n updateFromServer(receivedAction) {\n for (const propertyName in receivedAction) {\n if (propertyName !== 'actionCode' && propertyName !== 'actionId') {\n try {\n this[propertyName] = receivedAction[propertyName];\n } catch (e) {\n console.log(`Error actualizando la propiedad ${propertyName} de la acción ${this.actionCode}. ${e}`);\n }\n }\n }\n }\n}\n","import { Subject } from 'rxjs';\nimport yn from 'yn';\nimport { elementTypes, NO_ERROR } from './form.constants';\nimport { FormElement } from './element';\n\nconst UNDEFINED = 'undefined';\n\nconst DEFAULT_ERROR_TYPE = 'error';\nconst DEFAULT_CAPTURE_TYPE = 'INPUT';\nconst DEFAULT_ALIGNMENT = 'left';\n\nconst STD_MAX_LENGTH = 50;\nconst BIG_MAX_LENGTH = 500;\n\nconst directChanges = [\n 'defaultEditable', 'defaultValue', 'alignment', 'required', 'errorCode', 'errorMessage', 'errorType',\n 'tooltip', 'info', 'format', 'intrinsicErrorMessage', 'outputOnly', 'captureType', 'title', 'type',\n 'maxLength', 'maxValue', 'minLength', 'minValue', 'validateOnServer', 'serverAction', 'visibleLabel',\n 'options', 'placeholder',\n];\n\nconst attrs = {\n captureType: { name: '_captureType', propagate: 'captureType' },\n errorCode: { name: '_errorCode', propagate: 'errorCode' },\n errorMessage: { name: '_errorMessage', propagate: 'errorMessage' },\n errorType: { name: '_errorType', propagate: 'errorType' },\n defaultValue: { name: '_defaultValue', propagate: 'defaultValue' },\n defaultEditable: { name: '_defaultEditable', propagate: 'defaultEditable' },\n fieldAlignment: { name: '_fieldAlignment', propagate: 'alignment' },\n fieldCode: { name: '_fieldCode', propagate: 'code' },\n fieldInfo: { name: '_fieldInfo', propagate: 'info' },\n fieldRequired: { name: '_fieldRequired', propagate: 'required' },\n fieldTitle: { name: '_fieldTitle', propagate: 'title' },\n fieldType: { name: '_fieldType', propagate: 'type' },\n fieldFormat: { name: '_fieldFormat', propagate: 'format' },\n fieldOptions: { name: '_fieldOptions', propagate: 'options' },\n focus: { name: '_focus', propagate: 'focus' },\n hasChanged: { name: '_hasChanged', propagate: 'hasChanged' },\n intrinsicErrorMessage: { name: '_intrinsicErrorMessage', propagate: null },\n maxLength: { name: '_maxLength', propagate: 'maxLength' },\n maxValue: { name: '_maxValue', propagate: 'maxValue' },\n minLength: { name: '_minLength', propagate: 'minLength' },\n minValue: { name: '_minValue', propagate: 'minValue' },\n onValidation: { name: '_onValidation', propagate: 'onValidation' },\n outputOnly: { name: '_outputOnly', propagate: 'outputOnly' },\n placeholder: { name: '_placeholder', propagate: 'placeholder' },\n tooltipText: { name: '_tooltipText', propagate: 'tooltip' },\n validateOnServer: { name: '_validateOnServer', propagate: 'validateOnServer' },\n value: { name: '_value', propagate: 'value' },\n visibleLabel: { name: '_visibleLabel', propagate: 'visibleLabel' },\n};\n\nexport interface DetailEvent {\n code: string;\n detail: any;\n}\n\nexport interface FieldOption {\n fieldOptionValue: string;\n fieldOptionId: string;\n}\n\nexport class FieldDescriptor extends FormElement {\n private readonly _editionFinish = new Subject<any>();\n private readonly _editionPartial = new Subject<any>();\n private readonly _detailRequest = new Subject<DetailEvent>();\n\n private _errorType: string = '';\n private _errorCode: string = '';\n private _errorMessage: string = '';\n private _intrinsicErrorMessage: string = '';\n private _minValue: any;\n private _maxValue: any;\n private _maxLength: number = 0;\n private _minLength: number = 0;\n private _focus: boolean = false;\n private _onValidation: boolean = false;\n private _validateOnServer: boolean = false;\n private _value: any;\n private _visibleLabel: boolean = false;\n private _captureType: string = '';\n private _defaultValue: any = '';\n private _defaultEditable: boolean = false;\n private _externalValue: any;\n private _fieldAlignment: string = '';\n private _fieldInfo: any = '';\n private _fieldRequired: boolean = false;\n private _fieldTitle: string = '';\n private _fieldType: string = '';\n private _fieldFormat: RegExp | null = null;\n private _hasChanged: boolean = false;\n private _outputOnly: boolean = false;\n private _tooltipText: string = '';\n private _placeholder: string = '';\n private _fieldCode: string = '';\n private _fieldOptions: FieldOption[] | null = null;\n\n constructor(inputFieldReceived, formConfig) {\n super(inputFieldReceived, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.fields ?? [];\n this.elementType = elementTypes.field;\n const fld = (inputFieldReceived) ? inputFieldReceived : {};\n this.setAttr(attrs.fieldCode, fld.fieldCode);\n this.title = fld.fieldTitle ?? this._fieldCode;\n this.placeholder = fld.placeholder ?? this.title;\n this.type = fld.fieldTypeCode;\n this.captureType = fld.captureType ?? DEFAULT_CAPTURE_TYPE;\n\n const defaultValue = fld.defaultValue ?? null;\n if (this._fieldType === this._formConfig.fieldTypes.boolean) {\n this.defaultValue = defaultValue ?? false;\n } else {\n this.defaultValue = defaultValue;\n }\n const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this._fieldType] != null)\n ? this._formConfig.tableFieldStyles[this._fieldType]['text-align'] : DEFAULT_ALIGNMENT;\n const fieldAlignment = (fld.alignment != null) ? fld.alignment.toLowerCase() : defaultTypeAlignment;\n this.alignment = fieldAlignment;\n this.info = fld.info || '';\n let fieldFormat;\n try {\n if (fld.format && typeof fld.format === 'string') {\n fieldFormat = new RegExp(fld.format);\n } else if (fld.format?.regExp) {\n fieldFormat = new RegExp(fld.format?.regExp);\n }\n } catch (e) {\n fieldFormat = null;\n }\n this.format = fieldFormat;\n this.validateOnServer = fld.serverAction ?? false;\n this.tooltip = fld.tooltip || '';\n this.defaultEditable = this.enabled;\n this.required = fld.required ?? false;\n this.outputOnly = fld.outputOnly ?? false;\n this.minLength = fld.minLength ?? 0;\n this.maxLength = fld.maxLength || (this._captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);\n this.intrinsicErrorMessage = this._formConfig?.fieldValidations?.[this._fieldType]?.message\n ?? this._formConfig?.fieldValidations?.DEFAULT?.message ?? '';\n\n this.setError(fld.errorCode, fld.errorMessage, fld.errorType ?? DEFAULT_ERROR_TYPE);\n this.setEditable(fld.editable ?? true);\n this.visibleLabel = fld.visibleLabel ?? true;\n this.setVisibility(fld.visible);\n this.options = fld.fieldOptions;\n this._setValue(fld.fieldValue ?? this._defaultValue ?? '');\n }\n\n get alignment() { return this._fieldAlignment; }\n set alignment(alignment) { this.setAttr(attrs.fieldAlignment, alignment); }\n get backend() { return this._validateOnServer; }\n\n get captureType() { return this._captureType; }\n set captureType(captureType) { this.setAttr(attrs.captureType, captureType); }\n\n get placeholder() { return this._placeholder; }\n set placeholder(placeholder) { this.setAttr(attrs.placeholder, placeholder); }\n\n get code() { return this._fieldCode; }\n get defaultValue() { return this._defaultValue; }\n set defaultValue(defaultValue) { this.setAttr(attrs.defaultValue, defaultValue); }\n get defaultEditable() { return this._defaultEditable; }\n set defaultEditable(editable) { this.setAttr(attrs.defaultEditable, editable); }\n get detailRequest() { return this._detailRequest; }\n get editionFinish() { return this._editionFinish; }\n get editionPartial() { return this._editionPartial; }\n\n get empty(): boolean {\n const fieldCurrentValue = this.value;\n if (fieldCurrentValue === undefined || fieldCurrentValue === null) {\n return true;\n }\n if (this._fieldType === this._formConfig.fieldTypes.array\n && Array.isArray(fieldCurrentValue) && fieldCurrentValue.length === 0) {\n return true;\n };\n if (this._fieldType === this._formConfig.fieldTypes.phone) {\n if (!Array.isArray(fieldCurrentValue)) {\n return true;\n }\n if (fieldCurrentValue.length !== 2 || !fieldCurrentValue[0] || !fieldCurrentValue[1]) {\n return true;\n }\n return false;\n };\n const arrayFieldTypes = this._formConfig.arrayFieldTypes ?? null;\n if (arrayFieldTypes && Object.keys(arrayFieldTypes).includes(this._fieldType)) {\n let arraySize = arrayFieldTypes[this._fieldType];\n arraySize = !Number.isNaN(+arraySize) ? +arraySize : 0;\n if (arraySize === 0) {\n return (Array.isArray(fieldCurrentValue) && fieldCurrentValue.length === 0);\n }\n return (Array.isArray(fieldCurrentValue) && fieldCurrentValue.length < arraySize);\n };\n return fieldCurrentValue === '';\n }\n\n get error() { return { type: this._errorType, code: this._errorCode, message: this._errorMessage }; }\n set error(errorObj) { this.setError(errorObj.code, errorObj.message, errorObj.type ?? DEFAULT_ERROR_TYPE) }\n get errorCode() { return this._errorCode; }\n set errorCode(code) { this.setError(code, this._errorMessage); }\n get errorMessage() { return this._errorMessage; }\n set errorMessage(msg) { this.setError(this._errorCode, msg); }\n get errorType() { return this._errorType; }\n get externalValue() { return this._externalValue; }\n get format() { return this._fieldFormat; }\n set format(format) { this.setAttr(attrs.fieldFormat, format); }\n get hasChanged() { return this._hasChanged; }\n set hasChanged(hasChanged) { this.setAttr(attrs.hasChanged, hasChanged); }\n\n get info() { return this._fieldInfo; }\n set info(newInfo: string) { this.setAttr(attrs.fieldInfo, newInfo); }\n set intrinsicErrorMessage(message: string) { this.setAttr(attrs.intrinsicErrorMessage, message); }\n get maxLength() { return (this._maxLength > 0) ? this._maxLength.toString() : ''; }\n set maxLength(requiredMaxLength: any) { this.setAttr(attrs.maxLength, requiredMaxLength ? +requiredMaxLength : null); }\n get maxValue() { return this._maxValue; }\n\n set maxValue(inputMaxValue) {\n let maxValue = inputMaxValue;\n if (this._fieldType === this._formConfig.fieldTypes.date) {\n maxValue = new Date(maxValue);\n }\n this.setAttr(attrs.maxValue, maxValue);\n }\n\n get minLength() { return this._minLength; }\n set minLength(requiredMinLength: number) {\n this.setAttr(attrs.minLength, requiredMinLength ? +requiredMinLength : null);\n }\n get minValue() { return this._minValue; }\n\n set minValue(inputMinValue) {\n let minValue = inputMinValue;\n if (this._fieldType === this._formConfig.fieldTypes.date) {\n minValue = new Date(minValue);\n }\n this.setAttr(attrs.minValue, minValue);\n }\n\n get name() { return this._fieldCode; }\n\n get options(): FieldOption[] | null {\n return this._fieldOptions?.map(option => {\n const optionCopy: FieldOption = { ...option };\n return optionCopy;\n }) ?? [];\n }\n\n set options(newOptions) {\n if ((!this._formConfig.captureTypesWithOptions.includes(this._captureType))\n || typeof newOptions === UNDEFINED || !newOptions\n || !Array.isArray(newOptions)) {\n return;\n }\n let fieldOptions = newOptions.map((option: any) => {\n if (option.text !== undefined && option.text !== null\n && option.value !== undefined && option.value !== null) {\n return { fieldOptionValue: option.text, fieldOptionId: option.value };\n }\n return option;\n });\n fieldOptions = (fieldOptions && Array.isArray(fieldOptions)\n && fieldOptions.length > 0) ? fieldOptions : [];\n this.setAttr(attrs.fieldOptions, fieldOptions);\n if (this._value) {\n if (this._fieldType === this._formConfig.fieldTypes.array && Array.isArray(this._value)) {\n const fieldValue = this._value?.filter(item =>\n this._fieldOptions?.find(opt => opt.fieldOptionId === item)\n );\n this.setAttr(attrs.value, fieldValue);\n } else {\n const valInOptions = this._fieldOptions?.find(item => item.fieldOptionId === this._value);\n if (!valInOptions) {\n this._setValue('');\n }\n }\n }\n if (this._fieldRequired && this._fieldOptions?.length === 1 && this._value !== this._fieldOptions?.[0].fieldOptionId) {\n this._setValue(this._fieldOptions?.[0].fieldOptionId);\n this.notifyEditionFinish();\n }\n }\n\n get optionText() { return this._fieldOptions?.find(item => item.fieldOptionId === this._value)?.fieldOptionValue ?? null; }\n get outputOnly() { return this._outputOnly; }\n set outputOnly(outputOnly) { this.setAttr(attrs.outputOnly, outputOnly); }\n get required(): boolean { return this._fieldRequired; }\n set required(required: boolean) { this.setAttr(attrs.fieldRequired, required ?? false); }\n get title() { return this._fieldTitle; }\n set title(title) { this.setAttr(attrs.fieldTitle, title?.toString() ?? ''); }\n get tooltip() { return this._tooltipText; }\n set tooltip(tooltip) { this.setAttr(attrs.tooltipText, tooltip); }\n get type() { return this._fieldType; }\n set type(fieldType) { this.setAttr(attrs.fieldType, fieldType); }\n get onValidation() { return this._onValidation; }\n get validating() { return this._onValidation; }\n set validating(isValidating: boolean) { this.setAttr(attrs.onValidation, isValidating); }\n get value() {\n return (this._fieldType === this._formConfig.fieldTypes.boolean\n || this._fieldType === this._formConfig.fieldTypes.check) ? yn(this._value) : this._value;\n }\n get validateOnServer() { return this._validateOnServer; }\n set validateOnServer(validateOnServer) { this.setAttr(attrs.validateOnServer, validateOnServer); }\n get serverAction() { return this._validateOnServer; }\n set serverAction(validateOnServer: boolean) { this.validateOnServer = validateOnServer; }\n\n set value(newValue) { this._setValue(newValue); }\n get visibleLabel() { return this._visibleLabel; }\n set visibleLabel(visibleLabel: boolean) { this.setAttr(attrs.visibleLabel, visibleLabel); }\n\n /**\n * @deprecated Use value\n */\n get fieldValue() { return this.value; }\n\n /**\n * @deprecated Use hasChanged\n */\n changed(hasChanged = true) { this.hasChanged = hasChanged; }\n\n clean() { this._setValue(this._defaultValue || ''); this.resetError(); }\n focus() { this.setAttr(attrs.focus, true); }\n getErrorCode() { return this.error.code; }\n setErrorCode(code) { this.setError(code, this._errorMessage); }\n getErrorMessage() { return this.error.message; }\n setErrorMessage(msg) { this.setError(this._errorCode, msg); }\n getRequired() { return this.required; }\n hasError() { return this._errorCode !== NO_ERROR; }\n hideLabel() { this.visibleLabel = false; }\n resetError() { (this._errorCode !== NO_ERROR) && this.setError(NO_ERROR, null); }\n setEditable(editable: boolean = true) { (editable) ? this.enable() : this.disable(); }\n setValue(newValue, widgetUpdate = true) { this._setValue(newValue, widgetUpdate); }\n showLabel() { this.visibleLabel = true; }\n\n /**\n * @deprecated Use code\n */\n get fieldCode() { return this._fieldCode; }\n\n\n /**\n * @deprecated Use title\n */\n setLabel(label) { this.title = label; }\n\n /**\n * @deprecated Use required\n */\n setRequired(required: boolean) { this.required = required; }\n\n /**\n * @deprecated Use changed\n */\n setChanged(hasChanged: boolean) { this.changed(hasChanged); }\n\n /**\n * @deprecated Use value\n */\n getValue(): any { return this.value; }\n\n /**\n * @deprecated Use empty\n */\n isEmpty(): boolean { return this.empty }\n\n /**\n * @deprecated Use error\n */\n getError() { return this.error; }\n\n /**\n * @deprecated Use optionText\n */\n getOptionText() { return this.optionText; }\n\n /**\n * @deprecated Use options\n */\n getFieldOptions() { return this.options; }\n\n /**\n * @deprecated Use options\n */\n setFieldOptions(newOptions) { return this.options = newOptions; }\n\n /**\n * @deprecated Use intrinsicErrorMessage\n */\n setIntrinsicErrorMessage(message: string) { this.intrinsicErrorMessage = message; }\n\n /**\n * @deprecated Use maxValue\n */\n setMaxValue(inputMaxValue) { this.maxValue = inputMaxValue; }\n\n /**\n * @deprecated Use minValue\n */\n setMinValue(inputMinValue) { this.minValue = inputMinValue; }\n\n /**\n * @deprecated Use showLabel\n */\n setVisibleLabel(visibleLabel: boolean) { this.visibleLabel = visibleLabel; }\n\n\n notifyEditionPartial() {\n this.resetError();\n this._editionPartial.next({ code: this._fieldCode, intrinsicValidation: true });\n }\n\n notifyEditionFinish() {\n const fieldValue = this.value;\n this.resetError();\n const validationConfig = this._formConfig.fieldValidations?.[this._fieldType] ?? {};\n const { type, validation } = validationConfig;\n let message = validationConfig?.message;\n let intrinsicValidation = true;\n if (fieldValue && (validation || this._fieldFormat)) {\n if (type === 'regexp') {\n intrinsicValidation = (validation?.test(fieldValue) ?? true)\n && (this._fieldFormat?.test(fieldValue) ?? true);\n } else if (type === 'function' && typeof validation === 'function') {\n const { valid, message: customMessage } = validation(fieldValue, this);\n intrinsicValidation = valid;\n message = customMessage;\n }\n if (!intrinsicValidation) {\n this.setError('99', message ?? this._intrinsicErrorMessage);\n }\n }\n if (intrinsicValidation && fieldValue && this._minValue && fieldValue < this._minValue) {\n intrinsicValidation = false;\n this.setError('99', 'Campo con valor inferior al mínimo');\n }\n if (intrinsicValidation && fieldValue && this._maxValue && fieldValue > this._maxValue) {\n intrinsicValidation = false;\n this.setError('99', 'Campo con valor superior al máximo');\n }\n if (intrinsicValidation && fieldValue && typeof fieldValue === 'string'\n && this._minLength && fieldValue?.length < this._minLength) {\n intrinsicValidation = false;\n this.setError('99', `Longitud de ${this._fieldTitle} debe ser de al menos ${this._minLength}`);\n }\n this._editionFinish.next({ code: this._fieldCode, intrinsicValidation });\n }\n\n notifyEditionDetailRequest(detail: any) {\n const detailEvent: DetailEvent = { code: this._fieldCode, detail };\n this._detailRequest.next(detailEvent);\n }\n\n setError(code, message, type = DEFAULT_ERROR_TYPE) {\n this.setAttr(attrs.errorCode, code ?? NO_ERROR);\n this.setAttr(attrs.errorType, (this._errorCode === NO_ERROR) ? '' : type);\n this.setAttr(attrs.errorMessage, message ?? '');\n }\n\n updateFromServer(fld) {\n const fieldKeys = Object.keys(fld);\n for (let index = 0; index < fieldKeys.length; index++) {\n const attrName = fieldKeys[index];\n const attrValue = fld[attrName];\n if (directChanges.includes(attrName)) {\n this[attrName] = attrValue;\n } else {\n (attrName === 'label') && (this.title = attrValue);\n (attrName === 'labelVisible') && (this.visibleLabel = attrValue);\n (attrName === 'editable') && this.setEditable(attrValue);\n (attrName === 'visible') && this.setVisibility(attrValue);\n (attrName === 'value') && (this._setValue(attrValue) && (this.hasChanged = false));\n (attrName === 'fieldValue') && (this._setValue(attrValue) && (this.hasChanged = false));\n (attrName === 'fieldOptions') && (this.options = attrValue);\n (attrName === 'fieldTitle') && (this.title = attrValue);\n (attrName === 'fieldTypeCode') && (this.type = attrValue);\n (attrName === 'fieldType') && (this.type = attrValue);\n (attrName === 'tooltipText') && (this.tooltip = attrValue);\n }\n }\n }\n\n private _setValue(newValue, widgetUpdate = true) {\n if (typeof newValue === UNDEFINED) {\n return true;\n }\n if (newValue === null && this.required) {\n return true;\n }\n let newFinalValue;\n if (this._fieldType === this._formConfig.fieldTypes.boolean\n || this._fieldType === this._formConfig.fieldTypes.check) {\n newFinalValue = yn(newValue) ?? false;\n } else if (this._fieldType === this._formConfig.fieldTypes.array\n || this._fieldType === this._formConfig.fieldTypes.map) {\n if (newValue === null || newValue === '') {\n newFinalValue = [];\n } else if (Array.isArray(newValue)) {\n newFinalValue = newValue;\n } else {\n newFinalValue = newValue.toString().split(',');\n }\n } else {\n newFinalValue = newValue;\n }\n if (this._value !== newFinalValue) {\n this._hasChanged = true;\n if (widgetUpdate) {\n this.setAttr(attrs.value, newFinalValue);\n } else {\n this._value = newFinalValue;\n }\n }\n return true;\n }\n}\n","import { FormPiece } from '../piece';\n\nexport interface FilterDef {\n operators: string[];\n options: any[];\n}\n\nexport interface FilterSetup {\n fieldCode: string;\n operator: string;\n values: any[];\n}\nexport class RecordTableColumn extends FormPiece {\n fieldCode: string = '';\n fieldTitle: string = '';\n fieldType: string = '';\n fieldAlignment: string = '';\n fieldFormat: string = '';\n sortable: boolean = true;\n searchable: boolean = true;\n sortDirections: string[] = [];\n // Filtros\n filterVisible: boolean = false;\n filterDef: FilterDef | null = null;\n filterSetup: FilterSetup | null = null;\n\n constructor(recTableColReceived, formConfig) {\n super(recTableColReceived, formConfig);\n this.filterDef = null;\n if (recTableColReceived) {\n this.fieldCode = recTableColReceived.fieldCode;\n this.fieldTitle = recTableColReceived.fieldTitle;\n this.fieldType = recTableColReceived.fieldTypeCode || this._formConfig.fieldTypes.text;\n const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this.fieldType] != null) ? this._formConfig.tableFieldStyles[this.fieldType]['text-align'] : 'left';\n this.fieldAlignment = (recTableColReceived.alignment != null) ? recTableColReceived.alignment.toLowerCase() : defaultTypeAlignment;\n this._absoluteVisible = recTableColReceived?.visible ?? true;\n this.sortable = recTableColReceived?.sortable ?? false;\n this.searchable = recTableColReceived?.searchable ?? true;\n this.sortDirections = (this.sortable) ? ['ascend', 'descend'] : [];\n this.fieldFormat = recTableColReceived.format || '';\n this.customAttributes = recTableColReceived?.customAttributes ?? {};\n }\n }\n\n setSearchable(searchable = true) { this.searchable = searchable; }\n\n hideFilter() {\n this.filterVisible = false;\n }\n\n addFilterDefinition(filterDefinition) {\n this.filterDef = {\n operators: filterDefinition.operators,\n options: filterDefinition.options ?? null,\n };\n }\n\n get filterDefinition() {\n return this.filterDef;\n }\n\n addFilter(columnValues, operator) {\n this.filterSetup = {\n fieldCode: this.fieldCode,\n operator: operator ?? this.filterDef?.operators[0] ?? 'IN',\n values: columnValues,\n }\n }\n\n get filter() {\n return this.filterSetup;\n }\n\n removeFilter() {\n this.filterSetup = null;\n }\n\n get options() {\n if (this.filterDef?.operators?.length === 1 && this.filterDef?.operators[0] === 'IN') {\n return this.filterDef?.options;\n }\n return null;\n }\n\n serSortDirections(ascend: boolean, descend: boolean) {\n this.sortDirections = [];\n if (ascend) {\n this.sortDirections.unshift('ascend');\n }\n if (descend) {\n this.sortDirections.unshift('descend');\n }\n }\n}\n","import { FormPiece } from '../piece';\nexport class TableAction extends FormPiece {\n actionCode: string;\n actionTitle: string;\n iconName: string;\n actionType: string;\n actionClass: string;\n stateField: string;\n newState: string;\n backend: boolean;\n\n restrictedOnField: string | null = null;\n restrictedOnValue: string | null = null;\n restrictedOnOperator: string | null = null;\n\n constructor(actionDefinition, formConfig) {\n super(actionDefinition, formConfig);\n\n this.actionCode = actionDefinition.actionCode;\n this.actionTitle = actionDefinition.actionTitle;\n this.iconName = actionDefinition.iconName || this.actionCode;\n this.actionType = actionDefinition.actionType || 'STANDARD';\n this.actionClass = actionDefinition.actionClass || 'INLINE';\n this.newState = actionDefinition.newState;\n this.stateField = actionDefinition.stateField || '';\n this.backend = actionDefinition?.serverAction ?? false;\n this.restrictedOnField = actionDefinition.fieldRestrictedCode ?? null;\n if (this.restrictedOnField) {\n this.restrictedOnValue = actionDefinition.valueRestricted ?? null;\n this.restrictedOnOperator = actionDefinition.operatorRestricted || null;\n }\n }\n\n override formStateChange(state) {\n if (state) {\n this._formState = state;\n this._visible = this._absoluteVisible && this.viewOnState(state);\n this._disabled = this._absoluteDisabled || !this.enabledOnState(state);\n }\n }\n}\n","import { RecordTableColumn } from './column';\nimport { operators } from '../form.constants';\n\nexport class TableRecordData {\n recordId: string | null = null;\n selected: boolean = false;\n recordData: any = {};\n\n constructor(recordReceived, recordDefinition: RecordTableColumn[], selectionFieldName = null) {\n const { tableRecordId, recordData } = recordReceived;\n this.recordId = tableRecordId;\n if (!recordDefinition || recordDefinition.length === 0 || !recordData || recordData.length === 0) {\n return;\n }\n const fieldNames = recordDefinition.map(column => column.fieldCode);\n if (Array.isArray(recordData)) {\n const rawRecordData = recordData.filter(fieldData => fieldData.fieldCode && fieldNames.includes(fieldData.fieldCode));\n rawRecordData.forEach(fieldData => {\n const { fieldCode, fieldValue } = fieldData;\n const fieldDef = recordDefinition.find(column => column.fieldCode === fieldCode);\n this.recordData[fieldCode] = fieldValue ?? '';\n if (fieldCode === selectionFieldName) {\n this.selected = fieldValue;\n }\n });\n } else {\n const fields = Object.keys(recordData);\n fields.forEach(fieldCode => {\n const fieldValue = recordData[fieldCode];\n const fieldDef = recordDefinition.find(column => column.fieldCode === fieldCode);\n this.recordData[fieldCode] = fieldValue ?? '';\n });\n }\n }\n\n toggleSelect() { this.selected = !this.selected; }\n select() { this.selected = true; }\n unselect() { this.selected = false; }\n\n get recordIdKey() {\n return (typeof this.recordId === 'object')\n ? JSON.stringify(this.recordId) : this.recordId;\n }\n\n getFieldValue(fieldCode): any {\n return (fieldCode && this.recordData) ? this.recordData[fieldCode] : null;\n }\n\n hasPattern(words, columnObj) {\n if (!words || words.length === 0) {\n return true;\n }\n for (const word of words) {\n let wordIsPresent = false;\n for (const fieldCode in this.recordData) {\n const columnDef = columnObj?.[fieldCode];\n if (columnDef?.searchable && this.recordData.hasOwnProperty(fieldCode)) {\n const term = word.toUpperCase();\n let fieldValue;\n if (columnDef.fieldType.toUpperCase().includes('DATE')) {\n fieldValue = this.recordData[fieldCode].substring(0, 16);\n } else {\n fieldValue = this.recordData[fieldCode];\n }\n if (fieldValue.toString().toUpperCase().includes(term)) {\n wordIsPresent = true;\n break;\n }\n }\n }\n if (!wordIsPresent) {\n return false;\n }\n }\n return true;\n }\n\n hasCondition(columnFilters) {\n if (!columnFilters || columnFilters.length === 0) {\n return true;\n }\n for (const condition of columnFilters) {\n const { fieldCode, operator, values } = condition;\n if (this.recordData.hasOwnProperty(fieldCode)) {\n const fieldValue = this.recordData[fieldCode];\n const stringValue = fieldValue.toString().toUpperCase();\n if (operator === operators.G && fieldValue <= values[0]) {\n return false;\n }\n if (operator === operators.L && fieldValue >= values[0]) {\n return false;\n }\n if (operator === operators.GE && fieldValue < values[0]) {\n return false;\n }\n if (operator === operators.LE && fieldValue > values[0]) {\n return false;\n }\n if (operator === operators.IN && !values.includes(fieldValue)) {\n return false;\n }\n if (operator === operators.EQ) {\n return fieldValue === values[0];\n }\n if (operator === operators.NEQ && fieldValue === values[0]) {\n return false;\n }\n if (operator === operators.HAS && !stringValue.includes(values[0].toString().toUpperCase())) {\n return false;\n }\n if (operator === operators.NOTHAS && stringValue.includes(values[0].toString().toUpperCase())) {\n return false;\n }\n if (operator === operators.BETWEEN && (fieldValue < values[0] || fieldValue > values[1])) {\n return false;\n }\n }\n }\n return true;\n }\n}\n","import { Subject } from 'rxjs';\nimport { elementTypes } from '../form.constants';\nimport { FormElement } from '../element';\nimport { RecordTableColumn } from './column';\nimport { TableAction } from './action';\nimport { TableRecordData } from './row-data';\n\nconst TABLE_SORT_ASCENDING = 'asc';\nconst TABLE_SORT_DESCENDING = 'desc';\n\nconst attrs = {\n allSelected: { name: 'allSelected', propagate: 'allSelected' },\n tableCode: { name: 'tableCode', propagate: 'code' },\n clientPaging: { name: 'clientPaging', propagate: null },\n globalSearch: { name: 'globalSearch', propagate: 'globalSearch' },\n globalFilterString: { name: '_globalFilterString', propagate: 'globalFilterString' },\n sorting: { name: 'sorting', propagate: null },\n recordsPerPage: { name: 'recordsPerPage', propagate: 'recordsPerPage' },\n layout: { name: 'layout', propagate: 'layout' },\n columns: { name: 'columns', propagate: 'columns' },\n selectedRecords: { name: 'selectedRecords', propagate: 'selectedRecords' },\n currentPage: { name: 'currentPage', propagate: 'currentPage' },\n totalRecordsNumber: { name: 'totalRecordsNumber', propagate: 'totalRecordsNumber' },\n visibleRecords: { name: '_visibleRecords', propagate: 'visibleRecords' },\n};\n\nexport interface TableActionEvent {\n actionCode: string;\n recordId: any;\n recordData: any;\n}\n\nexport interface TableEvent {\n tableCode: string;\n actionCode: string | null;\n actionDetail: any;\n}\n\nexport class RecordTable extends FormElement {\n private readonly _inlineActionTrigger = new Subject<TableEvent>();\n private readonly _globalActionTrigger = new Subject<TableEvent>();\n private readonly _recordSelectionTrigger = new Subject<TableEvent>();\n private readonly _selectionActionTrigger = new Subject<TableEvent>();\n private readonly _getDataTrigger = new Subject<TableEvent>();\n private _tableColumnObj = {};\n private _appendPages: boolean;\n private _actions: TableAction[];\n private _actionsObj = {};\n\n // Mecanismos de filtrado nueva versión\n private _globalFilterString: string = '';\n private globalFilterStrings: string[] = [];\n private selectedRecords: any;\n private restrictedId: any;\n private layout: string | null = null;\n private _globalSearch: boolean;\n private _tableRecords: TableRecordData[];\n private _tableRecordObj = {};\n private _visibleRecords: TableRecordData[] = [];\n private _columns: RecordTableColumn[];\n private _selectable: boolean;\n private _selectionBackend: boolean;\n private _selectionField: string;\n private _allSelected = false;\n private _tableCode: string = '';\n private _tableTitle: string;\n private _currentPage: number;\n private _totalPages: number;\n private _requestedPage: number;\n private _recordsPerPage: number = 10;\n private _totalRecordsNumber: number = 0;\n private _recordsNumber: number = 0;\n private _sorting: any;\n private _waiting: boolean;\n private _clientPaging: boolean = true;\n private _sortable: boolean;\n\n constructor(tableReceived, formConfig) {\n super(tableReceived, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.tables ?? [];\n this.elementType = elementTypes.table;\n this._waiting = false;\n this._currentPage = 1;\n this._totalPages = 1;\n this._requestedPage = 1;\n this._columns = [];\n this._tableColumnObj = {};\n this._actions = [];\n this._actionsObj = {};\n this._tableRecords = [];\n this._globalSearch = false;\n this.restrictedId = null;\n\n this._tableTitle = tableReceived.tableTitle;\n this._appendPages = tableReceived?.append ?? false;\n this._selectable = tableReceived?.selectable ?? false;\n this._selectionBackend = tableReceived?.selectionBackend ?? false;\n this._sortable = tableReceived?.sortable ?? false;\n\n this.setAttr(attrs.allSelected, false);\n this.setAttr(attrs.tableCode, tableReceived.tableCode);\n this.setAttr(attrs.clientPaging, tableReceived?.clientPaging ?? true);\n this.setAttr(attrs.globalSearch, tableReceived?.simpleFilter ?? false);\n this.setAttr(attrs.globalFilterString, '');\n this.setAttr(attrs.sorting, { columnName: '', direction: '' });\n this.setAttr(attrs.recordsPerPage, formConfig.defaultRecordsPerPage);\n this.setAttr(attrs.layout, '');\n\n if (tableReceived.fields) {\n const columns: RecordTableColumn[] = [];\n for (const columnReceived of tableReceived.fields) {\n const columnEnriched = {\n ...columnReceived,\n visibleStates: this.visibleStates,\n enabledStates: this.enabledStates\n };\n const columnDefinition: RecordTableColumn = new RecordTableColumn(columnEnriched, this._formConfig);\n columns.push(columnDefinition);\n this._tableColumnObj[columnDefinition.fieldCode] = columnDefinition;\n }\n this.setAttr(attrs.columns, columns);\n }\n if (tableReceived.actions) {\n const tableActions = tableReceived.actions.map(objDef => {\n let visibleStates = objDef.visibleStates;\n let enabledStates = objDef.enabledStates;\n if (!visibleStates) {\n visibleStates = (objDef.actionModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0);\n enabledStates = (objDef.actionModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0);\n }\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const actionReceived of tableActions) {\n const inlineAction = new TableAction(actionReceived, this._formConfig);\n this._actions.push(inlineAction);\n this._actionsObj[inlineAction.actionCode] = inlineAction;\n }\n }\n this._selectionField = (this._selectable) ? tableReceived?.selectionField : null;\n // Filtros predefinidos en el formulario\n if (tableReceived.filters) {\n for (let index = 0; index < tableReceived.filters.length; index++) {\n this.addFilterDefinition(tableReceived.filters[index].fieldCode, tableReceived.filters[index]);\n }\n }\n }\n\n get columnNames() { return Object.keys(this._tableColumnObj); }\n get inlineActionTrigger() { return this._inlineActionTrigger; }\n get globalActionTrigger() { return this._globalActionTrigger; }\n get selectionActionTrigger() { return this._selectionActionTrigger; }\n get recordSelectionTrigger() { return this._recordSelectionTrigger; }\n get getDataTrigger() { return this._getDataTrigger; }\n\n get globalSearch() { return this._globalSearch; }\n get tableRecords() { return this._tableRecords; }\n get tableRecordObj() { return this._tableRecordObj; }\n get visibleRecords() { return this._visibleRecords; }\n get columns() { return this._columns; }\n get selectable() { return this._selectable; }\n get selectionBackend() { return this._selectionBackend; }\n get selectionField() { return this._selectionField; }\n get allSelected() { return this._allSelected; }\n get tableCode() { return this._tableCode; }\n get tableTitle() { return this._tableTitle; }\n get currentPage() { return this._currentPage; }\n get totalPages() { return this._totalPages; }\n get requestedPage() { return this._requestedPage; }\n get recordsPerPage() { return this._recordsPerPage; }\n get totalRecordsNumber() { return this._totalRecordsNumber; }\n get recordsNumber() { return this._recordsNumber; }\n get sorting() { return this._sorting; }\n get waiting() { return this._waiting; }\n get clientPaging() { return this._clientPaging; }\n get sortable() { return this._sortable; }\n\n get globalFilterString() { return this._globalFilterString; }\n set globalFilterString(globalFilterString) { this._globalFilterString = globalFilterString; }\n\n set globalSearch(globalSearch) { this._globalSearch = globalSearch; }\n set tableRecords(tableRecords) { this._tableRecords = tableRecords; }\n set tableRecordObj(tableRecordObj) { this._tableRecordObj = tableRecordObj; }\n set visibleRecords(visibleRecords) { this._visibleRecords = visibleRecords ?? []; }\n set columns(columns) { this._columns = columns; }\n set selectable(selectable) { this._selectable = selectable; }\n set selectionBackend(selectionBackend) { this._selectionBackend = selectionBackend; }\n set selectionField(selectionField) { this._selectionField = selectionField; }\n set allSelected(allSelected) { this._allSelected = allSelected; }\n set tableCode(tableCode) { this._tableCode = tableCode; }\n set tableTitle(tableTitle) { this._tableTitle = tableTitle; }\n set currentPage(currentPage) { this._currentPage = currentPage; }\n set totalPages(totalPages) { this._totalPages = totalPages; }\n set requestedPage(requestedPage) { this._requestedPage = requestedPage; }\n set recordsPerPage(recordsPerPage) { this._recordsPerPage = recordsPerPage; }\n set totalRecordsNumber(totalRecordsNumber) { this._totalRecordsNumber = totalRecordsNumber; }\n set recordsNumber(recordsNumber) { this._recordsNumber = recordsNumber; }\n set sorting(sorting) { this._sorting = sorting; }\n set waiting(waiting) { this._waiting = waiting; }\n set clientPaging(clientPaging) { this._clientPaging = clientPaging; }\n set sortable(sortable) { this._sortable = sortable; }\n\n getLayout() { return this.layout; }\n setLayout(layout) { this.setAttr(attrs.layout, layout); }\n hasActions() { return (this._actions.length > 0); }\n getSelectedRecords() { return this._tableRecords.filter(rec => rec.selected).map(rec => rec.recordId); }\n activateGlobalSearch() { this._globalSearch = true; }\n inactivateGlobalSearch() { this._globalSearch = false; }\n columnDefinition(fieldCode): RecordTableColumn { return this._tableColumnObj[fieldCode]; }\n putOnWait() { this._waiting = true; }\n freeWaiting() { this._waiting = false; }\n setWidget(widget) { this.widget = widget; }\n\n notifyGlobalAction(actionCode) {\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode,\n actionDetail: null\n };\n this._globalActionTrigger.next(tableEvent);\n }\n\n notifyInlineAction(tableActionEvent: TableActionEvent) {\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode: tableActionEvent.actionCode,\n actionDetail: {\n recordId: tableActionEvent.recordId,\n recordData: tableActionEvent.recordData\n }\n };\n this._inlineActionTrigger.next(tableEvent);\n }\n\n notifyRecordSelection(recordId) {\n const record = this.getTableRecord(recordId);\n if (!record) { return; }\n record.toggleSelect();\n this._requestedPage = this._currentPage ?? 1;\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode: null,\n actionDetail: {\n recordId: record.recordId,\n recordData: record.recordData\n }\n };\n this.recordSelectionTrigger.next(tableEvent);\n }\n\n notifySelectionAction(actionCode) {\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode,\n actionDetail: {\n selectedRecords: this.selectedRecords\n }\n };\n this._selectionActionTrigger.next(tableEvent);\n }\n\n notifyGetDataAction(requestedPage = null) {\n this.updateVisibleRecords();\n this._requestedPage = requestedPage || this._currentPage || 1;\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode: null,\n actionDetail: null,\n };\n this._getDataTrigger.next(tableEvent);\n return null;\n }\n\n clean() {\n this._tableRecords = [];\n this.unSelectAll();\n this._tableRecordObj = {};\n this.updateVisibleRecords();\n }\n\n selectAll() {\n this.setAttr(attrs.allSelected, true);\n this._tableRecords.forEach(record => record.select());\n this.setAttr(attrs.selectedRecords, this.getSelectedRecords());\n return true;\n\n }\n\n unSelectAll() {\n this.setAttr(attrs.allSelected, false);\n this._tableRecords.forEach(record => record.unselect());\n this.setAttr(attrs.selectedRecords, this.getSelectedRecords());\n return true;\n }\n\n setTableRecords(tableRecords, append) {\n if (!append) {\n this._tableRecords = [];\n this.setAttr(attrs.allSelected, false);\n this._tableRecords.forEach(record => record.unselect());\n this.setAttr(attrs.selectedRecords, []);\n this._tableRecordObj = {};\n }\n const newRecordsObj = { ...this._tableRecordObj };\n const newRecords = [...this._tableRecords];\n for (const tableRecord of tableRecords) {\n const recordReceived: TableRecordData = new TableRecordData(tableRecord, this._columns, this._selectionField);\n const recordIdKey = recordReceived.recordIdKey;\n newRecords.push(recordReceived);\n newRecordsObj[recordIdKey] = recordReceived;\n }\n this._tableRecords = newRecords;\n this.setAttr(attrs.selectedRecords, this.getSelectedRecords());\n this._tableRecordObj = newRecordsObj;\n this.updateVisibleRecords();\n }\n\n appendRecords(records) { this.setTableRecords(records, true); }\n replaceRecords(records) { this.setTableRecords(records, false); }\n\n setTableAppend(append: boolean) { this._appendPages = append }\n\n changePage(requestedPage) {\n if (this._clientPaging) {\n this.setAttr(attrs.currentPage, requestedPage);\n this.updateVisibleRecords();\n } else {\n this.notifyGetDataAction(requestedPage);\n }\n }\n\n updateVisibleRecords() {\n let visibleRecords: any[];\n if (this._clientPaging) {\n let filteredRecords = this.getFilteredRecords();\n this.setAttr(attrs.totalRecordsNumber, filteredRecords.length);\n const sliceNumber1 = (this._currentPage - 1) * this._recordsPerPage;\n const sliceNumber2 = (this._currentPage - 1) * this._recordsPerPage + this._recordsPerPage\n visibleRecords = filteredRecords.slice(sliceNumber1, sliceNumber2);\n const recordsLastPage = this._totalRecordsNumber % this._recordsPerPage;\n const totalPages = Math.trunc(this._totalRecordsNumber / this._recordsPerPage + (recordsLastPage ? 1 : 0));\n if (this._currentPage > totalPages) {\n this._currentPage = totalPages || 1;\n }\n } else {\n visibleRecords = this._tableRecords;\n }\n this.setAttr(attrs.visibleRecords, visibleRecords ?? []);\n }\n\n updateFromServer(tableReceived) {\n this._requestedPage = 1;\n const { visible = true, totalPages = 1, recordsNumber, currentPage = 1, recordsPerPage,\n totalRecordsNumber, sortingColumn, sortingDirection, tableRecords,\n actions, fields,\n } = tableReceived;\n this.visible = visible;\n if (actions) {\n Object.keys(actions).forEach(actionCode => {\n const tblAction = this.getAction(actionCode);\n const actionReceived = actions[actionCode];\n if (actionReceived.visible === true || actionReceived.visible === false) {\n (actionReceived.visible === true) && tblAction.show();\n (actionReceived.visible === false) && tblAction.hide();\n }\n if (actionReceived.enabled === true || actionReceived.enabled === false) {\n (actionReceived.enabled === true) && tblAction.enable();\n (actionReceived.enabled === false) && tblAction.disable();\n }\n if (actionReceived.showOnStates) {\n actionReceived.showOnStates?.forEach(newState => {\n tblAction.addVisibleState(newState);\n });\n }\n if (actionReceived.hideOnStates) {\n actionReceived.hideOnStates?.forEach(newState => {\n tblAction.removeVisibleState(newState);\n });\n }\n if (actionReceived.enableOnStates) {\n actionReceived.enableOnStates?.forEach(newState => {\n tblAction.addEnabledState(newState);\n });\n }\n if (actionReceived.disableOnStates) {\n actionReceived.disableOnStates?.forEach(newState => {\n tblAction.removeEnabledState(newState);\n });\n }\n });\n }\n if (fields) {\n Object.keys(fields).forEach(fieldCode => {\n const tblField = this.columnDefinition(fieldCode);\n const fieldReceived = fields[fieldCode];\n if (fieldReceived.visible === true || fieldReceived.visible === false) {\n (fieldReceived.visible === true) && tblField.show();\n (fieldReceived.visible === false) && tblField.hide();\n }\n });\n }\n if (tableRecords) {\n this._totalPages = totalPages;\n this._recordsNumber = recordsNumber;\n this.setAttr(attrs.currentPage, +currentPage);\n this.setAttr(attrs.recordsPerPage, +recordsPerPage);\n this.setAttr(attrs.totalRecordsNumber, (this._clientPaging) ? tableRecords.length : +totalRecordsNumber);\n this.setAttr(attrs.sorting, {\n columnName: sortingColumn || '',\n direction: sortingDirection || ''\n });\n if (!this._appendPages) {\n this.replaceRecords(tableRecords);\n } else {\n this.appendRecords(tableRecords);\n }\n }\n this._waiting = false;\n this.updateVisibleRecords();\n }\n\n getTableRecord(recordId) {\n const recordIdKey = (typeof recordId === 'object') ? JSON.stringify(recordId) : recordId;\n return (this._tableRecordObj && recordId && this._tableRecordObj[recordId])\n ? this._tableRecordObj[recordId] : null;\n }\n\n getAction(actionCode) {\n return (this._actionsObj && actionCode && this._actionsObj[actionCode])\n ? this._actionsObj[actionCode] : null;\n }\n\n getActions(actionClass: string = this._formConfig.tableActions.inline, actionTypes: string[] = null) {\n return this._actions.filter(actionDef => {\n const typeIncluded = (actionTypes) ? actionTypes.includes(actionDef.actionType) : true;\n return actionDef.actionClass === actionClass && typeIncluded;\n });\n }\n\n // Filtros\n\n setFilterById(id) {\n if (this.restrictedId === id) { return; }\n this.restrictedId = id;\n this.updateVisibleRecords();\n }\n\n cleanIdFilter() {\n if (this.restrictedId === null) { return; }\n this.restrictedId = null;\n this.updateVisibleRecords();\n }\n\n setGlobalFilterString(text, notifyComponent = true) {\n this.globalFilterStrings = text.split(' ').filter(t => t && t.trim().length > 0).map(t => t.trim()) ?? [];\n if (this._clientPaging) {\n this.changePage(1);\n }\n if (notifyComponent) {\n this.setAttr(attrs.globalFilterString, text.trim());\n }\n }\n\n addFilterDefinition(columnName, filterDefinition) {\n const tableColumn = this.columnDefinition(columnName);\n tableColumn && tableColumn.addFilterDefinition(filterDefinition);\n }\n\n getFilteredRecords() {\n let filteredRecords = this._tableRecords;\n if (this.restrictedId) {\n filteredRecords = filteredRecords.filter(record => record.recordId === this.restrictedId);\n }\n if (this.globalFilterStrings.length > 0) {\n filteredRecords = filteredRecords.filter(record => record.hasPattern(this.globalFilterStrings, this._tableColumnObj));\n }\n const columnFilters = this._columns.filter(column => column.filter).map(column => column.filter);\n if (columnFilters.length > 0) {\n filteredRecords = filteredRecords.filter(record => record.hasCondition(columnFilters));\n }\n return filteredRecords;\n }\n\n getColumnFilter(columnName: string) {\n const tableColumn = this.columnDefinition(columnName);\n return tableColumn?.filter ?? null;\n }\n\n addColumnFilter(columnName: string, columnValues: any | any[], operator: string | null = null) {\n const tableColumn = this.columnDefinition(columnName);\n const columnFilterDefinition = tableColumn?.filterDefinition ?? null;\n if (!columnFilterDefinition) {\n return;\n }\n tableColumn && tableColumn.addFilter(columnValues, operator);\n this.updateVisibleRecords();\n }\n\n removeColumnFilter(columnName: string) {\n const tableColumn = this.columnDefinition(columnName);\n tableColumn && tableColumn.removeFilter();\n this.updateVisibleRecords();\n }\n\n get currentFilter() {\n const compactFilter: any = {\n simpleFilterWords: this.globalFilterStrings,\n advancedFilter: [],\n };\n const columnFilters = this._columns.filter(column => column.filter).map(column => column.filter);\n for (let index = 0; index < columnFilters.length; index++) {\n const columnFilter = columnFilters[index];\n compactFilter.advancedFilter.push({\n fieldCode: columnFilter?.fieldCode,\n operator: columnFilter?.operator,\n fieldValue1: columnFilter?.values[0],\n fieldValue2: columnFilter?.values[1],\n });\n }\n return compactFilter;\n }\n\n // Ordenamiento de registros local\n\n sort(columnName, direction) {\n this.setRequiredOrder(columnName, direction);\n if (this._clientPaging) {\n this.localSortData()\n } else {\n this.notifyGetDataAction();\n }\n }\n\n setRequiredOrder(columnField, direction = null) {\n this.setAttr(attrs.sorting, {\n columnName: columnField,\n direction: (direction === 'ascend') ? TABLE_SORT_ASCENDING : TABLE_SORT_DESCENDING,\n });\n }\n\n localSortData() {\n if (!this._sorting.columnName || !this._sorting.direction) { return; }\n this._tableRecords.sort((a, b) => this.recordCompare(a, b, this._sorting.columnName, this._sorting.direction));\n //this.unSelectAll();\n this.updateVisibleRecords();\n }\n\n recordCompare(recordA: TableRecordData, recordB: TableRecordData, columnCompare, direction) {\n const recordAValue = recordA.getFieldValue(columnCompare);\n const recordBValue = recordB.getFieldValue(columnCompare);\n const recordAColumn = isNaN(recordAValue) ? recordAValue.toLocaleLowerCase() : +recordAValue;\n const recordBColumn = isNaN(recordBValue) ? recordBValue.toLocaleLowerCase() : +recordBValue;\n let result = 0;\n if (recordAColumn < recordBColumn) {\n result = -1;\n } else if (recordAColumn > recordBColumn) {\n result = 1;\n }\n return direction === TABLE_SORT_ASCENDING ? result : -result;\n }\n\n override formStateChangeCustomSubscribe(form, formChangeSubject) {\n this._columns?.forEach(column => {\n column?.connectWithParentForm(form, formChangeSubject);\n });\n this._actions?.forEach(action => {\n action?.connectWithParentForm(form, formChangeSubject);\n });\n }\n}\n","import { FormPiecePropagate } from './piece-propagate';\nimport { FormAction } from './action';\nimport { elementTypes } from './form.constants';\n\nexport class RecordFormSubSection extends FormPiecePropagate {\n private _customRender: string | null = null;\n private _subsectionId: string | null = null;\n private _subsectionCode: string | null = null;\n private _subsectionTitle: string | null = null;\n private _subSectionElements: any[] = [];\n private _subSectionFields: any[] = [];\n private _subSectionTables: any[] = [];\n private _subSectionActions: any[] = [];\n private _elementsArray: any = {};\n private _active = false;\n\n constructor(subsectionReceived, formObject, formConfig) {\n super(subsectionReceived, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.subsections ?? [];\n if (!subsectionReceived) { return; }\n this._subsectionId = (subsectionReceived.subsectionId) ? subsectionReceived.subsectionId.toString() : '';\n this._subsectionCode = (subsectionReceived.subsectionCode) ? subsectionReceived.subsectionCode : '';\n this._subsectionTitle = (subsectionReceived.subsectionTitle) ? subsectionReceived.subsectionTitle : '';\n if (subsectionReceived.elements) {\n for (const receivedElement of subsectionReceived.elements) {\n let elementObject: any = null;\n let arrayToAdd: any[] = [];\n const { type, code } = receivedElement;\n switch (type) {\n case elementTypes.field:\n elementObject = formObject.getField(code);\n arrayToAdd = this._subSectionFields;\n break;\n case elementTypes.table:\n elementObject = formObject.getTable(code);\n arrayToAdd = this._subSectionTables;\n break;\n case elementTypes.action:\n elementObject = formObject.getAction(code);\n arrayToAdd = this._subSectionActions;\n break;\n }\n if (elementObject) {\n elementObject.elementType = type;\n arrayToAdd.push(elementObject);\n this._subSectionElements.push(elementObject);\n this._elementsArray[code] = elementObject;\n }\n }\n }\n }\n\n get customRender() { return this._customRender; }\n set customRender(customRenderName) { this._customRender = customRenderName; }\n\n get subsectionId() { return this._subsectionId; }\n get subsectionCode() { return this._subsectionCode; }\n get subsectionTitle() { return this._subsectionTitle; }\n get subSectionElements() { return this._subSectionElements; }\n get subSectionFields() { return this._subSectionFields; }\n get subSectionTables() { return this._subSectionTables; }\n get subSectionActions() { return this._subSectionActions; }\n get elementsArray() { return this._elementsArray; }\n get active() { return this._active; }\n\n set subsectionId(subsectionId) { this._subsectionId = subsectionId; }\n set subsectionCode(subsectionCode) { this._subsectionCode = subsectionCode; }\n set subsectionTitle(subsectionTitle) { this._subsectionTitle = subsectionTitle; }\n set subSectionElements(subSectionElements) { this._subSectionElements = subSectionElements; }\n set subSectionFields(subSectionFields) { this._subSectionFields = subSectionFields; }\n set subSectionTables(subSectionTables) { this._subSectionTables = subSectionTables; }\n set subSectionActions(subSectionActions) { this._subSectionActions = subSectionActions; }\n set elementsArray(elementsArray) { this._elementsArray = elementsArray; }\n set active(active) { this._active = active; }\n\n getField(name) {\n return this._subSectionFields.find(fld => fld.name === name);\n }\n\n getFields() {\n return this._subSectionFields;\n }\n\n getFieldNames() {\n return this._subSectionFields.map(field => field.code);\n }\n\n getActions(): FormAction[] {\n return this._subSectionActions;\n }\n\n getActionNames(): string[] {\n return this._subSectionActions.map(action => action.actionCode);\n }\n\n activate() {\n if (!this._active) {\n this._active = true;\n // this.subsectionCode && this._activation.next(this.subsectionCode);\n }\n }\n\n inactivate() {\n if (this._active) {\n this._active = false;\n // this.subsectionCode && this._inactivation.next(this.subsectionCode);\n }\n }\n}\n","import { Subject } from 'rxjs';\nimport { FormPiecePropagate } from './piece-propagate';\nimport { FormAction } from './action';\nimport { RecordFormSubSection } from './subsection';\n\nconst ACTIVE = 'active';\n\nexport class RecordFormSection extends FormPiecePropagate {\n private readonly _activation = new Subject<string>();\n private readonly _inactivation = new Subject<string>();\n private _active = false;\n private _sectionId: string | null = null;\n private _sectionCode: string | null = null;\n private _sectionTitle: string | null = null;\n private _subSections: RecordFormSubSection[] = [];\n private _subSectionsObj: any;\n private _exclusiveSubSectionsByAttr = {};\n\n constructor(sectionReceived, formObject, formConfig) {\n super(sectionReceived, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.sections ?? [];\n if (!sectionReceived) { return; }\n this._sectionId = (sectionReceived.sectionId) ? sectionReceived.sectionId.toString() : '';\n this._sectionCode = (sectionReceived.sectionCode) ? sectionReceived.sectionCode : '';\n this._sectionTitle = (sectionReceived.sectionTitle) ? sectionReceived.sectionTitle : '';\n this._subSections = [];\n this._subSectionsObj = {};\n if (sectionReceived.subsections) {\n const subsections = sectionReceived.subsections.map(subSecDef => {\n const visibleStates = subSecDef.visibleStates ?? [];\n if (subSecDef.elements && Array.isArray(subSecDef.elements)) {\n subSecDef.elements = subSecDef.elements.map(elm => ({ code: elm.elementCode, type: elm.elementTypeName }));\n }\n return { ...subSecDef, visibleStates };\n });\n for (const subsectionReceived of subsections) {\n const subSectionToAdd = new RecordFormSubSection(subsectionReceived, formObject, formConfig);\n const subsectionCode = subSectionToAdd.subsectionCode;\n if (subsectionCode) {\n this._subSections.push(subSectionToAdd);\n this._subSectionsObj[subsectionCode] = subSectionToAdd;\n }\n }\n }\n }\n\n get code() { return this._sectionCode; }\n get activation() { return this._activation; }\n get inactivation() { return this._inactivation; }\n\n get active() { return this._active; }\n get sectionId() { return this._sectionId; }\n get sectionCode() { return this._sectionCode; }\n get sectionTitle() { return this._sectionTitle; }\n get subSections() { return this._subSections; }\n get subSectionsObj() { return this._subSectionsObj; }\n\n set active(active) { this._active = active; }\n set sectionId(sectionId) { this._sectionId = sectionId; }\n set sectionCode(sectionCode) { this._sectionCode = sectionCode; }\n set sectionTitle(sectionTitle) { this._sectionTitle = sectionTitle; }\n set subSections(subSections) { this._subSections = subSections; }\n set subSectionsObj(subSectionsObj) { this._subSectionsObj = subSectionsObj; }\n\n activate() {\n if (!this._active) {\n this._active = true;\n this._sectionCode && this._activation.next(this._sectionCode);\n }\n }\n\n inactivate() {\n if (this._active) {\n this._active = false;\n this._sectionCode && this._inactivation.next(this._sectionCode);\n }\n }\n\n get title() { return this._sectionTitle; }\n set title(title) { this._sectionTitle = title; }\n\n getVisibleSubsections(state) {\n return this._subSections.filter(subSection => subSection.visible);\n }\n\n getSubsection(subSectionCode) {\n return (this._subSectionsObj && this._subSectionsObj[subSectionCode])\n ? this._subSectionsObj[subSectionCode] : null;\n }\n\n activateSubSection(subSectionCode) {\n if (subSectionCode === this._exclusiveSubSectionsByAttr[ACTIVE]) { return; }\n const subSection = (this._subSectionsObj && this._subSectionsObj[subSectionCode])\n ? this._subSectionsObj[subSectionCode] : null;\n if (subSection) {\n subSection?.activate();\n this._exclusiveSubSectionsByAttr[ACTIVE] = subSectionCode;\n }\n }\n\n getFields() {\n let fieldsArray: any[] = [];\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n const subsectionFields: any[] = subSection.getFields() ?? [];\n if (subsectionFields?.length > 0) {\n fieldsArray = fieldsArray.concat(subsectionFields);\n }\n }\n }\n return fieldsArray;\n }\n\n getActions(): FormAction[] {\n let actionArray: any[] = [];\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n const subSectionActions = subSection.getActions() ?? [];\n if (subSectionActions?.length > 0) {\n actionArray = actionArray.concat(subSectionActions);\n }\n }\n }\n return actionArray;\n }\n\n getActionNames(): string[] {\n let actionArray: string[] = [];\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n actionArray = actionArray.concat(subSection.getActionNames());\n }\n }\n return actionArray;\n }\n\n getFieldNames() {\n let fieldsArray: string[] = [];\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n fieldsArray = fieldsArray.concat(subSection.getFieldNames());\n }\n }\n return fieldsArray;\n }\n\n getField(name) {\n let field = null;\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n field = subSection.getField(name);\n if (field) {\n return field;\n }\n }\n }\n return null;\n }\n\n override formStateChangeCustomSubscribe(form, formChangeSubject) {\n this._subSections?.forEach(subsection => {\n subsection?.connectWithParentForm(form, formChangeSubject);\n });\n }\n}\n","import { Subject } from 'rxjs';\nimport { FormAction } from './action';\nimport { FieldDescriptor, FieldOption } from './field';\nimport { RecordTable } from './table/table';\nimport { RecordFormSection } from './section';\nimport { RecordFormSubSection } from './subsection';\nimport { NO_ERROR, HEADER } from './form.constants';\nimport { TableRecordData } from './table/row-data';\n\nconst ACTIVE = 'active';\nconst SHOW = 'show';\nconst HIDE = 'hide';\nconst ENABLE = 'enable';\nconst DISABLE = 'disable';\nconst CLEAN = 'clean';\n\nconst alwaysVisible = 'ALWAYS';\nconst neverVisible = 'NONE';\nconst onStatesVisible = 'ONSTATES';\ninterface Transition {\n name: string;\n source: string;\n destination: string;\n}\n\ninterface StateFlow {\n defaultState: string;\n states: string[];\n stateDescriptions: string[];\n transitions: Transition[];\n}\n\nexport interface FieldPayload {\n fieldCode: string;\n fieldValue: any;\n editable: boolean;\n visible: boolean;\n required: boolean;\n fieldOptions: string,\n}\n\nexport interface TablePayload {\n tableCode: string;\n visible: boolean;\n currentPage: number;\n requestedPage: number;\n recordsPerPage: number;\n currentFilter: any,\n sortingColumn: string;\n sortingDirection: string;\n}\n\ninterface FormPayload {\n fields: FieldPayload[],\n tables: TablePayload[],\n}\n\nexport class FormStructureAndData {\n private readonly _stateChange = new Subject<any>();\n private _immutableData = {};\n private _extraInfo = {};\n private _exclusiveSectionsByAttr = {};\n\n protected loadInitialData: boolean = true;\n protected subject: string | null = null;\n protected stateFlow: StateFlow;\n protected fields = {};\n protected actions = {};\n protected tables = {};\n protected sections = {};\n protected fieldArray: FieldDescriptor[];\n protected actionArray: FormAction[];\n protected tableArray: RecordTable[];\n protected sectionArray: RecordFormSection[];\n\n public customAttributes: any = {};\n formConfig: any;\n state: string;\n name: string = '';\n title: string = '';\n\n constructor() {\n this.state = '';\n this.actionArray = [];\n this.fieldArray = [];\n this.tableArray = [];\n this.sectionArray = [];\n this.stateFlow = {\n defaultState: '',\n states: [],\n stateDescriptions: [],\n transitions: [],\n };\n }\n\n setConfig(formConfig) {\n this.formConfig = formConfig;\n }\n\n cleanForm() {\n this.actionArray = [];\n this.fieldArray = [];\n this.tableArray = [];\n this.sectionArray = [];\n this.stateFlow = {\n defaultState: '',\n states: [],\n stateDescriptions: [],\n transitions: [],\n };\n }\n\n loadDefinition(definitionReceived) {\n this.state = '';\n let allStates = [];\n this.cleanForm();\n if (!definitionReceived) { return; }\n const { form = {} } = definitionReceived;\n this.name = this.name ?? form.formCode;\n this.title = form.formTitle ?? this.name;\n this.loadInitialData = form.loadInitialData ?? true;\n allStates = definitionReceived?.states;\n this.setStateFlow(definitionReceived?.states, definitionReceived?.transitions,\n definitionReceived?.defaultState, definitionReceived?.stateDescriptions);\n this.immutableData = definitionReceived.immutableData;\n this.extraInfo = definitionReceived.extraInfo;\n this.customAttributes = {};\n if (definitionReceived?.customAttributes) {\n this.setCustomAttributes(definitionReceived?.customAttributes);\n }\n if (definitionReceived.actions) {\n const formActions = definitionReceived.actions.map(objDef => {\n let visibleStates = objDef.visibleStates\n ?? (objDef.actionModes?.split(',')?.map(state => state.trim())?.filter(state => state))\n ?? [];\n let enabledStates = objDef.enabledStates ?? objDef.editableStates ?? [];\n if (!Array.isArray(visibleStates) && typeof visibleStates === 'string') {\n visibleStates = (visibleStates === neverVisible) ? [] : allStates;\n }\n if (!Array.isArray(enabledStates) && typeof enabledStates === 'string') {\n enabledStates = (enabledStates === neverVisible) ? [] : visibleStates;\n }\n enabledStates = enabledStates.filter(state => visibleStates.includes(state));\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const actionReceived of formActions) {\n const globalAction = new FormAction(actionReceived, this.formConfig);\n const globalActionCode = globalAction.actionCode;\n if (globalActionCode) {\n this.actionArray.push(globalAction);\n this.actions[globalActionCode] = globalAction;\n }\n }\n }\n\n if (definitionReceived.fields) {\n const formFields = definitionReceived.fields.map(objDef => {\n let visibleStates = objDef.visibleStates\n ?? (objDef.fieldModes?.split(',')?.map(state => state.trim())?.filter(state => state))\n ?? [];\n let enabledStates = objDef.enabledStates ?? objDef.editableStates ?? [];\n if (!Array.isArray(visibleStates) && typeof visibleStates === 'string') {\n visibleStates = (visibleStates === neverVisible) ? [] : allStates;\n }\n if (!Array.isArray(enabledStates) && typeof enabledStates === 'string') {\n enabledStates = (enabledStates === neverVisible) ? [] : visibleStates;\n }\n enabledStates = enabledStates.filter(state => visibleStates.includes(state));\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const fieldReceived of formFields) {\n const fieldToAdd = new FieldDescriptor(fieldReceived, this.formConfig);\n const fieldCode = fieldToAdd.code;\n if (fieldCode) {\n this.fieldArray.push(fieldToAdd);\n this.fields[fieldCode] = fieldToAdd;\n }\n }\n }\n\n if (definitionReceived.tables) {\n const tables = definitionReceived.tables.map(objDef => {\n let visibleStates = objDef.visibleStates\n ?? (objDef.tableModes?.split(',')?.map(state => state.trim())?.filter(state => state))\n ?? [];\n let enabledStates = objDef.enabledStates ?? objDef.editableStates ?? [];\n if (!Array.isArray(visibleStates) && typeof visibleStates === 'string') {\n visibleStates = (visibleStates === neverVisible) ? [] : allStates;\n }\n if (!Array.isArray(enabledStates) && typeof enabledStates === 'string') {\n enabledStates = (enabledStates === neverVisible) ? [] : visibleStates;\n }\n enabledStates = enabledStates.filter(state => visibleStates.includes(state));\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const tableReceived of tables) {\n const tableToAdd = new RecordTable(tableReceived, this.formConfig);\n const tableCode = tableToAdd.tableCode;\n if (tableCode) {\n this.tableArray.push(tableToAdd);\n this.tables[tableCode] = tableToAdd;\n }\n }\n }\n\n if (definitionReceived.sections) {\n const formSections = definitionReceived.sections.map(objDef => {\n let visibleStates = objDef.visibleStates\n ?? (objDef.sectionModes?.split(',')?.map(state => state.trim())?.filter(state => state))\n ?? [];\n if (!Array.isArray(visibleStates) && typeof visibleStates === 'string') {\n visibleStates = (visibleStates === neverVisible) ? [] : allStates;\n }\n return { ...objDef, visibleStates };\n });\n for (const sectionReceived of formSections) {\n const sectionToAdd = new RecordFormSection(sectionReceived, this, this.formConfig);\n const sectionCode = sectionToAdd.sectionCode;\n if (sectionCode) {\n this.sectionArray.push(sectionToAdd);\n this.sections[sectionCode] = sectionToAdd;\n }\n }\n }\n }\n\n // Estados\n get defaultState(): string { return this.stateFlow.defaultState; }\n get states(): any[] { return this.stateFlow.states; }\n get stateDescriptions(): any[] { return this.stateFlow.stateDescriptions; }\n supportState(state: string = ''): boolean { return (!!state && this.stateFlow.states?.includes(state)); }\n\n getNextStates(): string[] {\n return this.stateFlow.transitions.filter(trns => trns.source === this.state)\n .map(trns => trns.destination);\n }\n\n changeState(newState: string): boolean {\n const currentState = this.state;\n if (!newState || !this.supportState(newState) || currentState === newState) {\n return false;\n }\n if (!this.state) {\n this.state = newState;\n } else {\n const transitionToChange = this.stateFlow.transitions.find(trns =>\n trns.source === this.state && trns.destination === newState);\n if (transitionToChange) {\n this.state = newState;\n }\n }\n this._stateChange.next({ state: this.state });\n return (this.state === newState);\n }\n\n get stateChange() { return this._stateChange; }\n\n setStateFlow(states?, transitions?, defaultState?: string, stateDescriptions = []): void {\n this.stateFlow.states = states;\n this.stateFlow.stateDescriptions = stateDescriptions;\n this.stateFlow.defaultState = defaultState || this.stateFlow.states[0];\n this.stateFlow.transitions = transitions.map(transition => {\n const name = transition.name;\n const source = (this.stateFlow.states.includes(transition.source)) ? transition.source : '';\n const destination = (this.stateFlow.states.includes(transition.destination)) ? transition.destination : '';\n return { name, source, destination };\n }).filter(item => item.name && item.source && item.destination);\n }\n\n // immutable Data\n getImmutableElement(name: string): any { return this._immutableData?.[name]?.value ?? null; }\n set immutableData(immutableData) { Object.assign(this._immutableData, immutableData); }\n get immutableData(): any { return JSON.parse(JSON.stringify(this._immutableData)); }\n\n // extra Info\n getExtraInfo(name: string): any { return this._extraInfo?.[name]?.value ?? null; }\n set extraInfo(extraInfo) { Object.assign(this._extraInfo, extraInfo); }\n get extraInfo(): any { return JSON.parse(JSON.stringify(this._extraInfo)); }\n\n // Custom Attributes\n getCustomAttribute(name: string): any { return this.customAttributes?.[name] ?? null; }\n setCustomAttribute(name: string, value: any): void { if (name) { this.customAttributes[name] = value; } }\n setCustomAttributes(attributes: any): FormStructureAndData {\n if (attributes && typeof attributes === 'object') {\n Object.entries(attributes).forEach(([name, value]) => {\n this.setCustomAttribute(name, value);\n });\n }\n return this;\n }\n\n // Fields\n get fieldNames(): string[] { return this.getFieldNames(); }\n getFields(): FieldDescriptor[] { return this.fieldArray; }\n getFieldNames(): string[] { return this.fieldArray.map(field => field.code); }\n getField(code: string): FieldDescriptor { return (code && this.fields?.[code]) ? this.fields[code] : null; }\n enableField(code: string): void { this.getField(code)?.enable(); }\n disableField(code: string): void { this.getField(code)?.disable(); }\n getFieldValue(code: string): any { return this.getField(code)?.value; }\n getFieldOptionText(code: string): any { return this.getField(code)?.optionText; }\n getFieldOptions(code: string): FieldOption[] | null { return this.getField(code)?.options ?? null; }\n setFieldValue(code: string, value: any): any { this.getField(code)?.setValue(value); }\n setFieldError(code: string, errorCode: string, message: string, type: string = 'error'): any { this.getField(code)?.setError(errorCode, message, type); }\n setFieldIntrinsicErrorMessage(code: string, message: string): any { this.getField(code)?.setIntrinsicErrorMessage(message); }\n\n setFieldRequired(inputCodes: string[] | string | null, required: boolean): any {\n const codes = this.getFieldSet(null, inputCodes ?? null);\n for (const code of codes) {\n try {\n const field = this.getField(code) ?? null;\n field && (field.required = required);\n } catch (e) {\n console.log(`Error modificando campo ${code}: ${e}`);\n }\n }\n }\n\n setFieldErrorMessage(code: string, message: string): any { this.getField(code)?.setErrorMessage(message); }\n\n setFieldOptions(code: string, optionsArray: any[], idAttribute: string, nameAttribute: string): any {\n const field = this.getField(code);\n if (field && optionsArray) {\n const fieldOptions = optionsArray.map(item => ({\n fieldOptionId: item[idAttribute],\n fieldOptionValue: item[nameAttribute]\n }));\n field.setFieldOptions(fieldOptions);\n }\n }\n\n getFieldSet(filter, inputCodes: string[] | string | null, secCode?: string | null, subCode?: string | null): string[] {\n let codes: any[] = [];\n if (inputCodes) {\n if (typeof inputCodes === 'string') {\n codes = [inputCodes];\n } else if (Array.isArray(inputCodes) && inputCodes.length > 0) {\n codes = inputCodes ?? [];\n }\n } else if (secCode && !subCode) {\n codes = this.getSection(secCode)?.getFieldNames() ?? [];\n } else if (secCode && subCode) {\n codes = this.getSubSection(secCode, subCode)?.getFieldNames() ?? [];\n } else {\n codes = this.getFieldNames() ?? [];\n }\n return (filter) ? codes.filter(fld => filter(this.getField(fld))) : codes;\n }\n\n applyOnFields(processFunc, inputCodes?: string[] | string | null, secCode?: string, subCode?: string): number {\n if (!processFunc) { return 0; }\n const codes = this.getFieldSet(null, inputCodes ?? null, secCode, subCode);\n let processedFields = 0;\n for (const code of codes) {\n const field = this.getField(code);\n if (field) {\n try {\n processFunc(field);\n processedFields += 1;\n } catch (e) {\n console.log(`Error procesando funcion en campo ${field}: ${e}`);\n }\n }\n }\n return processedFields;\n }\n\n applyProcessToAllFields(processFunc) {\n return this.applyOnFields(processFunc);\n }\n\n enableFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.enable(), codes, secCode, subCode);\n }\n\n showFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.show(), codes, secCode, subCode);\n }\n\n hideFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.hide(), codes, secCode, subCode);\n }\n\n showLabelFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.showLablel(), codes, secCode, subCode);\n }\n\n hideLabelFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.hideLabel(), codes, secCode, subCode);\n }\n\n disableFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.disable(), codes, secCode, subCode);\n }\n\n cleanFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.clean(), codes, secCode, subCode);\n }\n\n tagFieldsWithError(message: string, codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.setErrorMessage(message), codes, secCode, subCode);\n }\n\n cleanErrorFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.tagFieldsWithError('', codes, secCode, subCode);\n }\n\n tagEmptyRequiredFields(message: string, codes = null, secCode?: string, subCode?: string): boolean {\n return this.tagFieldsWithError(message, this.getRequiredEmptyFields(codes, secCode, subCode)) > 0;\n }\n\n getRequiredFields(codes?: string[] | string | null, secCode?: string, subCode?: string): string[] {\n return this.getFieldSet(fld => fld?.required, codes ?? null, secCode, subCode);\n }\n\n getRequiredEmptyFields(codes?: string[] | string | null, secCode?: string, subCode?: string, onlyVisible?: boolean): string[] {\n if (onlyVisible) {\n return this.getFieldSet(fld => fld?.required && fld?.visible && fld?.empty, codes ?? null, secCode, subCode);\n }\n return this.getFieldSet(fld => fld?.required && fld?.empty, codes ?? null, secCode, subCode);\n }\n\n getChangedFields(codes?: string[] | string | null, secCode?: string, subCode?: string): string[] {\n return this.getFieldSet(fld => !fld?.outputOnly && fld?.hasChanged, codes ?? null, secCode, subCode);\n }\n\n getFieldsWithValidationIssues(codes?: string[] | string | null, secCode?: string, subCode?: string, onlyVisible?: boolean): string[] {\n if (onlyVisible) {\n return this.getFieldSet(fld => (fld?.hasError() && fld?.visible), codes ?? null, secCode, subCode);\n }\n return this.getFieldSet(fld => fld?.hasError(), codes ?? null, secCode, subCode);\n }\n\n getFieldsValues(inputCodes?: string[] | string | null, secCode?: string, subCode?: string): any {\n const codes = this.getFieldSet(null, inputCodes ?? null, secCode, subCode);\n const resultObject = {};\n for (let index = 0; index < codes.length; index++) {\n const code = codes[index];\n if (code) {\n resultObject[code] = this.fields?.[code]?.getValue() ?? null;\n }\n }\n return resultObject;\n }\n\n // Acciones\n getActions(): FormAction[] { return this.actionArray; }\n getAction(code: string): FormAction { return (code && this.actions?.[code]) ? this.actions[code] : null; }\n showActions(codes: string[] | string): void { return this.execOnActions(codes, SHOW); }\n hideActions(codes: string[] | string): void { return this.execOnActions(codes, HIDE); }\n enableActions(codes: string[] | string): void { return this.execOnActions(codes, ENABLE); }\n disableActions(codes: string[] | string): void { return this.execOnActions(codes, DISABLE); }\n enableAction(code: string): void { return this.enableActions(code); }\n disableAction(code: string): void { return this.disableActions(code); }\n showAction(code: string): void { return this.showActions(code); }\n hideAction(code: string): void { return this.hideActions(code); }\n getHeaderActions() { return this.getActionsByAttribute('location', HEADER); }\n\n getActionsByAttribute(name: string, value): FormAction[] {\n return this.actionArray.filter(actionItem => actionItem.matchAttribute(name, value));\n }\n\n execOnActions(codes: string[] | string | null, functionName: string): void {\n const actionCodes = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n if (!functionName || actionCodes.length === 0) { return; }\n actionCodes.forEach(code => {\n const action = this.getAction(code);\n action?.[functionName]?.();\n });\n }\n\n // Tablas\n getTables(): RecordTable[] { return this.tableArray; }\n getTable(code: string): RecordTable { return (code && this.tables?.[code]) ? this.tables[code] : null; }\n getTableRecord(code: string, id: string): TableRecordData { return this.getTable(code)?.getTableRecord(id) }\n enableTables(codes: string[] | string): void { return this.execOnTables(codes, ENABLE); }\n disableTables(codes: string[] | string): void { return this.execOnTables(codes, DISABLE); }\n showTables(codes: string[] | string): void { return this.execOnTables(codes, SHOW); }\n hideTables(codes: string[] | string): void { return this.execOnTables(codes, HIDE); }\n cleanTables(codes: string[] | string): void { return this.execOnTables(codes, CLEAN); }\n showTable(code: string) { return this.showTables(code); }\n hideTable(code: string) { return this.hideTables(code); }\n cleanTable(code: string) { return this.getTable(code)?.clean(); }\n\n execOnTables(codes: string[] | string | null, functionName: string) {\n const tableCodes = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n if (!functionName || tableCodes.length === 0) { return; }\n tableCodes.forEach(code => {\n const table = this.getTable(code);\n table?.[functionName]?.();\n });\n }\n\n // Secciones\n getSections(): RecordFormSection[] { return this.sectionArray; }\n getSectionsTitles(): string[] { return this.getSections()?.filter(sec => sec?.title).map(sec => sec?.title ?? ''); }\n numSections(): number { return this.sectionArray.length; }\n getSectionsByAttribute(name, value): RecordFormSection[] { return this.sectionArray.filter(item => item.matchAttribute(name, value)); }\n get sectionTitles(): string[] { return this.getSectionsTitles(); }\n get visibleSections(): RecordFormSection[] { return this.sectionArray.filter(sec => sec.absoluteVisible); }\n getSection(code: string): RecordFormSection { return (code && this.sections?.[code]) ? this.sections[code] : null; }\n showSections(codes: string[] | string): void { this.execOnSections(codes, SHOW); }\n hideSections(codes: string[] | string): void { this.execOnSections(codes, HIDE); }\n showSection(code: string): void { return this.showSections(code); }\n hideSection(code: string): void { return this.hideSections(code); }\n activeSection(): string { return this._exclusiveSectionsByAttr[ACTIVE]; }\n getSubSection(code: string, subCode): RecordFormSubSection { return this.getSection(code)?.getSubsection(subCode) ?? null; }\n showSubSections(code: string, subCodes: string[] | string): void { return this.execOnSubSections(code, subCodes, SHOW); }\n showSubSection(code: string, subCode: string): void { return this.showSubSections(code, subCode); }\n hideSubSection(code: string, subCode: string): void { return this.hideSubSections(code, subCode); }\n hideSubSections(code: string, subCodes: string[] | string): void { return this.execOnSubSections(code, subCodes, HIDE); }\n getSectionActions(code): FormAction[] { return this.getSection(code)?.getActions() ?? null; }\n getSectionActionNames(code): string[] { return this.getSection(code)?.getActionNames() ?? null; }\n\n activateSection(code: string): void {\n if (code === this._exclusiveSectionsByAttr[ACTIVE]) { return; }\n this.getSection(this.activeSection())?.inactivate();\n this.getSection(code)?.activate();\n this._exclusiveSectionsByAttr[ACTIVE] = code;\n }\n\n execOnSections(codes: string[] | string | null, functionName: string): void {\n const sectionCodes = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n if (!functionName || sectionCodes.length === 0) { return; }\n sectionCodes.forEach(code => {\n const section = this.getSection(code);\n section?.[functionName]?.();\n });\n }\n\n execOnSubSections(code: string, subNames: string[] | string | null, functionName: string): void {\n const subCodes = (Array.isArray(subNames)) ? subNames : (subNames ? [subNames] : []);\n const section = this.getSection(code);\n if (!functionName || !section || subCodes.length === 0) { return; }\n for (const subCode of subCodes) {\n const subSection = this.getSubSection(code, subCode);\n subSection?.[functionName]?.();\n }\n }\n\n /**\n * Métodos propios de gestión del formulario\n */\n\n cleanData(): void {\n for (const field of this.fieldArray) {\n field.setValue(field.defaultValue);\n }\n for (const table of this.tableArray) {\n table.clean();\n }\n }\n\n getPayload(): any {\n const formData: FormPayload = { fields: [], tables: [] };\n formData.fields = this.getFields().filter(fld => !fld?.outputOnly)\n .map(fld => {\n const fieldPayload: FieldPayload = {\n fieldCode: fld?.code,\n fieldValue: fld?.value,\n editable: !fld?.absoluteDisabled,\n visible: fld?.absoluteVisible,\n required: fld?.required,\n fieldOptions: '',\n }\n return fieldPayload;\n });\n\n formData.tables = this.getTables().map(tbl => {\n const tablePayload: TablePayload = {\n tableCode: tbl.tableCode,\n visible: tbl.absoluteVisible,\n currentPage: tbl.currentPage,\n requestedPage: tbl.requestedPage,\n recordsPerPage: tbl.recordsPerPage,\n currentFilter: tbl.currentFilter,\n sortingColumn: tbl.sorting.columnName,\n sortingDirection: tbl.sorting.direction,\n };\n return tablePayload\n })\n return formData;\n }\n\n /**\n * @deprecated Use subject\n */\n get formSubject() { return this.subject; }\n\n /**\n * @deprecated Use subject\n */\n set formSubject(subject) { this.subject = subject; }\n\n /**\n * @deprecated Use states\n */\n getStates() { return this.states; }\n\n /**\n * @deprecated Use state\n */\n getCurrentState(): string { return this.state; }\n\n /**\n * @deprecated Use title\n */\n getTitle(): string { return this.title; }\n\n /**\n * @deprecated Use title\n */\n setTitle(title: string): void { this.title = title; }\n\n /**\n * @deprecated Use supportState\n */\n supportMode(state: string): boolean { return this.supportState(state); }\n\n /**\n * @deprecated Use enableFields\n */\n enableEditFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this.enableFields(codes, secCode, subCode);\n }\n /**\n * @deprecated Use disableFields\n */\n disableEditFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this.disableFields(codes, secCode, subCode);\n }\n\n /**\n * @deprecated Use getField\n */\n getFieldObject(code: string): FieldDescriptor | null { return this.getField(code); }\n\n /**\n * @deprecated Use getAction\n */\n getActionObject(code: string): FormAction | null { return this.getAction(code); }\n\n /**\n * @deprecated Use getTable\n */\n getTableObject(code: string): RecordTable | null { return this.getTable(code); }\n\n /**\n * @deprecated Use getSection\n */\n getSectionObject(code: string): RecordFormSection | null { return this.getSection(code); }\n\n /**\n * @deprecated Use changeState\n */\n changeFormMode(state: string): boolean { return this.changeState(state); }\n\n /**\n * @deprecated Use subject\n */\n getFormSubject(): string { return this.subject; }\n /**\n * @deprecated Use subject\n */\n getSubject(): string { return this.subject ?? ''; }\n /**\n * @deprecated Use subject\n */\n getformSubject(): string { return this.subject ?? ''; }\n\n}\n","import { nanoid } from 'nanoid';\n\nexport class LibFormManagerService {\n pageStack: any[];\n\n constructor() {\n this.cleanStack();\n }\n\n // Métodos virtuales para las aplicaciones\n getFormDefinition(formCode) { }\n execServerAction(actionDetail) { }\n goToForm(formCode, token, subject) { }\n async loadStack() { }\n saveStack() { }\n\n cleanStack() { this.pageStack = []; }\n resetPageStack() { this.cleanStack() }\n\n findFormInStack(token) {\n const index = this.pageStack.findIndex(item => item?.token === token);\n const data = (index >= 0) ? this.pageStack[index] : null;\n return { index, data };\n }\n\n replaceItem(token, formInfo) {\n if (!token || !formInfo) { return; }\n const { index, data: storedForm } = this.findFormInStack(token);\n let updatedForm: any = null;\n if (index >= 0) {\n updatedForm = { ...storedForm };\n updatedForm.subject = formInfo?.subject ?? storedForm.subject;\n updatedForm.state = formInfo?.state ?? storedForm.state;\n updatedForm.fields = storedForm?.fields ?? {};\n updatedForm.extra = storedForm?.extra ?? {};\n if (formInfo.fields) {\n Object.assign(updatedForm.fields, formInfo.fields);\n }\n if (formInfo.extra) {\n Object.assign(updatedForm.extra, formInfo.extra);\n }\n this.pageStack[index] = updatedForm;\n this.saveStack();\n }\n }\n\n stack(origin, target) {\n const token = nanoid(6);\n this.replaceItem(target.originToken, origin);\n this.pageStack.push({ token, ...target });\n this.saveStack();\n return token;\n }\n\n unstack(token = null) {\n let index = (token) ? this.findFormInStack(token).index : this.pageStack.length - 2;\n let formInfo = null;\n if (index >= 0) {\n formInfo = this.pageStack[index];\n this.pageStack.splice(index + 1);\n this.saveStack();\n }\n return formInfo;\n }\n\n getFormInfo(token: string) {\n const { data } = this.findFormInStack(token);\n return {\n token: data?.token,\n subject: data?.subject,\n state: data?.state,\n originToken: data?.originToken,\n fields: data?.fields ?? {},\n extra: data?.extra ?? {}\n };\n }\n\n openForm(origin: any, target: any) {\n (!origin) && this.cleanStack();\n target.originToken = origin?.token ?? null;\n const token = this.stack(origin, target);\n this.goToForm(target.name, token, target.subject);\n }\n\n backTo(targetToken = null) {\n const formInfo: any = this.unstack(targetToken);\n formInfo && formInfo.name && this.goToForm(formInfo.name, formInfo.token, formInfo.subject);\n }\n}\n","import { Subject, BehaviorSubject, ReplaySubject } from 'rxjs';\n\nexport class LibEventManagerService {\n eventSubjects: any = {};\n eventSubjectParams: any = {};\n\n constructor(eventSet: any[]) {\n eventSet.forEach((event) => { this.addEventName(event); });\n }\n\n addEventName(event: any, rebuild = false) {\n const eventObject = (typeof event === 'string') ? { name: event } : event;\n const { name, type, initialValue, windowTime, timestampProvider } = eventObject;\n const currentSubject = this.eventSubjects[name];\n if (rebuild || !currentSubject) {\n if (type === 'behaviour') {\n const newEventSubject: BehaviorSubject<any> = new BehaviorSubject(initialValue);\n this.eventSubjects[name] = newEventSubject;\n } else if (type === 'subject') {\n const newEventSubject: Subject<any> = new Subject();\n this.eventSubjects[name] = newEventSubject;\n } else {\n const newEventSubject: ReplaySubject<any> = new ReplaySubject(initialValue, windowTime, timestampProvider);\n this.eventSubjects[name] = newEventSubject;\n }\n this.eventSubjectParams[name] = { name: name, windowTime, timestampProvider };\n }\n }\n\n resetSubject(eventClassName) {\n const { name, windowTime, timestampProvider } = this.eventSubjectParams[eventClassName];\n return this.addEventName({ name, windowTime, timestampProvider });\n }\n\n getEventNames() { return Object.keys(this.eventSubjects); }\n getSubject(eventClassName) { return eventClassName ? this.eventSubjects[eventClassName] : null; }\n subscribe(eventClassName, callback) { return this.getSubject(eventClassName).subscribe(callback); }\n next(eventClassName, data) { \n const subject = this.getSubject(eventClassName);\n if (!subject) {\n console.log(`No se encontró subject ${eventClassName}`);\n }\n subject.next(data);\n }\n}\n","export class LibFileManagementService {\n openFile(fileBase64Data, fileName, fileType) { }\n saveFileFromURL(fileUrl, fileName = null, fileType = null) { }\n saveFile(fileBase64Data, fileName, fileType) { }\n printPdfFile(pdfBufferData) { }\n}\n\n","import { Component } from '@angular/core';\nimport { FormStructureAndData } from '../../classes/forms/form';\nimport { LibFormManagerService } from '../../services/form-manager.service';\nimport { LibEventManagerService } from '../../services/event-manager.service';\nimport { LibFileManagementService } from '../../services/file-manager.service';\nimport { formActions, NO_ERROR } from '../../classes/forms/form.constants';\nimport { FieldDescriptor } from '../../classes/forms/field';\nimport { RecordFormSection } from '../../classes/forms/section';\n\nconst PAYLOAD_VERSION = 'TUAINEXCHANGE_1.0';\nconst INLINE_ACTION = 'INLINE';\nconst GLOBAL_ACTION = 'GLOBAL';\nconst GET_DATA_ACTION = 'GETDATA';\n\nconst SUBJECT = 'subject';\nconst TOKEN = 'token';\n\n@Component({\n template: `<ng-content></ng-content>`\n})\nexport class BasicFormComponent extends FormStructureAndData {\n private _controlToken: string | null = null;\n private _originToken: string | null = null;\n private _formRoute: string | null = null;\n private _definitionObtained: boolean = false;\n private _notifyFormActivity: boolean = true;\n // Eventos de acciones y campos\n private _formChangeState: any[] = [];\n private _formSectionsCanDeactivate: any = {};\n private _formSectionsActivate: any = {};\n private _formSectionsInactivate: any = {};\n private _formActionsStart: any = {};\n private _formActionsFinish: any = {};\n private _fieldInputValidation: any = {};\n private _fieldValidationsStart: any = {};\n private _fieldValidationsFinish: any = {};\n // Callback de acciones de tablas\n private _tableSelectionsStart: any = {};\n private _tableSelectionsFinish: any = {};\n private _tableActionsStart: any = {};\n private _tableActionsFinish: any = {};\n private _tableGetDataStart: any = {};\n private _tableGetDataFinish: any = {};\n // Errores en procesos\n private _actionServerError: any[] = [];\n private _fieldServerError: any[] = [];\n private _tableServerError: any[] = [];\n // Datos complementarios del formulario\n protected inputDataFields: any = {};\n protected extraData: any = {};\n protected _eventEmiter: LibEventManagerService;\n protected enabledSections: RecordFormSection[] = [];\n // Gestión de error\n _errorType: string = '';\n errorCode: string = '';\n errorFullCode: string = '';\n errorName: string = '';\n errorMessage: string = '';\n errorDetail: string = '';\n\n // Control de estado\n visible: boolean = false;\n busy: boolean = false;\n\n constructor(\n protected formManagerService: LibFormManagerService,\n protected _eventManager: LibEventManagerService,\n protected fileMgmtServices: LibFileManagementService) {\n super();\n this._eventEmiter = this._eventManager;\n this.cleanStart();\n this.preStart();\n this.customPreProcessing();\n }\n\n cleanStart() {\n this._errorType = '';\n this.errorCode = '';\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n this.cleanForm();\n this._controlToken = null;\n this.inputDataFields = {};\n this._definitionObtained = false;\n // Se limpian los manejadores de eventos\n this.visible = false;\n this.busy = false;\n this._formChangeState = [];\n this._formSectionsCanDeactivate = {};\n this._formSectionsActivate = {};\n this._formSectionsInactivate = {};\n this._formActionsStart = {};\n this._formActionsFinish = {};\n this._fieldInputValidation = {};\n this._fieldValidationsStart = {};\n this._fieldValidationsFinish = {};\n this._tableSelectionsStart = {};\n this._tableSelectionsFinish = {};\n this._tableActionsStart = {};\n this._tableActionsFinish = {};\n this._tableGetDataStart = {};\n this._tableGetDataFinish = {};\n\n this._actionServerError = [];\n this._fieldServerError = [];\n this._tableServerError = [];\n\n this.onActionServerError(() => this.displayActionServerError());\n this.onValidationServerError(() => this.displayValidationServerError());\n this.onTableServerError(() => this.displayTableServerError());\n }\n\n get formVisible(): boolean { return this.visible; }\n get form() { return this; }\n\n // Métodos virtuales\n preStart() { }\n start() { }\n\n /**\n * @deprecated Use preStart\n */\n customPreProcessing() { }\n\n /**\n * @deprecated Overload start\n */\n customFormStart() { }\n\n displayActionServerError() { }\n displayValidationServerError() { }\n displayTableServerError() { }\n showFieldInfo(code?: string, detail?: any) { }\n showModalDialog(title, body, options, callback?, params?) { }\n openUploadDialog(title, body, options, callback?, params?) { }\n\n subscribeAppEvent(eventName: string, callback): void {\n this._eventEmiter.subscribe(eventName, callback);\n }\n\n openForm(name: string, data: any = null, backData: any = null, cleanStack = false): void {\n let origin: any = null;\n if (!cleanStack) {\n origin = { ...backData, name: this.name, url: this._formRoute, token: this._controlToken };\n origin.subject = origin?.subject ?? this.subject;\n origin.state = origin?.state ?? this.state;\n origin.fields = origin?.fields ?? {};\n origin.extra = origin?.extra ?? {};\n }\n const target = { ...data, name };\n target.subject = target?.subject ?? null;\n target.state = target?.state ?? null;\n target.fields = target?.fields ?? {};\n target.extra = target?.extra ?? {};\n this.formManagerService.openForm(origin, target);\n }\n\n enableActivityNotification() { this._notifyFormActivity = true; }\n disableActivityNotification() { this._notifyFormActivity = false; }\n canGoBack(): boolean { return this._originToken !== null }\n goBack(): void { return this.formManagerService.backTo(); }\n goBackForm(): void { return this.goBack(); }\n getOriginDetail(): any { return this.formManagerService?.getFormInfo(this._originToken ?? ''); }\n\n setError(errorType: string | null, errorMessage: string | null, errorDetail: string | null): void {\n this._errorType = errorType || '';\n this.errorMessage = errorMessage || '';\n this.errorDetail = errorDetail || '';\n }\n\n resetError(): void {\n this.errorCode = NO_ERROR;\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n }\n\n getErrorType(): string { return this._errorType; }\n getErrorMessage(): string { return this.errorMessage; }\n getErrorDetail(): string { return this.errorDetail; }\n getErrorName(): string { return this.errorName; }\n getErrorFullCode(): string { return this.errorFullCode; }\n getErrorCode(): string { return this.errorCode; }\n\n getFormParameter(name: string): string {\n return (name) ? (this.extraData?.[name] ?? null) : null;\n }\n\n preocessInputParams(params: any): string | null {\n this._controlToken = params?.[TOKEN] ?? null;\n this.subject = params?.[SUBJECT] ?? null;\n const tokenInfo: any = (this._controlToken) ? this.formManagerService.getFormInfo(this._controlToken) : {};\n const { token, subject, state, fields, extra, originToken } = tokenInfo;\n if (token && this._controlToken === token) {\n this.subject = this.subject ?? subject ?? null;\n this.inputDataFields = fields;\n this.extraData = extra;\n this._originToken = originToken;\n return state;\n }\n return null;\n }\n\n subscribeSectionActivation(): void {\n const formSections = this.sections;\n const sectionNames = Object.keys(formSections);\n for (let index = 0; index < sectionNames.length; index++) {\n const sectionName = sectionNames[index];\n const section = formSections[sectionName];\n section.activation.subscribe((code: string) => this.launchSectionActivation(code));\n section.inactivation.subscribe((code: string) => this.launchSectionInactivation(code));\n // Adicionalmente se le pide a la sección se subscriba al cambio de estado del formulario\n section.connectWithParentForm(this, this.stateChange);\n }\n }\n\n subscribeFieldsSubjects(): void {\n const formFields = this.getFields();\n if (Array.isArray(formFields)) {\n formFields.forEach(field => {\n field.editionFinish.subscribe(event => {\n const { code, intrinsicValidation } = event;\n this.startFieldValidation(code, intrinsicValidation);\n });\n field.editionPartial.subscribe(event => {\n const { code, intrinsicValidation } = event;\n this.startFieldInputValidation(code, intrinsicValidation);\n });\n field.detailRequest.subscribe(event => this.showFieldInfo(event.code, event.detail));\n // Adicionalmente se le pide al campo se subscriba al cambio de estado del formulario\n field.connectWithParentForm(this, this.stateChange);\n });\n }\n }\n\n subscribeActionSubjects(): void {\n const formActions = this.getActions();\n if (Array.isArray(formActions)) {\n formActions.forEach(action => {\n action.actionActivated.subscribe(code => this.startAction(code));\n // Adicionalmente se le pide a la acción se subscriba al cambio de estado del formulario\n action.connectWithParentForm(this, this.stateChange);\n });\n }\n }\n\n subscribeTableSubjects(): void {\n const formTables = this.getTables();\n if (Array.isArray(formTables)) {\n formTables.forEach(table => {\n table.inlineActionTrigger.subscribe(event => this.startTableAction(event));\n table.globalActionTrigger.subscribe(event => this.startTableGlobalAction(event));\n table.recordSelectionTrigger.subscribe(event => this.startTableRecordSelection(event));\n table.selectionActionTrigger.subscribe(event => this.startTableSelectionAction(event));\n table.getDataTrigger.subscribe(event => this.startTableGetData(event));\n // Adicionalmente se le pide a la tabla se subscriba al cambio de estado del formulario\n table.connectWithParentForm(this, this.stateChange);\n });\n }\n }\n\n async formInit(params, forceReload = false): Promise<void> {\n let initialState: string | null = this.preocessInputParams(params);\n if (!this.name) { return; }\n if (forceReload || !this._definitionObtained) {\n this.busy = true;\n const formDefinition = await this.formManagerService.getFormDefinition(this.name);\n this.busy = false;\n this.loadDefinition(formDefinition)\n this._definitionObtained = true;\n } else {\n this.cleanData();\n }\n if (!this.supportState(initialState ?? '')) {\n initialState = this.defaultState ?? null;\n }\n const inputFieldNames = Object.keys(this.inputDataFields);\n for (let index = 0; index < inputFieldNames.length; index++) {\n const code = inputFieldNames[index];\n const fieldValue = this.inputDataFields[code];\n this.setFieldValue(code, fieldValue);\n }\n this.subscribeSectionActivation();\n this.subscribeFieldsSubjects();\n this.subscribeActionSubjects();\n this.subscribeTableSubjects();\n // Se define el estado inicial y se solicita la acción inicial\n this.changeState(initialState || this.defaultState);\n if (this.loadInitialData) {\n const recordResponse = await this.requestFormAction(formActions.getData);\n this.checkErrorRecordReceived(recordResponse);\n }\n this.visible = true;\n this.enabledSections = this.visibleSections ?? [];\n\n this.start();\n this.customFormStart();\n }\n\n override changeState(state: string | undefined): boolean {\n const stateChanged = super.changeState(state ?? '') ?? false;\n if (stateChanged) {\n const clientActionMethods = this._formChangeState;\n if (clientActionMethods && clientActionMethods.length > 0) {\n for (const callback of clientActionMethods) {\n callback(state);\n }\n }\n }\n return stateChanged;\n }\n\n checkErrorRecordReceived(recordResponse: any): boolean {\n const { error } = recordResponse ?? {};\n if (!error) { return false; }\n this.errorCode = recordResponse.errorCode;\n this.errorFullCode = recordResponse.errorFullCode;\n this.errorName = recordResponse.errorName;\n this.errorMessage = recordResponse.errorMessage;\n this.errorDetail = recordResponse.errorDetail;\n return true;\n }\n\n errorOccured(): boolean {\n return (this.errorCode !== NO_ERROR);\n }\n\n /**\n * Soporte manejo de eventos de formulario\n */\n\n async requestFormAction(actionCode: string, actionSubject: any = {}): Promise<any> {\n const actionDetail = {\n formCode: this.name,\n formSubject: this.subject,\n currentMode: this.state,\n actionCode,\n actionSubject,\n version: PAYLOAD_VERSION,\n formData: this.getPayload(),\n immutableData: this.immutableData,\n };\n this.errorCode = NO_ERROR;\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n this.busy = true;\n const formActionResponse: any = await this.formManagerService.execServerAction(actionDetail);\n if (!formActionResponse) {\n return null;\n }\n this.busy = false;\n if (formActionResponse.hasError()) {\n const error = formActionResponse.error;\n this.errorCode = error.errorCode;\n this.errorFullCode = error.errorFullCode;\n this.errorName = error.errorName;\n this.errorMessage = error.errorMessage;\n this.errorDetail = error.errorDetail;\n }\n const formResponseData = formActionResponse.getData();\n this.updateFormWithServerData(formResponseData);\n return formResponseData;\n }\n\n updateFormWithServerData(formContent: any) {\n const {\n currentMode, formSubject, actions, fields, recordTables,\n returnedFile, immutableData, extraInfo,\n } = formContent;\n currentMode && this.changeState(currentMode);\n if (formSubject) { this.subject = formSubject; }\n if (actions && actions.length > 0) {\n for (const changedAction of actions) {\n const actionObject = this.getAction(changedAction.actionCode);\n if (actionObject) { actionObject.updateFromServer(changedAction); }\n }\n }\n if (fields && fields.length > 0) {\n for (const changedField of fields) {\n const fieldObject = this.getField(changedField.fieldCode);\n if (fieldObject) {\n fieldObject.updateFromServer(changedField);\n }\n }\n }\n if (recordTables && recordTables.length > 0) {\n for (const changedTable of recordTables) {\n const tableObject = this.getTable(changedTable.tableCode);\n if (tableObject) {\n tableObject.updateFromServer(changedTable);\n }\n }\n }\n if (returnedFile && returnedFile.file) {\n this.fileMgmtServices.saveFile(returnedFile.file, returnedFile.name, returnedFile.type);\n }\n this.immutableData = immutableData;\n this.extraInfo = extraInfo;\n }\n\n /**\n * Manejo de event handlers para errores Server del formulario\n */\n\n cleanActionServerError() { this._actionServerError = []; }\n cleanFieldServerError() { this._fieldServerError = []; }\n cleanTableServerError() { this._tableServerError = []; }\n onActionServerError(callback, properties = null) { this._actionServerError.push({ callback, properties }); }\n onValidationServerError(callback, properties = null) { this._fieldServerError.push({ callback, properties }); }\n onTableServerError(callback, properties = null) { this._tableServerError.push({ callback, properties }); }\n\n /**\n * Manejo de event handlers para acciones sobre el formulario\n */\n\n onFormChange(callback) {\n this._formChangeState.push(callback);\n }\n\n onSectionCanDeactivate(codes: string[] | string | null, callback, properties = null) {\n const sectionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n sectionSet.forEach((sectionName) => {\n if (!this._formSectionsCanDeactivate[sectionName]) {\n this._formSectionsCanDeactivate[sectionName] = [];\n }\n this._formSectionsCanDeactivate[sectionName].push({ callback, properties });\n });\n }\n\n onSectionActivation(codes: string[] | string | null, callback, properties = null) {\n const sectionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n sectionSet.forEach((sectionName) => {\n if (!this._formSectionsActivate[sectionName]) {\n this._formSectionsActivate[sectionName] = [];\n }\n this._formSectionsActivate[sectionName].push({ callback, properties });\n });\n }\n\n onSectionInactivation(codes: string[] | string | null, callback, properties = null) {\n const sectionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n sectionSet.forEach((sectionName) => {\n if (!this._formSectionsInactivate[sectionName]) {\n this._formSectionsInactivate[sectionName] = [];\n }\n this._formSectionsInactivate[sectionName].push({ callback, properties });\n });\n }\n\n onActionStart(codes: string[] | string | null, callback, properties = null) {\n const actionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n actionSet.forEach((actionName) => {\n if (!this._formActionsStart[actionName]) {\n this._formActionsStart[actionName] = [];\n }\n this._formActionsStart[actionName].push({ callback, properties });\n });\n }\n\n onActionFinish(codes: string[] | string | null, callback, properties = null) {\n const actionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n actionSet.forEach((actionName) => {\n if (!this._formActionsFinish[actionName]) {\n this._formActionsFinish[actionName] = [];\n }\n this._formActionsFinish[actionName].push({ callback, properties });\n });\n }\n\n async verifySectionActivation(code: string): Promise<boolean> {\n const sectionObject = this.getSection(code);\n if (!sectionObject) { return false; }\n const clientSectionMethods = this._formSectionsCanDeactivate[code];\n if (clientSectionMethods) {\n for (const clientSectionMethod of clientSectionMethods) {\n const { callback, properties } = clientSectionMethod;\n const canActivate = callback(sectionObject);\n if (canActivate === false) {\n return false;\n }\n }\n }\n return true;\n }\n\n async launchSectionActivation(code: string) {\n this.notifyFormActivity();\n const sectionObject = this.getSection(code);\n if (!sectionObject) { return; }\n const clientSectionMethods = this._formSectionsActivate[code];\n if (clientSectionMethods) {\n for (const clientSectionMethod of clientSectionMethods) {\n const { callback, properties } = clientSectionMethod;\n callback(sectionObject);\n }\n }\n }\n\n async launchSectionInactivation(code: string) {\n this.notifyFormActivity();\n const sectionObject = this.getSection(code);\n if (!sectionObject) { return; }\n const clientSectionMethods = this._formSectionsInactivate[code];\n if (clientSectionMethods) {\n for (const clientSectionMethod of clientSectionMethods) {\n const { callback, properties } = clientSectionMethod;\n callback(sectionObject);\n }\n }\n }\n\n async startAction(code: string) {\n this.notifyFormActivity();\n const actionObject = this.getAction(code);\n if (!actionObject) { return; }\n this.resetError();\n actionObject.start();\n const clientActionMethods = this._formActionsStart[code];\n if (clientActionMethods) {\n const clientActionPromises: any[] = [];\n for (const clientActionMethod of clientActionMethods) {\n const { callback, properties } = clientActionMethod;\n const continueActionPromise = callback(actionObject);\n clientActionPromises.push(continueActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n actionObject.stop();\n return;\n }\n }\n this.startServerAction(actionObject);\n }\n\n async startServerAction(actionInput) {\n const action = (typeof actionInput === 'string')\n ? this.getAction(actionInput) : actionInput;\n if (!action) {\n return;\n }\n let serverError = false;\n let actionResult = null;\n if (action.backend) {\n actionResult = await this.requestFormAction(action.actionCode);\n }\n await this.finishAction(action, actionResult, serverError);\n serverError = !!this.errorOccured();\n if (!serverError) {\n action.newState && this.changeState(action.newState);\n } else {\n for (let index = 0; index < this._actionServerError.length; index++) {\n const { callback, properties } = this._actionServerError[index];\n callback(action);\n }\n }\n action.stop();\n }\n\n async finishAction(action, actionResult, serverError = false) {\n const finishActionMethods = this._formActionsFinish[action.actionCode];\n if (finishActionMethods) {\n const clientActionPromises: any[] = [];\n for (const clientActionMethod of finishActionMethods) {\n const { callback, properties } = clientActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (callback && (!serverError || continueOnError)) {\n clientActionPromises.push(callback(action, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n completeGlobalAction(action: any) {\n return this.startServerAction(action);\n }\n\n /**\n * Manejadores de eventos para validaciones sobre campos\n */\n\n onFieldInput(codes: string[] | string | null, callback, properties = null) {\n const fieldSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n fieldSet.forEach((code) => {\n if (!this._fieldInputValidation[code]) {\n this._fieldInputValidation[code] = [];\n }\n this._fieldInputValidation[code].push({ callback, properties });\n });\n }\n\n onFieldValidationStart(codes: string[] | string | null, callback, properties = null) {\n const fieldSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n fieldSet.forEach((code) => {\n if (!this._fieldValidationsStart[code]) {\n this._fieldValidationsStart[code] = [];\n }\n this._fieldValidationsStart[code].push({ callback, properties });\n });\n }\n\n onFieldValidationFinish(codes: string[] | string | null, callback, properties = null) {\n const fieldSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n fieldSet.forEach((code) => {\n if (!this._fieldValidationsFinish[code]) {\n this._fieldValidationsFinish[code] = [];\n }\n this._fieldValidationsFinish[code].push({ callback, properties });\n });\n }\n\n async startFieldInputValidation(code: string, intrinsicValidation: boolean = true) {\n this.notifyFormActivity();\n const fieldToValidate = this.getField(code);\n if (!fieldToValidate) { return false; }\n const validationCallbacks = this._fieldInputValidation[code];\n if (validationCallbacks) {\n const clientValidationPromises: any[] = [];\n for (const validationMethod of validationCallbacks) {\n const { callback, properties } = validationMethod;\n const continueValidationPromise = callback(fieldToValidate);\n clientValidationPromises.push(continueValidationPromise);\n }\n await Promise.all(clientValidationPromises);\n }\n return true;\n }\n\n async startFieldValidation(code: string, intrinsicValidation: boolean = true) {\n this.notifyFormActivity();\n const fieldToValidate = this.getField(code);\n if (!fieldToValidate) { return; }\n const validationCallbacks = this._fieldValidationsStart[code];\n if (validationCallbacks) {\n const clientValidationPromises: any[] = [];\n for (const validationMethod of validationCallbacks) {\n const { callback, properties } = validationMethod;\n const clientValidationPromise = callback(fieldToValidate);\n clientValidationPromises.push(clientValidationPromise);\n }\n const clientValidationResults = await Promise.all(clientValidationPromises);\n const continueValidation = clientValidationResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueValidation) {\n return;\n }\n }\n if (intrinsicValidation) {\n this.startServerFieldValidation(fieldToValidate);\n }\n }\n\n async startServerFieldValidation(inputField: string | FieldDescriptor) {\n const fieldObj: FieldDescriptor | null = (typeof inputField === 'string')\n ? this.getField(inputField) : inputField;\n let serverError = false;\n let validationResult: boolean = true;\n if (!fieldObj) {\n return;\n }\n if (fieldObj.backend) {\n fieldObj.validating = true;\n validationResult = await this\n .requestFormAction(formActions.validate, fieldObj.code);\n serverError = !!this.errorOccured();\n }\n if (serverError) {\n fieldObj?.setErrorCode(this.errorCode);\n fieldObj?.setErrorMessage(this.errorMessage);\n for (let index = 0; index < this._fieldServerError.length; index++) {\n const { callback, properties } = this._fieldServerError[index];\n callback(fieldObj);\n }\n }\n await this.finishFieldValidation(fieldObj, validationResult, serverError);\n fieldObj.validating = false;\n }\n\n async finishFieldValidation(fieldObject: any, validationResult: boolean, serverError = false) {\n const validationCallbacks = this._fieldValidationsFinish[fieldObject.code];\n if (validationCallbacks) {\n const clientActionPromises: any[] = [];\n for (const validationMethod of validationCallbacks) {\n const { callback, properties } = validationMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(fieldObject, validationResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async continueFieldValidation(code: string) {\n return this.startServerFieldValidation(code);\n }\n\n /**\n * Manejadores de eventos para acciones sobre Tablas\n */\n\n onTableActionStart(code: string, actionCode: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) {\n return;\n }\n const inlineActionObject = tableObject.getAction(actionCode);\n if (!inlineActionObject) {\n return;\n }\n let tableEventHandlers: any;\n if (this._tableActionsStart[code]) {\n tableEventHandlers = this._tableActionsStart[code];\n } else {\n tableEventHandlers = {};\n this._tableActionsStart[code] = tableEventHandlers;\n }\n if (!tableEventHandlers[actionCode]) {\n tableEventHandlers[actionCode] = [];\n }\n tableEventHandlers[actionCode].push({ callback, properties });\n }\n\n onTableActionFinish(code: string, actionCode: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) {\n return;\n }\n const inlineActionObject = tableObject.getAction(actionCode);\n if (!inlineActionObject) {\n return;\n }\n let tableEventHandlers: any;\n if (this._tableActionsFinish[code]) {\n tableEventHandlers = this._tableActionsFinish[code];\n } else {\n tableEventHandlers = {};\n this._tableActionsFinish[code] = tableEventHandlers;\n }\n if (!tableEventHandlers[actionCode]) {\n tableEventHandlers[actionCode] = [];\n }\n tableEventHandlers[actionCode].push({ callback, properties });\n }\n\n onTableSelectionStart(code: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) { return; }\n let tableEventHandlers: any[];\n if (this._tableSelectionsStart[code]) {\n tableEventHandlers = this._tableSelectionsStart[code];\n } else {\n tableEventHandlers = [];\n this._tableSelectionsStart[code] = tableEventHandlers;\n }\n tableEventHandlers.push({ callback, properties });\n }\n\n onTableSelectionFinish(code: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) { return; }\n let tableEventHandlers: any[];\n if (this._tableSelectionsFinish[code]) {\n tableEventHandlers = this._tableSelectionsFinish[code];\n } else {\n tableEventHandlers = [];\n this._tableSelectionsFinish[code] = tableEventHandlers;\n }\n tableEventHandlers.push({ callback, properties });\n }\n\n onTableGetDataStart(code: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) {\n return;\n }\n let tableEventHandlers: any[];\n if (this._tableGetDataStart[code]) {\n tableEventHandlers = this._tableGetDataStart[code];\n } else {\n tableEventHandlers = [];\n this._tableGetDataStart[code] = tableEventHandlers;\n }\n tableEventHandlers.push({ callback, properties });\n }\n\n onTableGetDataFinish(code: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) {\n return;\n }\n let tableEventHandlers: any;\n if (this._tableGetDataFinish[code]) {\n tableEventHandlers = this._tableGetDataFinish[code];\n } else {\n tableEventHandlers = {};\n this._tableGetDataFinish[code] = tableEventHandlers;\n }\n tableEventHandlers[GET_DATA_ACTION] = { callback, properties };\n }\n\n async startTableGlobalAction(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode, actionCode } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n if (!tableObject || !actionCode) { return; }\n this.resetError();\n const action = tableObject.getAction(actionCode);\n if (!action) { return; }\n const tableActionDetail = {\n tableObject,\n action,\n tableCode,\n actionCode,\n };\n const tableEventHandlers = this._tableActionsStart[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const clientActionPromise = callback(tableActionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerGlobalAction(tableActionDetail);\n }\n\n async startTableServerGlobalAction(tableActionDetail: any) {\n const { tableObject, action, tableCode, actionCode } = tableActionDetail;\n if (!tableObject || !action) { return; }\n tableObject.putOnWait();\n let serverError = false;\n let actionResult = null;\n if (action.backend) {\n const actionSubject = {\n tableCode,\n actionType: GLOBAL_ACTION,\n actionCode\n };\n actionResult = await this\n .requestFormAction(formActions.tableAction, actionSubject);\n serverError = !!this.errorOccured();\n }\n await this.finishTableGlobalAction(tableActionDetail, actionResult, serverError);\n if (!serverError) {\n action.newState && this.changeState(action.newState);\n } else {\n for (let index = 0; index < this._tableServerError.length; index++) {\n const { callback, properties } = this._tableServerError[index];\n callback(tableObject);\n }\n }\n tableObject.freeWaiting();\n }\n\n async finishTableGlobalAction(tableActionDetail: any, actionResult, serverError = false) {\n const { tableCode, actionCode } = tableActionDetail;\n const tableEventHandlers = this._tableActionsFinish[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableActionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async startTableAction(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode, actionCode, actionDetail } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n if (!tableObject || !actionCode) { return; }\n this.resetError();\n const { recordId, recordData } = actionDetail;\n const action = tableObject.getAction(actionCode);\n if (!action) { return; }\n const tableActionDetail = {\n tableObject,\n action,\n tableCode,\n actionCode,\n recordId,\n recordData\n };\n const tableEventHandlers = this._tableActionsStart[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const clientActionPromise = callback(tableActionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerAction(tableActionDetail);\n }\n\n async startTableServerAction(tableActionDetail: any) {\n const { tableObject, action, tableCode, actionCode, recordId, recordData } = tableActionDetail;\n if (!tableObject || !action) { return; }\n tableObject.putOnWait();\n let serverError = false;\n let actionResult = null;\n if (action.backend) {\n const actionSubject = {\n tableCode,\n actionType: this.formConfig?.tableActions.inline,\n actionCode,\n tableRecordId: recordId,\n tableRecordData: recordData\n };\n actionResult = await this\n .requestFormAction(formActions.tableAction, actionSubject);\n serverError = !!this.errorOccured();\n }\n await this.finishTableAction(tableActionDetail, actionResult, serverError);\n if (!serverError) {\n action.newState && this.changeState(action.newState);\n } else {\n this.displayTableServerError();\n }\n tableObject.freeWaiting();\n }\n\n completeInlineAction(tableAction: any) {\n return this.startTableServerAction(tableAction);\n }\n\n async finishTableAction(tableActionDetail: any, actionResult, serverError = false) {\n const { tableCode, actionCode } = tableActionDetail;\n const tableEventHandlers = this._tableActionsFinish[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableActionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async startTableRecordSelection(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode, actionDetail } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n if (!tableObject) { return; }\n this.resetError();\n const { recordId, recordData } = actionDetail;\n const tableSelectionDetail = {\n tableObject,\n tableCode,\n recordId,\n recordData\n };\n const tableEventHandlers = this._tableSelectionsStart[tableCode];\n if (tableEventHandlers) {\n const clientActionPromises: any[] = [];\n for (const tableSelectionMethod of tableEventHandlers) {\n const { callback, properties } = tableSelectionMethod;\n const clientActionPromise = callback(tableSelectionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerRecordSelection(tableSelectionDetail);\n }\n\n async startTableServerRecordSelection(tableSelectionDetail: any) {\n const { tableObject, tableCode, recordId, recordData } = tableSelectionDetail;\n if (!tableObject) { return; }\n tableObject.putOnWait();\n let serverError = false;\n let actionResult = null;\n if (tableObject.selectionBackend) {\n const actionSubject: any = {\n tableCode,\n actionType: this.formConfig?.tableActions.rowSelection,\n actionCode: null,\n tableRecordId: recordId,\n tableRecordData: recordData\n };\n actionResult = await this\n .requestFormAction(formActions.tableAction, actionSubject);\n serverError = !!this.errorOccured();\n }\n await this.finishTableRecordSelection(tableSelectionDetail, actionResult, serverError);\n if (serverError) {\n this.displayTableServerError();\n }\n tableObject.freeWaiting();\n }\n\n async finishTableRecordSelection(tableSelectionDetail: any, actionResult, serverError = false) {\n const { tableCode } = tableSelectionDetail;\n const tableEventHandlers = this._tableSelectionsFinish[tableCode];\n if (tableEventHandlers) {\n const clientActionPromises: any[] = [];\n for (const tableSelectionMethod of tableEventHandlers) {\n const { callback, properties } = tableSelectionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableSelectionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async startTableSelectionAction(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode, actionCode, actionDetail } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n if (!tableObject || !actionCode) { return; }\n this.resetError();\n const { selectedRecords } = actionDetail;\n const action = tableObject.getAction(actionCode);\n if (!action) { return; }\n const tableActionDetail = {\n tableObject,\n action,\n tableCode,\n actionCode,\n selectedRecords\n };\n const tableEventHandlers = this._tableActionsStart[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const clientActionPromise = callback(tableActionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerSelectionAction(tableActionDetail);\n }\n\n async startTableServerSelectionAction(tableActionDetail: any) {\n const { tableObject, action, tableCode, actionCode, selectedRecords } = tableActionDetail;\n if (!tableObject || !action) { return; }\n tableObject.putOnWait();\n let serverError = false;\n let actionResult = null;\n if (action.backend) {\n const actionSubject = {\n tableCode,\n actionType: this.formConfig?.tableActions.selection,\n actionCode,\n selectedRecords\n };\n actionResult = await this\n .requestFormAction(formActions.tableAction, actionSubject);\n serverError = !!this.errorOccured();\n }\n await this.finishTableSelectionAction(tableActionDetail, actionResult, serverError);\n if (!serverError) {\n action.newState && this.changeState(action.newState);\n } else {\n this.displayTableServerError();\n }\n tableObject.freeWaiting();\n }\n\n async finishTableSelectionAction(tableActionDetail: any, actionResult, serverError = false) {\n const { tableCode, actionCode } = tableActionDetail;\n const tableEventHandlers = this._tableActionsFinish[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableActionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async startTableGetData(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n const tableActionDetail = {\n tableObject,\n tableCode\n };\n this.resetError();\n const tableEventHandlers = this._tableGetDataStart[tableCode];\n if (tableEventHandlers) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableEventHandlers) {\n const { callback, properties } = tableActionMethod;\n const clientActionPromise = callback(tableActionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerGetData(tableActionDetail);\n }\n\n async startTableServerGetData(tableActionDetail: any) {\n const { tableObject, tableCode } = tableActionDetail;\n tableObject.putOnWait();\n let serverError = false;\n const actionSubject = { tableCode };\n const actionResult = await this\n .requestFormAction(formActions.getTableData, actionSubject);\n serverError = !!this.errorOccured();\n await this.finishTableGetData(tableActionDetail, actionResult, serverError);\n if (serverError) {\n this.displayTableServerError();\n }\n tableObject.freeWaiting();\n }\n\n async finishTableGetData(tableActionDetail: any, actionResult, serverError = false) {\n const { tableCode, tableActionCode } = tableActionDetail;\n const tableEventHandlers = this._tableActionsFinish[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[tableActionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableActionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n checkSectionRequiredFields(sectionCode: string, reqFieldMessage?: string) {\n this.cleanErrorFields(null, sectionCode);\n const requiredFieldMessage = reqFieldMessage ?? this.formConfig?.formStandardErrors.requiredField\n const numErrors = this.tagFieldsWithError(requiredFieldMessage, this.getRequiredEmptyFields(null, sectionCode));\n return (numErrors === 0);\n }\n\n validateSectionConsistency(sectionCode: string, reqFieldMessage?: string) {\n this.resetError();\n const completeFields = this.checkSectionRequiredFields(sectionCode, reqFieldMessage);\n if (!completeFields) {\n this.setError(this.formConfig?.formStandardErrors.typeWarning,\n this.formConfig?.formStandardErrors.validationTitle,\n this.formConfig?.formStandardErrors.requiredFields);\n return false;\n }\n let validationError = false;\n const requiredEmptyFields: any[] = this.getRequiredEmptyFields(null, sectionCode) ?? [];\n if (requiredEmptyFields?.length > 0) {\n validationError = true;\n this.setError(this.formConfig?.formStandardErrors.typeWarning,\n this.formConfig?.formStandardErrors.validationTitle,\n this.formConfig?.formStandardErrors.requiredFields);\n this.tagFieldsWithError(this.formConfig?.formStandardErrors.requiredField, requiredEmptyFields);\n for (const code of requiredEmptyFields) {\n const requiredEmptyField = this.getField(code);\n requiredEmptyField?.focus();\n break;\n }\n }\n const validationIssueFields: any[] = this.getFieldsWithValidationIssues(null,\n sectionCode) ?? [];\n if (!validationError && validationIssueFields.length > 0) {\n validationError = true;\n this.setError(this.formConfig?.formStandardErrors.typeWarning,\n this.formConfig?.formStandardErrors.validationTitle,\n this.formConfig?.formStandardErrors.validationFields);\n for (const code of validationIssueFields) {\n const validationIssueField = this.getField(code);\n if (validationIssueField) {\n validationIssueField.focus();\n }\n break;\n }\n }\n return validationError;\n }\n\n copyTableRecordToFields(tableObj: any, mappingTable: any = null) {\n const tableObject = this.getTable(tableObj.tableCode);\n const tableRecord = tableObject?.getTableRecord(tableObj.recordId);\n const columnNames = tableObject?.columnNames;\n if (tableRecord && columnNames) {\n for (const columnName of columnNames) {\n const columnValue = tableRecord.getFieldValue(columnName) ?? '';\n const code = mappingTable?.[columnName] ?? columnName;\n const field = code ? this.getField(code) : null;\n if (field) {\n field.setValue(columnValue);\n field.hasChanged = false;\n }\n }\n return true;\n }\n return false;\n }\n\n notifyFormActivity() {\n if (this._notifyFormActivity) {\n this._eventEmiter.next('formActivity', { code: this.formCode });\n }\n }\n\n /**\n * Métodos Legacy de compatibilidad hacia atrás\n */\n\n /**\n * @deprecated Use name\n */\n get formCode(): string { return this.name ?? ''; }\n\n /**\n * @deprecated Use name\n */\n set formCode(name: string) { this.name = name; }\n\n /**\n * @deprecated Use busy\n */\n get inServerProcess() { return this.busy; }\n\n /**\n * @deprecated Use state\n */\n get currentState(): string { return this.state ?? ''; }\n\n /**\n * @deprecated Use changeState\n */\n set currentState(state: string) { this?.changeState(state); }\n\n /**\n * @deprecated Use onSectionActivation\n */\n get formRoute(): string { return this._formRoute ?? ''; }\n\n /**\n * @deprecated Use onSectionActivation\n */\n set formRoute(route: string) { this._formRoute = route; }\n\n /**\n * @deprecated Use onSectionActivation\n */\n addSectionActivation(codes: string[] | string | null, callback, properties = null) {\n return this.onSectionActivation(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onSectionInactivation\n */\n addSectionInactivation(codes: string[] | string | null, callback, properties = null) {\n return this.onSectionInactivation(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onActionStart\n */\n addActionMethodStart(codes: string[] | string | null, callback, properties = null) {\n return this.onActionStart(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onActionFinish\n */\n addActionMethodFinish(codes: string[] | string | null, callback, properties = null) {\n return this.onActionFinish(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onFieldInput\n */\n addFieldInputValidation(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldInput(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onFieldValidationStart\n */\n addFieldValidationStart(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldValidationStart(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onFieldValidationFinish\n */\n addFieldValidationFinish(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldValidationFinish(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onTableActionStart\n */\n addTableActionStart(code: string, actionCode: string, callback, properties = null) {\n return this.onTableActionStart(code, actionCode, callback, properties);\n }\n\n /**\n * @deprecated Use onTableActionFinish\n */\n addTableActionFinish(code: string, actionCode: string, callback, properties = null) {\n return this.onTableActionFinish(code, actionCode, callback, properties);\n }\n\n /**\n * @deprecated Use onTableSelectionStart\n */\n addTableSelectionStart(code: string, callback, properties = null) {\n return this.onTableSelectionStart(code, callback, properties);\n }\n\n /**\n * @deprecated Use onTableSelectionFinish\n */\n addTableSelectionFinish(code: string, callback, properties = null) {\n return this.onTableSelectionFinish(code, callback, properties);\n }\n\n /**\n * @deprecated Use onTableGetDataStart\n */\n addTableGetDataStart(code: string, callback, properties = null) {\n return this.onTableGetDataStart(code, callback, properties);\n }\n\n /**\n * @deprecated Use onTableGetDataFinish\n */\n addTableGetDataFinish(code: string, callback, properties = null) {\n return this.onTableGetDataFinish(code, callback, properties);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\n\nimport { BasicFormComponent } from './components/forms/basic-form';\nimport { ActionComponent } from './components/elements/action.component';\nimport { FieldComponent } from './components/elements/field.component';\nimport { ElementComponent } from './components/elements/layout/element.component';\nimport { FormErrorComponent } from './components/elements/layout/form-error.component';\nimport { FormHeaderComponent } from './components/elements/layout/form-header.component';\nimport { SectionComponent } from './components/elements/layout/section.component';\nimport { SubSectionComponent } from './components/elements/layout/sub-section.component';\nimport { LibTableRecordActionComponent } from './components/elements/tables/table-record-action.component';\nimport { LibTableRecordFieldComponent } from './components/elements/tables/table-record-field.component';\nimport { LibTableComponent } from './components/elements/tables/table.component';\n\nconst COMPONENTS = [\n BasicFormComponent,\n ActionComponent,\n FieldComponent,\n ElementComponent,\n FormErrorComponent,\n FormHeaderComponent,\n SectionComponent,\n SubSectionComponent,\n LibTableRecordActionComponent,\n LibTableRecordFieldComponent,\n LibTableComponent];\n\n@NgModule({\n declarations: COMPONENTS,\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ],\n exports: COMPONENTS\n})\nexport class TuainNgFormsLibModule { }\n","/*\n * Public API Surface of tuain-ng-forms-lib\n */\n\nexport * from './lib/components/elements/action.component';\nexport * from './lib/components/elements/field.component';\nexport * from './lib/components/elements/layout/element.component';\nexport * from './lib/components/elements/layout/form-error.component';\nexport * from './lib/components/elements/layout/form-header.component';\nexport * from './lib/components/elements/layout/section.component';\nexport * from './lib/components/elements/layout/sub-section.component';\nexport * from './lib/components/elements/tables/table-record-action.component';\nexport * from './lib/components/elements/tables/table-record-field.component';\nexport * from './lib/components/elements/tables/table.component';\nexport * from './lib/components/forms/basic-form';\nexport * from './lib/services/event-manager.service';\nexport * from './lib/services/form-manager.service';\nexport * from './lib/services/file-manager.service';\nexport * from './lib/tuain-ng-forms-lib.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CUSTOM_ATTRIBUTES","signaledAttributes","INLINE_ACTION","HEADER","attrs","ACTIVE","i1.LibFormManagerService","i2.LibEventManagerService","i3.LibFileManagementService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tuain-ng-forms-lib.mjs","sources":["../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/piece.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/element.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/action.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/field.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/form-error.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/form-header.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/section.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/layout/sub-section.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/tables/table-record-action.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/tables/table-record-field.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/elements/tables/table.component.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/form.constants.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/piece.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/piece-propagate.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/element.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/action.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/field.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/table/column.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/table/action.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/table/row-data.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/table/table.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/subsection.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/section.ts","../../../projects/tuain-ng-forms-lib/src/lib/classes/forms/form.ts","../../../projects/tuain-ng-forms-lib/src/lib/services/form-manager.service.ts","../../../projects/tuain-ng-forms-lib/src/lib/services/event-manager.service.ts","../../../projects/tuain-ng-forms-lib/src/lib/services/file-manager.service.ts","../../../projects/tuain-ng-forms-lib/src/lib/components/forms/basic-form.ts","../../../projects/tuain-ng-forms-lib/src/lib/tuain-ng-forms-lib.module.ts","../../../projects/tuain-ng-forms-lib/src/public-api.ts","../../../projects/tuain-ng-forms-lib/src/tuain-ng-forms-lib.ts"],"sourcesContent":["import { Component, signal, computed } from '@angular/core';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n@Component({\n selector: 'lib-piece',\n template: `<ng-content></ng-content>`\n})\nexport class PieceComponent {\n form: any;\n formConfig: any;\n visible: any = signal(false);\n disabled: any = signal(false);\n enabled: any = computed(() => !this.disabled());\n customAttributes: any = signal({});\n\n setForm(form) { this.form = form; }\n\n propagatedAttributeChange(attribute: string, value?: any) { }\n\n updatePieceAttribute(signaledAttributes, signaledAttribute, value) {\n if (!signaledAttributes.includes(signaledAttribute)) { return; }\n this[signaledAttribute]?.set(value);\n this.propagatedAttributeChange(signaledAttribute, value);\n }\n\n updatePieceAttributes(piece, signaledAttributes) {\n if (!piece) { return; }\n // Se recore el conjunto de los atributos propagados desde el piece y se asigna el valor respectivo\n for (let index = 0; index < signaledAttributes.length; index++) {\n const signaledAttribute = signaledAttributes[index];\n try {\n this[signaledAttribute]?.set(piece?.[signaledAttribute]);\n this.propagatedAttributeChange(signaledAttribute, piece?.[signaledAttribute]);\n } catch (e) {\n console.log(`Señal ${signaledAttribute} invalida en el componente. ${e}`);\n }\n }\n }\n\n // Función que las subclases pueden sobrecargar para manejar un comportamiento específico\n customAttributeChange(subAttribute: string, value?: any) { }\n\n updateCustomAttribute(attrName, attrValue) {\n this.customAttributes.update(oldCustomAttr => {\n oldCustomAttr[attrName] = attrValue;\n return oldCustomAttr;\n });\n // Ejecución de función personalizada ante un cambio de atributo personalizado\n this.customAttributeChange(attrName, attrValue);\n }\n\n replaceCustomAttributes(customAttributes) {\n this.customAttributes.set(customAttributes ?? {});\n Object.keys(customAttributes).forEach(attrName => {\n const attrValue = customAttributes[attrName];\n // Ejecución de función personalizada ante un cambio de atributo personalizado\n this.customAttributeChange(attrName, attrValue);\n });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { PieceComponent } from './piece.component';\n\n@Component({\n selector: 'lib-element',\n template: `<ng-content></ng-content>`\n})\nexport class ElementComponent extends PieceComponent {\n @Input() element: any;\n\n start() {\n this.setForm(this.element?._form);\n }\n}\n","import { Component, signal, Input, OnInit } from '@angular/core';\nimport { FormAction } from '../../classes/forms/action';\nimport { ElementComponent } from './layout/element.component';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'actionCode', 'actionName', 'iconName', 'inProgress', 'restrictedOnField', 'restrictedOnOperator',\n 'restrictedOnValue', 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-action',\n template: `<ng-content></ng-content>`\n})\n\nexport class ActionComponent extends ElementComponent implements OnInit {\n actionCode: any = signal(null);\n actionName: any = signal(null);\n iconName: any = signal(null);\n inProgress: any = signal(false);\n restrictedOnField: any = signal(null);\n restrictedOnOperator: any = signal(null);\n restrictedOnValue: any = signal(null);\n\n @Input() action: FormAction | null = null;\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.action, signaledAttributes)\n }\n\n ngOnInit() {\n if (!this.action) { return; }\n this.action.widget = this;\n this.formConfig = this.action?._formConfig;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.action?.customAttributes);\n this.action?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n override start() {\n this.setForm(this.action?._form);\n }\n\n activate() {\n if (this.action?.notifyActivation) {\n this.action.notifyActivation();\n }\n }\n}","import { Component, signal, OnInit, Input, AfterViewInit } from '@angular/core';\nimport { FieldDescriptor } from '../../classes/forms/field';\nimport { ElementComponent } from './layout/element.component'\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = ['captureType', 'errorCode', 'errorMessage', 'errorType', 'defaultValue',\n 'defaultEditable', 'alignment', 'code', 'info', 'required', 'title', 'type', 'format', 'options',\n 'hasChanged', 'maxLength', 'maxValue', 'minLength', 'minValue', 'onValidation', 'outputOnly',\n 'placeholder', 'tooltip', 'validateOnServer', 'visibleLabel', 'visible', 'disabled', 'value',\n];\n\nconst VALUE = 'value';\nconst FOCUS = 'focus';\n@Component({\n selector: 'lib-field',\n template: `<ng-content></ng-content>`\n})\nexport class FieldComponent extends ElementComponent implements AfterViewInit {\n // Atributos propagados desde el campo\n captureType: any = signal<string>('');\n errorCode: any = signal<string>('');\n errorMessage: any = signal<string>('');\n errorType: any = signal<string>('');\n defaultValue: any = signal<any>(null);\n defaultEditable: any = signal<boolean>(false);\n alignment: any = signal<string>('');\n code: any = signal<string>('');\n info: any = signal<any>(null);\n required: any = signal<boolean>(false);\n title: any = signal<string>('');\n type: any = signal<string>('');\n format: any = signal<any>(null);\n options: any = signal<any[]>([]);\n hasChanged: any = signal<boolean>(false);\n minLength: any = signal<number>(0);\n maxLength: any = signal<number>(0);\n minValue: any = signal<any>(null);\n maxValue: any = signal<any>(null);\n onValidation: any = signal<boolean>(false);\n outputOnly: any = signal<boolean>(false);\n placeholder: any = signal<string>('');\n tooltip: any = signal<string>('');\n validateOnServer: any = signal<boolean>(false);\n visibleLabel: any = signal<boolean>(true);\n\n value: any; // Valor del componente relacionado con el campo (pueden diferir en formato y tipo)\n @Input() field: FieldDescriptor | null = null;\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.field, signaledAttributes)\n }\n\n ngAfterViewInit() {\n if (!this.field) { return; }\n this.field.widget = this;\n this.formConfig = this.field?._formConfig;\n this.updatePropagatedAttributes();\n this.updateValue();\n this.replaceCustomAttributes(this.field?.customAttributes);\n this.field?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (attribute === VALUE) {\n this.updateValue();\n } else if (attribute === FOCUS) {\n this.focus();\n } else if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n updateValue() {\n this.value = this.field?.value;\n }\n\n onInputChange() { setTimeout(() => this.field?.notifyEditionPartial(), 50); }\n onChangeContent() { setTimeout(() => this.field?.notifyEditionFinish(), 50); }\n onShowInfo(detail = null) { setTimeout(() => this.field?.notifyEditionDetailRequest(detail), 50); }\n\n focus() { }\n\n updateObject(widgetUpdate = true) { this.field?.setValue(this.value, widgetUpdate); }\n\n inputChanged() {\n this.field?.setValue(this.value);\n this.onChangeContent();\n }\n\n inputTyped() {\n this.updateObject(false);\n this.onInputChange();\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-form-error',\n template: `<ng-content></ng-content>`\n})\nexport class FormErrorComponent {\n @Input() errorTitle: any;\n @Input() errorMessage: any;\n @Input() errorType: any;\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'lib-form-header',\n template: `<ng-content></ng-content>`\n})\nexport class FormHeaderComponent {\n @Input() form: any;\n @Output() goBackEvent: EventEmitter<void> = new EventEmitter<void>();\n\n goBackForm() {\n this.goBackEvent.emit();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PieceComponent } from './piece.component';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-section',\n template: `<ng-content></ng-content>`\n})\nexport class SectionComponent extends PieceComponent implements OnInit {\n @Input() section: any;\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.section, signaledAttributes)\n }\n\n ngOnInit() {\n if (!this.section) { return; }\n this.formConfig = this.section?._formConfig;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.section?.customAttributes);\n this.section?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n start() {\n this.setForm(this.section?._form);\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PieceComponent } from './piece.component';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-subsection',\n template: `<ng-content></ng-content>`\n})\nexport class SubSectionComponent extends PieceComponent implements OnInit {\n @Input() subSection: any;\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.subSection, signaledAttributes)\n }\n\n ngOnInit() {\n if (!this.subSection) { return; }\n this.formConfig = this.subSection?._formConfig;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.subSection?.customAttributes);\n this.subSection?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n start() {\n this.setForm(this.subSection?._form);\n }\n}\n","import { Component, Input, Output, OnInit, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { PieceComponent } from '../layout/piece.component';\nimport { TableEvent, TableActionEvent } from '../../../classes/forms/table/table';\nimport { TableAction } from '../../../classes/forms/table/action';\n\nconst INLINE_ACTION = 'INLINE';\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-table-record-action',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableRecordActionComponent extends PieceComponent implements OnInit {\n @Input() recordId: any;\n @Input() recordData: any;\n @Input() action: TableAction | undefined;\n\n @Output() actionSelected: EventEmitter<TableActionEvent> = new EventEmitter<TableActionEvent>();\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.action, signaledAttributes)\n }\n\n ngOnInit() {\n if (!this.action) { return; }\n this.formConfig = this.action?._formConfig;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.action?.customAttributes);\n this.start();\n }\n\n start() {\n if (this.action && this.action.restrictedOnField && this.recordData) {\n const relatedField = this.action.restrictedOnField;\n if (relatedField) {\n const relatedFieldValue = this.recordData[relatedField];\n const restrictionOper = this.action.restrictedOnOperator;\n const restrictionValue = this.action.restrictedOnValue\n if ((restrictionOper === '==' && relatedFieldValue !== restrictionValue)\n || (restrictionOper === '!=' && relatedFieldValue === restrictionValue)) {\n this.visible.set(false);\n } else {\n this.visible.set(true);\n }\n }\n }\n }\n\n onActivate() {\n const tableEvent: TableActionEvent = {\n actionCode: this.action?.actionCode ?? '',\n recordId: this.recordId,\n recordData: this.recordData,\n };\n this.actionSelected.emit(tableEvent);\n }\n\n class() { }\n}\n","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'lib-table-record-field',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableRecordFieldComponent implements OnInit {\n @Input() fieldCode: any;\n @Input() fieldType: any;\n @Input() fieldValue: any;\n @Input() column: any = null;\n\n ngOnInit() {\n this.start();\n }\n\n start() { }\n}\n","import { Component, signal, OnInit, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { TableRecordData } from '../../../classes/forms/table/row-data';\nimport { TableActionEvent } from '../../../classes/forms/table/table';\nimport { RecordTable, TableEvent } from '../../../classes/forms/table/table';\nimport { ElementComponent } from '../layout/element.component';\n\nconst CUSTOM_ATTRIBUTES = 'customAttributes';\n\nconst signaledAttributes = [\n 'allSelected', 'code', 'globalSearch', 'recordsPerPage', 'layout',\n 'columns', 'selectedRecords', 'currentPage', 'totalRecordsNumber', 'visibleRecords',\n 'waiting', 'visible', 'disabled',\n];\n\n@Component({\n selector: 'lib-table',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableComponent extends ElementComponent implements OnInit {\n // Atributos sincronizados del objeto\n allSelected: any = signal<any>(null);\n code: any = signal<string>('');\n globalSearch: any = signal<any>(null);\n recordsPerPage: any = signal<any>(null);\n layout: any = signal<any>(null);\n columns: any = signal<any>(null);\n selectedRecords: any = signal<any>(null);\n currentPage: any = signal<any>(null);\n totalRecordsNumber: any = signal<any>(null);\n visibleRecords: any = signal<any[]>([]);\n waiting: any = signal<boolean>(false);\n\n globalFilterString: string = '';\n\n tableFieldStyles: any;\n loaded = false;\n selectable = false;\n hasActions = false;\n inlineActions: any;\n globalActions: any;\n selectionActions: any;\n\n @Input() table: RecordTable | null = null;\n\n ngOnInit() {\n if (!this.table) { return; }\n this.table.setWidget(this);\n this.formConfig = this.table?._formConfig;\n\n this.tableFieldStyles = this.formConfig?.tableFieldStyles;\n this.selectable = this.table?.selectable;\n this.hasActions = this.table?.hasActions();\n this.inlineActions = this.table?.getActions(this.formConfig?.tableActions.inline);\n this.globalActions = this.table?.getActions(this.formConfig?.tableActions.global);\n this.selectionActions = this.table?.getActions(this.formConfig?.tableActions.selection);\n this.globalFilterString = this.table?.globalFilterString;\n this.updatePropagatedAttributes();\n this.replaceCustomAttributes(this.table?.customAttributes);\n\n this.table?.attributeChange.subscribe(event => {\n const { name: attribute, value = null } = event ?? {};\n const attributeParts = attribute?.split('.') ?? [];\n if (attribute === 'visibleRecords') {\n this.visibleRecords.set(value ?? []);\n this.updateTableData();\n } else if (attribute === 'globalFilterString') {\n this.globalFilterString = value;\n } else if (signaledAttributes.includes(attribute)) {\n this.updatePieceAttribute(signaledAttributes, attribute, value);\n } else if (attributeParts?.length > 1 && attributeParts?.[0] === CUSTOM_ATTRIBUTES) {\n const subAttribute = attributeParts?.[1] ?? null;\n this.updateCustomAttribute(subAttribute, value);\n }\n });\n this.start();\n }\n\n updatePropagatedAttributes() {\n this.updatePieceAttributes(this.table, signaledAttributes)\n }\n\n updateTableData() { }\n tableGlobalAction(actionCode: string) { this.table?.notifyGlobalAction(actionCode); }\n tableSelectionAction(actionCode: string) { this.table?.notifySelectionAction(actionCode); }\n tableActionSelected(actionEvent: TableActionEvent) { this.table?.notifyInlineAction(actionEvent); }\n tableSelectionToggle(recordId: any) { this.table?.notifyRecordSelection(recordId); }\n toggleSelectAll() { return (this.table?.allSelected) ? this.table?.unSelectAll() : this.table?.selectAll(); }\n globalFilterCompleted() { this.changePage(1); }\n changePage(requestedPage: number) { this.table?.changePage(requestedPage); }\n tableColumnSort(columnName: string, direction = null) { this.table?.sort(columnName, direction ?? 'ascend'); }\n globalFilterChanged() { this.table?.setGlobalFilterString(this.globalFilterString?.trim() ?? '', false); }\n\n filterHasChanged(column, values) {\n if (!values || values.length === 0) {\n this.table?.removeColumnFilter(column.fieldCode);\n } else {\n this.table?.addColumnFilter(column.fieldCode, values);\n }\n }\n}\n","export const NO_ERROR = '00';\nexport const HEADER = 'HEADER';\n\nexport const elementTypes = {\n action: 'ACTION',\n field: 'FIELD',\n table: 'TABLE',\n};\n\nexport const formActions = {\n tableAction: 'TABLEACTION',\n getData: 'GETDATA',\n getTableData: 'GETTABLEDATA',\n validate: 'VALIDATE',\n};\n\nexport const operators = {\n G: 'G',\n L: 'L',\n GE: 'GE',\n LE: 'LE',\n EQ: 'EQ',\n NEQ: 'NEQ',\n HAS: 'HAS',\n NOTHAS: 'NOTHAS',\n BETWEEN: 'BETWEEN',\n IN: 'IN',\n};\n","export class FormPiece {\n protected _formState: string = '';\n protected _visibleForced: boolean;\n protected _isForced: boolean;\n protected _absoluteVisible: boolean = true;\n protected _absoluteDisabled: boolean = false;\n protected _widget: any = null;\n\n protected visibleStates: string[] = [];\n protected enabledStates: string[] = [];\n\n public _form: any = null;\n public _formConfig: any;\n public _visible: boolean = true;\n public _disabled: boolean = false;\n public customAttributes: any = {};\n\n constructor(pieceDefinition: any, formConfig: any) {\n this._formConfig = formConfig;\n this._isForced = false;\n this._visibleForced = false;\n this.setVisibleStates(pieceDefinition.visibleStates);\n this.setEnabledStates(pieceDefinition.enabledStates);\n\n this.enabled = !pieceDefinition?.disabled ?? false;\n this.setVisibility(pieceDefinition?.visible ?? true);\n this.customAttributes = pieceDefinition?.customAttributes ?? {};\n if (pieceDefinition?.customAttributes) {\n Object.keys(pieceDefinition?.customAttributes)\n ?.forEach(attr => this.customAttributes[attr] = pieceDefinition?.customAttributes[attr])\n }\n }\n\n getCustomAttribute(name: string): any { return this.customAttributes?.[name] ?? null; }\n setCustomAttribute(name: string, value: any): void { if (name) { this.customAttributes[name] = value; } }\n\n setCustomAttributes(attributes: any): FormPiece {\n Object.entries(attributes).forEach(([name, value]) => {\n this.setCustomAttribute(name, value);\n });\n return this;\n }\n\n matchAttribute(name: string, value: string): boolean { return this.customAttributes?.[name] === value; }\n\n setVisibleStates(newStates: any): void {\n const visibleStates = (!Array.isArray(newStates) && typeof newStates === 'string')\n ? newStates.split(',').map(state => state.trim()).filter(state => state.length > 0)\n : newStates;\n this.visibleStates = (Array.isArray(visibleStates)) ? [...(new Set(visibleStates))] : [];\n }\n\n addVisibleState(state: string) {\n if (!this.visibleStates.includes(state)) {\n this.visibleStates.push(state);\n }\n }\n\n removeVisibleState(state: string) {\n const existStateIdx = this.visibleStates.findIndex(st => st === state);\n if (existStateIdx >= 0) {\n this.visibleStates.splice(existStateIdx, 1);\n }\n }\n\n setEnabledStates(newStates: any): void {\n const enabledStates = (!Array.isArray(newStates) && typeof newStates === 'string')\n ? newStates.split(',').map(state => state.trim()).filter(state => state.length > 0)\n : newStates;\n this.enabledStates = (Array.isArray(enabledStates)) ? [...(new Set(enabledStates))] : [];\n }\n\n addEnabledState(state: string) {\n if (!this.enabledStates.includes(state)) {\n this.enabledStates.push(state);\n }\n }\n\n removeEnabledState(state: string) {\n const existStateIdx = this.enabledStates.findIndex(st => st === state);\n if (existStateIdx >= 0) {\n this.enabledStates.splice(existStateIdx, 1);\n }\n }\n\n viewOnState(state: string): boolean { return (this.visibleStates && state) ? this.visibleStates.includes(state) : false; }\n enabledOnState(state: string): boolean { return (this.enabledStates && state) ? this.enabledStates.includes(state) : false; }\n\n get absoluteVisible(): boolean { return this._absoluteVisible; }\n get absoluteDisabled(): boolean { return this._absoluteDisabled; }\n\n get visible(): boolean { return this._visible; }\n set visible(visible: boolean) { this.setVisibility(visible); }\n\n visibleOn(state: string): boolean {\n return this._absoluteVisible && this.viewOnState(state);\n }\n\n enabledOn(state: string): boolean {\n return !this._absoluteDisabled && this.enabledOnState(state);\n }\n\n setVisibility(visible: boolean, forced: boolean | null = null): void {\n this._absoluteVisible = !!visible;\n if (forced !== null) {\n this._isForced = forced;\n this._visibleForced = visible;\n }\n this._visible = this._absoluteVisible && this.viewOnState(this._formState);\n }\n\n show(forced: boolean | null = null): void {\n this.setVisibility(true, forced);\n }\n\n hide(forced: boolean | null = null): void {\n this.setVisibility(false, forced);\n }\n\n get enabled(): boolean { return !this._disabled; }\n set enabled(enabled) {\n this._absoluteDisabled = !enabled;\n this._disabled = this._absoluteDisabled || !this.enabledOnState(this._formState);\n }\n\n get editable(): boolean { return !this._disabled; }\n\n get disabled(): boolean { return this._disabled; }\n\n set disabled(disabled) { this.enabled = !disabled; }\n\n enable(): void { this.enabled = true; }\n disable(): void { this.enabled = false; }\n\n formStateChangeCustomSubscribe(form, formChangeSubject) { }\n\n formStateChange(state) {\n if (state) {\n this._formState = state;\n this._visible = this._absoluteVisible && this.viewOnState(state);\n this._disabled = this._absoluteDisabled || !this.enabledOnState(state);\n }\n }\n\n connectWithParentForm(form, formChangeSubject) {\n this._form = form;\n this.formStateChangeCustomSubscribe(form, formChangeSubject);\n formChangeSubject.subscribe(event => this.formStateChange(event?.state));\n }\n\n set widget(widget) { this._widget = widget; }\n get widget() { return this._widget; }\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { FormPiece } from './piece';\n\nconst VISIBLE = 'visible';\nconst DISABLED = 'disabled';\n\nexport class FormPiecePropagate extends FormPiece {\n protected propagationCustomAttributes: string[] = [];\n protected _attributeChange: BehaviorSubject<any>;\n\n constructor(pieceDefinition: any, formConfig: any) {\n super(pieceDefinition, formConfig);\n this._attributeChange = new BehaviorSubject<any>(null);\n }\n\n get attributeChange() { return this._attributeChange; }\n\n propagateAttribute(name, value) {\n this._attributeChange?.next({ name, value });\n }\n\n override setCustomAttribute(name: string, value: any): void {\n super.setCustomAttribute(name, value);\n if (this.propagationCustomAttributes?.includes(name)) {\n const fullName = `customAttributes.${name}`;\n this.propagateAttribute(fullName, value);\n }\n }\n\n override setVisibility(visible: boolean, forced: boolean | null = null): void {\n super.setVisibility(visible, forced);\n this.propagateAttribute(VISIBLE, this._visible);\n }\n\n override set enabled(enabled) {\n super.enabled = enabled;\n this.propagateAttribute(DISABLED, this._disabled);\n }\n\n override formStateChange(state) {\n super.formStateChange(state);\n if (state) {\n this.propagateAttribute(VISIBLE, this._visible);\n this.propagateAttribute(DISABLED, this._disabled);\n }\n }\n}\n","import { FormPiecePropagate } from './piece-propagate';\nimport { elementTypes } from './form.constants';\nexport class FormElement extends FormPiecePropagate {\n elementType: string | null = null;\n\n constructor(elementDefinition: any, formConfig: any) {\n super(elementDefinition, formConfig);\n }\n\n setAttr(attr: any, value: any) {\n const { name: attrName, propagate: name } = attr;\n try {\n const currentValue = this[attrName];\n if (currentValue !== value) {\n this[attrName] = value;\n name && this.propagateAttribute(name, value);\n }\n } catch (e) {\n console.log(`Atributo ${attrName} no presente o valor ${value} inconsistente. ${e}`);\n }\n }\n\n isField(): boolean { return this.elementType === elementTypes.field; }\n isAction(): boolean { return this.elementType === elementTypes.action; }\n isTable(): boolean { return this.elementType === elementTypes.table; }\n}\n","import { Subject } from 'rxjs';\nimport { elementTypes } from './form.constants';\nimport { FormElement } from './element';\n\nconst HEADER = 'HEADER';\n\nconst attrs = {\n actionCode: { name: '_actionCode', propagate: 'actionCode' },\n actionName: { name: '_actionName', propagate: 'actionName' },\n iconName: { name: '_iconName', propagate: 'iconName' },\n inProgress: { name: '_inProgress', propagate: 'inProgress' },\n restrictedOnField: { name: '_restrictedOnField', propagate: 'restrictedOnField' },\n restrictedOnOperator: { name: '_restrictedOnOperator', propagate: 'restrictedOnOperator' },\n restrictedOnValue: { name: '_restrictedOnValue', propagate: 'restrictedOnValue' },\n}\n\nexport class FormAction extends FormElement {\n private readonly _actionActivated = new Subject<string>();\n private _actionCode: string = '';\n private _actionName: string = '';\n private _iconName: string = '';\n private _inProgress = false;\n private _newState: string;\n private _backend: boolean;\n private _restrictedOnField: string | null = null;\n private _restrictedOnOperator: string | null = null;\n private _restrictedOnValue: string | null = null;\n\n constructor(actionDefinition, formConfig) {\n super(actionDefinition, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.actions ?? [];\n this.elementType = elementTypes.action;\n this.setAttr(attrs.actionCode, actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '');\n this.setAttr(attrs.actionName, actionDefinition.actionTitle);\n this.setAttr(attrs.iconName, actionDefinition.iconName || this._actionCode);\n this.setAttr(attrs.restrictedOnField, actionDefinition.fieldRestrictedCode?.toString() ?? null);\n if (this._restrictedOnField) {\n this.setAttr(attrs.restrictedOnOperator, actionDefinition.operatorRestricted || '');\n this.setAttr(attrs.restrictedOnValue, actionDefinition.valueRestricted ?? '');\n }\n this._backend = actionDefinition?.serverAction ?? false;\n this._newState = actionDefinition?.newState;\n this.setCustomAttribute('location', actionDefinition.position || HEADER);\n }\n\n get actionCode() { return this._actionCode; }\n get actionName() { return this._actionName; }\n get iconName() { return this._iconName; }\n get inProgress() { return this._inProgress; }\n get newState() { return this._newState; }\n get backend() { return this._backend; }\n get restrictedOnField() { return this._restrictedOnField; }\n get restrictedOnOperator() { return this._restrictedOnOperator; }\n get restrictedOnValue() { return this._restrictedOnValue; }\n\n set actionCode(actionCode) { this.setAttr(attrs.actionCode, actionCode); }\n set actionName(actionName) { this.setAttr(attrs.actionName, actionName); }\n set iconName(iconName) { this.setAttr(attrs.iconName, iconName); }\n set inProgress(inProgress) { this.setAttr(attrs.inProgress, inProgress); }\n set newState(newState) { this._newState, newState; }\n set backend(backend) { this._backend, backend; }\n set restrictedOnField(restrictedOnField) { this.setAttr(attrs.restrictedOnField, restrictedOnField); }\n set restrictedOnOperator(restrictedOnOperator) { this.setAttr(attrs.restrictedOnOperator, restrictedOnOperator); }\n set restrictedOnValue(restrictedOnValue) { this.setAttr(attrs.restrictedOnValue, restrictedOnValue); }\n\n start() { this.inProgress = true; }\n stop() { this.inProgress = false; }\n\n override connectWithParentForm(form, formChangeSubject) {\n super.connectWithParentForm(form, formChangeSubject);\n if (this._restrictedOnField) {\n const relatedField = this._form.fields?.[this._restrictedOnField];\n if (relatedField) {\n relatedField.editionFinish.subscribe(event => this.updateRestrictedVisibility(event));\n relatedField.editionPartial.subscribe(event => this.updateRestrictedVisibility(event));\n }\n }\n }\n\n updateRestrictedVisibility(event) {\n const newVisible = this._absoluteVisible && this.viewOnState(this._formState);\n (this._visible !== newVisible) && this.setVisibility(newVisible);\n }\n\n override viewOnState(state: string): boolean {\n const actionVisible = (this.visibleStates && state) ? this.visibleStates.includes(state) : false;\n if (actionVisible && this._form && this._restrictedOnField) {\n const relatedField = this._form.fields?.[this._restrictedOnField];\n if (relatedField) {\n const fieldValue = relatedField.value;\n if ((this._restrictedOnOperator === '==' && fieldValue !== this._restrictedOnValue)\n || (this._restrictedOnOperator === '!=' && fieldValue === this._restrictedOnValue)) {\n return false;\n }\n }\n }\n return actionVisible;\n }\n\n get actionActivated() { return this._actionActivated; }\n\n notifyActivation() { this._actionActivated.next(this._actionCode); }\n\n updateFromServer(receivedAction) {\n for (const propertyName in receivedAction) {\n if (propertyName !== 'actionCode' && propertyName !== 'actionId') {\n try {\n this[propertyName] = receivedAction[propertyName];\n } catch (e) {\n console.log(`Error actualizando la propiedad ${propertyName} de la acción ${this.actionCode}. ${e}`);\n }\n }\n }\n }\n}\n","import { Subject } from 'rxjs';\nimport yn from 'yn';\nimport { elementTypes, NO_ERROR } from './form.constants';\nimport { FormElement } from './element';\n\nconst UNDEFINED = 'undefined';\n\nconst DEFAULT_ERROR_TYPE = 'error';\nconst DEFAULT_CAPTURE_TYPE = 'INPUT';\nconst DEFAULT_ALIGNMENT = 'left';\n\nconst STD_MAX_LENGTH = 50;\nconst BIG_MAX_LENGTH = 500;\n\nconst directChanges = [\n 'defaultEditable', 'defaultValue', 'alignment', 'required', 'errorCode', 'errorMessage', 'errorType',\n 'tooltip', 'info', 'format', 'intrinsicErrorMessage', 'outputOnly', 'captureType', 'title', 'type',\n 'maxLength', 'maxValue', 'minLength', 'minValue', 'validateOnServer', 'serverAction', 'visibleLabel',\n 'options', 'placeholder',\n];\n\nconst attrs = {\n captureType: { name: '_captureType', propagate: 'captureType' },\n errorCode: { name: '_errorCode', propagate: 'errorCode' },\n errorMessage: { name: '_errorMessage', propagate: 'errorMessage' },\n errorType: { name: '_errorType', propagate: 'errorType' },\n defaultValue: { name: '_defaultValue', propagate: 'defaultValue' },\n defaultEditable: { name: '_defaultEditable', propagate: 'defaultEditable' },\n fieldAlignment: { name: '_fieldAlignment', propagate: 'alignment' },\n fieldCode: { name: '_fieldCode', propagate: 'code' },\n fieldInfo: { name: '_fieldInfo', propagate: 'info' },\n fieldRequired: { name: '_fieldRequired', propagate: 'required' },\n fieldTitle: { name: '_fieldTitle', propagate: 'title' },\n fieldType: { name: '_fieldType', propagate: 'type' },\n fieldFormat: { name: '_fieldFormat', propagate: 'format' },\n fieldOptions: { name: '_fieldOptions', propagate: 'options' },\n focus: { name: '_focus', propagate: 'focus' },\n hasChanged: { name: '_hasChanged', propagate: 'hasChanged' },\n intrinsicErrorMessage: { name: '_intrinsicErrorMessage', propagate: null },\n maxLength: { name: '_maxLength', propagate: 'maxLength' },\n maxValue: { name: '_maxValue', propagate: 'maxValue' },\n minLength: { name: '_minLength', propagate: 'minLength' },\n minValue: { name: '_minValue', propagate: 'minValue' },\n onValidation: { name: '_onValidation', propagate: 'onValidation' },\n outputOnly: { name: '_outputOnly', propagate: 'outputOnly' },\n placeholder: { name: '_placeholder', propagate: 'placeholder' },\n tooltipText: { name: '_tooltipText', propagate: 'tooltip' },\n validateOnServer: { name: '_validateOnServer', propagate: 'validateOnServer' },\n value: { name: '_value', propagate: 'value' },\n visibleLabel: { name: '_visibleLabel', propagate: 'visibleLabel' },\n};\n\nexport interface DetailEvent {\n code: string;\n detail: any;\n}\n\nexport interface FieldOption {\n fieldOptionValue: string;\n fieldOptionId: string;\n}\n\nexport class FieldDescriptor extends FormElement {\n private readonly _editionFinish = new Subject<any>();\n private readonly _editionPartial = new Subject<any>();\n private readonly _detailRequest = new Subject<DetailEvent>();\n\n private _errorType: string = '';\n private _errorCode: string = '';\n private _errorMessage: string = '';\n private _intrinsicErrorMessage: string = '';\n private _minValue: any;\n private _maxValue: any;\n private _maxLength: number = 0;\n private _minLength: number = 0;\n private _focus: boolean = false;\n private _onValidation: boolean = false;\n private _validateOnServer: boolean = false;\n private _value: any;\n private _visibleLabel: boolean = false;\n private _captureType: string = '';\n private _defaultValue: any = '';\n private _defaultEditable: boolean = false;\n private _externalValue: any;\n private _fieldAlignment: string = '';\n private _fieldInfo: any = '';\n private _fieldRequired: boolean = false;\n private _fieldTitle: string = '';\n private _fieldType: string = '';\n private _fieldFormat: RegExp | null = null;\n private _hasChanged: boolean = false;\n private _outputOnly: boolean = false;\n private _tooltipText: string = '';\n private _placeholder: string = '';\n private _fieldCode: string = '';\n private _fieldOptions: FieldOption[] | null = null;\n\n constructor(inputFieldReceived, formConfig) {\n super(inputFieldReceived, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.fields ?? [];\n this.elementType = elementTypes.field;\n const fld = (inputFieldReceived) ? inputFieldReceived : {};\n this.setAttr(attrs.fieldCode, fld.fieldCode);\n this.title = fld.fieldTitle ?? this._fieldCode;\n this.placeholder = fld.placeholder ?? this.title;\n this.type = fld.fieldTypeCode;\n this.captureType = fld.captureType ?? DEFAULT_CAPTURE_TYPE;\n\n const defaultValue = fld.defaultValue ?? null;\n if (this._fieldType === this._formConfig.fieldTypes.boolean) {\n this.defaultValue = defaultValue ?? false;\n } else {\n this.defaultValue = defaultValue;\n }\n const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this._fieldType] != null)\n ? this._formConfig.tableFieldStyles[this._fieldType]['text-align'] : DEFAULT_ALIGNMENT;\n const fieldAlignment = (fld.alignment != null) ? fld.alignment.toLowerCase() : defaultTypeAlignment;\n this.alignment = fieldAlignment;\n this.info = fld.info || '';\n let fieldFormat;\n try {\n if (fld.format && typeof fld.format === 'string') {\n fieldFormat = new RegExp(fld.format);\n } else if (fld.format?.regExp) {\n fieldFormat = new RegExp(fld.format?.regExp);\n }\n } catch (e) {\n fieldFormat = null;\n }\n this.format = fieldFormat;\n this.validateOnServer = fld.serverAction ?? false;\n this.tooltip = fld.tooltip || '';\n this.defaultEditable = this.enabled;\n this.required = fld.required ?? false;\n this.outputOnly = fld.outputOnly ?? false;\n this.minLength = fld.minLength ?? 0;\n this.maxLength = fld.maxLength || (this._captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);\n this.intrinsicErrorMessage = this._formConfig?.fieldValidations?.[this._fieldType]?.message\n ?? this._formConfig?.fieldValidations?.DEFAULT?.message ?? '';\n\n this.setError(fld.errorCode, fld.errorMessage, fld.errorType ?? DEFAULT_ERROR_TYPE);\n this.setEditable(fld.editable ?? true);\n this.visibleLabel = fld.visibleLabel ?? true;\n this.setVisibility(fld.visible);\n this.options = fld.fieldOptions;\n this._setValue(fld.fieldValue ?? this._defaultValue ?? '');\n }\n\n get alignment() { return this._fieldAlignment; }\n set alignment(alignment) { this.setAttr(attrs.fieldAlignment, alignment); }\n get backend() { return this._validateOnServer; }\n\n get captureType() { return this._captureType; }\n set captureType(captureType) { this.setAttr(attrs.captureType, captureType); }\n\n get placeholder() { return this._placeholder; }\n set placeholder(placeholder) { this.setAttr(attrs.placeholder, placeholder); }\n\n get code() { return this._fieldCode; }\n get defaultValue() { return this._defaultValue; }\n set defaultValue(defaultValue) { this.setAttr(attrs.defaultValue, defaultValue); }\n get defaultEditable() { return this._defaultEditable; }\n set defaultEditable(editable) { this.setAttr(attrs.defaultEditable, editable); }\n get detailRequest() { return this._detailRequest; }\n get editionFinish() { return this._editionFinish; }\n get editionPartial() { return this._editionPartial; }\n\n get empty(): boolean {\n const fieldCurrentValue = this.value;\n if (fieldCurrentValue === undefined || fieldCurrentValue === null) {\n return true;\n }\n if (this._fieldType === this._formConfig.fieldTypes.array\n && Array.isArray(fieldCurrentValue) && fieldCurrentValue.length === 0) {\n return true;\n };\n if (this._fieldType === this._formConfig.fieldTypes.phone) {\n if (!Array.isArray(fieldCurrentValue)) {\n return true;\n }\n if (fieldCurrentValue.length !== 2 || !fieldCurrentValue[0] || !fieldCurrentValue[1]) {\n return true;\n }\n return false;\n };\n const arrayFieldTypes = this._formConfig.arrayFieldTypes ?? null;\n if (arrayFieldTypes && Object.keys(arrayFieldTypes).includes(this._fieldType)) {\n let arraySize = arrayFieldTypes[this._fieldType];\n arraySize = !Number.isNaN(+arraySize) ? +arraySize : 0;\n if (arraySize === 0) {\n return (Array.isArray(fieldCurrentValue) && fieldCurrentValue.length === 0);\n }\n return (Array.isArray(fieldCurrentValue) && fieldCurrentValue.length < arraySize);\n };\n return fieldCurrentValue === '';\n }\n\n get error() { return { type: this._errorType, code: this._errorCode, message: this._errorMessage }; }\n set error(errorObj) { this.setError(errorObj.code, errorObj.message, errorObj.type ?? DEFAULT_ERROR_TYPE) }\n get errorCode() { return this._errorCode; }\n set errorCode(code) { this.setError(code, this._errorMessage); }\n get errorMessage() { return this._errorMessage; }\n set errorMessage(msg) { this.setError(this._errorCode, msg); }\n get errorType() { return this._errorType; }\n get externalValue() { return this._externalValue; }\n get format() { return this._fieldFormat; }\n set format(format) { this.setAttr(attrs.fieldFormat, format); }\n get hasChanged() { return this._hasChanged; }\n set hasChanged(hasChanged) { this.setAttr(attrs.hasChanged, hasChanged); }\n\n get info() { return this._fieldInfo; }\n set info(newInfo: string) { this.setAttr(attrs.fieldInfo, newInfo); }\n set intrinsicErrorMessage(message: string) { this.setAttr(attrs.intrinsicErrorMessage, message); }\n get maxLength() { return (this._maxLength > 0) ? this._maxLength.toString() : ''; }\n set maxLength(requiredMaxLength: any) { this.setAttr(attrs.maxLength, requiredMaxLength ? +requiredMaxLength : null); }\n get maxValue() { return this._maxValue; }\n\n set maxValue(inputMaxValue) {\n let maxValue = inputMaxValue;\n if (this._fieldType === this._formConfig.fieldTypes.date) {\n maxValue = new Date(maxValue);\n }\n this.setAttr(attrs.maxValue, maxValue);\n }\n\n get minLength() { return this._minLength; }\n set minLength(requiredMinLength: number) {\n this.setAttr(attrs.minLength, requiredMinLength ? +requiredMinLength : null);\n }\n get minValue() { return this._minValue; }\n\n set minValue(inputMinValue) {\n let minValue = inputMinValue;\n if (this._fieldType === this._formConfig.fieldTypes.date) {\n minValue = new Date(minValue);\n }\n this.setAttr(attrs.minValue, minValue);\n }\n\n get name() { return this._fieldCode; }\n\n get options(): FieldOption[] | null {\n return this._fieldOptions?.map(option => {\n const optionCopy: FieldOption = { ...option };\n return optionCopy;\n }) ?? [];\n }\n\n set options(newOptions) {\n if ((!this._formConfig.captureTypesWithOptions.includes(this._captureType))\n || typeof newOptions === UNDEFINED || !newOptions\n || !Array.isArray(newOptions)) {\n return;\n }\n let fieldOptions = newOptions.map((option: any) => {\n if (option.text !== undefined && option.text !== null\n && option.value !== undefined && option.value !== null) {\n return { fieldOptionValue: option.text, fieldOptionId: option.value };\n }\n return option;\n });\n fieldOptions = (fieldOptions && Array.isArray(fieldOptions)\n && fieldOptions.length > 0) ? fieldOptions : [];\n this.setAttr(attrs.fieldOptions, fieldOptions);\n if (this._value) {\n if (this._fieldType === this._formConfig.fieldTypes.array && Array.isArray(this._value)) {\n const fieldValue = this._value?.filter(item =>\n this._fieldOptions?.find(opt => opt.fieldOptionId === item)\n );\n this.setAttr(attrs.value, fieldValue);\n } else {\n const valInOptions = this._fieldOptions?.find(item => item.fieldOptionId === this._value);\n if (!valInOptions) {\n this._setValue('');\n }\n }\n }\n if (this._fieldRequired && this._fieldOptions?.length === 1 && this._value !== this._fieldOptions?.[0].fieldOptionId) {\n this._setValue(this._fieldOptions?.[0].fieldOptionId);\n this.notifyEditionFinish();\n }\n }\n\n get optionText() { return this._fieldOptions?.find(item => item.fieldOptionId === this._value)?.fieldOptionValue ?? null; }\n get outputOnly() { return this._outputOnly; }\n set outputOnly(outputOnly) { this.setAttr(attrs.outputOnly, outputOnly); }\n get required(): boolean { return this._fieldRequired; }\n set required(required: boolean) { this.setAttr(attrs.fieldRequired, required ?? false); }\n get title() { return this._fieldTitle; }\n set title(title) { this.setAttr(attrs.fieldTitle, title?.toString() ?? ''); }\n get tooltip() { return this._tooltipText; }\n set tooltip(tooltip) { this.setAttr(attrs.tooltipText, tooltip); }\n get type() { return this._fieldType; }\n set type(fieldType) { this.setAttr(attrs.fieldType, fieldType); }\n get onValidation() { return this._onValidation; }\n get validating() { return this._onValidation; }\n set validating(isValidating: boolean) { this.setAttr(attrs.onValidation, isValidating); }\n get value() {\n return (this._fieldType === this._formConfig.fieldTypes.boolean\n || this._fieldType === this._formConfig.fieldTypes.check) ? yn(this._value) : this._value;\n }\n get validateOnServer() { return this._validateOnServer; }\n set validateOnServer(validateOnServer) { this.setAttr(attrs.validateOnServer, validateOnServer); }\n get serverAction() { return this._validateOnServer; }\n set serverAction(validateOnServer: boolean) { this.validateOnServer = validateOnServer; }\n\n set value(newValue) { this._setValue(newValue); }\n get visibleLabel() { return this._visibleLabel; }\n set visibleLabel(visibleLabel: boolean) { this.setAttr(attrs.visibleLabel, visibleLabel); }\n\n /**\n * @deprecated Use value\n */\n get fieldValue() { return this.value; }\n\n /**\n * @deprecated Use hasChanged\n */\n changed(hasChanged = true) { this.hasChanged = hasChanged; }\n\n clean() { this._setValue(this._defaultValue || ''); this.resetError(); }\n focus() { this.setAttr(attrs.focus, true); }\n getErrorCode() { return this.error.code; }\n setErrorCode(code) { this.setError(code, this._errorMessage); }\n getErrorMessage() { return this.error.message; }\n setErrorMessage(msg) { this.setError(this._errorCode, msg); }\n getRequired() { return this.required; }\n hasError() { return this._errorCode !== NO_ERROR; }\n hideLabel() { this.visibleLabel = false; }\n resetError() { (this._errorCode !== NO_ERROR) && this.setError(NO_ERROR, null); }\n setEditable(editable: boolean = true) { (editable) ? this.enable() : this.disable(); }\n setValue(newValue, widgetUpdate = true) { this._setValue(newValue, widgetUpdate); }\n showLabel() { this.visibleLabel = true; }\n\n /**\n * @deprecated Use code\n */\n get fieldCode() { return this._fieldCode; }\n\n\n /**\n * @deprecated Use title\n */\n setLabel(label) { this.title = label; }\n\n /**\n * @deprecated Use required\n */\n setRequired(required: boolean) { this.required = required; }\n\n /**\n * @deprecated Use changed\n */\n setChanged(hasChanged: boolean) { this.changed(hasChanged); }\n\n /**\n * @deprecated Use value\n */\n getValue(): any { return this.value; }\n\n /**\n * @deprecated Use empty\n */\n isEmpty(): boolean { return this.empty }\n\n /**\n * @deprecated Use error\n */\n getError() { return this.error; }\n\n /**\n * @deprecated Use optionText\n */\n getOptionText() { return this.optionText; }\n\n /**\n * @deprecated Use options\n */\n getFieldOptions() { return this.options; }\n\n /**\n * @deprecated Use options\n */\n setFieldOptions(newOptions) { return this.options = newOptions; }\n\n /**\n * @deprecated Use intrinsicErrorMessage\n */\n setIntrinsicErrorMessage(message: string) { this.intrinsicErrorMessage = message; }\n\n /**\n * @deprecated Use maxValue\n */\n setMaxValue(inputMaxValue) { this.maxValue = inputMaxValue; }\n\n /**\n * @deprecated Use minValue\n */\n setMinValue(inputMinValue) { this.minValue = inputMinValue; }\n\n /**\n * @deprecated Use showLabel\n */\n setVisibleLabel(visibleLabel: boolean) { this.visibleLabel = visibleLabel; }\n\n\n notifyEditionPartial() {\n this.resetError();\n this._editionPartial.next({ code: this._fieldCode, intrinsicValidation: true });\n }\n\n notifyEditionFinish() {\n const fieldValue = this.value;\n this.resetError();\n const validationConfig = this._formConfig.fieldValidations?.[this._fieldType] ?? {};\n const { type, validation } = validationConfig;\n let message = validationConfig?.message;\n let intrinsicValidation = true;\n if (fieldValue && (validation || this._fieldFormat)) {\n if (type === 'regexp') {\n intrinsicValidation = (validation?.test(fieldValue) ?? true)\n && (this._fieldFormat?.test(fieldValue) ?? true);\n } else if (type === 'function' && typeof validation === 'function') {\n const { valid, message: customMessage } = validation(fieldValue, this);\n intrinsicValidation = valid;\n message = customMessage;\n }\n if (!intrinsicValidation) {\n this.setError('99', message ?? this._intrinsicErrorMessage);\n }\n }\n if (intrinsicValidation && fieldValue && this._minValue && fieldValue < this._minValue) {\n intrinsicValidation = false;\n this.setError('99', 'Campo con valor inferior al mínimo');\n }\n if (intrinsicValidation && fieldValue && this._maxValue && fieldValue > this._maxValue) {\n intrinsicValidation = false;\n this.setError('99', 'Campo con valor superior al máximo');\n }\n if (intrinsicValidation && fieldValue && typeof fieldValue === 'string'\n && this._minLength && fieldValue?.length < this._minLength) {\n intrinsicValidation = false;\n this.setError('99', `Longitud de ${this._fieldTitle} debe ser de al menos ${this._minLength}`);\n }\n this._editionFinish.next({ code: this._fieldCode, intrinsicValidation });\n }\n\n notifyEditionDetailRequest(detail: any) {\n const detailEvent: DetailEvent = { code: this._fieldCode, detail };\n this._detailRequest.next(detailEvent);\n }\n\n setError(code, message, type = DEFAULT_ERROR_TYPE) {\n this.setAttr(attrs.errorCode, code ?? NO_ERROR);\n this.setAttr(attrs.errorType, (this._errorCode === NO_ERROR) ? '' : type);\n this.setAttr(attrs.errorMessage, message ?? '');\n }\n\n updateFromServer(fld) {\n const fieldKeys = Object.keys(fld);\n for (let index = 0; index < fieldKeys.length; index++) {\n const attrName = fieldKeys[index];\n const attrValue = fld[attrName];\n if (directChanges.includes(attrName)) {\n this[attrName] = attrValue;\n } else {\n (attrName === 'label') && (this.title = attrValue);\n (attrName === 'labelVisible') && (this.visibleLabel = attrValue);\n (attrName === 'editable') && this.setEditable(attrValue);\n (attrName === 'visible') && this.setVisibility(attrValue);\n (attrName === 'value') && (this._setValue(attrValue) && (this.hasChanged = false));\n (attrName === 'fieldValue') && (this._setValue(attrValue) && (this.hasChanged = false));\n (attrName === 'fieldOptions') && (this.options = attrValue);\n (attrName === 'fieldTitle') && (this.title = attrValue);\n (attrName === 'fieldTypeCode') && (this.type = attrValue);\n (attrName === 'fieldType') && (this.type = attrValue);\n (attrName === 'tooltipText') && (this.tooltip = attrValue);\n }\n }\n }\n\n private _setValue(newValue, widgetUpdate = true) {\n if (typeof newValue === UNDEFINED) {\n return true;\n }\n if (newValue === null && this.required) {\n return true;\n }\n let newFinalValue;\n if (this._fieldType === this._formConfig.fieldTypes.boolean\n || this._fieldType === this._formConfig.fieldTypes.check) {\n newFinalValue = yn(newValue) ?? false;\n } else if (this._fieldType === this._formConfig.fieldTypes.array\n || this._fieldType === this._formConfig.fieldTypes.map) {\n if (newValue === null || newValue === '') {\n newFinalValue = [];\n } else if (Array.isArray(newValue)) {\n newFinalValue = newValue;\n } else {\n newFinalValue = newValue.toString().split(',');\n }\n } else {\n newFinalValue = newValue;\n }\n if (this._value !== newFinalValue) {\n this._hasChanged = true;\n if (widgetUpdate) {\n this.setAttr(attrs.value, newFinalValue);\n } else {\n this._value = newFinalValue;\n }\n }\n return true;\n }\n}\n","import { FormPiece } from '../piece';\n\nexport interface FilterDef {\n operators: string[];\n options: any[];\n}\n\nexport interface FilterSetup {\n fieldCode: string;\n operator: string;\n values: any[];\n}\nexport class RecordTableColumn extends FormPiece {\n fieldCode: string = '';\n fieldTitle: string = '';\n fieldType: string = '';\n fieldAlignment: string = '';\n fieldFormat: string = '';\n sortable: boolean = true;\n searchable: boolean = true;\n sortDirections: string[] = [];\n // Filtros\n filterVisible: boolean = false;\n filterDef: FilterDef | null = null;\n filterSetup: FilterSetup | null = null;\n\n constructor(recTableColReceived, formConfig) {\n super(recTableColReceived, formConfig);\n this.filterDef = null;\n if (recTableColReceived) {\n this.fieldCode = recTableColReceived.fieldCode;\n this.fieldTitle = recTableColReceived.fieldTitle;\n this.fieldType = recTableColReceived.fieldTypeCode || this._formConfig.fieldTypes.text;\n const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this.fieldType] != null) ? this._formConfig.tableFieldStyles[this.fieldType]['text-align'] : 'left';\n this.fieldAlignment = (recTableColReceived.alignment != null) ? recTableColReceived.alignment.toLowerCase() : defaultTypeAlignment;\n this._absoluteVisible = recTableColReceived?.visible ?? true;\n this.sortable = recTableColReceived?.sortable ?? false;\n this.searchable = recTableColReceived?.searchable ?? true;\n this.sortDirections = (this.sortable) ? ['ascend', 'descend'] : [];\n this.fieldFormat = recTableColReceived.format || '';\n this.customAttributes = recTableColReceived?.customAttributes ?? {};\n }\n }\n\n setSearchable(searchable = true) { this.searchable = searchable; }\n\n hideFilter() {\n this.filterVisible = false;\n }\n\n addFilterDefinition(filterDefinition) {\n this.filterDef = {\n operators: filterDefinition.operators,\n options: filterDefinition.options ?? null,\n };\n }\n\n get filterDefinition() {\n return this.filterDef;\n }\n\n addFilter(columnValues, operator) {\n this.filterSetup = {\n fieldCode: this.fieldCode,\n operator: operator ?? this.filterDef?.operators[0] ?? 'IN',\n values: columnValues,\n }\n }\n\n get filter() {\n return this.filterSetup;\n }\n\n removeFilter() {\n this.filterSetup = null;\n }\n\n get options() {\n if (this.filterDef?.operators?.length === 1 && this.filterDef?.operators[0] === 'IN') {\n return this.filterDef?.options;\n }\n return null;\n }\n\n serSortDirections(ascend: boolean, descend: boolean) {\n this.sortDirections = [];\n if (ascend) {\n this.sortDirections.unshift('ascend');\n }\n if (descend) {\n this.sortDirections.unshift('descend');\n }\n }\n}\n","import { FormPiece } from '../piece';\nexport class TableAction extends FormPiece {\n actionCode: string;\n actionTitle: string;\n iconName: string;\n actionType: string;\n actionClass: string;\n stateField: string;\n newState: string;\n backend: boolean;\n\n restrictedOnField: string | null = null;\n restrictedOnValue: string | null = null;\n restrictedOnOperator: string | null = null;\n\n constructor(actionDefinition, formConfig) {\n super(actionDefinition, formConfig);\n\n this.actionCode = actionDefinition.actionCode;\n this.actionTitle = actionDefinition.actionTitle;\n this.iconName = actionDefinition.iconName || this.actionCode;\n this.actionType = actionDefinition.actionType || 'STANDARD';\n this.actionClass = actionDefinition.actionClass || 'INLINE';\n this.newState = actionDefinition.newState;\n this.stateField = actionDefinition.stateField || '';\n this.backend = actionDefinition?.serverAction ?? false;\n this.restrictedOnField = actionDefinition.fieldRestrictedCode ?? null;\n if (this.restrictedOnField) {\n this.restrictedOnValue = actionDefinition.valueRestricted ?? null;\n this.restrictedOnOperator = actionDefinition.operatorRestricted || null;\n }\n }\n\n override formStateChange(state) {\n if (state) {\n this._formState = state;\n this._visible = this._absoluteVisible && this.viewOnState(state);\n this._disabled = this._absoluteDisabled || !this.enabledOnState(state);\n }\n }\n}\n","import { RecordTableColumn } from './column';\nimport { operators } from '../form.constants';\n\nexport class TableRecordData {\n recordId: string | null = null;\n selected: boolean = false;\n recordData: any = {};\n\n constructor(recordReceived, recordDefinition: RecordTableColumn[], selectionFieldName = null) {\n const { tableRecordId, recordData } = recordReceived;\n this.recordId = tableRecordId;\n if (!recordDefinition || recordDefinition.length === 0 || !recordData || recordData.length === 0) {\n return;\n }\n const fieldNames = recordDefinition.map(column => column.fieldCode);\n if (Array.isArray(recordData)) {\n const rawRecordData = recordData.filter(fieldData => fieldData.fieldCode && fieldNames.includes(fieldData.fieldCode));\n rawRecordData.forEach(fieldData => {\n const { fieldCode, fieldValue } = fieldData;\n const fieldDef = recordDefinition.find(column => column.fieldCode === fieldCode);\n this.recordData[fieldCode] = fieldValue ?? '';\n if (fieldCode === selectionFieldName) {\n this.selected = fieldValue;\n }\n });\n } else {\n const fields = Object.keys(recordData);\n fields.forEach(fieldCode => {\n const fieldValue = recordData[fieldCode];\n const fieldDef = recordDefinition.find(column => column.fieldCode === fieldCode);\n this.recordData[fieldCode] = fieldValue ?? '';\n });\n }\n }\n\n toggleSelect() { this.selected = !this.selected; }\n select() { this.selected = true; }\n unselect() { this.selected = false; }\n\n get recordIdKey() {\n return (typeof this.recordId === 'object')\n ? JSON.stringify(this.recordId) : this.recordId;\n }\n\n getFieldValue(fieldCode): any {\n return (fieldCode && this.recordData) ? this.recordData[fieldCode] : null;\n }\n\n hasPattern(words, columnObj) {\n if (!words || words.length === 0) {\n return true;\n }\n for (const word of words) {\n let wordIsPresent = false;\n for (const fieldCode in this.recordData) {\n const columnDef = columnObj?.[fieldCode];\n if (columnDef?.searchable && this.recordData.hasOwnProperty(fieldCode)) {\n const term = word.toUpperCase();\n let fieldValue;\n if (columnDef.fieldType.toUpperCase().includes('DATE')) {\n fieldValue = this.recordData[fieldCode].substring(0, 16);\n } else {\n fieldValue = this.recordData[fieldCode];\n }\n if (fieldValue.toString().toUpperCase().includes(term)) {\n wordIsPresent = true;\n break;\n }\n }\n }\n if (!wordIsPresent) {\n return false;\n }\n }\n return true;\n }\n\n hasCondition(columnFilters) {\n if (!columnFilters || columnFilters.length === 0) {\n return true;\n }\n for (const condition of columnFilters) {\n const { fieldCode, operator, values } = condition;\n if (this.recordData.hasOwnProperty(fieldCode)) {\n const fieldValue = this.recordData[fieldCode];\n const stringValue = fieldValue.toString().toUpperCase();\n if (operator === operators.G && fieldValue <= values[0]) {\n return false;\n }\n if (operator === operators.L && fieldValue >= values[0]) {\n return false;\n }\n if (operator === operators.GE && fieldValue < values[0]) {\n return false;\n }\n if (operator === operators.LE && fieldValue > values[0]) {\n return false;\n }\n if (operator === operators.IN && !values.includes(fieldValue)) {\n return false;\n }\n if (operator === operators.EQ) {\n return fieldValue === values[0];\n }\n if (operator === operators.NEQ && fieldValue === values[0]) {\n return false;\n }\n if (operator === operators.HAS && !stringValue.includes(values[0].toString().toUpperCase())) {\n return false;\n }\n if (operator === operators.NOTHAS && stringValue.includes(values[0].toString().toUpperCase())) {\n return false;\n }\n if (operator === operators.BETWEEN && (fieldValue < values[0] || fieldValue > values[1])) {\n return false;\n }\n }\n }\n return true;\n }\n}\n","import { Subject } from 'rxjs';\nimport { elementTypes } from '../form.constants';\nimport { FormElement } from '../element';\nimport { RecordTableColumn } from './column';\nimport { TableAction } from './action';\nimport { TableRecordData } from './row-data';\n\nconst TABLE_SORT_ASCENDING = 'asc';\nconst TABLE_SORT_DESCENDING = 'desc';\n\nconst attrs = {\n allSelected: { name: 'allSelected', propagate: 'allSelected' },\n tableCode: { name: 'tableCode', propagate: 'code' },\n clientPaging: { name: 'clientPaging', propagate: null },\n globalSearch: { name: 'globalSearch', propagate: 'globalSearch' },\n globalFilterString: { name: '_globalFilterString', propagate: 'globalFilterString' },\n sorting: { name: 'sorting', propagate: null },\n recordsPerPage: { name: 'recordsPerPage', propagate: 'recordsPerPage' },\n layout: { name: 'layout', propagate: 'layout' },\n columns: { name: 'columns', propagate: 'columns' },\n selectedRecords: { name: 'selectedRecords', propagate: 'selectedRecords' },\n currentPage: { name: 'currentPage', propagate: 'currentPage' },\n totalRecordsNumber: { name: 'totalRecordsNumber', propagate: 'totalRecordsNumber' },\n visibleRecords: { name: '_visibleRecords', propagate: 'visibleRecords' },\n waiting: { name: '_waiting', propagate: 'waiting' },\n};\n\nexport interface TableActionEvent {\n actionCode: string;\n recordId: any;\n recordData: any;\n}\n\nexport interface TableEvent {\n tableCode: string;\n actionCode: string | null;\n actionDetail: any;\n}\n\nexport class RecordTable extends FormElement {\n private readonly _inlineActionTrigger = new Subject<TableEvent>();\n private readonly _globalActionTrigger = new Subject<TableEvent>();\n private readonly _recordSelectionTrigger = new Subject<TableEvent>();\n private readonly _selectionActionTrigger = new Subject<TableEvent>();\n private readonly _getDataTrigger = new Subject<TableEvent>();\n private _tableColumnObj = {};\n private _appendPages: boolean;\n private _actions: TableAction[];\n private _actionsObj = {};\n\n // Mecanismos de filtrado nueva versión\n private _globalFilterString: string = '';\n private globalFilterStrings: string[] = [];\n private selectedRecords: any;\n private restrictedId: any;\n private layout: string | null = null;\n private _globalSearch: boolean;\n private _tableRecords: TableRecordData[];\n private _tableRecordObj = {};\n private _visibleRecords: TableRecordData[] = [];\n private _columns: RecordTableColumn[];\n private _selectable: boolean;\n private _selectionBackend: boolean;\n private _selectionField: string;\n private _allSelected = false;\n private _tableCode: string = '';\n private _tableTitle: string;\n private _currentPage: number;\n private _totalPages: number;\n private _requestedPage: number;\n private _recordsPerPage: number = 10;\n private _totalRecordsNumber: number = 0;\n private _recordsNumber: number = 0;\n private _sorting: any;\n private _waiting: boolean;\n private _clientPaging: boolean = true;\n private _sortable: boolean;\n\n constructor(tableReceived, formConfig) {\n super(tableReceived, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.tables ?? [];\n this.elementType = elementTypes.table;\n this._waiting = false;\n this._currentPage = 1;\n this._totalPages = 1;\n this._requestedPage = 1;\n this._columns = [];\n this._tableColumnObj = {};\n this._actions = [];\n this._actionsObj = {};\n this._tableRecords = [];\n this._globalSearch = false;\n this.restrictedId = null;\n\n this._tableTitle = tableReceived.tableTitle;\n this._appendPages = tableReceived?.append ?? false;\n this._selectable = tableReceived?.selectable ?? false;\n this._selectionBackend = tableReceived?.selectionBackend ?? false;\n this._sortable = tableReceived?.sortable ?? false;\n\n this.setAttr(attrs.allSelected, false);\n this.setAttr(attrs.tableCode, tableReceived.tableCode);\n this.setAttr(attrs.clientPaging, tableReceived?.clientPaging ?? true);\n this.setAttr(attrs.globalSearch, tableReceived?.simpleFilter ?? false);\n this.setAttr(attrs.globalFilterString, '');\n this.setAttr(attrs.sorting, { columnName: '', direction: '' });\n this.setAttr(attrs.recordsPerPage, formConfig.defaultRecordsPerPage);\n this.setAttr(attrs.layout, '');\n\n if (tableReceived.fields) {\n const columns: RecordTableColumn[] = [];\n for (const columnReceived of tableReceived.fields) {\n const columnEnriched = {\n ...columnReceived,\n visibleStates: this.visibleStates,\n enabledStates: this.enabledStates\n };\n const columnDefinition: RecordTableColumn = new RecordTableColumn(columnEnriched, this._formConfig);\n columns.push(columnDefinition);\n this._tableColumnObj[columnDefinition.fieldCode] = columnDefinition;\n }\n this.setAttr(attrs.columns, columns);\n }\n if (tableReceived.actions) {\n const tableActions = tableReceived.actions.map(objDef => {\n let visibleStates = objDef.visibleStates;\n let enabledStates = objDef.enabledStates;\n if (!visibleStates) {\n visibleStates = (objDef.actionModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0);\n enabledStates = (objDef.actionModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0);\n }\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const actionReceived of tableActions) {\n const inlineAction = new TableAction(actionReceived, this._formConfig);\n this._actions.push(inlineAction);\n this._actionsObj[inlineAction.actionCode] = inlineAction;\n }\n }\n this._selectionField = (this._selectable) ? tableReceived?.selectionField : null;\n // Filtros predefinidos en el formulario\n if (tableReceived.filters) {\n for (let index = 0; index < tableReceived.filters.length; index++) {\n this.addFilterDefinition(tableReceived.filters[index].fieldCode, tableReceived.filters[index]);\n }\n }\n }\n\n get columnNames() { return Object.keys(this._tableColumnObj); }\n get inlineActionTrigger() { return this._inlineActionTrigger; }\n get globalActionTrigger() { return this._globalActionTrigger; }\n get selectionActionTrigger() { return this._selectionActionTrigger; }\n get recordSelectionTrigger() { return this._recordSelectionTrigger; }\n get getDataTrigger() { return this._getDataTrigger; }\n\n get globalSearch() { return this._globalSearch; }\n get tableRecords() { return this._tableRecords; }\n get tableRecordObj() { return this._tableRecordObj; }\n get visibleRecords() { return this._visibleRecords; }\n get columns() { return this._columns; }\n get selectable() { return this._selectable; }\n get selectionBackend() { return this._selectionBackend; }\n get selectionField() { return this._selectionField; }\n get allSelected() { return this._allSelected; }\n get tableCode() { return this._tableCode; }\n get tableTitle() { return this._tableTitle; }\n get currentPage() { return this._currentPage; }\n get totalPages() { return this._totalPages; }\n get requestedPage() { return this._requestedPage; }\n get recordsPerPage() { return this._recordsPerPage; }\n get totalRecordsNumber() { return this._totalRecordsNumber; }\n get recordsNumber() { return this._recordsNumber; }\n get sorting() { return this._sorting; }\n get waiting() { return this._waiting; }\n get clientPaging() { return this._clientPaging; }\n get sortable() { return this._sortable; }\n\n get globalFilterString() { return this._globalFilterString; }\n set globalFilterString(globalFilterString) { this._globalFilterString = globalFilterString; }\n\n set globalSearch(globalSearch) { this._globalSearch = globalSearch; }\n set tableRecords(tableRecords) { this._tableRecords = tableRecords; }\n set tableRecordObj(tableRecordObj) { this._tableRecordObj = tableRecordObj; }\n set visibleRecords(visibleRecords) { this._visibleRecords = visibleRecords ?? []; }\n set columns(columns) { this._columns = columns; }\n set selectable(selectable) { this._selectable = selectable; }\n set selectionBackend(selectionBackend) { this._selectionBackend = selectionBackend; }\n set selectionField(selectionField) { this._selectionField = selectionField; }\n set allSelected(allSelected) { this._allSelected = allSelected; }\n set tableCode(tableCode) { this._tableCode = tableCode; }\n set tableTitle(tableTitle) { this._tableTitle = tableTitle; }\n set currentPage(currentPage) { this._currentPage = currentPage; }\n set totalPages(totalPages) { this._totalPages = totalPages; }\n set requestedPage(requestedPage) { this._requestedPage = requestedPage; }\n set recordsPerPage(recordsPerPage) { this._recordsPerPage = recordsPerPage; }\n set totalRecordsNumber(totalRecordsNumber) { this._totalRecordsNumber = totalRecordsNumber; }\n set recordsNumber(recordsNumber) { this._recordsNumber = recordsNumber; }\n set sorting(sorting) { this._sorting = sorting; }\n set waiting(waiting) { this.setAttr(attrs.waiting, waiting) }\n set clientPaging(clientPaging) { this._clientPaging = clientPaging; }\n set sortable(sortable) { this._sortable = sortable; }\n\n getLayout() { return this.layout; }\n setLayout(layout) { this.setAttr(attrs.layout, layout); }\n hasActions() { return (this._actions.length > 0); }\n getSelectedRecords() { return this._tableRecords.filter(rec => rec.selected).map(rec => rec.recordId); }\n activateGlobalSearch() { this._globalSearch = true; }\n inactivateGlobalSearch() { this._globalSearch = false; }\n columnDefinition(fieldCode): RecordTableColumn { return this._tableColumnObj[fieldCode]; }\n putOnWait() { this.waiting = true; }\n freeWaiting() { this.waiting = false; }\n setWidget(widget) { this.widget = widget; }\n\n notifyGlobalAction(actionCode) {\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode,\n actionDetail: null\n };\n this._globalActionTrigger.next(tableEvent);\n }\n\n notifyInlineAction(tableActionEvent: TableActionEvent) {\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode: tableActionEvent.actionCode,\n actionDetail: {\n recordId: tableActionEvent.recordId,\n recordData: tableActionEvent.recordData\n }\n };\n this._inlineActionTrigger.next(tableEvent);\n }\n\n notifyRecordSelection(recordId) {\n const record = this.getTableRecord(recordId);\n if (!record) { return; }\n record.toggleSelect();\n this._requestedPage = this._currentPage ?? 1;\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode: null,\n actionDetail: {\n recordId: record.recordId,\n recordData: record.recordData\n }\n };\n this.recordSelectionTrigger.next(tableEvent);\n }\n\n notifySelectionAction(actionCode) {\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode,\n actionDetail: {\n selectedRecords: this.selectedRecords\n }\n };\n this._selectionActionTrigger.next(tableEvent);\n }\n\n notifyGetDataAction(requestedPage = null) {\n this.updateVisibleRecords();\n this._requestedPage = requestedPage || this._currentPage || 1;\n const tableEvent: TableEvent = {\n tableCode: this._tableCode,\n actionCode: null,\n actionDetail: null,\n };\n this._getDataTrigger.next(tableEvent);\n return null;\n }\n\n clean() {\n this._tableRecords = [];\n this.unSelectAll();\n this._tableRecordObj = {};\n this.updateVisibleRecords();\n }\n\n selectAll() {\n this.setAttr(attrs.allSelected, true);\n this._tableRecords.forEach(record => record.select());\n this.setAttr(attrs.selectedRecords, this.getSelectedRecords());\n return true;\n\n }\n\n unSelectAll() {\n this.setAttr(attrs.allSelected, false);\n this._tableRecords.forEach(record => record.unselect());\n this.setAttr(attrs.selectedRecords, this.getSelectedRecords());\n return true;\n }\n\n setTableRecords(tableRecords, append) {\n if (!append) {\n this._tableRecords = [];\n this.setAttr(attrs.allSelected, false);\n this._tableRecords.forEach(record => record.unselect());\n this.setAttr(attrs.selectedRecords, []);\n this._tableRecordObj = {};\n }\n const newRecordsObj = { ...this._tableRecordObj };\n const newRecords = [...this._tableRecords];\n for (const tableRecord of tableRecords) {\n const recordReceived: TableRecordData = new TableRecordData(tableRecord, this._columns, this._selectionField);\n const recordIdKey = recordReceived.recordIdKey;\n newRecords.push(recordReceived);\n newRecordsObj[recordIdKey] = recordReceived;\n }\n this._tableRecords = newRecords;\n this.setAttr(attrs.selectedRecords, this.getSelectedRecords());\n this._tableRecordObj = newRecordsObj;\n this.updateVisibleRecords();\n }\n\n appendRecords(records) { this.setTableRecords(records, true); }\n replaceRecords(records) { this.setTableRecords(records, false); }\n\n setTableAppend(append: boolean) { this._appendPages = append }\n\n changePage(requestedPage) {\n if (this._clientPaging) {\n this.setAttr(attrs.currentPage, requestedPage);\n this.updateVisibleRecords();\n } else {\n this.notifyGetDataAction(requestedPage);\n }\n }\n\n updateVisibleRecords() {\n let visibleRecords: any[];\n if (this._clientPaging) {\n let filteredRecords = this.getFilteredRecords();\n this.setAttr(attrs.totalRecordsNumber, filteredRecords.length);\n const sliceNumber1 = (this._currentPage - 1) * this._recordsPerPage;\n const sliceNumber2 = (this._currentPage - 1) * this._recordsPerPage + this._recordsPerPage\n visibleRecords = filteredRecords.slice(sliceNumber1, sliceNumber2);\n const recordsLastPage = this._totalRecordsNumber % this._recordsPerPage;\n const totalPages = Math.trunc(this._totalRecordsNumber / this._recordsPerPage + (recordsLastPage ? 1 : 0));\n if (this._currentPage > totalPages) {\n this._currentPage = totalPages || 1;\n }\n } else {\n visibleRecords = this._tableRecords;\n }\n this.setAttr(attrs.visibleRecords, visibleRecords ?? []);\n }\n\n updateFromServer(tableReceived) {\n this._requestedPage = 1;\n const { visible = true, totalPages = 1, recordsNumber, currentPage = 1, recordsPerPage,\n totalRecordsNumber, sortingColumn, sortingDirection, tableRecords,\n actions, fields,\n } = tableReceived;\n this.visible = visible;\n if (actions) {\n Object.keys(actions).forEach(actionCode => {\n const tblAction = this.getAction(actionCode);\n const actionReceived = actions[actionCode];\n if (actionReceived.visible === true || actionReceived.visible === false) {\n (actionReceived.visible === true) && tblAction.show();\n (actionReceived.visible === false) && tblAction.hide();\n }\n if (actionReceived.enabled === true || actionReceived.enabled === false) {\n (actionReceived.enabled === true) && tblAction.enable();\n (actionReceived.enabled === false) && tblAction.disable();\n }\n if (actionReceived.showOnStates) {\n actionReceived.showOnStates?.forEach(newState => {\n tblAction.addVisibleState(newState);\n });\n }\n if (actionReceived.hideOnStates) {\n actionReceived.hideOnStates?.forEach(newState => {\n tblAction.removeVisibleState(newState);\n });\n }\n if (actionReceived.enableOnStates) {\n actionReceived.enableOnStates?.forEach(newState => {\n tblAction.addEnabledState(newState);\n });\n }\n if (actionReceived.disableOnStates) {\n actionReceived.disableOnStates?.forEach(newState => {\n tblAction.removeEnabledState(newState);\n });\n }\n });\n }\n if (fields) {\n Object.keys(fields).forEach(fieldCode => {\n const tblField = this.columnDefinition(fieldCode);\n const fieldReceived = fields[fieldCode];\n if (fieldReceived.visible === true || fieldReceived.visible === false) {\n (fieldReceived.visible === true) && tblField.show();\n (fieldReceived.visible === false) && tblField.hide();\n }\n });\n }\n if (tableRecords) {\n this._totalPages = totalPages;\n this._recordsNumber = recordsNumber;\n this.setAttr(attrs.currentPage, +currentPage);\n this.setAttr(attrs.recordsPerPage, +recordsPerPage);\n this.setAttr(attrs.totalRecordsNumber, (this._clientPaging) ? tableRecords.length : +totalRecordsNumber);\n this.setAttr(attrs.sorting, {\n columnName: sortingColumn || '',\n direction: sortingDirection || ''\n });\n if (!this._appendPages) {\n this.replaceRecords(tableRecords);\n } else {\n this.appendRecords(tableRecords);\n }\n }\n this.freeWaiting();\n this.updateVisibleRecords();\n }\n\n getTableRecord(recordId) {\n const recordIdKey = (typeof recordId === 'object') ? JSON.stringify(recordId) : recordId;\n return (this._tableRecordObj && recordId && this._tableRecordObj[recordId])\n ? this._tableRecordObj[recordId] : null;\n }\n\n getAction(actionCode) {\n return (this._actionsObj && actionCode && this._actionsObj[actionCode])\n ? this._actionsObj[actionCode] : null;\n }\n\n getActions(actionClass: string = this._formConfig.tableActions.inline, actionTypes: string[] = null) {\n return this._actions.filter(actionDef => {\n const typeIncluded = (actionTypes) ? actionTypes.includes(actionDef.actionType) : true;\n return actionDef.actionClass === actionClass && typeIncluded;\n });\n }\n\n // Filtros\n\n setFilterById(id) {\n if (this.restrictedId === id) { return; }\n this.restrictedId = id;\n this.updateVisibleRecords();\n }\n\n cleanIdFilter() {\n if (this.restrictedId === null) { return; }\n this.restrictedId = null;\n this.updateVisibleRecords();\n }\n\n setGlobalFilterString(text, notifyComponent = true) {\n this.globalFilterStrings = text.split(' ').filter(t => t && t.trim().length > 0).map(t => t.trim()) ?? [];\n if (this._clientPaging) {\n this.changePage(1);\n }\n if (notifyComponent) {\n this.setAttr(attrs.globalFilterString, text.trim());\n }\n }\n\n addFilterDefinition(columnName, filterDefinition) {\n const tableColumn = this.columnDefinition(columnName);\n tableColumn && tableColumn.addFilterDefinition(filterDefinition);\n }\n\n getFilteredRecords() {\n let filteredRecords = this._tableRecords;\n if (this.restrictedId) {\n filteredRecords = filteredRecords.filter(record => record.recordId === this.restrictedId);\n }\n if (this.globalFilterStrings.length > 0) {\n filteredRecords = filteredRecords.filter(record => record.hasPattern(this.globalFilterStrings, this._tableColumnObj));\n }\n const columnFilters = this._columns.filter(column => column.filter).map(column => column.filter);\n if (columnFilters.length > 0) {\n filteredRecords = filteredRecords.filter(record => record.hasCondition(columnFilters));\n }\n return filteredRecords;\n }\n\n getColumnFilter(columnName: string) {\n const tableColumn = this.columnDefinition(columnName);\n return tableColumn?.filter ?? null;\n }\n\n addColumnFilter(columnName: string, columnValues: any | any[], operator: string | null = null) {\n const tableColumn = this.columnDefinition(columnName);\n const columnFilterDefinition = tableColumn?.filterDefinition ?? null;\n if (!columnFilterDefinition) {\n return;\n }\n tableColumn && tableColumn.addFilter(columnValues, operator);\n this.updateVisibleRecords();\n }\n\n removeColumnFilter(columnName: string) {\n const tableColumn = this.columnDefinition(columnName);\n tableColumn && tableColumn.removeFilter();\n this.updateVisibleRecords();\n }\n\n get currentFilter() {\n const compactFilter: any = {\n simpleFilterWords: this.globalFilterStrings,\n advancedFilter: [],\n };\n const columnFilters = this._columns.filter(column => column.filter).map(column => column.filter);\n for (let index = 0; index < columnFilters.length; index++) {\n const columnFilter = columnFilters[index];\n compactFilter.advancedFilter.push({\n fieldCode: columnFilter?.fieldCode,\n operator: columnFilter?.operator,\n fieldValue1: columnFilter?.values[0],\n fieldValue2: columnFilter?.values[1],\n });\n }\n return compactFilter;\n }\n\n // Ordenamiento de registros local\n\n sort(columnName, direction) {\n this.setRequiredOrder(columnName, direction);\n if (this._clientPaging) {\n this.localSortData()\n } else {\n this.notifyGetDataAction();\n }\n }\n\n setRequiredOrder(columnField, direction = null) {\n this.setAttr(attrs.sorting, {\n columnName: columnField,\n direction: (direction === 'ascend') ? TABLE_SORT_ASCENDING : TABLE_SORT_DESCENDING,\n });\n }\n\n localSortData() {\n if (!this._sorting.columnName || !this._sorting.direction) { return; }\n this._tableRecords.sort((a, b) => this.recordCompare(a, b, this._sorting.columnName, this._sorting.direction));\n //this.unSelectAll();\n this.updateVisibleRecords();\n }\n\n recordCompare(recordA: TableRecordData, recordB: TableRecordData, columnCompare, direction) {\n const recordAValue = recordA.getFieldValue(columnCompare);\n const recordBValue = recordB.getFieldValue(columnCompare);\n const recordAColumn = isNaN(recordAValue) ? recordAValue.toLocaleLowerCase() : +recordAValue;\n const recordBColumn = isNaN(recordBValue) ? recordBValue.toLocaleLowerCase() : +recordBValue;\n let result = 0;\n if (recordAColumn < recordBColumn) {\n result = -1;\n } else if (recordAColumn > recordBColumn) {\n result = 1;\n }\n return direction === TABLE_SORT_ASCENDING ? result : -result;\n }\n\n override formStateChangeCustomSubscribe(form, formChangeSubject) {\n this._columns?.forEach(column => {\n column?.connectWithParentForm(form, formChangeSubject);\n });\n this._actions?.forEach(action => {\n action?.connectWithParentForm(form, formChangeSubject);\n });\n }\n}\n","import { FormPiecePropagate } from './piece-propagate';\nimport { FormAction } from './action';\nimport { elementTypes } from './form.constants';\n\nexport class RecordFormSubSection extends FormPiecePropagate {\n private _customRender: string | null = null;\n private _subsectionId: string | null = null;\n private _subsectionCode: string | null = null;\n private _subsectionTitle: string | null = null;\n private _subSectionElements: any[] = [];\n private _subSectionFields: any[] = [];\n private _subSectionTables: any[] = [];\n private _subSectionActions: any[] = [];\n private _elementsArray: any = {};\n private _active = false;\n\n constructor(subsectionReceived, formObject, formConfig) {\n super(subsectionReceived, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.subsections ?? [];\n if (!subsectionReceived) { return; }\n this._subsectionId = (subsectionReceived.subsectionId) ? subsectionReceived.subsectionId.toString() : '';\n this._subsectionCode = (subsectionReceived.subsectionCode) ? subsectionReceived.subsectionCode : '';\n this._subsectionTitle = (subsectionReceived.subsectionTitle) ? subsectionReceived.subsectionTitle : '';\n if (subsectionReceived.elements) {\n for (const receivedElement of subsectionReceived.elements) {\n let elementObject: any = null;\n let arrayToAdd: any[] = [];\n const { type, code } = receivedElement;\n switch (type) {\n case elementTypes.field:\n elementObject = formObject.getField(code);\n arrayToAdd = this._subSectionFields;\n break;\n case elementTypes.table:\n elementObject = formObject.getTable(code);\n arrayToAdd = this._subSectionTables;\n break;\n case elementTypes.action:\n elementObject = formObject.getAction(code);\n arrayToAdd = this._subSectionActions;\n break;\n }\n if (elementObject) {\n elementObject.elementType = type;\n arrayToAdd.push(elementObject);\n this._subSectionElements.push(elementObject);\n this._elementsArray[code] = elementObject;\n }\n }\n }\n }\n\n get customRender() { return this._customRender; }\n set customRender(customRenderName) { this._customRender = customRenderName; }\n\n get subsectionId() { return this._subsectionId; }\n get subsectionCode() { return this._subsectionCode; }\n get subsectionTitle() { return this._subsectionTitle; }\n get subSectionElements() { return this._subSectionElements; }\n get subSectionFields() { return this._subSectionFields; }\n get subSectionTables() { return this._subSectionTables; }\n get subSectionActions() { return this._subSectionActions; }\n get elementsArray() { return this._elementsArray; }\n get active() { return this._active; }\n\n set subsectionId(subsectionId) { this._subsectionId = subsectionId; }\n set subsectionCode(subsectionCode) { this._subsectionCode = subsectionCode; }\n set subsectionTitle(subsectionTitle) { this._subsectionTitle = subsectionTitle; }\n set subSectionElements(subSectionElements) { this._subSectionElements = subSectionElements; }\n set subSectionFields(subSectionFields) { this._subSectionFields = subSectionFields; }\n set subSectionTables(subSectionTables) { this._subSectionTables = subSectionTables; }\n set subSectionActions(subSectionActions) { this._subSectionActions = subSectionActions; }\n set elementsArray(elementsArray) { this._elementsArray = elementsArray; }\n set active(active) { this._active = active; }\n\n getField(name) {\n return this._subSectionFields.find(fld => fld.name === name);\n }\n\n getFields() {\n return this._subSectionFields;\n }\n\n getFieldNames() {\n return this._subSectionFields.map(field => field.code);\n }\n\n getActions(): FormAction[] {\n return this._subSectionActions;\n }\n\n getActionNames(): string[] {\n return this._subSectionActions.map(action => action.actionCode);\n }\n\n activate() {\n if (!this._active) {\n this._active = true;\n // this.subsectionCode && this._activation.next(this.subsectionCode);\n }\n }\n\n inactivate() {\n if (this._active) {\n this._active = false;\n // this.subsectionCode && this._inactivation.next(this.subsectionCode);\n }\n }\n}\n","import { Subject } from 'rxjs';\nimport { FormPiecePropagate } from './piece-propagate';\nimport { FormAction } from './action';\nimport { RecordFormSubSection } from './subsection';\n\nconst ACTIVE = 'active';\n\nexport class RecordFormSection extends FormPiecePropagate {\n private readonly _activation = new Subject<string>();\n private readonly _inactivation = new Subject<string>();\n private _active = false;\n private _sectionId: string | null = null;\n private _sectionCode: string | null = null;\n private _sectionTitle: string | null = null;\n private _subSections: RecordFormSubSection[] = [];\n private _subSectionsObj: any;\n private _exclusiveSubSectionsByAttr = {};\n\n constructor(sectionReceived, formObject, formConfig) {\n super(sectionReceived, formConfig);\n this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.sections ?? [];\n if (!sectionReceived) { return; }\n this._sectionId = (sectionReceived.sectionId) ? sectionReceived.sectionId.toString() : '';\n this._sectionCode = (sectionReceived.sectionCode) ? sectionReceived.sectionCode : '';\n this._sectionTitle = (sectionReceived.sectionTitle) ? sectionReceived.sectionTitle : '';\n this._subSections = [];\n this._subSectionsObj = {};\n if (sectionReceived.subsections) {\n const subsections = sectionReceived.subsections.map(subSecDef => {\n const visibleStates = subSecDef.visibleStates ?? [];\n if (subSecDef.elements && Array.isArray(subSecDef.elements)) {\n subSecDef.elements = subSecDef.elements.map(elm => ({ code: elm.elementCode, type: elm.elementTypeName }));\n }\n return { ...subSecDef, visibleStates };\n });\n for (const subsectionReceived of subsections) {\n const subSectionToAdd = new RecordFormSubSection(subsectionReceived, formObject, formConfig);\n const subsectionCode = subSectionToAdd.subsectionCode;\n if (subsectionCode) {\n this._subSections.push(subSectionToAdd);\n this._subSectionsObj[subsectionCode] = subSectionToAdd;\n }\n }\n }\n }\n\n get code() { return this._sectionCode; }\n get activation() { return this._activation; }\n get inactivation() { return this._inactivation; }\n\n get active() { return this._active; }\n get sectionId() { return this._sectionId; }\n get sectionCode() { return this._sectionCode; }\n get sectionTitle() { return this._sectionTitle; }\n get subSections() { return this._subSections; }\n get subSectionsObj() { return this._subSectionsObj; }\n\n set active(active) { this._active = active; }\n set sectionId(sectionId) { this._sectionId = sectionId; }\n set sectionCode(sectionCode) { this._sectionCode = sectionCode; }\n set sectionTitle(sectionTitle) { this._sectionTitle = sectionTitle; }\n set subSections(subSections) { this._subSections = subSections; }\n set subSectionsObj(subSectionsObj) { this._subSectionsObj = subSectionsObj; }\n\n activate() {\n if (!this._active) {\n this._active = true;\n this._sectionCode && this._activation.next(this._sectionCode);\n }\n }\n\n inactivate() {\n if (this._active) {\n this._active = false;\n this._sectionCode && this._inactivation.next(this._sectionCode);\n }\n }\n\n get title() { return this._sectionTitle; }\n set title(title) { this._sectionTitle = title; }\n\n getVisibleSubsections(state) {\n return this._subSections.filter(subSection => subSection.visible);\n }\n\n getSubsection(subSectionCode) {\n return (this._subSectionsObj && this._subSectionsObj[subSectionCode])\n ? this._subSectionsObj[subSectionCode] : null;\n }\n\n activateSubSection(subSectionCode) {\n if (subSectionCode === this._exclusiveSubSectionsByAttr[ACTIVE]) { return; }\n const subSection = (this._subSectionsObj && this._subSectionsObj[subSectionCode])\n ? this._subSectionsObj[subSectionCode] : null;\n if (subSection) {\n subSection?.activate();\n this._exclusiveSubSectionsByAttr[ACTIVE] = subSectionCode;\n }\n }\n\n getFields() {\n let fieldsArray: any[] = [];\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n const subsectionFields: any[] = subSection.getFields() ?? [];\n if (subsectionFields?.length > 0) {\n fieldsArray = fieldsArray.concat(subsectionFields);\n }\n }\n }\n return fieldsArray;\n }\n\n getActions(): FormAction[] {\n let actionArray: any[] = [];\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n const subSectionActions = subSection.getActions() ?? [];\n if (subSectionActions?.length > 0) {\n actionArray = actionArray.concat(subSectionActions);\n }\n }\n }\n return actionArray;\n }\n\n getActionNames(): string[] {\n let actionArray: string[] = [];\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n actionArray = actionArray.concat(subSection.getActionNames());\n }\n }\n return actionArray;\n }\n\n getFieldNames() {\n let fieldsArray: string[] = [];\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n fieldsArray = fieldsArray.concat(subSection.getFieldNames());\n }\n }\n return fieldsArray;\n }\n\n getField(name) {\n let field = null;\n if (this._subSections && this._subSections.length > 0) {\n for (const subSection of this._subSections) {\n field = subSection.getField(name);\n if (field) {\n return field;\n }\n }\n }\n return null;\n }\n\n override formStateChangeCustomSubscribe(form, formChangeSubject) {\n this._subSections?.forEach(subsection => {\n subsection?.connectWithParentForm(form, formChangeSubject);\n });\n }\n}\n","import { Subject } from 'rxjs';\nimport { FormAction } from './action';\nimport { FieldDescriptor, FieldOption } from './field';\nimport { RecordTable } from './table/table';\nimport { RecordFormSection } from './section';\nimport { RecordFormSubSection } from './subsection';\nimport { NO_ERROR, HEADER } from './form.constants';\nimport { TableRecordData } from './table/row-data';\n\nconst ACTIVE = 'active';\nconst SHOW = 'show';\nconst HIDE = 'hide';\nconst ENABLE = 'enable';\nconst DISABLE = 'disable';\nconst CLEAN = 'clean';\n\nconst alwaysVisible = 'ALWAYS';\nconst neverVisible = 'NONE';\nconst onStatesVisible = 'ONSTATES';\ninterface Transition {\n name: string;\n source: string;\n destination: string;\n}\n\ninterface StateFlow {\n defaultState: string;\n states: string[];\n stateDescriptions: string[];\n transitions: Transition[];\n}\n\nexport interface FieldPayload {\n fieldCode: string;\n fieldValue: any;\n editable: boolean;\n visible: boolean;\n required: boolean;\n fieldOptions: string,\n}\n\nexport interface TablePayload {\n tableCode: string;\n visible: boolean;\n currentPage: number;\n requestedPage: number;\n recordsPerPage: number;\n currentFilter: any,\n sortingColumn: string;\n sortingDirection: string;\n}\n\ninterface FormPayload {\n fields: FieldPayload[],\n tables: TablePayload[],\n}\n\nexport class FormStructureAndData {\n private readonly _stateChange = new Subject<any>();\n private _immutableData = {};\n private _extraInfo = {};\n private _exclusiveSectionsByAttr = {};\n\n protected loadInitialData: boolean = true;\n protected subject: string | null = null;\n protected stateFlow: StateFlow;\n protected fields = {};\n protected actions = {};\n protected tables = {};\n protected sections = {};\n protected fieldArray: FieldDescriptor[];\n protected actionArray: FormAction[];\n protected tableArray: RecordTable[];\n protected sectionArray: RecordFormSection[];\n\n public customAttributes: any = {};\n formConfig: any;\n state: string;\n name: string = '';\n title: string = '';\n\n constructor() {\n this.state = '';\n this.actionArray = [];\n this.fieldArray = [];\n this.tableArray = [];\n this.sectionArray = [];\n this.stateFlow = {\n defaultState: '',\n states: [],\n stateDescriptions: [],\n transitions: [],\n };\n }\n\n setConfig(formConfig) {\n this.formConfig = formConfig;\n }\n\n cleanForm() {\n this.actionArray = [];\n this.fieldArray = [];\n this.tableArray = [];\n this.sectionArray = [];\n this.stateFlow = {\n defaultState: '',\n states: [],\n stateDescriptions: [],\n transitions: [],\n };\n }\n\n loadDefinition(definitionReceived) {\n this.state = '';\n let allStates = [];\n this.cleanForm();\n if (!definitionReceived) { return; }\n const { form = {} } = definitionReceived;\n this.name = this.name ?? form.formCode;\n this.title = form.formTitle ?? this.name;\n this.loadInitialData = form.loadInitialData ?? true;\n allStates = definitionReceived?.states;\n this.setStateFlow(definitionReceived?.states, definitionReceived?.transitions,\n definitionReceived?.defaultState, definitionReceived?.stateDescriptions);\n this.immutableData = definitionReceived.immutableData;\n this.extraInfo = definitionReceived.extraInfo;\n this.customAttributes = {};\n if (definitionReceived?.customAttributes) {\n this.setCustomAttributes(definitionReceived?.customAttributes);\n }\n if (definitionReceived.actions) {\n const formActions = definitionReceived.actions.map(objDef => {\n let visibleStates = objDef.visibleStates\n ?? (objDef.actionModes?.split(',')?.map(state => state.trim())?.filter(state => state))\n ?? [];\n let enabledStates = objDef.enabledStates ?? objDef.editableStates ?? [];\n if (!Array.isArray(visibleStates) && typeof visibleStates === 'string') {\n visibleStates = (visibleStates === neverVisible) ? [] : allStates;\n }\n if (!Array.isArray(enabledStates) && typeof enabledStates === 'string') {\n enabledStates = (enabledStates === neverVisible) ? [] : visibleStates;\n }\n enabledStates = enabledStates.filter(state => visibleStates.includes(state));\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const actionReceived of formActions) {\n const globalAction = new FormAction(actionReceived, this.formConfig);\n const globalActionCode = globalAction.actionCode;\n if (globalActionCode) {\n this.actionArray.push(globalAction);\n this.actions[globalActionCode] = globalAction;\n }\n }\n }\n\n if (definitionReceived.fields) {\n const formFields = definitionReceived.fields.map(objDef => {\n let visibleStates = objDef.visibleStates\n ?? (objDef.fieldModes?.split(',')?.map(state => state.trim())?.filter(state => state))\n ?? [];\n let enabledStates = objDef.enabledStates ?? objDef.editableStates ?? [];\n if (!Array.isArray(visibleStates) && typeof visibleStates === 'string') {\n visibleStates = (visibleStates === neverVisible) ? [] : allStates;\n }\n if (!Array.isArray(enabledStates) && typeof enabledStates === 'string') {\n enabledStates = (enabledStates === neverVisible) ? [] : visibleStates;\n }\n enabledStates = enabledStates.filter(state => visibleStates.includes(state));\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const fieldReceived of formFields) {\n const fieldToAdd = new FieldDescriptor(fieldReceived, this.formConfig);\n const fieldCode = fieldToAdd.code;\n if (fieldCode) {\n this.fieldArray.push(fieldToAdd);\n this.fields[fieldCode] = fieldToAdd;\n }\n }\n }\n\n if (definitionReceived.tables) {\n const tables = definitionReceived.tables.map(objDef => {\n let visibleStates = objDef.visibleStates\n ?? (objDef.tableModes?.split(',')?.map(state => state.trim())?.filter(state => state))\n ?? [];\n let enabledStates = objDef.enabledStates ?? objDef.editableStates ?? [];\n if (!Array.isArray(visibleStates) && typeof visibleStates === 'string') {\n visibleStates = (visibleStates === neverVisible) ? [] : allStates;\n }\n if (!Array.isArray(enabledStates) && typeof enabledStates === 'string') {\n enabledStates = (enabledStates === neverVisible) ? [] : visibleStates;\n }\n enabledStates = enabledStates.filter(state => visibleStates.includes(state));\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const tableReceived of tables) {\n const tableToAdd = new RecordTable(tableReceived, this.formConfig);\n const tableCode = tableToAdd.tableCode;\n if (tableCode) {\n this.tableArray.push(tableToAdd);\n this.tables[tableCode] = tableToAdd;\n }\n }\n }\n\n if (definitionReceived.sections) {\n const formSections = definitionReceived.sections.map(objDef => {\n let visibleStates = objDef.visibleStates\n ?? (objDef.sectionModes?.split(',')?.map(state => state.trim())?.filter(state => state))\n ?? [];\n if (!Array.isArray(visibleStates) && typeof visibleStates === 'string') {\n visibleStates = (visibleStates === neverVisible) ? [] : allStates;\n }\n return { ...objDef, visibleStates };\n });\n for (const sectionReceived of formSections) {\n const sectionToAdd = new RecordFormSection(sectionReceived, this, this.formConfig);\n const sectionCode = sectionToAdd.sectionCode;\n if (sectionCode) {\n this.sectionArray.push(sectionToAdd);\n this.sections[sectionCode] = sectionToAdd;\n }\n }\n }\n }\n\n // Estados\n get defaultState(): string { return this.stateFlow.defaultState; }\n get states(): any[] { return this.stateFlow.states; }\n get stateDescriptions(): any[] { return this.stateFlow.stateDescriptions; }\n supportState(state: string = ''): boolean { return (!!state && this.stateFlow.states?.includes(state)); }\n\n getNextStates(): string[] {\n return this.stateFlow.transitions.filter(trns => trns.source === this.state)\n .map(trns => trns.destination);\n }\n\n changeState(newState: string): boolean {\n const currentState = this.state;\n if (!newState || !this.supportState(newState) || currentState === newState) {\n return false;\n }\n if (!this.state) {\n this.state = newState;\n } else {\n const transitionToChange = this.stateFlow.transitions.find(trns =>\n trns.source === this.state && trns.destination === newState);\n if (transitionToChange) {\n this.state = newState;\n }\n }\n this._stateChange.next({ state: this.state });\n return (this.state === newState);\n }\n\n get stateChange() { return this._stateChange; }\n\n setStateFlow(states?, transitions?, defaultState?: string, stateDescriptions = []): void {\n this.stateFlow.states = states;\n this.stateFlow.stateDescriptions = stateDescriptions;\n this.stateFlow.defaultState = defaultState || this.stateFlow.states[0];\n this.stateFlow.transitions = transitions.map(transition => {\n const name = transition.name;\n const source = (this.stateFlow.states.includes(transition.source)) ? transition.source : '';\n const destination = (this.stateFlow.states.includes(transition.destination)) ? transition.destination : '';\n return { name, source, destination };\n }).filter(item => item.name && item.source && item.destination);\n }\n\n // immutable Data\n getImmutableElement(name: string): any { return this._immutableData?.[name]?.value ?? null; }\n set immutableData(immutableData) { Object.assign(this._immutableData, immutableData); }\n get immutableData(): any { return JSON.parse(JSON.stringify(this._immutableData)); }\n\n // extra Info\n getExtraInfo(name: string): any { return this._extraInfo?.[name]?.value ?? null; }\n set extraInfo(extraInfo) { Object.assign(this._extraInfo, extraInfo); }\n get extraInfo(): any { return JSON.parse(JSON.stringify(this._extraInfo)); }\n\n // Custom Attributes\n getCustomAttribute(name: string): any { return this.customAttributes?.[name] ?? null; }\n setCustomAttribute(name: string, value: any): void { if (name) { this.customAttributes[name] = value; } }\n setCustomAttributes(attributes: any): FormStructureAndData {\n if (attributes && typeof attributes === 'object') {\n Object.entries(attributes).forEach(([name, value]) => {\n this.setCustomAttribute(name, value);\n });\n }\n return this;\n }\n\n // Fields\n get fieldNames(): string[] { return this.getFieldNames(); }\n getFields(): FieldDescriptor[] { return this.fieldArray; }\n getFieldNames(): string[] { return this.fieldArray.map(field => field.code); }\n getField(code: string): FieldDescriptor { return (code && this.fields?.[code]) ? this.fields[code] : null; }\n enableField(code: string): void { this.getField(code)?.enable(); }\n disableField(code: string): void { this.getField(code)?.disable(); }\n getFieldValue(code: string): any { return this.getField(code)?.value; }\n getFieldOptionText(code: string): any { return this.getField(code)?.optionText; }\n getFieldOptions(code: string): FieldOption[] | null { return this.getField(code)?.options ?? null; }\n setFieldValue(code: string, value: any): any { this.getField(code)?.setValue(value); }\n setFieldError(code: string, errorCode: string, message: string, type: string = 'error'): any { this.getField(code)?.setError(errorCode, message, type); }\n setFieldIntrinsicErrorMessage(code: string, message: string): any { this.getField(code)?.setIntrinsicErrorMessage(message); }\n\n setFieldRequired(inputCodes: string[] | string | null, required: boolean): any {\n const codes = this.getFieldSet(null, inputCodes ?? null);\n for (const code of codes) {\n try {\n const field = this.getField(code) ?? null;\n field && (field.required = required);\n } catch (e) {\n console.log(`Error modificando campo ${code}: ${e}`);\n }\n }\n }\n\n setFieldErrorMessage(code: string, message: string): any { this.getField(code)?.setErrorMessage(message); }\n\n setFieldOptions(code: string, optionsArray: any[], idAttribute: string, nameAttribute: string): any {\n const field = this.getField(code);\n if (field && optionsArray) {\n const fieldOptions = optionsArray.map(item => ({\n fieldOptionId: item[idAttribute],\n fieldOptionValue: item[nameAttribute]\n }));\n field.setFieldOptions(fieldOptions);\n }\n }\n\n getFieldSet(filter, inputCodes: string[] | string | null, secCode?: string | null, subCode?: string | null): string[] {\n let codes: any[] = [];\n if (inputCodes) {\n if (typeof inputCodes === 'string') {\n codes = [inputCodes];\n } else if (Array.isArray(inputCodes) && inputCodes.length > 0) {\n codes = inputCodes ?? [];\n }\n } else if (secCode && !subCode) {\n codes = this.getSection(secCode)?.getFieldNames() ?? [];\n } else if (secCode && subCode) {\n codes = this.getSubSection(secCode, subCode)?.getFieldNames() ?? [];\n } else {\n codes = this.getFieldNames() ?? [];\n }\n return (filter) ? codes.filter(fld => filter(this.getField(fld))) : codes;\n }\n\n applyOnFields(processFunc, inputCodes?: string[] | string | null, secCode?: string, subCode?: string): number {\n if (!processFunc) { return 0; }\n const codes = this.getFieldSet(null, inputCodes ?? null, secCode, subCode);\n let processedFields = 0;\n for (const code of codes) {\n const field = this.getField(code);\n if (field) {\n try {\n processFunc(field);\n processedFields += 1;\n } catch (e) {\n console.log(`Error procesando funcion en campo ${field}: ${e}`);\n }\n }\n }\n return processedFields;\n }\n\n applyProcessToAllFields(processFunc) {\n return this.applyOnFields(processFunc);\n }\n\n enableFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.enable(), codes, secCode, subCode);\n }\n\n showFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.show(), codes, secCode, subCode);\n }\n\n hideFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.hide(), codes, secCode, subCode);\n }\n\n showLabelFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.showLablel(), codes, secCode, subCode);\n }\n\n hideLabelFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.hideLabel(), codes, secCode, subCode);\n }\n\n disableFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.disable(), codes, secCode, subCode);\n }\n\n cleanFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.clean(), codes, secCode, subCode);\n }\n\n tagFieldsWithError(message: string, codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.applyOnFields(fld => fld?.setErrorMessage(message), codes, secCode, subCode);\n }\n\n cleanErrorFields(codes?: string[] | string | null, secCode?: string, subCode?: string): number {\n return this.tagFieldsWithError('', codes, secCode, subCode);\n }\n\n tagEmptyRequiredFields(message: string, codes = null, secCode?: string, subCode?: string): boolean {\n return this.tagFieldsWithError(message, this.getRequiredEmptyFields(codes, secCode, subCode)) > 0;\n }\n\n getRequiredFields(codes?: string[] | string | null, secCode?: string, subCode?: string): string[] {\n return this.getFieldSet(fld => fld?.required, codes ?? null, secCode, subCode);\n }\n\n getRequiredEmptyFields(codes?: string[] | string | null, secCode?: string, subCode?: string, onlyVisible?: boolean): string[] {\n if (onlyVisible) {\n return this.getFieldSet(fld => fld?.required && fld?.visible && fld?.empty, codes ?? null, secCode, subCode);\n }\n return this.getFieldSet(fld => fld?.required && fld?.empty, codes ?? null, secCode, subCode);\n }\n\n getChangedFields(codes?: string[] | string | null, secCode?: string, subCode?: string): string[] {\n return this.getFieldSet(fld => !fld?.outputOnly && fld?.hasChanged, codes ?? null, secCode, subCode);\n }\n\n getFieldsWithValidationIssues(codes?: string[] | string | null, secCode?: string, subCode?: string, onlyVisible?: boolean): string[] {\n if (onlyVisible) {\n return this.getFieldSet(fld => (fld?.hasError() && fld?.visible), codes ?? null, secCode, subCode);\n }\n return this.getFieldSet(fld => fld?.hasError(), codes ?? null, secCode, subCode);\n }\n\n getFieldsValues(inputCodes?: string[] | string | null, secCode?: string, subCode?: string): any {\n const codes = this.getFieldSet(null, inputCodes ?? null, secCode, subCode);\n const resultObject = {};\n for (let index = 0; index < codes.length; index++) {\n const code = codes[index];\n if (code) {\n resultObject[code] = this.fields?.[code]?.getValue() ?? null;\n }\n }\n return resultObject;\n }\n\n // Acciones\n getActions(): FormAction[] { return this.actionArray; }\n getAction(code: string): FormAction { return (code && this.actions?.[code]) ? this.actions[code] : null; }\n showActions(codes: string[] | string): void { return this.execOnActions(codes, SHOW); }\n hideActions(codes: string[] | string): void { return this.execOnActions(codes, HIDE); }\n enableActions(codes: string[] | string): void { return this.execOnActions(codes, ENABLE); }\n disableActions(codes: string[] | string): void { return this.execOnActions(codes, DISABLE); }\n enableAction(code: string): void { return this.enableActions(code); }\n disableAction(code: string): void { return this.disableActions(code); }\n showAction(code: string): void { return this.showActions(code); }\n hideAction(code: string): void { return this.hideActions(code); }\n getHeaderActions() { return this.getActionsByAttribute('location', HEADER); }\n\n getActionsByAttribute(name: string, value): FormAction[] {\n return this.actionArray.filter(actionItem => actionItem.matchAttribute(name, value));\n }\n\n execOnActions(codes: string[] | string | null, functionName: string): void {\n const actionCodes = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n if (!functionName || actionCodes.length === 0) { return; }\n actionCodes.forEach(code => {\n const action = this.getAction(code);\n action?.[functionName]?.();\n });\n }\n\n // Tablas\n getTables(): RecordTable[] { return this.tableArray; }\n getTable(code: string): RecordTable { return (code && this.tables?.[code]) ? this.tables[code] : null; }\n getTableRecord(code: string, id: string): TableRecordData { return this.getTable(code)?.getTableRecord(id) }\n enableTables(codes: string[] | string): void { return this.execOnTables(codes, ENABLE); }\n disableTables(codes: string[] | string): void { return this.execOnTables(codes, DISABLE); }\n showTables(codes: string[] | string): void { return this.execOnTables(codes, SHOW); }\n hideTables(codes: string[] | string): void { return this.execOnTables(codes, HIDE); }\n cleanTables(codes: string[] | string): void { return this.execOnTables(codes, CLEAN); }\n showTable(code: string) { return this.showTables(code); }\n hideTable(code: string) { return this.hideTables(code); }\n cleanTable(code: string) { return this.getTable(code)?.clean(); }\n\n execOnTables(codes: string[] | string | null, functionName: string) {\n const tableCodes = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n if (!functionName || tableCodes.length === 0) { return; }\n tableCodes.forEach(code => {\n const table = this.getTable(code);\n table?.[functionName]?.();\n });\n }\n\n // Secciones\n getSections(): RecordFormSection[] { return this.sectionArray; }\n getSectionsTitles(): string[] { return this.getSections()?.filter(sec => sec?.title).map(sec => sec?.title ?? ''); }\n numSections(): number { return this.sectionArray.length; }\n getSectionsByAttribute(name, value): RecordFormSection[] { return this.sectionArray.filter(item => item.matchAttribute(name, value)); }\n get sectionTitles(): string[] { return this.getSectionsTitles(); }\n get visibleSections(): RecordFormSection[] { return this.sectionArray.filter(sec => sec.absoluteVisible); }\n getSection(code: string): RecordFormSection { return (code && this.sections?.[code]) ? this.sections[code] : null; }\n showSections(codes: string[] | string): void { this.execOnSections(codes, SHOW); }\n hideSections(codes: string[] | string): void { this.execOnSections(codes, HIDE); }\n showSection(code: string): void { return this.showSections(code); }\n hideSection(code: string): void { return this.hideSections(code); }\n activeSection(): string { return this._exclusiveSectionsByAttr[ACTIVE]; }\n getSubSection(code: string, subCode): RecordFormSubSection { return this.getSection(code)?.getSubsection(subCode) ?? null; }\n showSubSections(code: string, subCodes: string[] | string): void { return this.execOnSubSections(code, subCodes, SHOW); }\n showSubSection(code: string, subCode: string): void { return this.showSubSections(code, subCode); }\n hideSubSection(code: string, subCode: string): void { return this.hideSubSections(code, subCode); }\n hideSubSections(code: string, subCodes: string[] | string): void { return this.execOnSubSections(code, subCodes, HIDE); }\n getSectionActions(code): FormAction[] { return this.getSection(code)?.getActions() ?? null; }\n getSectionActionNames(code): string[] { return this.getSection(code)?.getActionNames() ?? null; }\n\n activateSection(code: string): void {\n if (code === this._exclusiveSectionsByAttr[ACTIVE]) { return; }\n this.getSection(this.activeSection())?.inactivate();\n this.getSection(code)?.activate();\n this._exclusiveSectionsByAttr[ACTIVE] = code;\n }\n\n execOnSections(codes: string[] | string | null, functionName: string): void {\n const sectionCodes = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n if (!functionName || sectionCodes.length === 0) { return; }\n sectionCodes.forEach(code => {\n const section = this.getSection(code);\n section?.[functionName]?.();\n });\n }\n\n execOnSubSections(code: string, subNames: string[] | string | null, functionName: string): void {\n const subCodes = (Array.isArray(subNames)) ? subNames : (subNames ? [subNames] : []);\n const section = this.getSection(code);\n if (!functionName || !section || subCodes.length === 0) { return; }\n for (const subCode of subCodes) {\n const subSection = this.getSubSection(code, subCode);\n subSection?.[functionName]?.();\n }\n }\n\n /**\n * Métodos propios de gestión del formulario\n */\n\n cleanData(): void {\n for (const field of this.fieldArray) {\n field.setValue(field.defaultValue);\n }\n for (const table of this.tableArray) {\n table.clean();\n }\n }\n\n getPayload(): any {\n const formData: FormPayload = { fields: [], tables: [] };\n formData.fields = this.getFields().filter(fld => !fld?.outputOnly)\n .map(fld => {\n const fieldPayload: FieldPayload = {\n fieldCode: fld?.code,\n fieldValue: fld?.value,\n editable: !fld?.absoluteDisabled,\n visible: fld?.absoluteVisible,\n required: fld?.required,\n fieldOptions: '',\n }\n return fieldPayload;\n });\n\n formData.tables = this.getTables().map(tbl => {\n const tablePayload: TablePayload = {\n tableCode: tbl.tableCode,\n visible: tbl.absoluteVisible,\n currentPage: tbl.currentPage,\n requestedPage: tbl.requestedPage,\n recordsPerPage: tbl.recordsPerPage,\n currentFilter: tbl.currentFilter,\n sortingColumn: tbl.sorting.columnName,\n sortingDirection: tbl.sorting.direction,\n };\n return tablePayload\n })\n return formData;\n }\n\n /**\n * @deprecated Use subject\n */\n get formSubject() { return this.subject; }\n\n /**\n * @deprecated Use subject\n */\n set formSubject(subject) { this.subject = subject; }\n\n /**\n * @deprecated Use states\n */\n getStates() { return this.states; }\n\n /**\n * @deprecated Use state\n */\n getCurrentState(): string { return this.state; }\n\n /**\n * @deprecated Use title\n */\n getTitle(): string { return this.title; }\n\n /**\n * @deprecated Use title\n */\n setTitle(title: string): void { this.title = title; }\n\n /**\n * @deprecated Use supportState\n */\n supportMode(state: string): boolean { return this.supportState(state); }\n\n /**\n * @deprecated Use enableFields\n */\n enableEditFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this.enableFields(codes, secCode, subCode);\n }\n /**\n * @deprecated Use disableFields\n */\n disableEditFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this.disableFields(codes, secCode, subCode);\n }\n\n /**\n * @deprecated Use getField\n */\n getFieldObject(code: string): FieldDescriptor | null { return this.getField(code); }\n\n /**\n * @deprecated Use getAction\n */\n getActionObject(code: string): FormAction | null { return this.getAction(code); }\n\n /**\n * @deprecated Use getTable\n */\n getTableObject(code: string): RecordTable | null { return this.getTable(code); }\n\n /**\n * @deprecated Use getSection\n */\n getSectionObject(code: string): RecordFormSection | null { return this.getSection(code); }\n\n /**\n * @deprecated Use changeState\n */\n changeFormMode(state: string): boolean { return this.changeState(state); }\n\n /**\n * @deprecated Use subject\n */\n getFormSubject(): string { return this.subject; }\n /**\n * @deprecated Use subject\n */\n getSubject(): string { return this.subject ?? ''; }\n /**\n * @deprecated Use subject\n */\n getformSubject(): string { return this.subject ?? ''; }\n\n}\n","import { nanoid } from 'nanoid';\n\nexport class LibFormManagerService {\n pageStack: any[];\n\n constructor() {\n this.cleanStack();\n }\n\n // Métodos virtuales para las aplicaciones\n getFormDefinition(formCode) { }\n execServerAction(actionDetail) { }\n goToForm(formCode, token, subject) { }\n async loadStack() { }\n saveStack() { }\n\n cleanStack() { this.pageStack = []; }\n resetPageStack() { this.cleanStack() }\n\n findFormInStack(token) {\n const index = this.pageStack.findIndex(item => item?.token === token);\n const data = (index >= 0) ? this.pageStack[index] : null;\n return { index, data };\n }\n\n replaceItem(token, formInfo) {\n if (!token || !formInfo) { return; }\n const { index, data: storedForm } = this.findFormInStack(token);\n let updatedForm: any = null;\n if (index >= 0) {\n updatedForm = { ...storedForm };\n updatedForm.subject = formInfo?.subject ?? storedForm.subject;\n updatedForm.state = formInfo?.state ?? storedForm.state;\n updatedForm.fields = storedForm?.fields ?? {};\n updatedForm.extra = storedForm?.extra ?? {};\n if (formInfo.fields) {\n Object.assign(updatedForm.fields, formInfo.fields);\n }\n if (formInfo.extra) {\n Object.assign(updatedForm.extra, formInfo.extra);\n }\n this.pageStack[index] = updatedForm;\n this.saveStack();\n }\n }\n\n stack(origin, target) {\n const token = nanoid(6);\n this.replaceItem(target.originToken, origin);\n this.pageStack.push({ token, ...target });\n this.saveStack();\n return token;\n }\n\n unstack(token = null) {\n let index = (token) ? this.findFormInStack(token).index : this.pageStack.length - 2;\n let formInfo = null;\n if (index >= 0) {\n formInfo = this.pageStack[index];\n this.pageStack.splice(index + 1);\n this.saveStack();\n }\n return formInfo;\n }\n\n getFormInfo(token: string) {\n const { data } = this.findFormInStack(token);\n return {\n token: data?.token,\n subject: data?.subject,\n state: data?.state,\n originToken: data?.originToken,\n fields: data?.fields ?? {},\n extra: data?.extra ?? {}\n };\n }\n\n openForm(origin: any, target: any) {\n (!origin) && this.cleanStack();\n target.originToken = origin?.token ?? null;\n const token = this.stack(origin, target);\n this.goToForm(target.name, token, target.subject);\n }\n\n backTo(targetToken = null) {\n const formInfo: any = this.unstack(targetToken);\n formInfo && formInfo.name && this.goToForm(formInfo.name, formInfo.token, formInfo.subject);\n }\n}\n","import { Subject, BehaviorSubject, ReplaySubject } from 'rxjs';\n\nexport class LibEventManagerService {\n eventSubjects: any = {};\n eventSubjectParams: any = {};\n\n constructor(eventSet: any[]) {\n eventSet.forEach((event) => { this.addEventName(event); });\n }\n\n addEventName(event: any, rebuild = false) {\n const eventObject = (typeof event === 'string') ? { name: event } : event;\n const { name, type, initialValue, windowTime, timestampProvider } = eventObject;\n const currentSubject = this.eventSubjects[name];\n if (rebuild || !currentSubject) {\n if (type === 'behaviour') {\n const newEventSubject: BehaviorSubject<any> = new BehaviorSubject(initialValue);\n this.eventSubjects[name] = newEventSubject;\n } else if (type === 'subject') {\n const newEventSubject: Subject<any> = new Subject();\n this.eventSubjects[name] = newEventSubject;\n } else {\n const newEventSubject: ReplaySubject<any> = new ReplaySubject(initialValue, windowTime, timestampProvider);\n this.eventSubjects[name] = newEventSubject;\n }\n this.eventSubjectParams[name] = { name: name, windowTime, timestampProvider };\n }\n }\n\n resetSubject(eventClassName) {\n const { name, windowTime, timestampProvider } = this.eventSubjectParams[eventClassName];\n return this.addEventName({ name, windowTime, timestampProvider });\n }\n\n getEventNames() { return Object.keys(this.eventSubjects); }\n getSubject(eventClassName) { return eventClassName ? this.eventSubjects[eventClassName] : null; }\n subscribe(eventClassName, callback) { return this.getSubject(eventClassName).subscribe(callback); }\n next(eventClassName, data) { \n const subject = this.getSubject(eventClassName);\n if (!subject) {\n console.log(`No se encontró subject ${eventClassName}`);\n }\n subject.next(data);\n }\n}\n","export class LibFileManagementService {\n openFile(fileBase64Data, fileName, fileType) { }\n saveFileFromURL(fileUrl, fileName = null, fileType = null) { }\n saveFile(fileBase64Data, fileName, fileType) { }\n printPdfFile(pdfBufferData) { }\n}\n\n","import { Component } from '@angular/core';\nimport { FormStructureAndData } from '../../classes/forms/form';\nimport { LibFormManagerService } from '../../services/form-manager.service';\nimport { LibEventManagerService } from '../../services/event-manager.service';\nimport { LibFileManagementService } from '../../services/file-manager.service';\nimport { formActions, NO_ERROR } from '../../classes/forms/form.constants';\nimport { FieldDescriptor } from '../../classes/forms/field';\nimport { RecordFormSection } from '../../classes/forms/section';\n\nconst PAYLOAD_VERSION = 'TUAINEXCHANGE_1.0';\nconst INLINE_ACTION = 'INLINE';\nconst GLOBAL_ACTION = 'GLOBAL';\nconst GET_DATA_ACTION = 'GETDATA';\n\nconst SUBJECT = 'subject';\nconst TOKEN = 'token';\n\n@Component({\n template: `<ng-content></ng-content>`\n})\nexport class BasicFormComponent extends FormStructureAndData {\n private _controlToken: string | null = null;\n private _originToken: string | null = null;\n private _formRoute: string | null = null;\n private _definitionObtained: boolean = false;\n private _notifyFormActivity: boolean = true;\n // Eventos de acciones y campos\n private _formChangeState: any[] = [];\n private _formSectionsCanDeactivate: any = {};\n private _formSectionsActivate: any = {};\n private _formSectionsInactivate: any = {};\n private _formActionsStart: any = {};\n private _formActionsFinish: any = {};\n private _fieldInputValidation: any = {};\n private _fieldValidationsStart: any = {};\n private _fieldValidationsFinish: any = {};\n // Callback de acciones de tablas\n private _tableSelectionsStart: any = {};\n private _tableSelectionsFinish: any = {};\n private _tableActionsStart: any = {};\n private _tableActionsFinish: any = {};\n private _tableGetDataStart: any = {};\n private _tableGetDataFinish: any = {};\n // Errores en procesos\n private _actionServerError: any[] = [];\n private _fieldServerError: any[] = [];\n private _tableServerError: any[] = [];\n // Datos complementarios del formulario\n protected inputDataFields: any = {};\n protected extraData: any = {};\n protected _eventEmiter: LibEventManagerService;\n protected enabledSections: RecordFormSection[] = [];\n // Gestión de error\n _errorType: string = '';\n errorCode: string = '';\n errorFullCode: string = '';\n errorName: string = '';\n errorMessage: string = '';\n errorDetail: string = '';\n\n // Control de estado\n visible: boolean = false;\n busy: boolean = false;\n\n constructor(\n protected formManagerService: LibFormManagerService,\n protected _eventManager: LibEventManagerService,\n protected fileMgmtServices: LibFileManagementService) {\n super();\n this._eventEmiter = this._eventManager;\n this.cleanStart();\n this.preStart();\n this.customPreProcessing();\n }\n\n cleanStart() {\n this._errorType = '';\n this.errorCode = '';\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n this.cleanForm();\n this._controlToken = null;\n this.inputDataFields = {};\n this._definitionObtained = false;\n // Se limpian los manejadores de eventos\n this.visible = false;\n this.busy = false;\n this._formChangeState = [];\n this._formSectionsCanDeactivate = {};\n this._formSectionsActivate = {};\n this._formSectionsInactivate = {};\n this._formActionsStart = {};\n this._formActionsFinish = {};\n this._fieldInputValidation = {};\n this._fieldValidationsStart = {};\n this._fieldValidationsFinish = {};\n this._tableSelectionsStart = {};\n this._tableSelectionsFinish = {};\n this._tableActionsStart = {};\n this._tableActionsFinish = {};\n this._tableGetDataStart = {};\n this._tableGetDataFinish = {};\n\n this._actionServerError = [];\n this._fieldServerError = [];\n this._tableServerError = [];\n\n this.onActionServerError(() => this.displayActionServerError());\n this.onValidationServerError(() => this.displayValidationServerError());\n this.onTableServerError(() => this.displayTableServerError());\n }\n\n get formVisible(): boolean { return this.visible; }\n get form() { return this; }\n\n // Métodos virtuales\n preStart() { }\n start() { }\n\n /**\n * @deprecated Use preStart\n */\n customPreProcessing() { }\n\n /**\n * @deprecated Overload start\n */\n customFormStart() { }\n\n displayActionServerError() { }\n displayValidationServerError() { }\n displayTableServerError() { }\n showFieldInfo(code?: string, detail?: any) { }\n showModalDialog(title, body, options, callback?, params?) { }\n openUploadDialog(title, body, options, callback?, params?) { }\n\n subscribeAppEvent(eventName: string, callback): void {\n this._eventEmiter.subscribe(eventName, callback);\n }\n\n openForm(name: string, data: any = null, backData: any = null, cleanStack = false): void {\n let origin: any = null;\n if (!cleanStack) {\n origin = { ...backData, name: this.name, url: this._formRoute, token: this._controlToken };\n origin.subject = origin?.subject ?? this.subject;\n origin.state = origin?.state ?? this.state;\n origin.fields = origin?.fields ?? {};\n origin.extra = origin?.extra ?? {};\n }\n const target = { ...data, name };\n target.subject = target?.subject ?? null;\n target.state = target?.state ?? null;\n target.fields = target?.fields ?? {};\n target.extra = target?.extra ?? {};\n this.formManagerService.openForm(origin, target);\n }\n\n enableActivityNotification() { this._notifyFormActivity = true; }\n disableActivityNotification() { this._notifyFormActivity = false; }\n canGoBack(): boolean { return this._originToken !== null }\n goBack(): void { return this.formManagerService.backTo(); }\n goBackForm(): void { return this.goBack(); }\n getOriginDetail(): any { return this.formManagerService?.getFormInfo(this._originToken ?? ''); }\n\n setError(errorType: string | null, errorMessage: string | null, errorDetail: string | null): void {\n this._errorType = errorType || '';\n this.errorMessage = errorMessage || '';\n this.errorDetail = errorDetail || '';\n }\n\n resetError(): void {\n this.errorCode = NO_ERROR;\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n }\n\n getErrorType(): string { return this._errorType; }\n getErrorMessage(): string { return this.errorMessage; }\n getErrorDetail(): string { return this.errorDetail; }\n getErrorName(): string { return this.errorName; }\n getErrorFullCode(): string { return this.errorFullCode; }\n getErrorCode(): string { return this.errorCode; }\n\n getFormParameter(name: string): string {\n return (name) ? (this.extraData?.[name] ?? null) : null;\n }\n\n preocessInputParams(params: any): string | null {\n this._controlToken = params?.[TOKEN] ?? null;\n this.subject = params?.[SUBJECT] ?? null;\n const tokenInfo: any = (this._controlToken) ? this.formManagerService.getFormInfo(this._controlToken) : {};\n const { token, subject, state, fields, extra, originToken } = tokenInfo;\n if (token && this._controlToken === token) {\n this.subject = this.subject ?? subject ?? null;\n this.inputDataFields = fields;\n this.extraData = extra;\n this._originToken = originToken;\n return state;\n }\n return null;\n }\n\n subscribeSectionActivation(): void {\n const formSections = this.sections;\n const sectionNames = Object.keys(formSections);\n for (let index = 0; index < sectionNames.length; index++) {\n const sectionName = sectionNames[index];\n const section = formSections[sectionName];\n section.activation.subscribe((code: string) => this.launchSectionActivation(code));\n section.inactivation.subscribe((code: string) => this.launchSectionInactivation(code));\n // Adicionalmente se le pide a la sección se subscriba al cambio de estado del formulario\n section.connectWithParentForm(this, this.stateChange);\n }\n }\n\n subscribeFieldsSubjects(): void {\n const formFields = this.getFields();\n if (Array.isArray(formFields)) {\n formFields.forEach(field => {\n field.editionFinish.subscribe(event => {\n const { code, intrinsicValidation } = event;\n this.startFieldValidation(code, intrinsicValidation);\n });\n field.editionPartial.subscribe(event => {\n const { code, intrinsicValidation } = event;\n this.startFieldInputValidation(code, intrinsicValidation);\n });\n field.detailRequest.subscribe(event => this.showFieldInfo(event.code, event.detail));\n // Adicionalmente se le pide al campo se subscriba al cambio de estado del formulario\n field.connectWithParentForm(this, this.stateChange);\n });\n }\n }\n\n subscribeActionSubjects(): void {\n const formActions = this.getActions();\n if (Array.isArray(formActions)) {\n formActions.forEach(action => {\n action.actionActivated.subscribe(code => this.startAction(code));\n // Adicionalmente se le pide a la acción se subscriba al cambio de estado del formulario\n action.connectWithParentForm(this, this.stateChange);\n });\n }\n }\n\n subscribeTableSubjects(): void {\n const formTables = this.getTables();\n if (Array.isArray(formTables)) {\n formTables.forEach(table => {\n table.inlineActionTrigger.subscribe(event => this.startTableAction(event));\n table.globalActionTrigger.subscribe(event => this.startTableGlobalAction(event));\n table.recordSelectionTrigger.subscribe(event => this.startTableRecordSelection(event));\n table.selectionActionTrigger.subscribe(event => this.startTableSelectionAction(event));\n table.getDataTrigger.subscribe(event => this.startTableGetData(event));\n // Adicionalmente se le pide a la tabla se subscriba al cambio de estado del formulario\n table.connectWithParentForm(this, this.stateChange);\n });\n }\n }\n\n async formInit(params, forceReload = false): Promise<void> {\n let initialState: string | null = this.preocessInputParams(params);\n if (!this.name) { return; }\n if (forceReload || !this._definitionObtained) {\n this.busy = true;\n const formDefinition = await this.formManagerService.getFormDefinition(this.name);\n this.busy = false;\n this.loadDefinition(formDefinition)\n this._definitionObtained = true;\n } else {\n this.cleanData();\n }\n if (!this.supportState(initialState ?? '')) {\n initialState = this.defaultState ?? null;\n }\n const inputFieldNames = Object.keys(this.inputDataFields);\n for (let index = 0; index < inputFieldNames.length; index++) {\n const code = inputFieldNames[index];\n const fieldValue = this.inputDataFields[code];\n this.setFieldValue(code, fieldValue);\n }\n this.subscribeSectionActivation();\n this.subscribeFieldsSubjects();\n this.subscribeActionSubjects();\n this.subscribeTableSubjects();\n // Se define el estado inicial y se solicita la acción inicial\n this.changeState(initialState || this.defaultState);\n if (this.loadInitialData) {\n const recordResponse = await this.requestFormAction(formActions.getData);\n this.checkErrorRecordReceived(recordResponse);\n }\n this.visible = true;\n this.enabledSections = this.visibleSections ?? [];\n\n this.start();\n this.customFormStart();\n }\n\n override changeState(state: string | undefined): boolean {\n const stateChanged = super.changeState(state ?? '') ?? false;\n if (stateChanged) {\n const clientActionMethods = this._formChangeState;\n if (clientActionMethods && clientActionMethods.length > 0) {\n for (const callback of clientActionMethods) {\n callback(state);\n }\n }\n }\n return stateChanged;\n }\n\n checkErrorRecordReceived(recordResponse: any): boolean {\n const { error } = recordResponse ?? {};\n if (!error) { return false; }\n this.errorCode = recordResponse.errorCode;\n this.errorFullCode = recordResponse.errorFullCode;\n this.errorName = recordResponse.errorName;\n this.errorMessage = recordResponse.errorMessage;\n this.errorDetail = recordResponse.errorDetail;\n return true;\n }\n\n errorOccured(): boolean {\n return (this.errorCode !== NO_ERROR);\n }\n\n /**\n * Soporte manejo de eventos de formulario\n */\n\n async requestFormAction(actionCode: string, actionSubject: any = {}): Promise<any> {\n const actionDetail = {\n formCode: this.name,\n formSubject: this.subject,\n currentMode: this.state,\n actionCode,\n actionSubject,\n version: PAYLOAD_VERSION,\n formData: this.getPayload(),\n immutableData: this.immutableData,\n };\n this.errorCode = NO_ERROR;\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n this.busy = true;\n const formActionResponse: any = await this.formManagerService.execServerAction(actionDetail);\n if (!formActionResponse) {\n return null;\n }\n this.busy = false;\n if (formActionResponse.hasError()) {\n const error = formActionResponse.error;\n this.errorCode = error.errorCode;\n this.errorFullCode = error.errorFullCode;\n this.errorName = error.errorName;\n this.errorMessage = error.errorMessage;\n this.errorDetail = error.errorDetail;\n }\n const formResponseData = formActionResponse.getData();\n this.updateFormWithServerData(formResponseData);\n return formResponseData;\n }\n\n updateFormWithServerData(formContent: any) {\n const {\n currentMode, formSubject, actions, fields, recordTables,\n returnedFile, immutableData, extraInfo,\n } = formContent;\n currentMode && this.changeState(currentMode);\n if (formSubject) { this.subject = formSubject; }\n if (actions && actions.length > 0) {\n for (const changedAction of actions) {\n const actionObject = this.getAction(changedAction.actionCode);\n if (actionObject) { actionObject.updateFromServer(changedAction); }\n }\n }\n if (fields && fields.length > 0) {\n for (const changedField of fields) {\n const fieldObject = this.getField(changedField.fieldCode);\n if (fieldObject) {\n fieldObject.updateFromServer(changedField);\n }\n }\n }\n if (recordTables && recordTables.length > 0) {\n for (const changedTable of recordTables) {\n const tableObject = this.getTable(changedTable.tableCode);\n if (tableObject) {\n tableObject.updateFromServer(changedTable);\n }\n }\n }\n if (returnedFile && returnedFile.file) {\n this.fileMgmtServices.saveFile(returnedFile.file, returnedFile.name, returnedFile.type);\n }\n this.immutableData = immutableData;\n this.extraInfo = extraInfo;\n }\n\n /**\n * Manejo de event handlers para errores Server del formulario\n */\n\n cleanActionServerError() { this._actionServerError = []; }\n cleanFieldServerError() { this._fieldServerError = []; }\n cleanTableServerError() { this._tableServerError = []; }\n onActionServerError(callback, properties = null) { this._actionServerError.push({ callback, properties }); }\n onValidationServerError(callback, properties = null) { this._fieldServerError.push({ callback, properties }); }\n onTableServerError(callback, properties = null) { this._tableServerError.push({ callback, properties }); }\n\n /**\n * Manejo de event handlers para acciones sobre el formulario\n */\n\n onFormChange(callback) {\n this._formChangeState.push(callback);\n }\n\n onSectionCanDeactivate(codes: string[] | string | null, callback, properties = null) {\n const sectionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n sectionSet.forEach((sectionName) => {\n if (!this._formSectionsCanDeactivate[sectionName]) {\n this._formSectionsCanDeactivate[sectionName] = [];\n }\n this._formSectionsCanDeactivate[sectionName].push({ callback, properties });\n });\n }\n\n onSectionActivation(codes: string[] | string | null, callback, properties = null) {\n const sectionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n sectionSet.forEach((sectionName) => {\n if (!this._formSectionsActivate[sectionName]) {\n this._formSectionsActivate[sectionName] = [];\n }\n this._formSectionsActivate[sectionName].push({ callback, properties });\n });\n }\n\n onSectionInactivation(codes: string[] | string | null, callback, properties = null) {\n const sectionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n sectionSet.forEach((sectionName) => {\n if (!this._formSectionsInactivate[sectionName]) {\n this._formSectionsInactivate[sectionName] = [];\n }\n this._formSectionsInactivate[sectionName].push({ callback, properties });\n });\n }\n\n onActionStart(codes: string[] | string | null, callback, properties = null) {\n const actionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n actionSet.forEach((actionName) => {\n if (!this._formActionsStart[actionName]) {\n this._formActionsStart[actionName] = [];\n }\n this._formActionsStart[actionName].push({ callback, properties });\n });\n }\n\n onActionFinish(codes: string[] | string | null, callback, properties = null) {\n const actionSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n actionSet.forEach((actionName) => {\n if (!this._formActionsFinish[actionName]) {\n this._formActionsFinish[actionName] = [];\n }\n this._formActionsFinish[actionName].push({ callback, properties });\n });\n }\n\n async verifySectionActivation(code: string): Promise<boolean> {\n const sectionObject = this.getSection(code);\n if (!sectionObject) { return false; }\n const clientSectionMethods = this._formSectionsCanDeactivate[code];\n if (clientSectionMethods) {\n for (const clientSectionMethod of clientSectionMethods) {\n const { callback, properties } = clientSectionMethod;\n const canActivate = callback(sectionObject);\n if (canActivate === false) {\n return false;\n }\n }\n }\n return true;\n }\n\n async launchSectionActivation(code: string) {\n this.notifyFormActivity();\n const sectionObject = this.getSection(code);\n if (!sectionObject) { return; }\n const clientSectionMethods = this._formSectionsActivate[code];\n if (clientSectionMethods) {\n for (const clientSectionMethod of clientSectionMethods) {\n const { callback, properties } = clientSectionMethod;\n callback(sectionObject);\n }\n }\n }\n\n async launchSectionInactivation(code: string) {\n this.notifyFormActivity();\n const sectionObject = this.getSection(code);\n if (!sectionObject) { return; }\n const clientSectionMethods = this._formSectionsInactivate[code];\n if (clientSectionMethods) {\n for (const clientSectionMethod of clientSectionMethods) {\n const { callback, properties } = clientSectionMethod;\n callback(sectionObject);\n }\n }\n }\n\n async startAction(code: string) {\n this.notifyFormActivity();\n const actionObject = this.getAction(code);\n if (!actionObject) { return; }\n this.resetError();\n actionObject.start();\n const clientActionMethods = this._formActionsStart[code];\n if (clientActionMethods) {\n const clientActionPromises: any[] = [];\n for (const clientActionMethod of clientActionMethods) {\n const { callback, properties } = clientActionMethod;\n const continueActionPromise = callback(actionObject);\n clientActionPromises.push(continueActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n actionObject.stop();\n return;\n }\n }\n this.startServerAction(actionObject);\n }\n\n async startServerAction(actionInput) {\n const action = (typeof actionInput === 'string')\n ? this.getAction(actionInput) : actionInput;\n if (!action) {\n return;\n }\n let serverError = false;\n let actionResult = null;\n if (action.backend) {\n actionResult = await this.requestFormAction(action.actionCode);\n }\n await this.finishAction(action, actionResult, serverError);\n serverError = !!this.errorOccured();\n if (!serverError) {\n action.newState && this.changeState(action.newState);\n } else {\n for (let index = 0; index < this._actionServerError.length; index++) {\n const { callback, properties } = this._actionServerError[index];\n callback(action);\n }\n }\n action.stop();\n }\n\n async finishAction(action, actionResult, serverError = false) {\n const finishActionMethods = this._formActionsFinish[action.actionCode];\n if (finishActionMethods) {\n const clientActionPromises: any[] = [];\n for (const clientActionMethod of finishActionMethods) {\n const { callback, properties } = clientActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (callback && (!serverError || continueOnError)) {\n clientActionPromises.push(callback(action, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n completeGlobalAction(action: any) {\n return this.startServerAction(action);\n }\n\n /**\n * Manejadores de eventos para validaciones sobre campos\n */\n\n onFieldInput(codes: string[] | string | null, callback, properties = null) {\n const fieldSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n fieldSet.forEach((code) => {\n if (!this._fieldInputValidation[code]) {\n this._fieldInputValidation[code] = [];\n }\n this._fieldInputValidation[code].push({ callback, properties });\n });\n }\n\n onFieldValidationStart(codes: string[] | string | null, callback, properties = null) {\n const fieldSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n fieldSet.forEach((code) => {\n if (!this._fieldValidationsStart[code]) {\n this._fieldValidationsStart[code] = [];\n }\n this._fieldValidationsStart[code].push({ callback, properties });\n });\n }\n\n onFieldValidationFinish(codes: string[] | string | null, callback, properties = null) {\n const fieldSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n fieldSet.forEach((code) => {\n if (!this._fieldValidationsFinish[code]) {\n this._fieldValidationsFinish[code] = [];\n }\n this._fieldValidationsFinish[code].push({ callback, properties });\n });\n }\n\n async startFieldInputValidation(code: string, intrinsicValidation: boolean = true) {\n this.notifyFormActivity();\n const fieldToValidate = this.getField(code);\n if (!fieldToValidate) { return false; }\n const validationCallbacks = this._fieldInputValidation[code];\n if (validationCallbacks) {\n const clientValidationPromises: any[] = [];\n for (const validationMethod of validationCallbacks) {\n const { callback, properties } = validationMethod;\n const continueValidationPromise = callback(fieldToValidate);\n clientValidationPromises.push(continueValidationPromise);\n }\n await Promise.all(clientValidationPromises);\n }\n return true;\n }\n\n async startFieldValidation(code: string, intrinsicValidation: boolean = true) {\n this.notifyFormActivity();\n const fieldToValidate = this.getField(code);\n if (!fieldToValidate) { return; }\n const validationCallbacks = this._fieldValidationsStart[code];\n if (validationCallbacks) {\n const clientValidationPromises: any[] = [];\n for (const validationMethod of validationCallbacks) {\n const { callback, properties } = validationMethod;\n const clientValidationPromise = callback(fieldToValidate);\n clientValidationPromises.push(clientValidationPromise);\n }\n const clientValidationResults = await Promise.all(clientValidationPromises);\n const continueValidation = clientValidationResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueValidation) {\n return;\n }\n }\n if (intrinsicValidation) {\n this.startServerFieldValidation(fieldToValidate);\n }\n }\n\n async startServerFieldValidation(inputField: string | FieldDescriptor) {\n const fieldObj: FieldDescriptor | null = (typeof inputField === 'string')\n ? this.getField(inputField) : inputField;\n let serverError = false;\n let validationResult: boolean = true;\n if (!fieldObj) {\n return;\n }\n if (fieldObj.backend) {\n fieldObj.validating = true;\n validationResult = await this\n .requestFormAction(formActions.validate, fieldObj.code);\n serverError = !!this.errorOccured();\n }\n if (serverError) {\n fieldObj?.setErrorCode(this.errorCode);\n fieldObj?.setErrorMessage(this.errorMessage);\n for (let index = 0; index < this._fieldServerError.length; index++) {\n const { callback, properties } = this._fieldServerError[index];\n callback(fieldObj);\n }\n }\n await this.finishFieldValidation(fieldObj, validationResult, serverError);\n fieldObj.validating = false;\n }\n\n async finishFieldValidation(fieldObject: any, validationResult: boolean, serverError = false) {\n const validationCallbacks = this._fieldValidationsFinish[fieldObject.code];\n if (validationCallbacks) {\n const clientActionPromises: any[] = [];\n for (const validationMethod of validationCallbacks) {\n const { callback, properties } = validationMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(fieldObject, validationResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async continueFieldValidation(code: string) {\n return this.startServerFieldValidation(code);\n }\n\n /**\n * Manejadores de eventos para acciones sobre Tablas\n */\n\n onTableActionStart(code: string, actionCode: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) {\n return;\n }\n const inlineActionObject = tableObject.getAction(actionCode);\n if (!inlineActionObject) {\n return;\n }\n let tableEventHandlers: any;\n if (this._tableActionsStart[code]) {\n tableEventHandlers = this._tableActionsStart[code];\n } else {\n tableEventHandlers = {};\n this._tableActionsStart[code] = tableEventHandlers;\n }\n if (!tableEventHandlers[actionCode]) {\n tableEventHandlers[actionCode] = [];\n }\n tableEventHandlers[actionCode].push({ callback, properties });\n }\n\n onTableActionFinish(code: string, actionCode: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) {\n return;\n }\n const inlineActionObject = tableObject.getAction(actionCode);\n if (!inlineActionObject) {\n return;\n }\n let tableEventHandlers: any;\n if (this._tableActionsFinish[code]) {\n tableEventHandlers = this._tableActionsFinish[code];\n } else {\n tableEventHandlers = {};\n this._tableActionsFinish[code] = tableEventHandlers;\n }\n if (!tableEventHandlers[actionCode]) {\n tableEventHandlers[actionCode] = [];\n }\n tableEventHandlers[actionCode].push({ callback, properties });\n }\n\n onTableSelectionStart(code: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) { return; }\n let tableEventHandlers: any[];\n if (this._tableSelectionsStart[code]) {\n tableEventHandlers = this._tableSelectionsStart[code];\n } else {\n tableEventHandlers = [];\n this._tableSelectionsStart[code] = tableEventHandlers;\n }\n tableEventHandlers.push({ callback, properties });\n }\n\n onTableSelectionFinish(code: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) { return; }\n let tableEventHandlers: any[];\n if (this._tableSelectionsFinish[code]) {\n tableEventHandlers = this._tableSelectionsFinish[code];\n } else {\n tableEventHandlers = [];\n this._tableSelectionsFinish[code] = tableEventHandlers;\n }\n tableEventHandlers.push({ callback, properties });\n }\n\n onTableGetDataStart(code: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) {\n return;\n }\n let tableEventHandlers: any[];\n if (this._tableGetDataStart[code]) {\n tableEventHandlers = this._tableGetDataStart[code];\n } else {\n tableEventHandlers = [];\n this._tableGetDataStart[code] = tableEventHandlers;\n }\n tableEventHandlers.push({ callback, properties });\n }\n\n onTableGetDataFinish(code: string, callback, properties = null) {\n const tableObject = this.getTable(code);\n if (!tableObject) {\n return;\n }\n let tableEventHandlers: any;\n if (this._tableGetDataFinish[code]) {\n tableEventHandlers = this._tableGetDataFinish[code];\n } else {\n tableEventHandlers = {};\n this._tableGetDataFinish[code] = tableEventHandlers;\n }\n tableEventHandlers[GET_DATA_ACTION] = { callback, properties };\n }\n\n async startTableGlobalAction(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode, actionCode } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n if (!tableObject || !actionCode) { return; }\n this.resetError();\n const action = tableObject.getAction(actionCode);\n if (!action) { return; }\n const tableActionDetail = {\n tableObject,\n action,\n tableCode,\n actionCode,\n };\n const tableEventHandlers = this._tableActionsStart[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const clientActionPromise = callback(tableActionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerGlobalAction(tableActionDetail);\n }\n\n async startTableServerGlobalAction(tableActionDetail: any) {\n const { tableObject, action, tableCode, actionCode } = tableActionDetail;\n if (!tableObject || !action) { return; }\n tableObject.putOnWait();\n let serverError = false;\n let actionResult = null;\n if (action.backend) {\n const actionSubject = {\n tableCode,\n actionType: GLOBAL_ACTION,\n actionCode\n };\n actionResult = await this\n .requestFormAction(formActions.tableAction, actionSubject);\n serverError = !!this.errorOccured();\n }\n await this.finishTableGlobalAction(tableActionDetail, actionResult, serverError);\n if (!serverError) {\n action.newState && this.changeState(action.newState);\n } else {\n for (let index = 0; index < this._tableServerError.length; index++) {\n const { callback, properties } = this._tableServerError[index];\n callback(tableObject);\n }\n }\n tableObject.freeWaiting();\n }\n\n async finishTableGlobalAction(tableActionDetail: any, actionResult, serverError = false) {\n const { tableCode, actionCode } = tableActionDetail;\n const tableEventHandlers = this._tableActionsFinish[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableActionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async startTableAction(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode, actionCode, actionDetail } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n if (!tableObject || !actionCode) { return; }\n this.resetError();\n const { recordId, recordData } = actionDetail;\n const action = tableObject.getAction(actionCode);\n if (!action) { return; }\n const tableActionDetail = {\n tableObject,\n action,\n tableCode,\n actionCode,\n recordId,\n recordData\n };\n const tableEventHandlers = this._tableActionsStart[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const clientActionPromise = callback(tableActionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerAction(tableActionDetail);\n }\n\n async startTableServerAction(tableActionDetail: any) {\n const { tableObject, action, tableCode, actionCode, recordId, recordData } = tableActionDetail;\n if (!tableObject || !action) { return; }\n tableObject.putOnWait();\n let serverError = false;\n let actionResult = null;\n if (action.backend) {\n const actionSubject = {\n tableCode,\n actionType: this.formConfig?.tableActions.inline,\n actionCode,\n tableRecordId: recordId,\n tableRecordData: recordData\n };\n actionResult = await this\n .requestFormAction(formActions.tableAction, actionSubject);\n serverError = !!this.errorOccured();\n }\n await this.finishTableAction(tableActionDetail, actionResult, serverError);\n if (!serverError) {\n action.newState && this.changeState(action.newState);\n } else {\n this.displayTableServerError();\n }\n tableObject.freeWaiting();\n }\n\n completeInlineAction(tableAction: any) {\n return this.startTableServerAction(tableAction);\n }\n\n async finishTableAction(tableActionDetail: any, actionResult, serverError = false) {\n const { tableCode, actionCode } = tableActionDetail;\n const tableEventHandlers = this._tableActionsFinish[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableActionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async startTableRecordSelection(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode, actionDetail } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n if (!tableObject) { return; }\n this.resetError();\n const { recordId, recordData } = actionDetail;\n const tableSelectionDetail = {\n tableObject,\n tableCode,\n recordId,\n recordData\n };\n const tableEventHandlers = this._tableSelectionsStart[tableCode];\n if (tableEventHandlers) {\n const clientActionPromises: any[] = [];\n for (const tableSelectionMethod of tableEventHandlers) {\n const { callback, properties } = tableSelectionMethod;\n const clientActionPromise = callback(tableSelectionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerRecordSelection(tableSelectionDetail);\n }\n\n async startTableServerRecordSelection(tableSelectionDetail: any) {\n const { tableObject, tableCode, recordId, recordData } = tableSelectionDetail;\n if (!tableObject) { return; }\n tableObject.putOnWait();\n let serverError = false;\n let actionResult = null;\n if (tableObject.selectionBackend) {\n const actionSubject: any = {\n tableCode,\n actionType: this.formConfig?.tableActions.rowSelection,\n actionCode: null,\n tableRecordId: recordId,\n tableRecordData: recordData\n };\n actionResult = await this\n .requestFormAction(formActions.tableAction, actionSubject);\n serverError = !!this.errorOccured();\n }\n await this.finishTableRecordSelection(tableSelectionDetail, actionResult, serverError);\n if (serverError) {\n this.displayTableServerError();\n }\n tableObject.freeWaiting();\n }\n\n async finishTableRecordSelection(tableSelectionDetail: any, actionResult, serverError = false) {\n const { tableCode } = tableSelectionDetail;\n const tableEventHandlers = this._tableSelectionsFinish[tableCode];\n if (tableEventHandlers) {\n const clientActionPromises: any[] = [];\n for (const tableSelectionMethod of tableEventHandlers) {\n const { callback, properties } = tableSelectionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableSelectionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async startTableSelectionAction(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode, actionCode, actionDetail } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n if (!tableObject || !actionCode) { return; }\n this.resetError();\n const { selectedRecords } = actionDetail;\n const action = tableObject.getAction(actionCode);\n if (!action) { return; }\n const tableActionDetail = {\n tableObject,\n action,\n tableCode,\n actionCode,\n selectedRecords\n };\n const tableEventHandlers = this._tableActionsStart[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const clientActionPromise = callback(tableActionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerSelectionAction(tableActionDetail);\n }\n\n async startTableServerSelectionAction(tableActionDetail: any) {\n const { tableObject, action, tableCode, actionCode, selectedRecords } = tableActionDetail;\n if (!tableObject || !action) { return; }\n tableObject.putOnWait();\n let serverError = false;\n let actionResult = null;\n if (action.backend) {\n const actionSubject = {\n tableCode,\n actionType: this.formConfig?.tableActions.selection,\n actionCode,\n selectedRecords\n };\n actionResult = await this\n .requestFormAction(formActions.tableAction, actionSubject);\n serverError = !!this.errorOccured();\n }\n await this.finishTableSelectionAction(tableActionDetail, actionResult, serverError);\n if (!serverError) {\n action.newState && this.changeState(action.newState);\n } else {\n this.displayTableServerError();\n }\n tableObject.freeWaiting();\n }\n\n async finishTableSelectionAction(tableActionDetail: any, actionResult, serverError = false) {\n const { tableCode, actionCode } = tableActionDetail;\n const tableEventHandlers = this._tableActionsFinish[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[actionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableActionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n async startTableGetData(tableActionEvent: any) {\n this.notifyFormActivity();\n const { tableCode } = tableActionEvent;\n const tableObject = this.getTable(tableCode);\n const tableActionDetail = {\n tableObject,\n tableCode\n };\n this.resetError();\n const tableEventHandlers = this._tableGetDataStart[tableCode];\n if (tableEventHandlers) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableEventHandlers) {\n const { callback, properties } = tableActionMethod;\n const clientActionPromise = callback(tableActionDetail);\n clientActionPromises.push(clientActionPromise);\n }\n const clientActionResults = await Promise.all(clientActionPromises);\n const continueAction = clientActionResults.reduce((total, curr) => (total && (curr !== false)), true);\n if (!continueAction) {\n return;\n }\n }\n this.startTableServerGetData(tableActionDetail);\n }\n\n async startTableServerGetData(tableActionDetail: any) {\n const { tableObject, tableCode } = tableActionDetail;\n tableObject.putOnWait();\n let serverError = false;\n const actionSubject = { tableCode };\n const actionResult = await this\n .requestFormAction(formActions.getTableData, actionSubject);\n serverError = !!this.errorOccured();\n await this.finishTableGetData(tableActionDetail, actionResult, serverError);\n if (serverError) {\n this.displayTableServerError();\n }\n tableObject.freeWaiting();\n }\n\n async finishTableGetData(tableActionDetail: any, actionResult, serverError = false) {\n const { tableCode, tableActionCode } = tableActionDetail;\n const tableEventHandlers = this._tableActionsFinish[tableCode];\n const tableActionMethods = (tableEventHandlers) ? tableEventHandlers[tableActionCode] : null;\n if (tableActionMethods) {\n const clientActionPromises: any[] = [];\n for (const tableActionMethod of tableActionMethods) {\n const { callback, properties } = tableActionMethod;\n const continueOnError = properties?.continueOnError ?? false;\n if (!serverError || continueOnError) {\n clientActionPromises.push(callback(tableActionDetail, actionResult));\n }\n }\n await Promise.all(clientActionPromises);\n }\n }\n\n checkSectionRequiredFields(sectionCode: string, reqFieldMessage?: string) {\n this.cleanErrorFields(null, sectionCode);\n const requiredFieldMessage = reqFieldMessage ?? this.formConfig?.formStandardErrors.requiredField\n const numErrors = this.tagFieldsWithError(requiredFieldMessage, this.getRequiredEmptyFields(null, sectionCode));\n return (numErrors === 0);\n }\n\n validateSectionConsistency(sectionCode: string, reqFieldMessage?: string) {\n this.resetError();\n const completeFields = this.checkSectionRequiredFields(sectionCode, reqFieldMessage);\n if (!completeFields) {\n this.setError(this.formConfig?.formStandardErrors.typeWarning,\n this.formConfig?.formStandardErrors.validationTitle,\n this.formConfig?.formStandardErrors.requiredFields);\n return false;\n }\n let validationError = false;\n const requiredEmptyFields: any[] = this.getRequiredEmptyFields(null, sectionCode) ?? [];\n if (requiredEmptyFields?.length > 0) {\n validationError = true;\n this.setError(this.formConfig?.formStandardErrors.typeWarning,\n this.formConfig?.formStandardErrors.validationTitle,\n this.formConfig?.formStandardErrors.requiredFields);\n this.tagFieldsWithError(this.formConfig?.formStandardErrors.requiredField, requiredEmptyFields);\n for (const code of requiredEmptyFields) {\n const requiredEmptyField = this.getField(code);\n requiredEmptyField?.focus();\n break;\n }\n }\n const validationIssueFields: any[] = this.getFieldsWithValidationIssues(null,\n sectionCode) ?? [];\n if (!validationError && validationIssueFields.length > 0) {\n validationError = true;\n this.setError(this.formConfig?.formStandardErrors.typeWarning,\n this.formConfig?.formStandardErrors.validationTitle,\n this.formConfig?.formStandardErrors.validationFields);\n for (const code of validationIssueFields) {\n const validationIssueField = this.getField(code);\n if (validationIssueField) {\n validationIssueField.focus();\n }\n break;\n }\n }\n return validationError;\n }\n\n copyTableRecordToFields(tableObj: any, mappingTable: any = null) {\n const tableObject = this.getTable(tableObj.tableCode);\n const tableRecord = tableObject?.getTableRecord(tableObj.recordId);\n const columnNames = tableObject?.columnNames;\n if (tableRecord && columnNames) {\n for (const columnName of columnNames) {\n const columnValue = tableRecord.getFieldValue(columnName) ?? '';\n const code = mappingTable?.[columnName] ?? columnName;\n const field = code ? this.getField(code) : null;\n if (field) {\n field.setValue(columnValue);\n field.hasChanged = false;\n }\n }\n return true;\n }\n return false;\n }\n\n notifyFormActivity() {\n if (this._notifyFormActivity) {\n this._eventEmiter.next('formActivity', { code: this.formCode });\n }\n }\n\n /**\n * Métodos Legacy de compatibilidad hacia atrás\n */\n\n /**\n * @deprecated Use name\n */\n get formCode(): string { return this.name ?? ''; }\n\n /**\n * @deprecated Use name\n */\n set formCode(name: string) { this.name = name; }\n\n /**\n * @deprecated Use busy\n */\n get inServerProcess() { return this.busy; }\n\n /**\n * @deprecated Use state\n */\n get currentState(): string { return this.state ?? ''; }\n\n /**\n * @deprecated Use changeState\n */\n set currentState(state: string) { this?.changeState(state); }\n\n /**\n * @deprecated Use onSectionActivation\n */\n get formRoute(): string { return this._formRoute ?? ''; }\n\n /**\n * @deprecated Use onSectionActivation\n */\n set formRoute(route: string) { this._formRoute = route; }\n\n /**\n * @deprecated Use onSectionActivation\n */\n addSectionActivation(codes: string[] | string | null, callback, properties = null) {\n return this.onSectionActivation(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onSectionInactivation\n */\n addSectionInactivation(codes: string[] | string | null, callback, properties = null) {\n return this.onSectionInactivation(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onActionStart\n */\n addActionMethodStart(codes: string[] | string | null, callback, properties = null) {\n return this.onActionStart(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onActionFinish\n */\n addActionMethodFinish(codes: string[] | string | null, callback, properties = null) {\n return this.onActionFinish(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onFieldInput\n */\n addFieldInputValidation(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldInput(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onFieldValidationStart\n */\n addFieldValidationStart(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldValidationStart(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onFieldValidationFinish\n */\n addFieldValidationFinish(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldValidationFinish(codes, callback, properties);\n }\n\n /**\n * @deprecated Use onTableActionStart\n */\n addTableActionStart(code: string, actionCode: string, callback, properties = null) {\n return this.onTableActionStart(code, actionCode, callback, properties);\n }\n\n /**\n * @deprecated Use onTableActionFinish\n */\n addTableActionFinish(code: string, actionCode: string, callback, properties = null) {\n return this.onTableActionFinish(code, actionCode, callback, properties);\n }\n\n /**\n * @deprecated Use onTableSelectionStart\n */\n addTableSelectionStart(code: string, callback, properties = null) {\n return this.onTableSelectionStart(code, callback, properties);\n }\n\n /**\n * @deprecated Use onTableSelectionFinish\n */\n addTableSelectionFinish(code: string, callback, properties = null) {\n return this.onTableSelectionFinish(code, callback, properties);\n }\n\n /**\n * @deprecated Use onTableGetDataStart\n */\n addTableGetDataStart(code: string, callback, properties = null) {\n return this.onTableGetDataStart(code, callback, properties);\n }\n\n /**\n * @deprecated Use onTableGetDataFinish\n */\n addTableGetDataFinish(code: string, callback, properties = null) {\n return this.onTableGetDataFinish(code, callback, properties);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\n\nimport { BasicFormComponent } from './components/forms/basic-form';\nimport { ActionComponent } from './components/elements/action.component';\nimport { FieldComponent } from './components/elements/field.component';\nimport { ElementComponent } from './components/elements/layout/element.component';\nimport { FormErrorComponent } from './components/elements/layout/form-error.component';\nimport { FormHeaderComponent } from './components/elements/layout/form-header.component';\nimport { SectionComponent } from './components/elements/layout/section.component';\nimport { SubSectionComponent } from './components/elements/layout/sub-section.component';\nimport { LibTableRecordActionComponent } from './components/elements/tables/table-record-action.component';\nimport { LibTableRecordFieldComponent } from './components/elements/tables/table-record-field.component';\nimport { LibTableComponent } from './components/elements/tables/table.component';\n\nconst COMPONENTS = [\n BasicFormComponent,\n ActionComponent,\n FieldComponent,\n ElementComponent,\n FormErrorComponent,\n FormHeaderComponent,\n SectionComponent,\n SubSectionComponent,\n LibTableRecordActionComponent,\n LibTableRecordFieldComponent,\n LibTableComponent];\n\n@NgModule({\n declarations: COMPONENTS,\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ],\n exports: COMPONENTS\n})\nexport class TuainNgFormsLibModule { }\n","/*\n * Public API Surface of tuain-ng-forms-lib\n */\n\nexport * from './lib/components/elements/action.component';\nexport * from './lib/components/elements/field.component';\nexport * from './lib/components/elements/layout/element.component';\nexport * from './lib/components/elements/layout/form-error.component';\nexport * from './lib/components/elements/layout/form-header.component';\nexport * from './lib/components/elements/layout/section.component';\nexport * from './lib/components/elements/layout/sub-section.component';\nexport * from './lib/components/elements/tables/table-record-action.component';\nexport * from './lib/components/elements/tables/table-record-field.component';\nexport * from './lib/components/elements/tables/table.component';\nexport * from './lib/components/forms/basic-form';\nexport * from './lib/services/event-manager.service';\nexport * from './lib/services/form-manager.service';\nexport * from './lib/services/file-manager.service';\nexport * from './lib/tuain-ng-forms-lib.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CUSTOM_ATTRIBUTES","signaledAttributes","INLINE_ACTION","HEADER","attrs","ACTIVE","i1.LibFormManagerService","i2.LibEventManagerService","i3.LibFileManagementService"],"mappings":"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"}
|