tuain-ng-forms-lib 14.0.15 → 14.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/classes/forms/table/table.mjs +15 -3
- package/fesm2015/tuain-ng-forms-lib.mjs +14 -3
- package/fesm2015/tuain-ng-forms-lib.mjs.map +1 -1
- package/fesm2020/tuain-ng-forms-lib.mjs +14 -2
- package/fesm2020/tuain-ng-forms-lib.mjs.map +1 -1
- package/lib/classes/forms/table/table.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuain-ng-forms-lib.mjs","sources":["../../../projects/tuain-ng-forms-lib/src/lib/components/elements/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/element.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/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, Input, OnInit } from '@angular/core';\nimport { FormAction } from '../../classes/forms/action';\n\n@Component({\n selector: 'lib-action',\n template: `<ng-content></ng-content>`\n})\n\nexport class ActionComponent implements OnInit {\n formConfig: any;\n inProgress: boolean;\n @Input() action: FormAction;\n @Input() busy: any;\n @Input() relatedField: any;\n @Input() state: any;\n\n @Input() style = 'primary';\n @Input() showLabel = true;\n\n ngOnInit() {\n this.formConfig = this.action?._formConfig;\n this.start();\n }\n\n start() { }\n\n activate() {\n if (this.action?.notifyActivation) {\n this.action.notifyActivation();\n }\n }\n\n visibleOnRestriction() {\n if (!this.action?.restrictedOnField) {\n return true;\n }\n if ((this.action?.restrictedOnOperator === '=='\n && this.relatedField === this.action?.restrictedOnValue)\n || (this.action?.restrictedOnOperator === '!='\n && this.relatedField !== this.action?.restrictedOnValue)) {\n return true;\n }\n return false;\n }\n\n get visible() {\n return this.action?.visibleOn(this.state) && this.visibleOnRestriction();\n }\n\n get disabled() {\n return !(this.action?.enabledOn(this.state));\n }\n}","import { Component, OnInit, Input } from '@angular/core';\nimport { FieldDescriptor } from '../../classes/forms/field';\n\nconst VALUE = 'value';\nconst FOCUS = 'focus';\n@Component({\n selector: 'lib-field',\n template: `<ng-content></ng-content>`\n})\nexport class FieldComponent implements OnInit {\n formConfig: any;\n // Atributos obtenidos estáticamente\n code: string;\n value: any;\n fieldInfo: string;\n fieldAlignment: string;\n tooltipText: string;\n\n // Atributos actualizados por subscripción\n maxLength: any;\n minValue: any;\n maxValue: any;\n onValidation: any;\n captureType: any;\n title: any;\n type: any;\n visibleLabel: any;\n required: any;\n options: any;\n\n errorType: any;\n errorCode: any;\n errorMessage: any;\n\n @Input() field: FieldDescriptor;\n @Input() state: any;\n\n ngOnInit() {\n if (this.field) {\n this.formConfig = this.field?._formConfig;\n // Inicialización\n const mapping = Object.entries(this.formConfig.componentFieldAttrMap);\n for (let index = 0; index < mapping.length; index++) {\n const [fieldAttr1, compAttr1] = mapping[index];\n const compAttr = compAttr1.toString();\n const fieldAttr = fieldAttr1.toString();\n const attributeValue = this.field?.[fieldAttr]\n this.dafaultProcessFieldChange(compAttr, attributeValue);\n this.processFieldChange(compAttr, attributeValue);\n }\n // Subscripción a cambios en atributos\n this.field.attributeChange.subscribe(event => {\n const { name: fieldAttr, value } = event;\n const compAttr = this.formConfig.componentFieldAttrMap[fieldAttr];\n this.dafaultProcessFieldChange(compAttr, value);\n this.processFieldChange(compAttr, value);\n });\n }\n this.start();\n }\n\n dafaultProcessFieldChange(attribute: string, value?: any) {\n if (attribute === VALUE) {\n this.updateValue();\n } else if (attribute === FOCUS) {\n this.focus();\n } else {\n this[attribute] = value;\n }\n }\n\n processFieldChange(attribute: string, value?: any) { }\n start() { }\n focus() { }\n\n updateObject() {\n this.field.setValue(this.value);\n }\n\n inputChanged() {\n this.field.setValue(this.value);\n this.onChangeContent();\n }\n\n inputTyped() {\n this.field.setValue(this.value);\n this.onInputChange();\n }\n\n updateValue() {\n this.value = this.field.getValue();\n }\n\n onInputChange() {\n setTimeout(() => this.field.notifyEditionPartial(), 50);\n }\n\n onChangeContent() {\n setTimeout(() => this.field.notifyEditionFinish(), 50);\n }\n\n onShowInfo(detail = null) {\n setTimeout(() => this.field.notifyEditionDetailRequest(detail), 50);\n }\n\n numberInputValidation(event) {\n const k = event.charCode;\n return (k > 47 && k < 58);\n }\n\n get visible() {\n return this.field?.visibleOn(this.state);\n }\n\n get disabled() {\n return !this.field?.enabledOn(this.state);\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-element',\n template: `<ng-content></ng-content>`\n})\nexport class ElementComponent implements OnInit {\n formConfig: any;\n\n @Input() element: any;\n @Input() form: any;\n @Input() state: any;\n\n ngOnInit() {\n this.formConfig = this.element?._formConfig;\n this.start();\n }\n\n start() { }\n\n get visible() {\n return this.element?.visibleOn(this.state);\n }\n\n get disabled() {\n return !this.element?.enabledOn(this.state);\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() formManager: any;\n @Input() goBackAction: boolean;\n @Input() showTitle: any;\n @Input() headerActions: any;\n @Output() goBackEvent: EventEmitter<object> = new EventEmitter<object>();\n\n goBackForm() {\n this.goBackEvent.emit();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-section',\n template: `<ng-content></ng-content>`\n})\nexport class SectionComponent implements OnInit {\n @Input() section: any;\n @Input() formManager: any;\n\n ngOnInit() {\n this.start();\n }\n\n start() { }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-subsection',\n template: `<ng-content></ng-content>`\n})\nexport class SubSectionComponent implements OnInit {\n @Input() subSection: any;\n @Input() showHeader: any;\n @Input() formManager: any;\n\n ngOnInit() {\n this.start();\n }\n\n start() { }\n}\n","import { Component, Input, Output, OnInit, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { TableEvent, TableActionEvent } from '../../../classes/forms/table/table';\n\nconst INLINE_ACTION = 'INLINE';\n\n@Component({\n selector: 'lib-table-record-action',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableRecordActionComponent implements OnInit {\n @Input() recordId: any;\n @Input() recordData: any;\n @Input() action: any;\n\n @Output() actionSelected: EventEmitter<object> = new EventEmitter<object>();\n\n constructor() { }\n\n ngOnInit() {\n this.start();\n }\n\n start() { }\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\n ngOnInit() {\n this.start();\n }\n\n start() { }\n}\n","import { Component, 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';\n\nconst changeViewAttributes = ['visibleRecords', 'currentPage', 'recordsPerPage'];\n\n@Component({\n selector: 'lib-table',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableComponent implements OnInit {\n formConfig: any;\n\n // Atributos sincronizados del objeto\n code: any;\n columns: any;\n currentPage: number = 1;\n globalSearch: boolean = false;\n globalFilterString: string = '';\n visibleRecords: any[] = [];\n selectedRecords: any[] = [];\n recordsPerPage: any;\n totalRecordsNumber: number = 0;\n allSelected: boolean = false;\n layout: 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;\n @Input() tableRecords: TableRecordData[];\n @Input() disabled: boolean = false;\n @Input() state: string;\n @Input() waiting: boolean;\n\n ngOnInit() {\n if (this.table) {\n this.formConfig = this.table?._formConfig;\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 // Inicialización de campos mapeados del objeto\n const mapping = Object.entries(this.formConfig.componentTableAttrMap);\n for (let index = 0; index < mapping.length; index++) {\n const [tableAttrRaw, compAttrRaw] = mapping[index];\n const tableAttr = tableAttrRaw.toString();\n const compAttr = compAttrRaw.toString();\n this.syncAttribute(compAttr, this.table[tableAttr]);\n }\n // Subscripción a cambios en atributos\n this.table.attributeChange.subscribe(event => {\n const { name: tableAttr, value } = event;\n const compAttr = this.formConfig.componentTableAttrMap[tableAttr];\n this.syncAttribute(compAttr, value);\n });\n }\n this.start();\n }\n\n start() { }\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.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 syncAttribute(name: string, value: any) {\n try {\n if (name === 'visibleRecords') {\n this.updateTableData();\n }\n this[name] = value;\n return true;\n } catch {\n return false;\n }\n }\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","import { elementTypes } from './form.constants';\nexport class FormElement {\n protected _visible: boolean;\n protected _visibleForced: boolean;\n protected _isForced: boolean;\n _formConfig: any;\n disabled: boolean;\n visibleStates: string[];\n enabledStates: string[];\n elementType: string;\n customAttributes: any;\n\n constructor(elementDefinition: any, formConfig: any) {\n this._formConfig = formConfig;\n this._isForced = false;\n this.setVisibleStates(elementDefinition.visibleStates);\n this.setEnabledStates(elementDefinition.enabledStates);\n this._visibleForced = false;\n this.disabled = elementDefinition?.disabled ?? false;\n this.setVisibility(elementDefinition?.visible ?? true);\n this.customAttributes = elementDefinition?.customAttributes ?? {};\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 matchAttribute(name: string, value: string): boolean { return this.customAttributes?.[name] === value; }\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 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)) ? visibleStates : [];\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)) ? enabledStates : [];\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 /**\n * @deprecated Utilizar viewOnState\n */\n supportState(state: string): boolean { return this.viewOnState(state); }\n\n /**\n * @deprecated Utilizar viewOnState\n */\n supportMode(state: string): boolean { return this.viewOnState(state); }\n\n get visible(): boolean { return (this._isForced) ? this._visibleForced : this._visible; }\n set visible(visible: boolean) { this.setVisibility(visible); }\n\n visibleOn(state: string): boolean {\n return this.visible && this.viewOnState(state);\n }\n\n enabledOn(state: string): boolean {\n return !this.disabled && this.enabledOnState(state);\n }\n\n setVisibility(visible: boolean, forced: boolean = null): void {\n this._visible = visible && true;\n if (forced != null) {\n this._isForced = forced;\n }\n }\n\n show(forced?: boolean): void {\n this._visible = true;\n if (forced !== null) {\n this._isForced = forced;\n this._visibleForced = true;\n }\n }\n\n hide(forced?: boolean): void {\n this._visible = false;\n if (forced !== null) {\n this._isForced = forced;\n this._visibleForced = false;\n }\n }\n\n enable(): void { this.disabled = false; }\n disable(): void { this.disabled = true; }\n\n get enabled(): boolean { return !this.disabled; }\n get editable(): boolean { return !this.disabled; }\n}\n","import { Subject } from 'rxjs';\nimport { elementTypes } from './form.constants';\nimport { FormElement } from './element';\n\nconst HEADER = 'HEADER';\n\nexport class FormAction extends FormElement {\n private readonly _actionActivated = new Subject<string>();\n\n inProgress = false;\n newState: string;\n backend: boolean;\n\n actionCode: string;\n actionName: string;\n iconName: string;\n\n restrictedOnField: string;\n restrictedOnOperator: string;\n restrictedOnValue: string;\n customValidation: any;\n\n constructor(actionDefinition, formConfig) {\n super(actionDefinition, formConfig);\n this.elementType = elementTypes.action;\n this.actionCode = actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '';\n this.actionName = actionDefinition.actionTitle;\n this.iconName = actionDefinition.iconName || this.actionCode;\n this.setCustomAttribute('location', actionDefinition.position || HEADER);\n this.backend = actionDefinition?.serverAction ?? false;\n this.newState = actionDefinition?.newState;\n\n this.restrictedOnField = actionDefinition.fieldRestrictedCode ? actionDefinition.fieldRestrictedCode.toString() : '';\n this.restrictedOnOperator = actionDefinition.operatorRestricted || '';\n this.restrictedOnValue = actionDefinition.valueRestricted ?? '';\n this.customValidation = () => true;\n }\n\n get actionActivated() { return this._actionActivated; }\n\n start() { this.inProgress = true; }\n stop() { this.inProgress = false; }\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 this[propertyName] = receivedAction[propertyName];\n }\n }\n }\n\n setCustomValidation(callback) { this.customValidation = () => callback(); }\n}\n","import { Subject } from 'rxjs';\nimport yn from 'yn';\nimport { elementTypes, NO_ERROR } from './form.constants';\nimport { FormElement } from './element';\nimport { isNgTemplate } from '@angular/compiler';\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 fldAttr = {\n validateOnServer: 'validateOnServer',\n value: '_value',\n minValue: '_minValue',\n maxValue: '_maxValue',\n maxLength: '_maxLength',\n minLength: '_minLength',\n onValidation: '_onValidation',\n focus: 'focus',\n intrinsicErrorMessage: '_intrinsicErrorMessage',\n code: 'fieldCode',\n info: 'fieldInfo',\n defaultValue: 'defaultValue',\n defaultEditable: 'defaultEditable',\n visibleLabel: 'visibleLabel',\n required: 'fieldRequired',\n hasChanged: 'hasChanged',\n outputOnly: 'outputOnly',\n captureType: 'captureType',\n title: 'fieldTitle',\n type: 'fieldType',\n alignment: 'fieldAlignment',\n format: 'fieldFormat',\n externalValue: 'externalValue',\n tooltipText: 'tooltipText',\n errorType: 'errorType',\n errorCode: 'errorCode',\n errorMessage: 'errorMessage',\n options: 'fieldOptions',\n};\n\nexport interface DetailEvent {\n code: string;\n detail: any;\n}\n\nexport interface FieldOption {\n fieldOptionValue: string;\n fieldOptionId: string;\n}\n\nexport class FieldDescriptor extends FormElement {\n private readonly _editionFinish = new Subject<any>();\n private readonly _editionPartial = new Subject<any>();\n private readonly _detailRequest = new Subject<DetailEvent>();\n private readonly _attributeChange = new Subject<any>();\n\n private validateOnServer: boolean = false;\n\n private _value: any;\n private _focus: boolean = false;\n\n private _minValue: any;\n private _maxValue: any;\n private _maxLength: number = 0;\n private _minLength: number = 0;\n _onValidation: boolean = false;\n _intrinsicErrorMessage: string = '';\n\n fieldCode: string = '';\n fieldInfo: string = '';\n defaultValue: string = '';\n defaultEditable: boolean = false;\n\n visibleLabel: boolean = false;\n fieldRequired: boolean = false;\n hasChanged: boolean = false;\n outputOnly: boolean = false;\n captureType: string = '';\n fieldTitle: string = '';\n fieldType: string = '';\n fieldAlignment: string = '';\n fieldFormat: RegExp | null = null;\n externalValue: any;\n tooltipText: string = '';\n\n errorType: string = '';\n errorCode: string = '';\n errorMessage: string = '';\n\n fieldOptions: FieldOption[] | null = null;\n\n constructor(inputFieldReceived, formConfig) {\n super(inputFieldReceived, formConfig);\n this.elementType = elementTypes.field;\n const fld = (inputFieldReceived) ? inputFieldReceived : {};\n\n this.setAttr(fldAttr.code, fld.fieldCode);\n this.setAttr(fldAttr.title, fld.fieldTitle ?? this.fieldCode);\n this.setAttr(fldAttr.type, fld.fieldTypeCode)\n this.setAttr(fldAttr.captureType, fld.captureType ?? DEFAULT_CAPTURE_TYPE);\n const defaultValue = fld.defaultValue ?? null;\n if (this.fieldType === this._formConfig.fieldTypes.boolean) {\n this.setAttr(fldAttr.defaultValue, defaultValue ?? false);\n } else {\n this.setAttr(fldAttr.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.setAttr(fldAttr.alignment, fieldAlignment);\n this.setAttr(fldAttr.info, fld.info || '');\n let fieldFormat;\n try {\n fieldFormat = (fld.format) ? new RegExp(fld.format) : null;\n } catch (e) {\n fieldFormat = null;\n }\n this.setAttr(fldAttr.format, fieldFormat);\n\n this.setAttr(fldAttr.validateOnServer, fld.serverAction ?? false);\n\n this.setAttr(fldAttr.tooltipText, fld.tooltip || '');\n this.setAttr(fldAttr.defaultEditable, this.enabled);\n this.setAttr(fldAttr.required, fld.required ?? false);\n this.setError(fld.errorCode, fld.errorMessage, fld.errorType ?? DEFAULT_ERROR_TYPE);\n this.setAttr(fldAttr.outputOnly, fld.outputOnly ?? false);\n const maxLength = fld.maxLength ?? (this.captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);\n this.setAttr(fldAttr.maxLength, maxLength);\n const intrinsicErrorMessage = this._formConfig?.fieldValidations?.[this.fieldType]?.message\n ?? this._formConfig?.fieldValidations?.DEFAULT?.message ?? '';\n this.setAttr(fldAttr.intrinsicErrorMessage, intrinsicErrorMessage);\n\n this.setEditable(fld.editable ?? true);\n this.setVisibleLabel(fld.visibleLabel ?? true);\n this.setVisibility(fld.visible);\n this.setFieldOptions(fld.fieldOptions);\n this.setValue(fld.fieldValue ?? this.defaultValue ?? '');\n }\n\n get name() { return this.fieldCode; }\n get editionFinish() { return this._editionFinish; }\n get attributeChange() { return this._attributeChange; }\n\n get editionPartial() { return this._editionPartial; }\n get detailRequest() { return this._detailRequest; }\n get info() { return this.fieldInfo; }\n\n get validating() { return this._onValidation; }\n set validating(isValidating: boolean) { this.setAttr(fldAttr.onValidation, isValidating); }\n\n focus() { this.setAttr(fldAttr.focus, true); }\n\n setIntrinsicErrorMessage(message: string) { this.setAttr(fldAttr.intrinsicErrorMessage, message); }\n set intrinsicErrorMessage(message: string) { this.setIntrinsicErrorMessage(message); }\n\n get fieldValue() { return this.getValue(); }\n\n getRequired() { return this.required; }\n setRequired(required: boolean) { this.required = required; }\n\n get required(): boolean { return this.fieldRequired; }\n set required(required: boolean) { this.setAttr(fldAttr.required, required ?? false); }\n get minLength() { return this._minLength; }\n set minLength(requiredMinLength: number) {\n this.setAttr(fldAttr.minLength, requiredMinLength);\n }\n\n get maxLength() { return (this._maxLength > 0) ? this._maxLength.toString() : ''; }\n set maxLength(requiredMaxLength: any) {\n if (typeof requiredMaxLength === 'string') {\n this.setAttr(fldAttr.maxLength, parseInt(requiredMaxLength, 10));\n } else if (typeof requiredMaxLength === 'number') {\n this.setAttr(fldAttr.maxLength, requiredMaxLength);\n }\n }\n get value() { return this.getValue(); }\n set value(newValue) { this.setValue(newValue); }\n\n notifyEditionPartial() {\n this.resetError();\n this._editionPartial.next({ code: this.fieldCode, intrinsicValidation: true });\n }\n\n notifyEditionFinish() {\n const fieldValue = this.getValue();\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 setAttr(name: string, value: any) {\n this[name] = value;\n if (this._formConfig.monitoredFieldAttributes.includes(name)) {\n this._attributeChange.next({ name, value });\n }\n }\n\n notifyEditionDetailRequest(detail: any) {\n const detailEvent: DetailEvent = {\n code: this.fieldCode,\n detail,\n };\n this._detailRequest.next(detailEvent);\n }\n\n setVisibleLabel(visibleLabel: boolean) { this.setAttr(fldAttr.visibleLabel, visibleLabel); }\n showLabel() { this.setVisibleLabel(true); }\n hideLabel() { this.setVisibleLabel(false); }\n\n setChanged(hasChanged: boolean) { this.setAttr(fldAttr.hasChanged, hasChanged); }\n changed() { this.setChanged(true); }\n\n setLabel(label) { this.setAttr(fldAttr.title, label); }\n clean() { this.setValue(this.defaultValue || ''); this.resetError(); }\n get backend() { return this.validateOnServer; }\n\n setEditable(editable: boolean = true) { (editable) ? this.enable() : this.disable(); }\n\n hasError() { return this.errorCode !== NO_ERROR; }\n resetError() { (this.errorCode !== NO_ERROR) && this.setError(NO_ERROR, null); }\n setError(code, message, type = DEFAULT_ERROR_TYPE) {\n this.setAttr(fldAttr.errorCode, code ?? NO_ERROR);\n this.setAttr(fldAttr.errorType, (this.errorCode === NO_ERROR) ? '' : type);\n this.setAttr(fldAttr.errorMessage, message ?? '');\n }\n\n getError() { return { type: this.errorType, code: this.errorCode, message: this.errorMessage }; }\n get error() { return this.getError(); }\n set error(errorObj) { this.setError(errorObj.code, errorObj.message, errorObj.type ?? DEFAULT_ERROR_TYPE) }\n\n getErrorCode() { return this.getError().code; }\n setErrorCode(code) { this.setError(code, this.errorMessage); }\n getErrorMessage() { return this.getError().message; }\n setErrorMessage(msg) { this.setError(this.errorCode, msg); }\n\n get empty(): boolean { return this.isEmpty(); }\n\n isEmpty(): boolean {\n const fieldCurrentValue = this.getValue();\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 return fieldCurrentValue === '';\n }\n\n getValue(): any {\n if (this.fieldType === this._formConfig.fieldTypes.boolean\n || this.fieldType === this._formConfig.fieldTypes.check) {\n return yn(this._value);\n }\n return this._value;\n }\n\n getOptionText() {\n return this.fieldOptions?.find(item => item.fieldOptionId === this._value)?.fieldOptionValue ?? null;\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 (attrName === this._formConfig.apiFieldAttrs.visible) && this.setVisibility(attrValue);\n (attrName === this._formConfig.apiFieldAttrs.labelVisible) && this.setVisibleLabel(fld.visibleLabel);\n (attrName === this._formConfig.apiFieldAttrs.required) && this.setAttr(fldAttr.required, fld.required ?? false);\n (attrName === this._formConfig.apiFieldAttrs.errorCode) && this.setAttr(fldAttr.errorCode, fld.errorCode);\n (attrName === this._formConfig.apiFieldAttrs.errorMessage) && this.setAttr(fldAttr.errorMessage, fld.errorMessage);\n (attrName === this._formConfig.apiFieldAttrs.tooltip) && this.setAttr(fldAttr.tooltipText, fld.tooltip);\n (attrName === this._formConfig.apiFieldAttrs.info) && this.setAttr(fldAttr.info, fld.info);\n (attrName === this._formConfig.apiFieldAttrs.editable) && this.setEditable(fld.editable);\n (attrName === this._formConfig.apiFieldAttrs.title) && this.setLabel(fld.fieldTitle.toString());\n (attrName === this._formConfig.apiFieldAttrs.value) && (this.setValue(fld.fieldValue) && this.setChanged(false));\n (attrName === this._formConfig.apiFieldAttrs.options) && this.setFieldOptions(fld.fieldOptions);\n (attrName === this._formConfig.apiFieldAttrs.captureType) && this.setAttr(fldAttr.captureType, fld.captureType || 'INPUT');\n (attrName === this._formConfig.apiFieldAttrs.type) && this.setAttr(fldAttr.type, fld.fieldTypeCode);\n (attrName === this._formConfig.apiFieldAttrs.maxLength) && this.setAttr(fldAttr.maxLength, fld.maxLength);\n }\n }\n\n setMinValue(inputMinValue) {\n let minValue = inputMinValue;\n if (this.fieldType === this._formConfig.fieldTypes.date) {\n minValue = new Date(minValue);\n }\n this.setAttr(fldAttr.minValue, minValue);\n }\n\n setMaxValue(inputMaxValue) {\n let maxValue = inputMaxValue;\n if (this.fieldType === this._formConfig.fieldTypes.date) {\n maxValue = new Date(maxValue);\n }\n this.setAttr(fldAttr.maxValue, maxValue);\n }\n\n getFieldOptions(): FieldOption[] {\n return this.fieldOptions.map(option => {\n const optionCopy: FieldOption = { ...option };\n return optionCopy;\n });\n }\n\n\n setFieldOptions(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 => {\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(fldAttr.options, 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(fldAttr.value, fieldValue);\n } else {\n const valInOptions = this.fieldOptions\n .find(item => item.fieldOptionId === this._value);\n if (!valInOptions) {\n this.setValue('');\n }\n }\n }\n if (this.fieldRequired && this.fieldOptions.length === 1) {\n this.setValue(this.fieldOptions[0].fieldOptionId);\n }\n }\n\n 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.setChanged(true);\n if (widgetUpdate) {\n this.setAttr(fldAttr.value, newFinalValue);\n } else {\n this._value = newFinalValue;\n }\n }\n return true;\n }\n}\n","export 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 {\n _formConfig: any;\n fieldCode: string;\n fieldTitle: string;\n fieldType: string;\n fieldAlignment: string;\n fieldFormat: string;\n visible: boolean;\n sortable: boolean;\n sortDirections: string[];\n customAttributes: any;\n // Filtros\n filterVisible: boolean = false;\n filterDef: FilterDef;\n filterSetup: FilterSetup;\n\n constructor(recTableColReceived, formConfig) {\n this._formConfig = 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.visible = recTableColReceived?.visible ?? true;\n this.sortable = recTableColReceived?.sortable ?? false;\n this.sortDirections = (this.sortable) ? ['ascend', 'descend'] : [null];\n this.fieldFormat = recTableColReceived.format || '';\n this.customAttributes = recTableColReceived?.customAttributes ?? {};\n }\n }\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],\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","export class TableAction {\n visibleStates: string[];\n enabledStates: string[];\n newState: string;\n\n actionCode: string;\n actionTitle: string;\n iconName: string;\n actionType: string;\n actionClass: string;\n stateField: string;\n\n backend: boolean;\n restrictedOnField: string;\n restrictedOnValue: string;\n restrictedOnOperator: string;\n customAttributes: any;\n\n constructor(actionDefinition) {\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\n this.visibleStates = actionDefinition.visibleStates || [];\n this.enabledStates = actionDefinition.enabledStates || [];\n this.backend = actionDefinition?.serverAction ?? false;\n this.restrictedOnField = actionDefinition.fieldRestrictedCode || '';\n this.restrictedOnValue = actionDefinition.valueRestricted ?? '';\n this.restrictedOnOperator = actionDefinition.operatorRestricted || '';\n this.customAttributes = actionDefinition?.customAttributes ?? {};\n }\n\n supportMode(state) { return this.viewOnState(state); }\n\n viewOnState(state) { return this.visibleStates.includes(state); }\n enabledOnState(state) { return this.enabledStates.includes(state); }\n}\n","import { RecordTableColumn } from './column';\nimport { operators } from '../form.constants';\n\nexport class TableRecordData {\n recordId: string;\n selected: boolean;\n recordData: any = {};\n\n constructor(recordReceived, recordDefinition: RecordTableColumn[], selectionFieldName = null) {\n const { tableRecordId, recordData } = recordReceived;\n this.recordId = tableRecordId;\n this.selected = false;\n this.recordData = {};\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 fieldCode in this.recordData) {\n const columnDef = columnObj?.[fieldCode];\n if (columnDef && columnDef?.visible && this.recordData.hasOwnProperty(fieldCode)) {\n for (const word of words) {\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 return true;\n }\n }\n }\n }\n return false;\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\nexport interface TableActionEvent {\n actionCode: string;\n recordId: any;\n recordData: any;\n}\n\nexport interface TableEvent {\n tableCode: string;\n actionCode: string;\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 readonly _attributeChange = new Subject<any>();\n private _tableColumnObj = {};\n private _appendPages: boolean;\n private _actions: TableAction[];\n private _actionsObj = {};\n\n // Mecanismos de filtrado nueva versión\n private globalFilterStrings: string[] = [];\n private selectedRecords: any;\n private globalSearch: boolean;\n private restrictedId: any;\n private layout: string;\n\n tableRecords: TableRecordData[];\n tableRecordObj = {};\n visibleRecords: TableRecordData[];\n columns: RecordTableColumn[];\n selectable: boolean;\n selectionBackend: boolean;\n selectionField: string;\n allSelected = false;\n\n tableCode: string;\n tableTitle: string;\n currentPage: number;\n totalPages: number;\n requestedPage: number;\n recordsPerPage: number;\n totalRecordsNumber: number;\n recordsNumber: number;\n sorting: any;\n\n waiting: boolean;\n clientPaging: boolean;\n sortable: boolean;\n\n constructor(tableReceived, formConfig) {\n super(tableReceived, formConfig);\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('allSelected', false);\n this.setAttr('tableCode', tableReceived.tableCode);\n this.setAttr('clientPaging', tableReceived?.clientPaging ?? true);\n this.setAttr('globalSearch', tableReceived?.simpleFilter ?? false);\n this.setAttr('globalFilterString', '');\n this.setAttr('sorting', { columnName: '', direction: '' });\n this.setAttr('recordsPerPage', formConfig.defaultRecordsPerPage);\n this.setAttr('layout', '');\n\n if (tableReceived.fields) {\n const columns = [];\n for (const columnReceived of tableReceived.fields) {\n const columnDefinition = new RecordTableColumn(columnReceived, this._formConfig);\n columns.push(columnDefinition);\n this._tableColumnObj[columnDefinition.fieldCode] = columnDefinition;\n }\n this.setAttr('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);\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 get attributeChange() { return this._attributeChange; }\n\n getLayout() { return this.layout; }\n setLayout(layout) { this.setAttr('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) { return this._tableColumnObj[fieldCode]; }\n putOnWait() { this.waiting = true; }\n freeWaiting() { this.waiting = false; }\n\n setAttr(name: string, value: any) {\n this[name] = value;\n if (this._formConfig.monitoredTableAttributes.includes(name)) {\n this._attributeChange.next({ name, value });\n }\n }\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 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;\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('allSelected', true);\n this.tableRecords.forEach(record => record.select());\n this.setAttr('selectedRecords', this.getSelectedRecords());\n return true;\n\n }\n\n unSelectAll() {\n this.setAttr('allSelected', false);\n this.tableRecords.forEach(record => record.unselect());\n this.setAttr('selectedRecords', this.getSelectedRecords());\n return true;\n }\n\n setTableRecords(tableRecords, append) {\n if (!append) { this.clean(); }\n const newRecordsObj = { ...this.tableRecordObj };\n const newRecords = [...this.tableRecords];\n for (const tableRecord of tableRecords) {\n const recordReceived: TableRecordData = new TableRecordData(tableRecord, this.columns, this.selectionField);\n const recordIdKey = recordReceived.recordIdKey;\n newRecords.push(recordReceived);\n newRecordsObj[recordIdKey] = recordReceived;\n }\n this.tableRecords = newRecords;\n this.setAttr('selectedRecords', this.getSelectedRecords());\n this.tableRecordObj = newRecordsObj;\n this.updateVisibleRecords();\n }\n\n appendRecords(records) { this.setTableRecords(records, true); }\n replaceRecords(records) { this.setTableRecords(records, false); }\n\n changePage(requestedPage) {\n if (this.clientPaging) {\n this.setAttr('currentPage', requestedPage);\n this.updateVisibleRecords();\n } else {\n this.notifyGetDataAction(requestedPage);\n }\n }\n\n updateVisibleRecords() {\n // updateView const changeViewAttributes = ['currentPage', 'recordsPerPage', 'sorting'];\n let visibleRecords: any[];\n if (this.clientPaging) {\n let filteredRecords = this.getFilteredRecords();\n this.setAttr('totalRecordsNumber', filteredRecords.length);\n visibleRecords = filteredRecords.slice((this.currentPage - 1) * this.recordsPerPage,\n (this.currentPage - 1) * this.recordsPerPage + this.recordsPerPage);\n } else {\n visibleRecords = this.tableRecords;\n }\n this.setAttr('visibleRecords', visibleRecords);\n }\n\n updateFromServer(tableReceived) {\n this.requestedPage = 1;\n this.clean();\n this.visible = tableReceived?.visible || true;\n this.totalPages = tableReceived.totalPages || 1;\n this.recordsNumber = tableReceived.recordsNumber;\n this.setAttr('currentPage', +tableReceived?.currentPage ?? 1);\n this.setAttr('recordsPerPage', +tableReceived.recordsPerPage);\n this.setAttr('totalRecordsNumber', (this.clientPaging) ? tableReceived.tableRecords.length : +tableReceived.totalRecordsNumber);\n this.setAttr('sorting', {\n columnName: tableReceived.sortingColumn || '',\n direction: tableReceived.sortingDirection || ''\n });\n this.waiting = false;\n if (this._appendPages) {\n this.replaceRecords(tableReceived.tableRecords);\n } else {\n this.appendRecords(tableReceived.tableRecords);\n }\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('globalFilterString', text);\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) {\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('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","import { FormAction } from './action';\nimport { elementTypes } from './form.constants';\n\nexport class RecordFormSubSection {\n visible: boolean;\n _customRender: string;\n subsectionId: string;\n subsectionCode: string;\n subsectionTitle: string;\n visibleStates: string[];\n\n subSectionElements: any[];\n subSectionFields: any[];\n subSectionTables: any[];\n subSectionActions: any[];\n elementsArray: any;\n\n constructor(subsectionReceived, formObject) {\n if (!subsectionReceived) { return; }\n this._customRender = null;\n this.visible = true;\n this.subSectionElements = [];\n this.subSectionFields = [];\n this.subSectionTables = [];\n this.subSectionActions = [];\n this.elementsArray = {};\n this.subsectionId = (subsectionReceived.subsectionId) ? subsectionReceived.subsectionId.toString() : '';\n this.subsectionCode = (subsectionReceived.subsectionCode) ? subsectionReceived.subsectionCode : '';\n this.subsectionTitle = (subsectionReceived.subsectionTitle) ? subsectionReceived.subsectionTitle : '';\n this.visibleStates = subsectionReceived.visibleStates || [];\n if (subsectionReceived.elements) {\n for (const receivedElement of subsectionReceived.elements) {\n let elementObject = null;\n let arrayToAdd = null;\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 show() { this.visible = true; }\n hide() { this.visible = false; }\n\n get customRender() { return this._customRender; }\n set customRender(customRenderName) { this._customRender = customRenderName; }\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.fieldCode);\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 viewOnState(state) {\n return this.visibleStates.includes(state);\n }\n\n supportMode(state) { return this.viewOnState(state); }\n}\n","import { Subject } from 'rxjs';\nimport { FormAction } from './action';\nimport { RecordFormSubSection } from './subsection';\n\nexport class RecordFormSection {\n private readonly _activation = new Subject<string>();\n private readonly _inactivation = new Subject<string>();\n visible: boolean;\n visibleStates: string[];\n\n active = false;\n sectionId: string;\n sectionCode: string;\n sectionTitle: string;\n customAttributes: any = {};\n\n subSections: RecordFormSubSection[];\n subSectionsObj: any;\n\n constructor(sectionReceived, formObject) {\n if (!sectionReceived) { return; }\n this.visible = true;\n this.sectionId = (sectionReceived.sectionId) ? sectionReceived.sectionId.toString() : '';\n this.sectionCode = (sectionReceived.sectionCode) ? sectionReceived.sectionCode : '';\n this.sectionTitle = (sectionReceived.sectionTitle) ? sectionReceived.sectionTitle : '';\n this.visibleStates = sectionReceived.visibleStates || [];\n this.subSections = [];\n this.subSectionsObj = {};\n if (sectionReceived.subsections) {\n const subsections = sectionReceived.subsections.map(objDef => {\n let visibleStates = objDef.visibleStates;\n if (!visibleStates) {\n visibleStates = (objDef.subsectionModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0);\n }\n if (!visibleStates || visibleStates.length === 0) {\n visibleStates = this.visibleStates;\n }\n if (objDef.elements && Array.isArray(objDef.elements)) {\n objDef.elements = objDef.elements.map(elm => ({ code: elm.elementCode, type: elm.elementTypeName }));\n }\n return { ...objDef, visibleStates };\n });\n for (const subsectionReceived of subsections) {\n const subSectionToAdd = new RecordFormSubSection(subsectionReceived, formObject);\n const subsectionCode = subSectionToAdd.subsectionCode;\n if (subsectionCode) {\n this.subSections.push(subSectionToAdd);\n this.subSectionsObj[subsectionCode] = subSectionToAdd;\n }\n }\n }\n if (sectionReceived?.customAttributes) {\n Object.keys(sectionReceived?.customAttributes)\n ?.forEach(attr => this.customAttributes[attr] = sectionReceived?.customAttributes[attr])\n }\n }\n\n getCustomAttribute(name) { return this.customAttributes?.[name] ?? null; }\n setCustomAttribute(name, value) { return name && (this.customAttributes[name] = value); }\n matchAttribute(name, value) { return this.customAttributes?.[name] === value; }\n\n get code() { return this.sectionCode; }\n get activation() { return this._activation; }\n get inactivation() { return this._inactivation; }\n\n activate() {\n if (!this.active) {\n this.active = true;\n this._activation.next(this.sectionCode);\n }\n }\n\n inactivate() {\n if (this.active) {\n this.active = false;\n this._inactivation.next(this.sectionCode);\n }\n }\n\n show() { this.visible = true; }\n hide() { this.visible = false; }\n get title() { return this.sectionTitle; }\n set title(title) { this.sectionTitle = title; }\n\n getVisibleSubsections(state) {\n return this.subSections.filter(subSection => {\n return subSection.visible && subSection.viewOnState(state);\n });\n }\n\n getSubsection(subSectionCode) {\n return (this.subSectionsObj && this.subSectionsObj[subSectionCode])\n ? this.subSectionsObj[subSectionCode] : null;\n }\n\n getFields() {\n let fieldsArray = [];\n if (this.subSections && this.subSections.length > 0) {\n for (const subSection of this.subSections) {\n fieldsArray = fieldsArray.concat(subSection.getFields());\n }\n }\n return fieldsArray;\n }\n\n getActions(): FormAction[] {\n let actionArray = [];\n if (this.subSections && this.subSections.length > 0) {\n for (const subSection of this.subSections) {\n actionArray = actionArray.concat(subSection.getActions());\n }\n }\n return actionArray;\n }\n\n getActionNames(): string[] {\n let actionArray = [];\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 = [];\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 supportState(state) { return this.viewOnState(state); }\n viewOnState(state) { return this.visibleStates.includes(state); }\n supportMode(state) { return this.viewOnState(state); }\n}\n","import { 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';\ninterface Transition {\n name: string;\n source: string;\n destination: string;\n}\n\ninterface StateFlow {\n defaultState: string;\n states: 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 state: string;\n _name: string = '';\n _formConfig: any;\n private _title: string = '';\n private _stateFlow: StateFlow;\n private _fieldArray: FieldDescriptor[];\n private _fields = {};\n private _actionArray: FormAction[];\n private _actions = {};\n private _tableArray: RecordTable[];\n private _tables = {};\n private _sectionArray: RecordFormSection[];\n private _sections = {};\n private _immutableData = {};\n private _extraInfo = {};\n private _exclusiveSectionsByAttr = {};\n\n constructor(definitionReceived, formConfig) {\n this._formConfig = formConfig;\n this.state = '';\n this._actionArray = [];\n this._fieldArray = [];\n this._tableArray = [];\n this._sectionArray = [];\n this._stateFlow = {\n defaultState: '',\n states: [],\n transitions: [],\n };\n if (!definitionReceived) { return; }\n this._name = (definitionReceived.form && definitionReceived.form.formCode)\n ? definitionReceived.form.formCode : this._name;\n this._title = (definitionReceived.form && definitionReceived.form.formTitle)\n ? definitionReceived.form.formTitle : '';\n this.setStateFlow(definitionReceived?.states, definitionReceived?.transitions,\n definitionReceived?.defaultState);\n this.immutableData = definitionReceived.immutableData;\n this.extraInfo = definitionReceived.extraInfo;\n\n if (definitionReceived.actions) {\n const formActions = definitionReceived.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 = [...visibleStates];\n }\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 let enabledStates = objDef.enabledStates || objDef.editableStates;\n if (!visibleStates) {\n visibleStates = (objDef.fieldModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0) || [];\n enabledStates = [...visibleStates];\n }\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const fieldReceived of formFields) {\n const fieldToAdd = new FieldDescriptor(fieldReceived, this._formConfig);\n const fieldCode = fieldToAdd.fieldCode;\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 let enabledStates = objDef.enabledStates || objDef.editableStates;\n if (!visibleStates) {\n visibleStates = (objDef.tableModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0) || [];\n enabledStates = [...visibleStates];\n }\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 if (!visibleStates) {\n visibleStates = (objDef.sectionModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0) || [];\n }\n return { ...objDef, visibleStates };\n });\n for (const sectionReceived of formSections) {\n const sectionToAdd = new RecordFormSection(sectionReceived, this);\n const sectionCode = sectionToAdd.sectionCode;\n if (sectionCode) {\n this._sectionArray.push(sectionToAdd);\n this._sections[sectionCode] = sectionToAdd;\n }\n }\n }\n }\n\n getTitle(): string { return this._title; }\n setTitle(title: string): void { this._title = title; }\n get name(): string { return this._name; }\n set name(name) { this._name = name; }\n\n // Estados\n get defaultState(): string { return this._stateFlow.defaultState; }\n supportState(state: string): boolean { return this._stateFlow.states?.includes(state); }\n supportMode(state: string): boolean { return this.supportState(state); }\n get states(): any[] { return this._stateFlow.states; }\n\n getCurrentState(): string { return this.state; }\n\n changeState(newState: string): boolean {\n if (!newState || !this.supportState(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 return (this.state === newState);\n }\n\n setStateFlow(states?, transitions?, defaultState?: string): void {\n this._stateFlow.states = states;\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 // Fields\n get fields(): any { return this._fields; }\n get fieldNames(): string[] { return this.getFieldNames(); }\n getFields(): FieldDescriptor[] { return this._fieldArray; }\n getFieldNames(): string[] { return this._fieldArray.map(field => field.fieldCode); }\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)?.getValue(); }\n getFieldOptionText(code: string): any { return this.getField(code)?.getOptionText(); }\n getFieldOptions(code: string): FieldOption[] { return this.getField(code)?.getFieldOptions() ?? 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 this.getField(code)?.setRequired(required);\n } catch (e) {\n console.log(`Error modificando campo ${code}: ${e}`);\n }\n }\n }\n\n setFieldErrorMessage(code: string, message: string): any { this.getField(code)?.setErrorMessage(message); }\n\n setFieldOptions(code: string, optionsArray: any[], idAttribute: string, nameAttribute: string): any {\n const field = this.getField(code);\n if (field && optionsArray?.length > 0) {\n const fieldOptions = optionsArray.map(item => ({\n fieldOptionId: item[idAttribute],\n fieldOptionValue: item[nameAttribute]\n }));\n field.setFieldOptions(fieldOptions);\n }\n }\n\n getFieldSet(filter, inputCodes: string[] | string | null, secCode?: string | null, subCode?: string | null): string[] {\n let codes: any[] = [];\n if (inputCodes) {\n if (typeof inputCodes === 'string') {\n codes = [inputCodes];\n } else if (Array.isArray(inputCodes) && inputCodes.length > 0) {\n codes = inputCodes ?? [];\n }\n } else if (secCode && !subCode) {\n codes = this.getSection(secCode)?.getFieldNames() ?? [];\n } else if (secCode && subCode) {\n codes = this.getSubSection(secCode, subCode)?.getFieldNames() ?? [];\n } else {\n codes = this.getFieldNames() ?? [];\n }\n return (filter) ? codes.filter(fld => filter(this.getField(fld))) : codes;\n }\n\n applyOnFields(processFunc, inputCodes?: string[] | string | null, secCode?: string, subCode?: string): number {\n if (!processFunc) { return 0; }\n const codes = this.getFieldSet(null, inputCodes ?? null, secCode, subCode);\n let processedFields = 0;\n for (const code of codes) {\n const field = this.getField(code);\n if (field) {\n try {\n processFunc(field);\n processedFields += 1;\n } catch (e) {\n console.log(`Error procesando funcion en campo ${field}: ${e}`);\n }\n }\n }\n return processedFields;\n }\n\n 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): string[] {\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): string[] {\n return this.getFieldSet(fld => fld.errorCode !== NO_ERROR, 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 get actions() { return this._actions; }\n\n getActionsByAttribute(name: string, value): FormAction[] { return this._actionArray.filter(actionItem => actionItem.matchAttribute(name, value)); }\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\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 get tables(): any { return this.tables; }\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\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\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 get sections(): any { return this._sections; }\n getSections(): RecordFormSection[] { return this._sectionArray; }\n getSectionsByAttribute(name, value): RecordFormSection[] { return this._sectionArray.filter(item => item.matchAttribute(name, value)); }\n get sectionTitles(): string[] { return this._sectionArray.map(formSection => formSection.sectionTitle); }\n get visibleSections(): RecordFormSection[] { return this._sectionArray.filter(sec => sec.visible); }\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 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 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 = {\n fields: [],\n tables: [],\n };\n formData.fields = this.getFields().filter(fld => !fld.outputOnly)\n .map(fld => {\n const fieldPayload: FieldPayload = {\n fieldCode: fld.fieldCode,\n fieldValue: fld.getValue(),\n editable: !fld.disabled,\n visible: fld.visible,\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.visible,\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","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 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 = this.unstack(targetToken);\n formInfo && formInfo.name && this.goToForm(formInfo.name, formInfo.token, formInfo.subject);\n }\n}\n","import { ReplaySubject } from 'rxjs';\n\nexport class LibEventManagerService {\n eventSubjects: any = {};\n\n constructor(eventNames) {\n eventNames.forEach((name) => { this.addEventName(name); });\n }\n\n addEventName(name) {\n if (!this.eventSubjects[name]) {\n const newEventSubject: ReplaySubject<any> = new ReplaySubject(1);\n this.eventSubjects[name] = newEventSubject;\n }\n }\n\n getEventNames() { return Object.keys(this.eventSubjects); }\n getSubject(eventClassName) { return eventClassName ? this.eventSubjects[eventClassName] : null; }\n subscribe(eventClassName, callback) { this.getSubject(eventClassName).subscribe(callback); }\n next(eventClassName, data) { this.getSubject(eventClassName).next(data); }\n}\n","export class LibFileManagementService {\n openFile(fileBase64Data, fileName, fileType) { }\n saveFileFromURL(fileUrl, fullFileName = null) { }\n saveFile(fileBase64Data, fileName, fileType) { }\n}\n\n","import { Component } from '@angular/core';\nimport { FormStructureAndData } from '../../classes/forms/form';\nimport { LibFormManagerService } from '../../services/form-manager.service';\nimport { LibEventManagerService } from '../../services/event-manager.service';\nimport { LibFileManagementService } from '../../services/file-manager.service';\nimport { formActions, NO_ERROR, HEADER } from '../../classes/forms/form.constants';\nimport { FormAction } from '../../classes/forms/action';\nimport { FieldDescriptor, FieldOption } from '../../classes/forms/field';\nimport { RecordTable } from '../../classes/forms/table/table';\nimport { RecordFormSection } from '../../classes/forms/section';\nimport { RecordFormSubSection } from '../../classes/forms/subsection';\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 {\n private _formStructure: FormStructureAndData | null = null;\n private _controlToken: string | null = null;\n private _originToken: string | null = null;\n private _formRoute: string | null = null;\n private _definitionObtained: boolean = false;\n // Eventos de acciones y campos\n private _formSectionsActivate: any = {};\n private _formSectionsInactivate: any = {};\n private _formActionsStart: any = {};\n private _formActionsFinish: any = {};\n private _fieldInputValidation: any = {};\n private _fieldValidationsStart: any = {};\n private _fieldValidationsFinish: any = {};\n // Callback de acciones de tablas\n private _tableSelectionsStart: any = {};\n private _tableSelectionsFinish: any = {};\n private _tableActionsStart: any = {};\n private _tableActionsFinish: any = {};\n private _tableGetDataStart: any = {};\n private _tableGetDataFinish: any = {};\n\n private _actionServerError: any[] = [];\n private _fieldServerError: any[] = [];\n private _tableServerError: any[] = [];\n\n protected inputDataFields: any = {};\n protected extraData: any = {};\n protected _eventEmiter: LibEventManagerService;\n protected enabledSections: RecordFormSection[] = [];\n\n formConfig: any;\n name: string | null = null;\n formSubject: string | null = null;\n _errorType: string = '';\n errorCode: string = '';\n errorFullCode: string = '';\n errorName: string = '';\n errorMessage: string = '';\n errorDetail: string = '';\n visible: boolean = false;\n\n fields: any;\n actions: any;\n sections: any;\n busy: boolean = false;\n\n getTitle() { return this._formStructure?.getTitle(); }\n setTitle(title: string) { return this._formStructure?.setTitle(title); }\n cleanData() { return this._formStructure?.cleanData(); }\n getCurrentState() { return this._formStructure?.getCurrentState(); }\n supportState(state: string | null) { return this._formStructure?.supportState(state ?? '') ?? false; }\n changeState(state): boolean { return this._formStructure?.changeState(state) ?? false; }\n getStates() { return this._formStructure?.states; }\n getImmutableElement(name: string) { return this._formStructure?.getImmutableElement(name); }\n getExtraInfo(name: string) { return this._formStructure?.getExtraInfo(name); }\n getFields() { return this._formStructure?.getFields() ?? null; }\n getFieldNames() { return this._formStructure?.getFieldNames() ?? null; }\n getField(code: string) { return this._formStructure?.getField(code) ?? null; }\n enableField(code: string) { return this._formStructure?.enableField(code); }\n disableField(code: string) { return this._formStructure?.disableField(code); }\n getFieldValue(code: string): any { return this._formStructure?.getFieldValue(code) ?? null; }\n getFieldOptionText(code: string): any { return this._formStructure?.getFieldOptionText(code); }\n getFieldsValues(codes: string[]) { return this._formStructure?.getFieldsValues(codes) ?? null; }\n getFieldOptions(code: string): FieldOption[] | null { return this._formStructure?.getFieldOptions(code) ?? null; }\n setFieldValue(code: string, value: any) { return this._formStructure?.setFieldValue(code, value); }\n setFieldRequired(inputCodes: string[] | string | null, required: boolean) { return this._formStructure?.setFieldRequired(inputCodes, required); }\n setFieldErrorMessage(code: string, errorMessage: string) { return this._formStructure?.setFieldErrorMessage(code, errorMessage); }\n setFieldError(code: string, errorCode: string, message: string, type?: string) { return this._formStructure?.setFieldError(code, errorCode, message, type); }\n setFieldIntrinsicErrorMessage(code: string, message: string) {\n return this._formStructure?.setFieldIntrinsicErrorMessage(code, message);\n }\n setFieldOptions(code, optionsArray, idAttribute, nameAttribute) {\n return this._formStructure?.setFieldOptions(code, optionsArray, idAttribute, nameAttribute);\n }\n getFieldSet(filterFunc?, codes?: string[] | string | null, secCode?: string | null, subCode?: string | null) {\n return this._formStructure?.getFieldSet(filterFunc, codes ?? null, secCode ?? null, subCode ?? null);\n }\n applyOnFields(processFunc, codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.applyOnFields(processFunc, codes, secCode, subCode);\n }\n applyProcessToAllFields(processFunc) {\n return this._formStructure?.applyOnFields(processFunc);\n }\n cleanFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.cleanFields(codes, secCode, subCode);\n }\n getRequiredFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.getRequiredFields(codes, secCode, subCode);\n }\n getRequiredEmptyFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.getRequiredEmptyFields(codes, secCode, subCode) ?? null;\n }\n getChangedFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.getChangedFields(codes, secCode, subCode);\n }\n getFieldsWithValidationIssues(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.getFieldsWithValidationIssues(codes, secCode, subCode);\n }\n tagFieldsWithError(errorMessage: string, codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.tagFieldsWithError(errorMessage, codes, secCode, subCode);\n }\n cleanErrorFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.cleanErrorFields(codes, secCode, subCode);\n }\n showLabelFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.showLabelFields(codes, secCode, subCode);\n }\n hideLabelFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.hideLabelFields(codes, secCode, subCode);\n }\n enableFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.enableFields(codes, secCode, subCode);\n }\n disableFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.disableFields(codes, secCode, subCode);\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 showFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.showFields(codes, secCode, subCode);\n }\n hideFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.hideFields(codes, secCode, subCode);\n }\n getActionsByAttribute(name: string, value) {\n return this._formStructure?.getActionsByAttribute(name, value);\n }\n getHeaderActions() {\n return this._formStructure?.getActionsByAttribute('location', HEADER);\n }\n getAction(actionCode: string): FormAction | null {\n return this._formStructure?.getAction(actionCode) ?? null;\n }\n showActions(actionArray): void {\n return this._formStructure?.showActions(actionArray);\n }\n hideActions(actionArray): void {\n return this._formStructure?.hideActions(actionArray);\n }\n enableActions(actionArray): void {\n return this._formStructure?.enableActions(actionArray);\n }\n disableActions(actionArray): void {\n return this._formStructure?.disableActions(actionArray);\n }\n showAction(code: string): void {\n return this._formStructure?.showActions(code);\n }\n hideAction(code: string): void {\n return this._formStructure?.hideActions(code);\n }\n enableAction(code: string): void {\n return this._formStructure?.enableActions(code);\n }\n disableAction(code: string): void {\n return this._formStructure?.disableActions(code);\n }\n getSections(): RecordFormSection[] | null {\n return this._formStructure?.getSections() ?? null;\n }\n activateSection(code): void {\n return this._formStructure?.activateSection(code);\n }\n getSectionsTitles(): string[] | null {\n return this._formStructure?.getSections().map(sec => sec.title) ?? null;\n }\n getSection(code: string): RecordFormSection | null {\n return this._formStructure?.getSection(code) ?? null;\n }\n showSection(code: string): void {\n return this._formStructure?.showSections(code);\n }\n hideSection(code: string): void {\n return this._formStructure?.hideSections(code);\n }\n showSections(codes: string[] | string): void {\n return this._formStructure?.showSections(codes);\n }\n hideSections(codes: string[] | string): void {\n return this._formStructure?.hideSections(codes);\n }\n getSubSection(code: string, subCode: string): RecordFormSubSection | null {\n return this._formStructure?.getSubSection(code, subCode) ?? null;\n }\n showSubSection(code: string, subCode: string): void {\n return this._formStructure?.showSubSections(code, subCode);\n }\n hideSubSection(code: string, subCode: string): void {\n return this._formStructure?.hideSubSections(code, subCode);\n }\n showSubSections(code: string, subCodes: string[] | string): void {\n return this._formStructure?.showSubSections(code, subCodes);\n }\n hideSubSections(code: string, subCodes: string[] | string): void {\n return this._formStructure?.hideSubSections(code, subCodes);\n }\n getSectionActions(code: string): FormAction[] | null {\n return this._formStructure?.getSectionActions(code) ?? null;\n }\n getSectionActionNames(code: string): string[] | null {\n return this._formStructure?.getSectionActionNames(code) ?? null;\n }\n\n getTables() {\n return this._formStructure?.getTables();\n }\n showTables(codes: string[] | string) {\n return this._formStructure?.showTables(codes);\n }\n hideTables(codes: string[] | string) {\n return this._formStructure?.hideTables(codes);\n }\n cleanTables(codes: string[] | string) {\n return this._formStructure?.cleanTables(codes);\n }\n getTable(code: string) {\n return this._formStructure?.getTable(code) ?? null;\n }\n showTable(code: string) {\n return this._formStructure?.showTables(code);\n }\n hideTable(code: string) {\n return this._formStructure?.hideTables(code);\n }\n cleanTable(code: string) {\n return this._formStructure?.getTable(code)?.clean();\n }\n getTableRecord(code: string, recordId: any) {\n return this._formStructure?.getTableRecord(code, recordId);\n }\n\n constructor(\n protected formManagerService: LibFormManagerService,\n protected _eventManager: LibEventManagerService,\n protected fileMgmtServices: LibFileManagementService) {\n this._eventEmiter = this._eventManager;\n this.cleanStart();\n this.customPreProcessing();\n }\n\n setConfig(formConfig) {\n this.formConfig = formConfig;\n }\n\n cleanStart() {\n this._errorType = '';\n this.errorCode = '';\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n this._formStructure = null;\n this.fields = null;\n this.actions = null;\n this.sections = null;\n this._controlToken = null;\n this.inputDataFields = {};\n this._definitionObtained = false;\n // Se limpian los manejadores de eventos\n this.visible = false;\n this.busy = false;\n this._formSectionsActivate = {};\n this._formSectionsInactivate = {};\n this._formActionsStart = {};\n this._formActionsFinish = {};\n this._fieldInputValidation = {};\n this._fieldValidationsStart = {};\n this._fieldValidationsFinish = {};\n this._tableSelectionsStart = {};\n this._tableSelectionsFinish = {};\n this._tableActionsStart = {};\n this._tableActionsFinish = {};\n this._tableGetDataStart = {};\n this._tableGetDataFinish = {};\n\n this._actionServerError = [];\n this._fieldServerError = [];\n this._tableServerError = [];\n\n this.onActionServerError(() => this.displayActionServerError());\n this.onValidationServerError(() => this.displayValidationServerError());\n this.onTableServerError(() => this.displayTableServerError());\n }\n\n get formVisible(): boolean { return this.visible; }\n get formManager() { return this; }\n get formCode(): string { return this.name ?? ''; }\n set formCode(name: string) { this.name = name; }\n get inServerProcess() { return this.busy; }\n get form(): FormStructureAndData | null { return this._formStructure; }\n\n get state(): string | null { return this._formStructure?.state ?? null; }\n get currentState(): string { return this._formStructure?.state ?? ''; }\n set currentState(state: string) { this?._formStructure?.changeState(state); }\n get immutableData(): any { return this._formStructure?.immutableData }\n get extraInfo(): any { return this._formStructure?.extraInfo }\n get visibleSections(): RecordFormSection[] | null { return this._formStructure?.visibleSections ?? null; }\n\n get formRoute(): string { return this._formRoute ?? ''; }\n set formRoute(route: string) { this._formRoute = route; }\n\n get subject(): string { return this.formSubject ?? ''; }\n\n // Métodos virtuales\n customPreProcessing() { }\n customFormStart() { }\n displayActionServerError() { }\n displayValidationServerError() { }\n displayTableServerError() { }\n showFieldInfo(fieldCode?: string, detail?: any) { }\n showModalDialog(title, body, options, callback?, params?) { }\n openUploadDialog(title, body, options, callback?, params?) { }\n\n /**\n * @deprecated Use supportState\n */\n supportMode(state: string): boolean { return this.supportState(state); }\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.formSubject ?? ''; }\n /**\n * @deprecated Use subject\n */\n getformSubject(): string { return this.formSubject ?? ''; }\n\n\n numSections(): number { return this._formStructure?.sections.length; }\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.formSubject;\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 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.formSubject = 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.formSubject = this.formSubject ?? 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._formStructure?.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 }\n }\n\n subscribeFieldsSubjects(): void {\n const formFields = this._formStructure?.getFields();\n if (Array.isArray(formFields)) {\n formFields.forEach(field => {\n field.editionFinish.subscribe(event => {\n const { code, intrinsicValidation } = event;\n this.startFieldValidation(code, intrinsicValidation);\n });\n field.editionPartial.subscribe(event => {\n const { code, intrinsicValidation } = event;\n this.startFieldInputValidation(code, intrinsicValidation);\n });\n field.detailRequest.subscribe(event => this.showFieldInfo(event.code, event.detail));\n });\n }\n }\n\n subscribeActionSubjects(): void {\n const formActions = this._formStructure?.getActions();\n if (Array.isArray(formActions)) {\n formActions.forEach(action => {\n action.actionActivated.subscribe(code => this.startAction(code));\n });\n }\n }\n\n subscribeTableSubjects(): void {\n const formTables = this._formStructure?.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 });\n }\n }\n\n async formInit(params): Promise<void> {\n let initialState: string | null = this.preocessInputParams(params);\n if (!this.name) { return; }\n if (!this._definitionObtained) {\n this.busy = true;\n const formDefinition = await this.formManagerService.getFormDefinition(this.name);\n this.busy = false;\n this._formStructure = new FormStructureAndData(formDefinition, this.formConfig);\n this.fields = this._formStructure?.fields;\n this.actions = this._formStructure?.actions;\n this.sections = this._formStructure?.sections;\n this._definitionObtained = true;\n } else {\n this.cleanData();\n }\n if (!this.supportState(initialState)) {\n initialState = this._formStructure?.defaultState ?? null;\n }\n this._formStructure?.changeState(initialState || this._formStructure?.defaultState);\n const inputFieldNames = Object.keys(this.inputDataFields);\n for (let index = 0; index < inputFieldNames.length; index++) {\n const fieldCode = inputFieldNames[index];\n const fieldValue = this.inputDataFields[fieldCode];\n this.setFieldValue(fieldCode, fieldValue);\n }\n const recordResponse = await this.requestFormAction(formActions.getData);\n this.checkErrorRecordReceived(recordResponse);\n this.visible = true;\n this.enabledSections = this._formStructure?.visibleSections ?? [];\n this.subscribeSectionActivation();\n this.subscribeFieldsSubjects();\n this.subscribeActionSubjects();\n this.subscribeTableSubjects();\n this.customFormStart();\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.formSubject,\n currentMode: this._formStructure?.state,\n actionCode,\n actionSubject,\n version: PAYLOAD_VERSION,\n formData: this._formStructure?.getPayload(),\n immutableData: this._formStructure?.immutableData,\n };\n this.errorCode = NO_ERROR;\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n this.busy = true;\n const formActionResponse: any = await this.formManagerService.execServerAction(actionDetail);\n this.busy = false;\n if (formActionResponse.hasError()) {\n const error = formActionResponse.error;\n this.errorCode = error.errorCode;\n this.errorFullCode = error.errorFullCode;\n this.errorName = error.errorName;\n this.errorMessage = error.errorMessage;\n this.errorDetail = error.errorDetail;\n }\n const formResponseData = formActionResponse.getData();\n this.updateFormWithServerData(formResponseData);\n return formResponseData;\n }\n\n updateFormWithServerData(formContent: any) {\n const {\n currentMode, formSubject, actions, fields, recordTables,\n returnedFile, immutableData, extraInfo,\n } = formContent;\n currentMode && this.changeState(currentMode);\n if (formSubject) { this.formSubject = 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 if (this._formStructure) {\n this._formStructure.immutableData = immutableData;\n this._formStructure.extraInfo = extraInfo;\n }\n }\n\n /**\n * Manejo de event handlers para errores Server del formulario\n */\n\n cleanActionServerError() {\n this._actionServerError = [];\n }\n\n cleanFieldServerError() {\n this._fieldServerError = [];\n }\n\n cleanTableServerError() {\n this._tableServerError = [];\n }\n\n onActionServerError(callback, properties = null) {\n this._actionServerError.push({ callback, properties });\n }\n\n onValidationServerError(callback, properties = null) {\n this._fieldServerError.push({ callback, properties });\n }\n\n onTableServerError(callback, properties = null) {\n this._tableServerError.push({ callback, properties });\n }\n\n /**\n * Manejo de event handlers para acciones sobre el formulario\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 launchSectionActivation(code: string) {\n const sectionObject = this._formStructure?.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 const sectionObject = this._formStructure?.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 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 let serverError = false;\n let actionResult = null;\n if (action.backend) {\n actionResult = await this.requestFormAction(action.actionCode);\n serverError = !!this.errorOccured();\n }\n await this.finishAction(action, actionResult, serverError);\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 (!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((fieldCode) => {\n if (!this._fieldInputValidation[fieldCode]) {\n this._fieldInputValidation[fieldCode] = [];\n }\n this._fieldInputValidation[fieldCode].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((fieldCode) => {\n if (!this._fieldValidationsStart[fieldCode]) {\n this._fieldValidationsStart[fieldCode] = [];\n }\n this._fieldValidationsStart[fieldCode].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((fieldCode) => {\n if (!this._fieldValidationsFinish[fieldCode]) {\n this._fieldValidationsFinish[fieldCode] = [];\n }\n this._fieldValidationsFinish[fieldCode].push({ callback, properties });\n });\n }\n\n async startFieldInputValidation(fieldCode: string, intrinsicValidation: boolean = true) {\n const fieldToValidate = this.getField(fieldCode);\n if (!fieldToValidate) { return false; }\n const validationCallbacks = this._fieldInputValidation[fieldCode];\n if (validationCallbacks) {\n const clientValidationPromises: any[] = [];\n for (const validationMethod of validationCallbacks) {\n const { callback, properties } = validationMethod;\n const continueValidationPromise = callback(fieldToValidate);\n clientValidationPromises.push(continueValidationPromise);\n }\n await Promise.all(clientValidationPromises);\n }\n return true;\n }\n\n async startFieldValidation(fieldCode: string, intrinsicValidation: boolean = true) {\n const fieldToValidate = this.getField(fieldCode);\n if (!fieldToValidate) { return; }\n const validationCallbacks = this._fieldValidationsStart[fieldCode];\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.fieldCode);\n serverError = !!this.errorOccured();\n }\n await this.finishFieldValidation(fieldObj, validationResult, serverError);\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 fieldObj.validating = false;\n }\n\n async finishFieldValidation(fieldObject: any, validationResult: boolean, serverError = false) {\n const validationCallbacks = this._fieldValidationsFinish[fieldObject.fieldCode];\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(fieldCode: string) {\n return this.startServerFieldValidation(fieldCode);\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 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 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 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 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 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 fieldCode of requiredEmptyFields) {\n const requiredEmptyField = this.getField(fieldCode);\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 fieldCode of validationIssueFields) {\n const validationIssueField = this.getField(fieldCode);\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 fieldCode = mappingTable?.[columnName] ?? columnName;\n this.setFieldValue(fieldCode, columnValue);\n }\n return true;\n }\n return false;\n }\n\n /**\n * Métodos Legacy de compatibilidad hacia atrás\n */\n\n addSectionActivation(codes: string[] | string | null, callback, properties = null) {\n return this.onSectionActivation(codes, callback, properties);\n }\n\n addSectionInactivation(codes: string[] | string | null, callback, properties = null) {\n return this.onSectionInactivation(codes, callback, properties);\n }\n\n addActionMethodStart(codes: string[] | string | null, callback, properties = null) {\n return this.onActionStart(codes, callback, properties);\n }\n\n addActionMethodFinish(codes: string[] | string | null, callback, properties = null) {\n return this.onActionFinish(codes, callback, properties);\n }\n\n addFieldInputValidation(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldInput(codes, callback, properties);\n }\n\n addFieldValidationStart(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldValidationStart(codes, callback, properties);\n }\n\n addFieldValidationFinish(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldValidationFinish(codes, callback, properties);\n }\n\n addTableActionStart(code: string, actionCode: string, callback, properties = null) {\n return this.onTableActionStart(code, actionCode, callback, properties);\n }\n\n addTableActionFinish(code: string, actionCode: string, callback, properties = null) {\n return this.onTableActionFinish(code, actionCode, callback, properties);\n }\n\n addTableSelectionStart(code: string, callback, properties = null) {\n return this.onTableSelectionStart(code, callback, properties);\n }\n\n addTableSelectionFinish(code: string, callback, properties = null) {\n return this.onTableSelectionFinish(code, callback, properties);\n }\n\n addTableGetDataStart(code: string, callback, properties = null) {\n return this.onTableGetDataStart(code, callback, properties);\n }\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":["INLINE_ACTION","HEADER","i1.LibFormManagerService","i2.LibEventManagerService","i3.LibFileManagementService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tuain-ng-forms-lib.mjs","sources":["../../../projects/tuain-ng-forms-lib/src/lib/components/elements/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/element.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/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, Input, OnInit } from '@angular/core';\nimport { FormAction } from '../../classes/forms/action';\n\n@Component({\n selector: 'lib-action',\n template: `<ng-content></ng-content>`\n})\n\nexport class ActionComponent implements OnInit {\n formConfig: any;\n inProgress: boolean;\n @Input() action: FormAction;\n @Input() busy: any;\n @Input() relatedField: any;\n @Input() state: any;\n\n @Input() style = 'primary';\n @Input() showLabel = true;\n\n ngOnInit() {\n this.formConfig = this.action?._formConfig;\n this.start();\n }\n\n start() { }\n\n activate() {\n if (this.action?.notifyActivation) {\n this.action.notifyActivation();\n }\n }\n\n visibleOnRestriction() {\n if (!this.action?.restrictedOnField) {\n return true;\n }\n if ((this.action?.restrictedOnOperator === '=='\n && this.relatedField === this.action?.restrictedOnValue)\n || (this.action?.restrictedOnOperator === '!='\n && this.relatedField !== this.action?.restrictedOnValue)) {\n return true;\n }\n return false;\n }\n\n get visible() {\n return this.action?.visibleOn(this.state) && this.visibleOnRestriction();\n }\n\n get disabled() {\n return !(this.action?.enabledOn(this.state));\n }\n}","import { Component, OnInit, Input } from '@angular/core';\nimport { FieldDescriptor } from '../../classes/forms/field';\n\nconst VALUE = 'value';\nconst FOCUS = 'focus';\n@Component({\n selector: 'lib-field',\n template: `<ng-content></ng-content>`\n})\nexport class FieldComponent implements OnInit {\n formConfig: any;\n // Atributos obtenidos estáticamente\n code: string;\n value: any;\n fieldInfo: string;\n fieldAlignment: string;\n tooltipText: string;\n\n // Atributos actualizados por subscripción\n maxLength: any;\n minValue: any;\n maxValue: any;\n onValidation: any;\n captureType: any;\n title: any;\n type: any;\n visibleLabel: any;\n required: any;\n options: any;\n\n errorType: any;\n errorCode: any;\n errorMessage: any;\n\n @Input() field: FieldDescriptor;\n @Input() state: any;\n\n ngOnInit() {\n if (this.field) {\n this.formConfig = this.field?._formConfig;\n // Inicialización\n const mapping = Object.entries(this.formConfig.componentFieldAttrMap);\n for (let index = 0; index < mapping.length; index++) {\n const [fieldAttr1, compAttr1] = mapping[index];\n const compAttr = compAttr1.toString();\n const fieldAttr = fieldAttr1.toString();\n const attributeValue = this.field?.[fieldAttr]\n this.dafaultProcessFieldChange(compAttr, attributeValue);\n this.processFieldChange(compAttr, attributeValue);\n }\n // Subscripción a cambios en atributos\n this.field.attributeChange.subscribe(event => {\n const { name: fieldAttr, value } = event;\n const compAttr = this.formConfig.componentFieldAttrMap[fieldAttr];\n this.dafaultProcessFieldChange(compAttr, value);\n this.processFieldChange(compAttr, value);\n });\n }\n this.start();\n }\n\n dafaultProcessFieldChange(attribute: string, value?: any) {\n if (attribute === VALUE) {\n this.updateValue();\n } else if (attribute === FOCUS) {\n this.focus();\n } else {\n this[attribute] = value;\n }\n }\n\n processFieldChange(attribute: string, value?: any) { }\n start() { }\n focus() { }\n\n updateObject() {\n this.field.setValue(this.value);\n }\n\n inputChanged() {\n this.field.setValue(this.value);\n this.onChangeContent();\n }\n\n inputTyped() {\n this.field.setValue(this.value);\n this.onInputChange();\n }\n\n updateValue() {\n this.value = this.field.getValue();\n }\n\n onInputChange() {\n setTimeout(() => this.field.notifyEditionPartial(), 50);\n }\n\n onChangeContent() {\n setTimeout(() => this.field.notifyEditionFinish(), 50);\n }\n\n onShowInfo(detail = null) {\n setTimeout(() => this.field.notifyEditionDetailRequest(detail), 50);\n }\n\n numberInputValidation(event) {\n const k = event.charCode;\n return (k > 47 && k < 58);\n }\n\n get visible() {\n return this.field?.visibleOn(this.state);\n }\n\n get disabled() {\n return !this.field?.enabledOn(this.state);\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-element',\n template: `<ng-content></ng-content>`\n})\nexport class ElementComponent implements OnInit {\n formConfig: any;\n\n @Input() element: any;\n @Input() form: any;\n @Input() state: any;\n\n ngOnInit() {\n this.formConfig = this.element?._formConfig;\n this.start();\n }\n\n start() { }\n\n get visible() {\n return this.element?.visibleOn(this.state);\n }\n\n get disabled() {\n return !this.element?.enabledOn(this.state);\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() formManager: any;\n @Input() goBackAction: boolean;\n @Input() showTitle: any;\n @Input() headerActions: any;\n @Output() goBackEvent: EventEmitter<object> = new EventEmitter<object>();\n\n goBackForm() {\n this.goBackEvent.emit();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-section',\n template: `<ng-content></ng-content>`\n})\nexport class SectionComponent implements OnInit {\n @Input() section: any;\n @Input() formManager: any;\n\n ngOnInit() {\n this.start();\n }\n\n start() { }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-subsection',\n template: `<ng-content></ng-content>`\n})\nexport class SubSectionComponent implements OnInit {\n @Input() subSection: any;\n @Input() showHeader: any;\n @Input() formManager: any;\n\n ngOnInit() {\n this.start();\n }\n\n start() { }\n}\n","import { Component, Input, Output, OnInit, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { TableEvent, TableActionEvent } from '../../../classes/forms/table/table';\n\nconst INLINE_ACTION = 'INLINE';\n\n@Component({\n selector: 'lib-table-record-action',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableRecordActionComponent implements OnInit {\n @Input() recordId: any;\n @Input() recordData: any;\n @Input() action: any;\n\n @Output() actionSelected: EventEmitter<object> = new EventEmitter<object>();\n\n constructor() { }\n\n ngOnInit() {\n this.start();\n }\n\n start() { }\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\n ngOnInit() {\n this.start();\n }\n\n start() { }\n}\n","import { Component, 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';\n\nconst changeViewAttributes = ['visibleRecords', 'currentPage', 'recordsPerPage'];\n\n@Component({\n selector: 'lib-table',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class LibTableComponent implements OnInit {\n formConfig: any;\n\n // Atributos sincronizados del objeto\n code: any;\n columns: any;\n currentPage: number = 1;\n globalSearch: boolean = false;\n globalFilterString: string = '';\n visibleRecords: any[] = [];\n selectedRecords: any[] = [];\n recordsPerPage: any;\n totalRecordsNumber: number = 0;\n allSelected: boolean = false;\n layout: 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;\n @Input() tableRecords: TableRecordData[];\n @Input() disabled: boolean = false;\n @Input() state: string;\n @Input() waiting: boolean;\n\n ngOnInit() {\n if (this.table) {\n this.formConfig = this.table?._formConfig;\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 // Inicialización de campos mapeados del objeto\n const mapping = Object.entries(this.formConfig.componentTableAttrMap);\n for (let index = 0; index < mapping.length; index++) {\n const [tableAttrRaw, compAttrRaw] = mapping[index];\n const tableAttr = tableAttrRaw.toString();\n const compAttr = compAttrRaw.toString();\n this.syncAttribute(compAttr, this.table[tableAttr]);\n }\n // Subscripción a cambios en atributos\n this.table.attributeChange.subscribe(event => {\n const { name: tableAttr, value } = event;\n const compAttr = this.formConfig.componentTableAttrMap[tableAttr];\n this.syncAttribute(compAttr, value);\n });\n }\n this.start();\n }\n\n start() { }\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.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 syncAttribute(name: string, value: any) {\n try {\n if (name === 'visibleRecords') {\n this.updateTableData();\n }\n this[name] = value;\n return true;\n } catch {\n return false;\n }\n }\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","import { elementTypes } from './form.constants';\nexport class FormElement {\n protected _visible: boolean;\n protected _visibleForced: boolean;\n protected _isForced: boolean;\n _formConfig: any;\n disabled: boolean;\n visibleStates: string[];\n enabledStates: string[];\n elementType: string;\n customAttributes: any;\n\n constructor(elementDefinition: any, formConfig: any) {\n this._formConfig = formConfig;\n this._isForced = false;\n this.setVisibleStates(elementDefinition.visibleStates);\n this.setEnabledStates(elementDefinition.enabledStates);\n this._visibleForced = false;\n this.disabled = elementDefinition?.disabled ?? false;\n this.setVisibility(elementDefinition?.visible ?? true);\n this.customAttributes = elementDefinition?.customAttributes ?? {};\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 matchAttribute(name: string, value: string): boolean { return this.customAttributes?.[name] === value; }\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 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)) ? visibleStates : [];\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)) ? enabledStates : [];\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 /**\n * @deprecated Utilizar viewOnState\n */\n supportState(state: string): boolean { return this.viewOnState(state); }\n\n /**\n * @deprecated Utilizar viewOnState\n */\n supportMode(state: string): boolean { return this.viewOnState(state); }\n\n get visible(): boolean { return (this._isForced) ? this._visibleForced : this._visible; }\n set visible(visible: boolean) { this.setVisibility(visible); }\n\n visibleOn(state: string): boolean {\n return this.visible && this.viewOnState(state);\n }\n\n enabledOn(state: string): boolean {\n return !this.disabled && this.enabledOnState(state);\n }\n\n setVisibility(visible: boolean, forced: boolean = null): void {\n this._visible = visible && true;\n if (forced != null) {\n this._isForced = forced;\n }\n }\n\n show(forced?: boolean): void {\n this._visible = true;\n if (forced !== null) {\n this._isForced = forced;\n this._visibleForced = true;\n }\n }\n\n hide(forced?: boolean): void {\n this._visible = false;\n if (forced !== null) {\n this._isForced = forced;\n this._visibleForced = false;\n }\n }\n\n enable(): void { this.disabled = false; }\n disable(): void { this.disabled = true; }\n\n get enabled(): boolean { return !this.disabled; }\n get editable(): boolean { return !this.disabled; }\n}\n","import { Subject } from 'rxjs';\nimport { elementTypes } from './form.constants';\nimport { FormElement } from './element';\n\nconst HEADER = 'HEADER';\n\nexport class FormAction extends FormElement {\n private readonly _actionActivated = new Subject<string>();\n\n inProgress = false;\n newState: string;\n backend: boolean;\n\n actionCode: string;\n actionName: string;\n iconName: string;\n\n restrictedOnField: string;\n restrictedOnOperator: string;\n restrictedOnValue: string;\n customValidation: any;\n\n constructor(actionDefinition, formConfig) {\n super(actionDefinition, formConfig);\n this.elementType = elementTypes.action;\n this.actionCode = actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '';\n this.actionName = actionDefinition.actionTitle;\n this.iconName = actionDefinition.iconName || this.actionCode;\n this.setCustomAttribute('location', actionDefinition.position || HEADER);\n this.backend = actionDefinition?.serverAction ?? false;\n this.newState = actionDefinition?.newState;\n\n this.restrictedOnField = actionDefinition.fieldRestrictedCode ? actionDefinition.fieldRestrictedCode.toString() : '';\n this.restrictedOnOperator = actionDefinition.operatorRestricted || '';\n this.restrictedOnValue = actionDefinition.valueRestricted ?? '';\n this.customValidation = () => true;\n }\n\n get actionActivated() { return this._actionActivated; }\n\n start() { this.inProgress = true; }\n stop() { this.inProgress = false; }\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 this[propertyName] = receivedAction[propertyName];\n }\n }\n }\n\n setCustomValidation(callback) { this.customValidation = () => callback(); }\n}\n","import { Subject } from 'rxjs';\nimport yn from 'yn';\nimport { elementTypes, NO_ERROR } from './form.constants';\nimport { FormElement } from './element';\nimport { isNgTemplate } from '@angular/compiler';\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 fldAttr = {\n validateOnServer: 'validateOnServer',\n value: '_value',\n minValue: '_minValue',\n maxValue: '_maxValue',\n maxLength: '_maxLength',\n minLength: '_minLength',\n onValidation: '_onValidation',\n focus: 'focus',\n intrinsicErrorMessage: '_intrinsicErrorMessage',\n code: 'fieldCode',\n info: 'fieldInfo',\n defaultValue: 'defaultValue',\n defaultEditable: 'defaultEditable',\n visibleLabel: 'visibleLabel',\n required: 'fieldRequired',\n hasChanged: 'hasChanged',\n outputOnly: 'outputOnly',\n captureType: 'captureType',\n title: 'fieldTitle',\n type: 'fieldType',\n alignment: 'fieldAlignment',\n format: 'fieldFormat',\n externalValue: 'externalValue',\n tooltipText: 'tooltipText',\n errorType: 'errorType',\n errorCode: 'errorCode',\n errorMessage: 'errorMessage',\n options: 'fieldOptions',\n};\n\nexport interface DetailEvent {\n code: string;\n detail: any;\n}\n\nexport interface FieldOption {\n fieldOptionValue: string;\n fieldOptionId: string;\n}\n\nexport class FieldDescriptor extends FormElement {\n private readonly _editionFinish = new Subject<any>();\n private readonly _editionPartial = new Subject<any>();\n private readonly _detailRequest = new Subject<DetailEvent>();\n private readonly _attributeChange = new Subject<any>();\n\n private validateOnServer: boolean = false;\n\n private _value: any;\n private _focus: boolean = false;\n\n private _minValue: any;\n private _maxValue: any;\n private _maxLength: number = 0;\n private _minLength: number = 0;\n _onValidation: boolean = false;\n _intrinsicErrorMessage: string = '';\n\n fieldCode: string = '';\n fieldInfo: string = '';\n defaultValue: string = '';\n defaultEditable: boolean = false;\n\n visibleLabel: boolean = false;\n fieldRequired: boolean = false;\n hasChanged: boolean = false;\n outputOnly: boolean = false;\n captureType: string = '';\n fieldTitle: string = '';\n fieldType: string = '';\n fieldAlignment: string = '';\n fieldFormat: RegExp | null = null;\n externalValue: any;\n tooltipText: string = '';\n\n errorType: string = '';\n errorCode: string = '';\n errorMessage: string = '';\n\n fieldOptions: FieldOption[] | null = null;\n\n constructor(inputFieldReceived, formConfig) {\n super(inputFieldReceived, formConfig);\n this.elementType = elementTypes.field;\n const fld = (inputFieldReceived) ? inputFieldReceived : {};\n\n this.setAttr(fldAttr.code, fld.fieldCode);\n this.setAttr(fldAttr.title, fld.fieldTitle ?? this.fieldCode);\n this.setAttr(fldAttr.type, fld.fieldTypeCode)\n this.setAttr(fldAttr.captureType, fld.captureType ?? DEFAULT_CAPTURE_TYPE);\n const defaultValue = fld.defaultValue ?? null;\n if (this.fieldType === this._formConfig.fieldTypes.boolean) {\n this.setAttr(fldAttr.defaultValue, defaultValue ?? false);\n } else {\n this.setAttr(fldAttr.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.setAttr(fldAttr.alignment, fieldAlignment);\n this.setAttr(fldAttr.info, fld.info || '');\n let fieldFormat;\n try {\n fieldFormat = (fld.format) ? new RegExp(fld.format) : null;\n } catch (e) {\n fieldFormat = null;\n }\n this.setAttr(fldAttr.format, fieldFormat);\n\n this.setAttr(fldAttr.validateOnServer, fld.serverAction ?? false);\n\n this.setAttr(fldAttr.tooltipText, fld.tooltip || '');\n this.setAttr(fldAttr.defaultEditable, this.enabled);\n this.setAttr(fldAttr.required, fld.required ?? false);\n this.setError(fld.errorCode, fld.errorMessage, fld.errorType ?? DEFAULT_ERROR_TYPE);\n this.setAttr(fldAttr.outputOnly, fld.outputOnly ?? false);\n const maxLength = fld.maxLength ?? (this.captureType === 'TEXTAREA' ? BIG_MAX_LENGTH : STD_MAX_LENGTH);\n this.setAttr(fldAttr.maxLength, maxLength);\n const intrinsicErrorMessage = this._formConfig?.fieldValidations?.[this.fieldType]?.message\n ?? this._formConfig?.fieldValidations?.DEFAULT?.message ?? '';\n this.setAttr(fldAttr.intrinsicErrorMessage, intrinsicErrorMessage);\n\n this.setEditable(fld.editable ?? true);\n this.setVisibleLabel(fld.visibleLabel ?? true);\n this.setVisibility(fld.visible);\n this.setFieldOptions(fld.fieldOptions);\n this.setValue(fld.fieldValue ?? this.defaultValue ?? '');\n }\n\n get name() { return this.fieldCode; }\n get editionFinish() { return this._editionFinish; }\n get attributeChange() { return this._attributeChange; }\n\n get editionPartial() { return this._editionPartial; }\n get detailRequest() { return this._detailRequest; }\n get info() { return this.fieldInfo; }\n\n get validating() { return this._onValidation; }\n set validating(isValidating: boolean) { this.setAttr(fldAttr.onValidation, isValidating); }\n\n focus() { this.setAttr(fldAttr.focus, true); }\n\n setIntrinsicErrorMessage(message: string) { this.setAttr(fldAttr.intrinsicErrorMessage, message); }\n set intrinsicErrorMessage(message: string) { this.setIntrinsicErrorMessage(message); }\n\n get fieldValue() { return this.getValue(); }\n\n getRequired() { return this.required; }\n setRequired(required: boolean) { this.required = required; }\n\n get required(): boolean { return this.fieldRequired; }\n set required(required: boolean) { this.setAttr(fldAttr.required, required ?? false); }\n get minLength() { return this._minLength; }\n set minLength(requiredMinLength: number) {\n this.setAttr(fldAttr.minLength, requiredMinLength);\n }\n\n get maxLength() { return (this._maxLength > 0) ? this._maxLength.toString() : ''; }\n set maxLength(requiredMaxLength: any) {\n if (typeof requiredMaxLength === 'string') {\n this.setAttr(fldAttr.maxLength, parseInt(requiredMaxLength, 10));\n } else if (typeof requiredMaxLength === 'number') {\n this.setAttr(fldAttr.maxLength, requiredMaxLength);\n }\n }\n get value() { return this.getValue(); }\n set value(newValue) { this.setValue(newValue); }\n\n notifyEditionPartial() {\n this.resetError();\n this._editionPartial.next({ code: this.fieldCode, intrinsicValidation: true });\n }\n\n notifyEditionFinish() {\n const fieldValue = this.getValue();\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 setAttr(name: string, value: any) {\n this[name] = value;\n if (this._formConfig.monitoredFieldAttributes.includes(name)) {\n this._attributeChange.next({ name, value });\n }\n }\n\n notifyEditionDetailRequest(detail: any) {\n const detailEvent: DetailEvent = {\n code: this.fieldCode,\n detail,\n };\n this._detailRequest.next(detailEvent);\n }\n\n setVisibleLabel(visibleLabel: boolean) { this.setAttr(fldAttr.visibleLabel, visibleLabel); }\n showLabel() { this.setVisibleLabel(true); }\n hideLabel() { this.setVisibleLabel(false); }\n\n setChanged(hasChanged: boolean) { this.setAttr(fldAttr.hasChanged, hasChanged); }\n changed() { this.setChanged(true); }\n\n setLabel(label) { this.setAttr(fldAttr.title, label); }\n clean() { this.setValue(this.defaultValue || ''); this.resetError(); }\n get backend() { return this.validateOnServer; }\n\n setEditable(editable: boolean = true) { (editable) ? this.enable() : this.disable(); }\n\n hasError() { return this.errorCode !== NO_ERROR; }\n resetError() { (this.errorCode !== NO_ERROR) && this.setError(NO_ERROR, null); }\n setError(code, message, type = DEFAULT_ERROR_TYPE) {\n this.setAttr(fldAttr.errorCode, code ?? NO_ERROR);\n this.setAttr(fldAttr.errorType, (this.errorCode === NO_ERROR) ? '' : type);\n this.setAttr(fldAttr.errorMessage, message ?? '');\n }\n\n getError() { return { type: this.errorType, code: this.errorCode, message: this.errorMessage }; }\n get error() { return this.getError(); }\n set error(errorObj) { this.setError(errorObj.code, errorObj.message, errorObj.type ?? DEFAULT_ERROR_TYPE) }\n\n getErrorCode() { return this.getError().code; }\n setErrorCode(code) { this.setError(code, this.errorMessage); }\n getErrorMessage() { return this.getError().message; }\n setErrorMessage(msg) { this.setError(this.errorCode, msg); }\n\n get empty(): boolean { return this.isEmpty(); }\n\n isEmpty(): boolean {\n const fieldCurrentValue = this.getValue();\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 return fieldCurrentValue === '';\n }\n\n getValue(): any {\n if (this.fieldType === this._formConfig.fieldTypes.boolean\n || this.fieldType === this._formConfig.fieldTypes.check) {\n return yn(this._value);\n }\n return this._value;\n }\n\n getOptionText() {\n return this.fieldOptions?.find(item => item.fieldOptionId === this._value)?.fieldOptionValue ?? null;\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 (attrName === this._formConfig.apiFieldAttrs.visible) && this.setVisibility(attrValue);\n (attrName === this._formConfig.apiFieldAttrs.labelVisible) && this.setVisibleLabel(fld.visibleLabel);\n (attrName === this._formConfig.apiFieldAttrs.required) && this.setAttr(fldAttr.required, fld.required ?? false);\n (attrName === this._formConfig.apiFieldAttrs.errorCode) && this.setAttr(fldAttr.errorCode, fld.errorCode);\n (attrName === this._formConfig.apiFieldAttrs.errorMessage) && this.setAttr(fldAttr.errorMessage, fld.errorMessage);\n (attrName === this._formConfig.apiFieldAttrs.tooltip) && this.setAttr(fldAttr.tooltipText, fld.tooltip);\n (attrName === this._formConfig.apiFieldAttrs.info) && this.setAttr(fldAttr.info, fld.info);\n (attrName === this._formConfig.apiFieldAttrs.editable) && this.setEditable(fld.editable);\n (attrName === this._formConfig.apiFieldAttrs.title) && this.setLabel(fld.fieldTitle.toString());\n (attrName === this._formConfig.apiFieldAttrs.value) && (this.setValue(fld.fieldValue) && this.setChanged(false));\n (attrName === this._formConfig.apiFieldAttrs.options) && this.setFieldOptions(fld.fieldOptions);\n (attrName === this._formConfig.apiFieldAttrs.captureType) && this.setAttr(fldAttr.captureType, fld.captureType || 'INPUT');\n (attrName === this._formConfig.apiFieldAttrs.type) && this.setAttr(fldAttr.type, fld.fieldTypeCode);\n (attrName === this._formConfig.apiFieldAttrs.maxLength) && this.setAttr(fldAttr.maxLength, fld.maxLength);\n }\n }\n\n setMinValue(inputMinValue) {\n let minValue = inputMinValue;\n if (this.fieldType === this._formConfig.fieldTypes.date) {\n minValue = new Date(minValue);\n }\n this.setAttr(fldAttr.minValue, minValue);\n }\n\n setMaxValue(inputMaxValue) {\n let maxValue = inputMaxValue;\n if (this.fieldType === this._formConfig.fieldTypes.date) {\n maxValue = new Date(maxValue);\n }\n this.setAttr(fldAttr.maxValue, maxValue);\n }\n\n getFieldOptions(): FieldOption[] {\n return this.fieldOptions.map(option => {\n const optionCopy: FieldOption = { ...option };\n return optionCopy;\n });\n }\n\n\n setFieldOptions(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 => {\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(fldAttr.options, 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(fldAttr.value, fieldValue);\n } else {\n const valInOptions = this.fieldOptions\n .find(item => item.fieldOptionId === this._value);\n if (!valInOptions) {\n this.setValue('');\n }\n }\n }\n if (this.fieldRequired && this.fieldOptions.length === 1) {\n this.setValue(this.fieldOptions[0].fieldOptionId);\n }\n }\n\n 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.setChanged(true);\n if (widgetUpdate) {\n this.setAttr(fldAttr.value, newFinalValue);\n } else {\n this._value = newFinalValue;\n }\n }\n return true;\n }\n}\n","export 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 {\n _formConfig: any;\n fieldCode: string;\n fieldTitle: string;\n fieldType: string;\n fieldAlignment: string;\n fieldFormat: string;\n visible: boolean;\n sortable: boolean;\n sortDirections: string[];\n customAttributes: any;\n // Filtros\n filterVisible: boolean = false;\n filterDef: FilterDef;\n filterSetup: FilterSetup;\n\n constructor(recTableColReceived, formConfig) {\n this._formConfig = 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.visible = recTableColReceived?.visible ?? true;\n this.sortable = recTableColReceived?.sortable ?? false;\n this.sortDirections = (this.sortable) ? ['ascend', 'descend'] : [null];\n this.fieldFormat = recTableColReceived.format || '';\n this.customAttributes = recTableColReceived?.customAttributes ?? {};\n }\n }\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],\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","export class TableAction {\n visibleStates: string[];\n enabledStates: string[];\n newState: string;\n\n actionCode: string;\n actionTitle: string;\n iconName: string;\n actionType: string;\n actionClass: string;\n stateField: string;\n\n backend: boolean;\n restrictedOnField: string;\n restrictedOnValue: string;\n restrictedOnOperator: string;\n customAttributes: any;\n\n constructor(actionDefinition) {\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\n this.visibleStates = actionDefinition.visibleStates || [];\n this.enabledStates = actionDefinition.enabledStates || [];\n this.backend = actionDefinition?.serverAction ?? false;\n this.restrictedOnField = actionDefinition.fieldRestrictedCode || '';\n this.restrictedOnValue = actionDefinition.valueRestricted ?? '';\n this.restrictedOnOperator = actionDefinition.operatorRestricted || '';\n this.customAttributes = actionDefinition?.customAttributes ?? {};\n }\n\n supportMode(state) { return this.viewOnState(state); }\n\n viewOnState(state) { return this.visibleStates.includes(state); }\n enabledOnState(state) { return this.enabledStates.includes(state); }\n}\n","import { RecordTableColumn } from './column';\nimport { operators } from '../form.constants';\n\nexport class TableRecordData {\n recordId: string;\n selected: boolean;\n recordData: any = {};\n\n constructor(recordReceived, recordDefinition: RecordTableColumn[], selectionFieldName = null) {\n const { tableRecordId, recordData } = recordReceived;\n this.recordId = tableRecordId;\n this.selected = false;\n this.recordData = {};\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 fieldCode in this.recordData) {\n const columnDef = columnObj?.[fieldCode];\n if (columnDef && columnDef?.visible && this.recordData.hasOwnProperty(fieldCode)) {\n for (const word of words) {\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 return true;\n }\n }\n }\n }\n return false;\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\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 readonly _attributeChange = new Subject<any>();\n private _tableColumnObj = {};\n private _appendPages: boolean;\n private _actions: TableAction[];\n private _actionsObj = {};\n\n // Mecanismos de filtrado nueva versión\n private globalFilterStrings: string[] = [];\n private selectedRecords: any;\n private globalSearch: boolean;\n private restrictedId: any;\n private layout: string | null = null;\n\n tableRecords: TableRecordData[];\n tableRecordObj = {};\n visibleRecords: TableRecordData[] | null = null;\n columns: RecordTableColumn[];\n selectable: boolean;\n selectionBackend: boolean;\n selectionField: string;\n allSelected = false;\n\n tableCode: string = '';\n tableTitle: string;\n currentPage: number;\n totalPages: number;\n requestedPage: number;\n recordsPerPage: number = 10;\n totalRecordsNumber: number = 0;\n recordsNumber: number = 0;\n sorting: any;\n\n waiting: boolean;\n clientPaging: boolean = true;\n sortable: boolean;\n\n constructor(tableReceived, formConfig) {\n super(tableReceived, formConfig);\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('allSelected', false);\n this.setAttr('tableCode', tableReceived.tableCode);\n this.setAttr('clientPaging', tableReceived?.clientPaging ?? true);\n this.setAttr('globalSearch', tableReceived?.simpleFilter ?? false);\n this.setAttr('globalFilterString', '');\n this.setAttr('sorting', { columnName: '', direction: '' });\n this.setAttr('recordsPerPage', formConfig.defaultRecordsPerPage);\n this.setAttr('layout', '');\n\n if (tableReceived.fields) {\n const columns: RecordTableColumn[] = [];\n for (const columnReceived of tableReceived.fields) {\n const columnDefinition: RecordTableColumn = new RecordTableColumn(columnReceived, this._formConfig);\n columns.push(columnDefinition);\n this._tableColumnObj[columnDefinition.fieldCode] = columnDefinition;\n }\n this.setAttr('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);\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 get attributeChange() { return this._attributeChange; }\n\n getLayout() { return this.layout; }\n setLayout(layout) { this.setAttr('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) { return this._tableColumnObj[fieldCode]; }\n putOnWait() { this.waiting = true; }\n freeWaiting() { this.waiting = false; }\n\n setAttr(name: string, value: any) {\n this[name] = value;\n if (this._formConfig.monitoredTableAttributes.includes(name)) {\n this._attributeChange.next({ name, value });\n }\n }\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 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('allSelected', true);\n this.tableRecords.forEach(record => record.select());\n this.setAttr('selectedRecords', this.getSelectedRecords());\n return true;\n\n }\n\n unSelectAll() {\n this.setAttr('allSelected', false);\n this.tableRecords.forEach(record => record.unselect());\n this.setAttr('selectedRecords', this.getSelectedRecords());\n return true;\n }\n\n setTableRecords(tableRecords, append) {\n if (!append) { this.clean(); }\n const newRecordsObj = { ...this.tableRecordObj };\n const newRecords = [...this.tableRecords];\n for (const tableRecord of tableRecords) {\n const recordReceived: TableRecordData = new TableRecordData(tableRecord, this.columns, this.selectionField);\n const recordIdKey = recordReceived.recordIdKey;\n newRecords.push(recordReceived);\n newRecordsObj[recordIdKey] = recordReceived;\n }\n this.tableRecords = newRecords;\n this.setAttr('selectedRecords', this.getSelectedRecords());\n this.tableRecordObj = newRecordsObj;\n this.updateVisibleRecords();\n }\n\n appendRecords(records) { this.setTableRecords(records, true); }\n replaceRecords(records) { this.setTableRecords(records, false); }\n\n changePage(requestedPage) {\n if (this.clientPaging) {\n this.setAttr('currentPage', requestedPage);\n this.updateVisibleRecords();\n } else {\n this.notifyGetDataAction(requestedPage);\n }\n }\n\n updateVisibleRecords() {\n // updateView const changeViewAttributes = ['currentPage', 'recordsPerPage', 'sorting'];\n let visibleRecords: any[];\n if (this.clientPaging) {\n let filteredRecords = this.getFilteredRecords();\n this.setAttr('totalRecordsNumber', filteredRecords.length);\n visibleRecords = filteredRecords.slice((this.currentPage - 1) * this.recordsPerPage,\n (this.currentPage - 1) * this.recordsPerPage + this.recordsPerPage);\n const recordsLastPage = this.totalRecordsNumber % this.recordsPerPage;\n const totalPages = this.totalRecordsNumber / this.recordsPerPage + (recordsLastPage ? 1 : 0);\n if (this.currentPage > totalPages) {\n this.currentPage = totalPages || 1;\n }\n } else {\n visibleRecords = this.tableRecords;\n }\n this.setAttr('visibleRecords', visibleRecords);\n }\n\n updateFromServer(tableReceived) {\n this.requestedPage = 1;\n this.clean();\n this.visible = tableReceived?.visible || true;\n this.totalPages = tableReceived.totalPages || 1;\n this.recordsNumber = tableReceived.recordsNumber;\n this.setAttr('currentPage', +tableReceived?.currentPage || 1);\n this.setAttr('recordsPerPage', +tableReceived.recordsPerPage);\n this.setAttr('totalRecordsNumber', (this.clientPaging) ? tableReceived.tableRecords.length : +tableReceived.totalRecordsNumber);\n this.setAttr('sorting', {\n columnName: tableReceived.sortingColumn || '',\n direction: tableReceived.sortingDirection || ''\n });\n this.waiting = false;\n if (this._appendPages) {\n this.replaceRecords(tableReceived.tableRecords);\n } else {\n this.appendRecords(tableReceived.tableRecords);\n }\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('globalFilterString', text);\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) {\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('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","import { FormAction } from './action';\nimport { elementTypes } from './form.constants';\n\nexport class RecordFormSubSection {\n visible: boolean;\n _customRender: string;\n subsectionId: string;\n subsectionCode: string;\n subsectionTitle: string;\n visibleStates: string[];\n\n subSectionElements: any[];\n subSectionFields: any[];\n subSectionTables: any[];\n subSectionActions: any[];\n elementsArray: any;\n\n constructor(subsectionReceived, formObject) {\n if (!subsectionReceived) { return; }\n this._customRender = null;\n this.visible = true;\n this.subSectionElements = [];\n this.subSectionFields = [];\n this.subSectionTables = [];\n this.subSectionActions = [];\n this.elementsArray = {};\n this.subsectionId = (subsectionReceived.subsectionId) ? subsectionReceived.subsectionId.toString() : '';\n this.subsectionCode = (subsectionReceived.subsectionCode) ? subsectionReceived.subsectionCode : '';\n this.subsectionTitle = (subsectionReceived.subsectionTitle) ? subsectionReceived.subsectionTitle : '';\n this.visibleStates = subsectionReceived.visibleStates || [];\n if (subsectionReceived.elements) {\n for (const receivedElement of subsectionReceived.elements) {\n let elementObject = null;\n let arrayToAdd = null;\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 show() { this.visible = true; }\n hide() { this.visible = false; }\n\n get customRender() { return this._customRender; }\n set customRender(customRenderName) { this._customRender = customRenderName; }\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.fieldCode);\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 viewOnState(state) {\n return this.visibleStates.includes(state);\n }\n\n supportMode(state) { return this.viewOnState(state); }\n}\n","import { Subject } from 'rxjs';\nimport { FormAction } from './action';\nimport { RecordFormSubSection } from './subsection';\n\nexport class RecordFormSection {\n private readonly _activation = new Subject<string>();\n private readonly _inactivation = new Subject<string>();\n visible: boolean;\n visibleStates: string[];\n\n active = false;\n sectionId: string;\n sectionCode: string;\n sectionTitle: string;\n customAttributes: any = {};\n\n subSections: RecordFormSubSection[];\n subSectionsObj: any;\n\n constructor(sectionReceived, formObject) {\n if (!sectionReceived) { return; }\n this.visible = true;\n this.sectionId = (sectionReceived.sectionId) ? sectionReceived.sectionId.toString() : '';\n this.sectionCode = (sectionReceived.sectionCode) ? sectionReceived.sectionCode : '';\n this.sectionTitle = (sectionReceived.sectionTitle) ? sectionReceived.sectionTitle : '';\n this.visibleStates = sectionReceived.visibleStates || [];\n this.subSections = [];\n this.subSectionsObj = {};\n if (sectionReceived.subsections) {\n const subsections = sectionReceived.subsections.map(objDef => {\n let visibleStates = objDef.visibleStates;\n if (!visibleStates) {\n visibleStates = (objDef.subsectionModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0);\n }\n if (!visibleStates || visibleStates.length === 0) {\n visibleStates = this.visibleStates;\n }\n if (objDef.elements && Array.isArray(objDef.elements)) {\n objDef.elements = objDef.elements.map(elm => ({ code: elm.elementCode, type: elm.elementTypeName }));\n }\n return { ...objDef, visibleStates };\n });\n for (const subsectionReceived of subsections) {\n const subSectionToAdd = new RecordFormSubSection(subsectionReceived, formObject);\n const subsectionCode = subSectionToAdd.subsectionCode;\n if (subsectionCode) {\n this.subSections.push(subSectionToAdd);\n this.subSectionsObj[subsectionCode] = subSectionToAdd;\n }\n }\n }\n if (sectionReceived?.customAttributes) {\n Object.keys(sectionReceived?.customAttributes)\n ?.forEach(attr => this.customAttributes[attr] = sectionReceived?.customAttributes[attr])\n }\n }\n\n getCustomAttribute(name) { return this.customAttributes?.[name] ?? null; }\n setCustomAttribute(name, value) { return name && (this.customAttributes[name] = value); }\n matchAttribute(name, value) { return this.customAttributes?.[name] === value; }\n\n get code() { return this.sectionCode; }\n get activation() { return this._activation; }\n get inactivation() { return this._inactivation; }\n\n activate() {\n if (!this.active) {\n this.active = true;\n this._activation.next(this.sectionCode);\n }\n }\n\n inactivate() {\n if (this.active) {\n this.active = false;\n this._inactivation.next(this.sectionCode);\n }\n }\n\n show() { this.visible = true; }\n hide() { this.visible = false; }\n get title() { return this.sectionTitle; }\n set title(title) { this.sectionTitle = title; }\n\n getVisibleSubsections(state) {\n return this.subSections.filter(subSection => {\n return subSection.visible && subSection.viewOnState(state);\n });\n }\n\n getSubsection(subSectionCode) {\n return (this.subSectionsObj && this.subSectionsObj[subSectionCode])\n ? this.subSectionsObj[subSectionCode] : null;\n }\n\n getFields() {\n let fieldsArray = [];\n if (this.subSections && this.subSections.length > 0) {\n for (const subSection of this.subSections) {\n fieldsArray = fieldsArray.concat(subSection.getFields());\n }\n }\n return fieldsArray;\n }\n\n getActions(): FormAction[] {\n let actionArray = [];\n if (this.subSections && this.subSections.length > 0) {\n for (const subSection of this.subSections) {\n actionArray = actionArray.concat(subSection.getActions());\n }\n }\n return actionArray;\n }\n\n getActionNames(): string[] {\n let actionArray = [];\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 = [];\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 supportState(state) { return this.viewOnState(state); }\n viewOnState(state) { return this.visibleStates.includes(state); }\n supportMode(state) { return this.viewOnState(state); }\n}\n","import { 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';\ninterface Transition {\n name: string;\n source: string;\n destination: string;\n}\n\ninterface StateFlow {\n defaultState: string;\n states: 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 state: string;\n _name: string = '';\n _formConfig: any;\n private _title: string = '';\n private _stateFlow: StateFlow;\n private _fieldArray: FieldDescriptor[];\n private _fields = {};\n private _actionArray: FormAction[];\n private _actions = {};\n private _tableArray: RecordTable[];\n private _tables = {};\n private _sectionArray: RecordFormSection[];\n private _sections = {};\n private _immutableData = {};\n private _extraInfo = {};\n private _exclusiveSectionsByAttr = {};\n\n constructor(definitionReceived, formConfig) {\n this._formConfig = formConfig;\n this.state = '';\n this._actionArray = [];\n this._fieldArray = [];\n this._tableArray = [];\n this._sectionArray = [];\n this._stateFlow = {\n defaultState: '',\n states: [],\n transitions: [],\n };\n if (!definitionReceived) { return; }\n this._name = (definitionReceived.form && definitionReceived.form.formCode)\n ? definitionReceived.form.formCode : this._name;\n this._title = (definitionReceived.form && definitionReceived.form.formTitle)\n ? definitionReceived.form.formTitle : '';\n this.setStateFlow(definitionReceived?.states, definitionReceived?.transitions,\n definitionReceived?.defaultState);\n this.immutableData = definitionReceived.immutableData;\n this.extraInfo = definitionReceived.extraInfo;\n\n if (definitionReceived.actions) {\n const formActions = definitionReceived.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 = [...visibleStates];\n }\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 let enabledStates = objDef.enabledStates || objDef.editableStates;\n if (!visibleStates) {\n visibleStates = (objDef.fieldModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0) || [];\n enabledStates = [...visibleStates];\n }\n return { ...objDef, visibleStates, enabledStates };\n });\n for (const fieldReceived of formFields) {\n const fieldToAdd = new FieldDescriptor(fieldReceived, this._formConfig);\n const fieldCode = fieldToAdd.fieldCode;\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 let enabledStates = objDef.enabledStates || objDef.editableStates;\n if (!visibleStates) {\n visibleStates = (objDef.tableModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0) || [];\n enabledStates = [...visibleStates];\n }\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 if (!visibleStates) {\n visibleStates = (objDef.sectionModes || '').split(',')\n .map(state => state.trim())\n .filter(state => state.length > 0) || [];\n }\n return { ...objDef, visibleStates };\n });\n for (const sectionReceived of formSections) {\n const sectionToAdd = new RecordFormSection(sectionReceived, this);\n const sectionCode = sectionToAdd.sectionCode;\n if (sectionCode) {\n this._sectionArray.push(sectionToAdd);\n this._sections[sectionCode] = sectionToAdd;\n }\n }\n }\n }\n\n getTitle(): string { return this._title; }\n setTitle(title: string): void { this._title = title; }\n get name(): string { return this._name; }\n set name(name) { this._name = name; }\n\n // Estados\n get defaultState(): string { return this._stateFlow.defaultState; }\n supportState(state: string): boolean { return this._stateFlow.states?.includes(state); }\n supportMode(state: string): boolean { return this.supportState(state); }\n get states(): any[] { return this._stateFlow.states; }\n\n getCurrentState(): string { return this.state; }\n\n changeState(newState: string): boolean {\n if (!newState || !this.supportState(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 return (this.state === newState);\n }\n\n setStateFlow(states?, transitions?, defaultState?: string): void {\n this._stateFlow.states = states;\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 // Fields\n get fields(): any { return this._fields; }\n get fieldNames(): string[] { return this.getFieldNames(); }\n getFields(): FieldDescriptor[] { return this._fieldArray; }\n getFieldNames(): string[] { return this._fieldArray.map(field => field.fieldCode); }\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)?.getValue(); }\n getFieldOptionText(code: string): any { return this.getField(code)?.getOptionText(); }\n getFieldOptions(code: string): FieldOption[] { return this.getField(code)?.getFieldOptions() ?? 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 this.getField(code)?.setRequired(required);\n } catch (e) {\n console.log(`Error modificando campo ${code}: ${e}`);\n }\n }\n }\n\n setFieldErrorMessage(code: string, message: string): any { this.getField(code)?.setErrorMessage(message); }\n\n setFieldOptions(code: string, optionsArray: any[], idAttribute: string, nameAttribute: string): any {\n const field = this.getField(code);\n if (field && optionsArray?.length > 0) {\n const fieldOptions = optionsArray.map(item => ({\n fieldOptionId: item[idAttribute],\n fieldOptionValue: item[nameAttribute]\n }));\n field.setFieldOptions(fieldOptions);\n }\n }\n\n getFieldSet(filter, inputCodes: string[] | string | null, secCode?: string | null, subCode?: string | null): string[] {\n let codes: any[] = [];\n if (inputCodes) {\n if (typeof inputCodes === 'string') {\n codes = [inputCodes];\n } else if (Array.isArray(inputCodes) && inputCodes.length > 0) {\n codes = inputCodes ?? [];\n }\n } else if (secCode && !subCode) {\n codes = this.getSection(secCode)?.getFieldNames() ?? [];\n } else if (secCode && subCode) {\n codes = this.getSubSection(secCode, subCode)?.getFieldNames() ?? [];\n } else {\n codes = this.getFieldNames() ?? [];\n }\n return (filter) ? codes.filter(fld => filter(this.getField(fld))) : codes;\n }\n\n applyOnFields(processFunc, inputCodes?: string[] | string | null, secCode?: string, subCode?: string): number {\n if (!processFunc) { return 0; }\n const codes = this.getFieldSet(null, inputCodes ?? null, secCode, subCode);\n let processedFields = 0;\n for (const code of codes) {\n const field = this.getField(code);\n if (field) {\n try {\n processFunc(field);\n processedFields += 1;\n } catch (e) {\n console.log(`Error procesando funcion en campo ${field}: ${e}`);\n }\n }\n }\n return processedFields;\n }\n\n 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): string[] {\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): string[] {\n return this.getFieldSet(fld => fld.errorCode !== NO_ERROR, 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 get actions() { return this._actions; }\n\n getActionsByAttribute(name: string, value): FormAction[] { return this._actionArray.filter(actionItem => actionItem.matchAttribute(name, value)); }\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\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 get tables(): any { return this.tables; }\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\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\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 get sections(): any { return this._sections; }\n getSections(): RecordFormSection[] { return this._sectionArray; }\n getSectionsByAttribute(name, value): RecordFormSection[] { return this._sectionArray.filter(item => item.matchAttribute(name, value)); }\n get sectionTitles(): string[] { return this._sectionArray.map(formSection => formSection.sectionTitle); }\n get visibleSections(): RecordFormSection[] { return this._sectionArray.filter(sec => sec.visible); }\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 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 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 = {\n fields: [],\n tables: [],\n };\n formData.fields = this.getFields().filter(fld => !fld.outputOnly)\n .map(fld => {\n const fieldPayload: FieldPayload = {\n fieldCode: fld.fieldCode,\n fieldValue: fld.getValue(),\n editable: !fld.disabled,\n visible: fld.visible,\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.visible,\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","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 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 = this.unstack(targetToken);\n formInfo && formInfo.name && this.goToForm(formInfo.name, formInfo.token, formInfo.subject);\n }\n}\n","import { ReplaySubject } from 'rxjs';\n\nexport class LibEventManagerService {\n eventSubjects: any = {};\n\n constructor(eventNames) {\n eventNames.forEach((name) => { this.addEventName(name); });\n }\n\n addEventName(name) {\n if (!this.eventSubjects[name]) {\n const newEventSubject: ReplaySubject<any> = new ReplaySubject(1);\n this.eventSubjects[name] = newEventSubject;\n }\n }\n\n getEventNames() { return Object.keys(this.eventSubjects); }\n getSubject(eventClassName) { return eventClassName ? this.eventSubjects[eventClassName] : null; }\n subscribe(eventClassName, callback) { this.getSubject(eventClassName).subscribe(callback); }\n next(eventClassName, data) { this.getSubject(eventClassName).next(data); }\n}\n","export class LibFileManagementService {\n openFile(fileBase64Data, fileName, fileType) { }\n saveFileFromURL(fileUrl, fullFileName = null) { }\n saveFile(fileBase64Data, fileName, fileType) { }\n}\n\n","import { Component } from '@angular/core';\nimport { FormStructureAndData } from '../../classes/forms/form';\nimport { LibFormManagerService } from '../../services/form-manager.service';\nimport { LibEventManagerService } from '../../services/event-manager.service';\nimport { LibFileManagementService } from '../../services/file-manager.service';\nimport { formActions, NO_ERROR, HEADER } from '../../classes/forms/form.constants';\nimport { FormAction } from '../../classes/forms/action';\nimport { FieldDescriptor, FieldOption } from '../../classes/forms/field';\nimport { RecordTable } from '../../classes/forms/table/table';\nimport { RecordFormSection } from '../../classes/forms/section';\nimport { RecordFormSubSection } from '../../classes/forms/subsection';\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 {\n private _formStructure: FormStructureAndData | null = null;\n private _controlToken: string | null = null;\n private _originToken: string | null = null;\n private _formRoute: string | null = null;\n private _definitionObtained: boolean = false;\n // Eventos de acciones y campos\n private _formSectionsActivate: any = {};\n private _formSectionsInactivate: any = {};\n private _formActionsStart: any = {};\n private _formActionsFinish: any = {};\n private _fieldInputValidation: any = {};\n private _fieldValidationsStart: any = {};\n private _fieldValidationsFinish: any = {};\n // Callback de acciones de tablas\n private _tableSelectionsStart: any = {};\n private _tableSelectionsFinish: any = {};\n private _tableActionsStart: any = {};\n private _tableActionsFinish: any = {};\n private _tableGetDataStart: any = {};\n private _tableGetDataFinish: any = {};\n\n private _actionServerError: any[] = [];\n private _fieldServerError: any[] = [];\n private _tableServerError: any[] = [];\n\n protected inputDataFields: any = {};\n protected extraData: any = {};\n protected _eventEmiter: LibEventManagerService;\n protected enabledSections: RecordFormSection[] = [];\n\n formConfig: any;\n name: string | null = null;\n formSubject: string | null = null;\n _errorType: string = '';\n errorCode: string = '';\n errorFullCode: string = '';\n errorName: string = '';\n errorMessage: string = '';\n errorDetail: string = '';\n visible: boolean = false;\n\n fields: any;\n actions: any;\n sections: any;\n busy: boolean = false;\n\n getTitle() { return this._formStructure?.getTitle(); }\n setTitle(title: string) { return this._formStructure?.setTitle(title); }\n cleanData() { return this._formStructure?.cleanData(); }\n getCurrentState() { return this._formStructure?.getCurrentState(); }\n supportState(state: string | null) { return this._formStructure?.supportState(state ?? '') ?? false; }\n changeState(state): boolean { return this._formStructure?.changeState(state) ?? false; }\n getStates() { return this._formStructure?.states; }\n getImmutableElement(name: string) { return this._formStructure?.getImmutableElement(name); }\n getExtraInfo(name: string) { return this._formStructure?.getExtraInfo(name); }\n getFields() { return this._formStructure?.getFields() ?? null; }\n getFieldNames() { return this._formStructure?.getFieldNames() ?? null; }\n getField(code: string) { return this._formStructure?.getField(code) ?? null; }\n enableField(code: string) { return this._formStructure?.enableField(code); }\n disableField(code: string) { return this._formStructure?.disableField(code); }\n getFieldValue(code: string): any { return this._formStructure?.getFieldValue(code) ?? null; }\n getFieldOptionText(code: string): any { return this._formStructure?.getFieldOptionText(code); }\n getFieldsValues(codes: string[]) { return this._formStructure?.getFieldsValues(codes) ?? null; }\n getFieldOptions(code: string): FieldOption[] | null { return this._formStructure?.getFieldOptions(code) ?? null; }\n setFieldValue(code: string, value: any) { return this._formStructure?.setFieldValue(code, value); }\n setFieldRequired(inputCodes: string[] | string | null, required: boolean) { return this._formStructure?.setFieldRequired(inputCodes, required); }\n setFieldErrorMessage(code: string, errorMessage: string) { return this._formStructure?.setFieldErrorMessage(code, errorMessage); }\n setFieldError(code: string, errorCode: string, message: string, type?: string) { return this._formStructure?.setFieldError(code, errorCode, message, type); }\n setFieldIntrinsicErrorMessage(code: string, message: string) {\n return this._formStructure?.setFieldIntrinsicErrorMessage(code, message);\n }\n setFieldOptions(code, optionsArray, idAttribute, nameAttribute) {\n return this._formStructure?.setFieldOptions(code, optionsArray, idAttribute, nameAttribute);\n }\n getFieldSet(filterFunc?, codes?: string[] | string | null, secCode?: string | null, subCode?: string | null) {\n return this._formStructure?.getFieldSet(filterFunc, codes ?? null, secCode ?? null, subCode ?? null);\n }\n applyOnFields(processFunc, codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.applyOnFields(processFunc, codes, secCode, subCode);\n }\n applyProcessToAllFields(processFunc) {\n return this._formStructure?.applyOnFields(processFunc);\n }\n cleanFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.cleanFields(codes, secCode, subCode);\n }\n getRequiredFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.getRequiredFields(codes, secCode, subCode);\n }\n getRequiredEmptyFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.getRequiredEmptyFields(codes, secCode, subCode) ?? null;\n }\n getChangedFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.getChangedFields(codes, secCode, subCode);\n }\n getFieldsWithValidationIssues(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.getFieldsWithValidationIssues(codes, secCode, subCode);\n }\n tagFieldsWithError(errorMessage: string, codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.tagFieldsWithError(errorMessage, codes, secCode, subCode);\n }\n cleanErrorFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.cleanErrorFields(codes, secCode, subCode);\n }\n showLabelFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.showLabelFields(codes, secCode, subCode);\n }\n hideLabelFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.hideLabelFields(codes, secCode, subCode);\n }\n enableFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.enableFields(codes, secCode, subCode);\n }\n disableFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.disableFields(codes, secCode, subCode);\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 showFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.showFields(codes, secCode, subCode);\n }\n hideFields(codes?: string[] | string | null, secCode?: string, subCode?: string) {\n return this._formStructure?.hideFields(codes, secCode, subCode);\n }\n getActionsByAttribute(name: string, value) {\n return this._formStructure?.getActionsByAttribute(name, value);\n }\n getHeaderActions() {\n return this._formStructure?.getActionsByAttribute('location', HEADER);\n }\n getAction(actionCode: string): FormAction | null {\n return this._formStructure?.getAction(actionCode) ?? null;\n }\n showActions(actionArray): void {\n return this._formStructure?.showActions(actionArray);\n }\n hideActions(actionArray): void {\n return this._formStructure?.hideActions(actionArray);\n }\n enableActions(actionArray): void {\n return this._formStructure?.enableActions(actionArray);\n }\n disableActions(actionArray): void {\n return this._formStructure?.disableActions(actionArray);\n }\n showAction(code: string): void {\n return this._formStructure?.showActions(code);\n }\n hideAction(code: string): void {\n return this._formStructure?.hideActions(code);\n }\n enableAction(code: string): void {\n return this._formStructure?.enableActions(code);\n }\n disableAction(code: string): void {\n return this._formStructure?.disableActions(code);\n }\n getSections(): RecordFormSection[] | null {\n return this._formStructure?.getSections() ?? null;\n }\n activateSection(code): void {\n return this._formStructure?.activateSection(code);\n }\n getSectionsTitles(): string[] | null {\n return this._formStructure?.getSections().map(sec => sec.title) ?? null;\n }\n getSection(code: string): RecordFormSection | null {\n return this._formStructure?.getSection(code) ?? null;\n }\n showSection(code: string): void {\n return this._formStructure?.showSections(code);\n }\n hideSection(code: string): void {\n return this._formStructure?.hideSections(code);\n }\n showSections(codes: string[] | string): void {\n return this._formStructure?.showSections(codes);\n }\n hideSections(codes: string[] | string): void {\n return this._formStructure?.hideSections(codes);\n }\n getSubSection(code: string, subCode: string): RecordFormSubSection | null {\n return this._formStructure?.getSubSection(code, subCode) ?? null;\n }\n showSubSection(code: string, subCode: string): void {\n return this._formStructure?.showSubSections(code, subCode);\n }\n hideSubSection(code: string, subCode: string): void {\n return this._formStructure?.hideSubSections(code, subCode);\n }\n showSubSections(code: string, subCodes: string[] | string): void {\n return this._formStructure?.showSubSections(code, subCodes);\n }\n hideSubSections(code: string, subCodes: string[] | string): void {\n return this._formStructure?.hideSubSections(code, subCodes);\n }\n getSectionActions(code: string): FormAction[] | null {\n return this._formStructure?.getSectionActions(code) ?? null;\n }\n getSectionActionNames(code: string): string[] | null {\n return this._formStructure?.getSectionActionNames(code) ?? null;\n }\n\n getTables() {\n return this._formStructure?.getTables();\n }\n showTables(codes: string[] | string) {\n return this._formStructure?.showTables(codes);\n }\n hideTables(codes: string[] | string) {\n return this._formStructure?.hideTables(codes);\n }\n cleanTables(codes: string[] | string) {\n return this._formStructure?.cleanTables(codes);\n }\n getTable(code: string) {\n return this._formStructure?.getTable(code) ?? null;\n }\n showTable(code: string) {\n return this._formStructure?.showTables(code);\n }\n hideTable(code: string) {\n return this._formStructure?.hideTables(code);\n }\n cleanTable(code: string) {\n return this._formStructure?.getTable(code)?.clean();\n }\n getTableRecord(code: string, recordId: any) {\n return this._formStructure?.getTableRecord(code, recordId);\n }\n\n constructor(\n protected formManagerService: LibFormManagerService,\n protected _eventManager: LibEventManagerService,\n protected fileMgmtServices: LibFileManagementService) {\n this._eventEmiter = this._eventManager;\n this.cleanStart();\n this.customPreProcessing();\n }\n\n setConfig(formConfig) {\n this.formConfig = formConfig;\n }\n\n cleanStart() {\n this._errorType = '';\n this.errorCode = '';\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n this._formStructure = null;\n this.fields = null;\n this.actions = null;\n this.sections = null;\n this._controlToken = null;\n this.inputDataFields = {};\n this._definitionObtained = false;\n // Se limpian los manejadores de eventos\n this.visible = false;\n this.busy = false;\n this._formSectionsActivate = {};\n this._formSectionsInactivate = {};\n this._formActionsStart = {};\n this._formActionsFinish = {};\n this._fieldInputValidation = {};\n this._fieldValidationsStart = {};\n this._fieldValidationsFinish = {};\n this._tableSelectionsStart = {};\n this._tableSelectionsFinish = {};\n this._tableActionsStart = {};\n this._tableActionsFinish = {};\n this._tableGetDataStart = {};\n this._tableGetDataFinish = {};\n\n this._actionServerError = [];\n this._fieldServerError = [];\n this._tableServerError = [];\n\n this.onActionServerError(() => this.displayActionServerError());\n this.onValidationServerError(() => this.displayValidationServerError());\n this.onTableServerError(() => this.displayTableServerError());\n }\n\n get formVisible(): boolean { return this.visible; }\n get formManager() { return this; }\n get formCode(): string { return this.name ?? ''; }\n set formCode(name: string) { this.name = name; }\n get inServerProcess() { return this.busy; }\n get form(): FormStructureAndData | null { return this._formStructure; }\n\n get state(): string | null { return this._formStructure?.state ?? null; }\n get currentState(): string { return this._formStructure?.state ?? ''; }\n set currentState(state: string) { this?._formStructure?.changeState(state); }\n get immutableData(): any { return this._formStructure?.immutableData }\n get extraInfo(): any { return this._formStructure?.extraInfo }\n get visibleSections(): RecordFormSection[] | null { return this._formStructure?.visibleSections ?? null; }\n\n get formRoute(): string { return this._formRoute ?? ''; }\n set formRoute(route: string) { this._formRoute = route; }\n\n get subject(): string { return this.formSubject ?? ''; }\n\n // Métodos virtuales\n customPreProcessing() { }\n customFormStart() { }\n displayActionServerError() { }\n displayValidationServerError() { }\n displayTableServerError() { }\n showFieldInfo(fieldCode?: string, detail?: any) { }\n showModalDialog(title, body, options, callback?, params?) { }\n openUploadDialog(title, body, options, callback?, params?) { }\n\n /**\n * @deprecated Use supportState\n */\n supportMode(state: string): boolean { return this.supportState(state); }\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.formSubject ?? ''; }\n /**\n * @deprecated Use subject\n */\n getformSubject(): string { return this.formSubject ?? ''; }\n\n\n numSections(): number { return this._formStructure?.sections.length; }\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.formSubject;\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 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.formSubject = 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.formSubject = this.formSubject ?? 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._formStructure?.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 }\n }\n\n subscribeFieldsSubjects(): void {\n const formFields = this._formStructure?.getFields();\n if (Array.isArray(formFields)) {\n formFields.forEach(field => {\n field.editionFinish.subscribe(event => {\n const { code, intrinsicValidation } = event;\n this.startFieldValidation(code, intrinsicValidation);\n });\n field.editionPartial.subscribe(event => {\n const { code, intrinsicValidation } = event;\n this.startFieldInputValidation(code, intrinsicValidation);\n });\n field.detailRequest.subscribe(event => this.showFieldInfo(event.code, event.detail));\n });\n }\n }\n\n subscribeActionSubjects(): void {\n const formActions = this._formStructure?.getActions();\n if (Array.isArray(formActions)) {\n formActions.forEach(action => {\n action.actionActivated.subscribe(code => this.startAction(code));\n });\n }\n }\n\n subscribeTableSubjects(): void {\n const formTables = this._formStructure?.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 });\n }\n }\n\n async formInit(params): Promise<void> {\n let initialState: string | null = this.preocessInputParams(params);\n if (!this.name) { return; }\n if (!this._definitionObtained) {\n this.busy = true;\n const formDefinition = await this.formManagerService.getFormDefinition(this.name);\n this.busy = false;\n this._formStructure = new FormStructureAndData(formDefinition, this.formConfig);\n this.fields = this._formStructure?.fields;\n this.actions = this._formStructure?.actions;\n this.sections = this._formStructure?.sections;\n this._definitionObtained = true;\n } else {\n this.cleanData();\n }\n if (!this.supportState(initialState)) {\n initialState = this._formStructure?.defaultState ?? null;\n }\n this._formStructure?.changeState(initialState || this._formStructure?.defaultState);\n const inputFieldNames = Object.keys(this.inputDataFields);\n for (let index = 0; index < inputFieldNames.length; index++) {\n const fieldCode = inputFieldNames[index];\n const fieldValue = this.inputDataFields[fieldCode];\n this.setFieldValue(fieldCode, fieldValue);\n }\n const recordResponse = await this.requestFormAction(formActions.getData);\n this.checkErrorRecordReceived(recordResponse);\n this.visible = true;\n this.enabledSections = this._formStructure?.visibleSections ?? [];\n this.subscribeSectionActivation();\n this.subscribeFieldsSubjects();\n this.subscribeActionSubjects();\n this.subscribeTableSubjects();\n this.customFormStart();\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.formSubject,\n currentMode: this._formStructure?.state,\n actionCode,\n actionSubject,\n version: PAYLOAD_VERSION,\n formData: this._formStructure?.getPayload(),\n immutableData: this._formStructure?.immutableData,\n };\n this.errorCode = NO_ERROR;\n this.errorFullCode = '';\n this.errorName = '';\n this.errorMessage = '';\n this.errorDetail = '';\n this.busy = true;\n const formActionResponse: any = await this.formManagerService.execServerAction(actionDetail);\n this.busy = false;\n if (formActionResponse.hasError()) {\n const error = formActionResponse.error;\n this.errorCode = error.errorCode;\n this.errorFullCode = error.errorFullCode;\n this.errorName = error.errorName;\n this.errorMessage = error.errorMessage;\n this.errorDetail = error.errorDetail;\n }\n const formResponseData = formActionResponse.getData();\n this.updateFormWithServerData(formResponseData);\n return formResponseData;\n }\n\n updateFormWithServerData(formContent: any) {\n const {\n currentMode, formSubject, actions, fields, recordTables,\n returnedFile, immutableData, extraInfo,\n } = formContent;\n currentMode && this.changeState(currentMode);\n if (formSubject) { this.formSubject = 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 if (this._formStructure) {\n this._formStructure.immutableData = immutableData;\n this._formStructure.extraInfo = extraInfo;\n }\n }\n\n /**\n * Manejo de event handlers para errores Server del formulario\n */\n\n cleanActionServerError() {\n this._actionServerError = [];\n }\n\n cleanFieldServerError() {\n this._fieldServerError = [];\n }\n\n cleanTableServerError() {\n this._tableServerError = [];\n }\n\n onActionServerError(callback, properties = null) {\n this._actionServerError.push({ callback, properties });\n }\n\n onValidationServerError(callback, properties = null) {\n this._fieldServerError.push({ callback, properties });\n }\n\n onTableServerError(callback, properties = null) {\n this._tableServerError.push({ callback, properties });\n }\n\n /**\n * Manejo de event handlers para acciones sobre el formulario\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 launchSectionActivation(code: string) {\n const sectionObject = this._formStructure?.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 const sectionObject = this._formStructure?.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 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 let serverError = false;\n let actionResult = null;\n if (action.backend) {\n actionResult = await this.requestFormAction(action.actionCode);\n serverError = !!this.errorOccured();\n }\n await this.finishAction(action, actionResult, serverError);\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 (!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((fieldCode) => {\n if (!this._fieldInputValidation[fieldCode]) {\n this._fieldInputValidation[fieldCode] = [];\n }\n this._fieldInputValidation[fieldCode].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((fieldCode) => {\n if (!this._fieldValidationsStart[fieldCode]) {\n this._fieldValidationsStart[fieldCode] = [];\n }\n this._fieldValidationsStart[fieldCode].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((fieldCode) => {\n if (!this._fieldValidationsFinish[fieldCode]) {\n this._fieldValidationsFinish[fieldCode] = [];\n }\n this._fieldValidationsFinish[fieldCode].push({ callback, properties });\n });\n }\n\n async startFieldInputValidation(fieldCode: string, intrinsicValidation: boolean = true) {\n const fieldToValidate = this.getField(fieldCode);\n if (!fieldToValidate) { return false; }\n const validationCallbacks = this._fieldInputValidation[fieldCode];\n if (validationCallbacks) {\n const clientValidationPromises: any[] = [];\n for (const validationMethod of validationCallbacks) {\n const { callback, properties } = validationMethod;\n const continueValidationPromise = callback(fieldToValidate);\n clientValidationPromises.push(continueValidationPromise);\n }\n await Promise.all(clientValidationPromises);\n }\n return true;\n }\n\n async startFieldValidation(fieldCode: string, intrinsicValidation: boolean = true) {\n const fieldToValidate = this.getField(fieldCode);\n if (!fieldToValidate) { return; }\n const validationCallbacks = this._fieldValidationsStart[fieldCode];\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.fieldCode);\n serverError = !!this.errorOccured();\n }\n await this.finishFieldValidation(fieldObj, validationResult, serverError);\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 fieldObj.validating = false;\n }\n\n async finishFieldValidation(fieldObject: any, validationResult: boolean, serverError = false) {\n const validationCallbacks = this._fieldValidationsFinish[fieldObject.fieldCode];\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(fieldCode: string) {\n return this.startServerFieldValidation(fieldCode);\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 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 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 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 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 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 fieldCode of requiredEmptyFields) {\n const requiredEmptyField = this.getField(fieldCode);\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 fieldCode of validationIssueFields) {\n const validationIssueField = this.getField(fieldCode);\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 fieldCode = mappingTable?.[columnName] ?? columnName;\n this.setFieldValue(fieldCode, columnValue);\n }\n return true;\n }\n return false;\n }\n\n /**\n * Métodos Legacy de compatibilidad hacia atrás\n */\n\n addSectionActivation(codes: string[] | string | null, callback, properties = null) {\n return this.onSectionActivation(codes, callback, properties);\n }\n\n addSectionInactivation(codes: string[] | string | null, callback, properties = null) {\n return this.onSectionInactivation(codes, callback, properties);\n }\n\n addActionMethodStart(codes: string[] | string | null, callback, properties = null) {\n return this.onActionStart(codes, callback, properties);\n }\n\n addActionMethodFinish(codes: string[] | string | null, callback, properties = null) {\n return this.onActionFinish(codes, callback, properties);\n }\n\n addFieldInputValidation(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldInput(codes, callback, properties);\n }\n\n addFieldValidationStart(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldValidationStart(codes, callback, properties);\n }\n\n addFieldValidationFinish(codes: string[] | string | null, callback, properties = null) {\n return this.onFieldValidationFinish(codes, callback, properties);\n }\n\n addTableActionStart(code: string, actionCode: string, callback, properties = null) {\n return this.onTableActionStart(code, actionCode, callback, properties);\n }\n\n addTableActionFinish(code: string, actionCode: string, callback, properties = null) {\n return this.onTableActionFinish(code, actionCode, callback, properties);\n }\n\n addTableSelectionStart(code: string, callback, properties = null) {\n return this.onTableSelectionStart(code, callback, properties);\n }\n\n addTableSelectionFinish(code: string, callback, properties = null) {\n return this.onTableSelectionFinish(code, callback, properties);\n }\n\n addTableGetDataStart(code: string, callback, properties = null) {\n return this.onTableGetDataStart(code, callback, properties);\n }\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":["INLINE_ACTION","HEADER","i1.LibFormManagerService","i2.LibEventManagerService","i3.LibFileManagementService"],"mappings":"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"}
|