{"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, Input, input, model, OnInit } 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 OnInit {\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  value = model<any>();  // Valor del componente relacionado con el campo (pueden diferir en formato y tipo)\n  @Input() field: FieldDescriptor | null = null;\n  // field = input.required<FieldDescriptor>();\n\n  updatePropagatedAttributes() {\n    this.updatePieceAttributes(this.field, signaledAttributes)\n  }\n\n  ngOnInit() {\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    try {\n      this.value.set(this.field?.value);\n    } catch (e) {\n      console.log(`Excepción en componente de campo ${e}`);\n    }\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.updateObject();\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 _customEvent = new Subject<any>();\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 customEvent() { return this._customEvent; }\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  triggerCustomEvent(eventName, eventData) {\n    this._customEvent.next({ code: this._fieldCode, eventName, eventData });\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: string | null = 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._tableRecordObj = {};\n      this.setAttr(attrs.allSelected, false);\n      this.setAttr(attrs.selectedRecords, []);\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._tableRecordObj = newRecordsObj;\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      visibleRecords = this.getFilteredRecords();\n      // Se valida si la página actual sigue siendo válida\n      const totalRecords = visibleRecords.length;\n      const recordsLastPage = totalRecords % this._recordsPerPage;\n      const totalPages = Math.trunc(totalRecords / this._recordsPerPage + (recordsLastPage ? 1 : 0));\n      if (this._currentPage > totalPages) {\n        this._currentPage = totalPages || 1;\n      }\n      const sliceNumber1 = (this._currentPage - 1) * this._recordsPerPage;\n      const sliceNumber2 = (this._currentPage - 1) * this._recordsPerPage + this._recordsPerPage\n      visibleRecords = visibleRecords.slice(sliceNumber1, sliceNumber2);\n      this.setAttr(attrs.totalRecordsNumber, totalRecords);\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        const subsections = objDef.subsections.map(subSecDef => {\n          let subSecVisibleStates = subSecDef.visibleStates ?? [];\n          if (!Array.isArray(subSecVisibleStates) && typeof subSecVisibleStates === 'string') {\n            subSecVisibleStates = (subSecVisibleStates === neverVisible) ? [] : allStates;\n          }\n          return { ...subSecDef, visibleStates: subSecVisibleStates };\n        });\n        return { ...objDef, subsections, 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, valueAttribute: string | string[], saparator = '-'): any {\n    const field = this.getField(code);\n    if (!field) { return; }\n    const newOptions: any[] = [];\n    const numSeparators = (Array.isArray(valueAttribute)) ? (valueAttribute.length - 1) : 0;\n    for (let i = 0; i < optionsArray?.length; i++) {\n      const optionItem = optionsArray[i];\n      const fieldOptionId = optionItem?.[idAttribute];\n      let fieldOptionText = '';\n      if (Array.isArray(valueAttribute)) {\n        for (let index = 0; index < valueAttribute.length; index++) {\n          const textPart = valueAttribute[index];\n          fieldOptionText += (index < numSeparators)\n            ? `${optionItem?.[textPart]} ${saparator} ` : optionItem?.[textPart];\n        }\n      } else {\n        fieldOptionText = optionItem?.[valueAttribute];\n      }\n      if (fieldOptionId !== undefined && fieldOptionId !== null\n        && fieldOptionText !== undefined && fieldOptionText !== null) {\n        newOptions.push({ fieldOptionId, fieldOptionValue: fieldOptionText });\n      }\n    }\n    field.options = newOptions;\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, signal } 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 _fieldCustomeEvent: 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 = signal<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.set(false);\n    this._formChangeState = [];\n    this._formSectionsCanDeactivate = {};\n    this._formSectionsActivate = {};\n    this._formSectionsInactivate = {};\n    this._formActionsStart = {};\n    this._formActionsFinish = {};\n    this._fieldCustomeEvent = {};\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.customEvent.subscribe(event => {\n          const { code, eventName, eventData } = event;\n          this.startFieldCustomEvent(code, eventName, eventData);\n        });\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.set(true);\n      const formDefinition = await this.formManagerService.getFormDefinition(this.name);\n      this.busy.set(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.set(true);\n    const formActionResponse: any = await this.formManagerService.execServerAction(actionDetail);\n    if (!formActionResponse) {\n      return null;\n    }\n    this.busy.set(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  onFieldCustomEvent(codes: string[] | string | null, callback, properties = null) {\n    const fieldSet = (Array.isArray(codes)) ? codes : (codes ? [codes] : []);\n    fieldSet.forEach((code) => {\n      if (!this._fieldCustomeEvent[code]) {\n        this._fieldCustomeEvent[code] = [];\n      }\n      this._fieldCustomeEvent[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 startFieldCustomEvent(code: string, eventName: string, eventData: any) {\n    this.notifyFormActivity();\n    const fieldToTrigger = this.getField(code);\n    if (!fieldToTrigger) { return; }\n    const eventHandlerCallbacks = this._fieldCustomeEvent[code];\n    if (eventHandlerCallbacks) {\n      const clientEventPromises: any[] = [];\n      for (const eventHandlerMethod of eventHandlerCallbacks) {\n        const { callback, properties } = eventHandlerMethod;\n        const clientEventPromise = callback(eventName, eventData, fieldToTrigger);\n        clientEventPromises.push(clientEventPromise);\n      }\n    }\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 signal\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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"}